mirror of https://github.com/AxioDL/zeus.git
Better CMake dependency handling
This commit is contained in:
parent
6c13d089fe
commit
c81eb93b6d
|
@ -4,11 +4,6 @@ project(zeus)
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
if (NOT DEFINED ATHENA_INCLUDE_DIR)
|
|
||||||
set(ATHENA_INCLUDE_DIR ../athena/include)
|
|
||||||
endif()
|
|
||||||
include_directories(include ${ATHENA_INCLUDE_DIR})
|
|
||||||
|
|
||||||
set(SOURCES
|
set(SOURCES
|
||||||
src/CVector3f.cpp
|
src/CVector3f.cpp
|
||||||
src/Math.cpp
|
src/Math.cpp
|
||||||
|
@ -59,5 +54,11 @@ add_library(zeus
|
||||||
include/zeus/simd/simd_avx.hpp
|
include/zeus/simd/simd_avx.hpp
|
||||||
include/zeus/simd/parallelism_v2_simd.hpp)
|
include/zeus/simd/parallelism_v2_simd.hpp)
|
||||||
|
|
||||||
|
target_include_directories(zeus PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
|
||||||
|
if(TARGET athena-core)
|
||||||
|
target_link_libraries(zeus PUBLIC athena-core)
|
||||||
|
target_compile_definitions(zeus PUBLIC ZE_ATHENA_TYPES=1)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_subdirectory(test)
|
add_subdirectory(test)
|
||||||
|
|
||||||
|
|
|
@ -101,9 +101,11 @@ public:
|
||||||
|
|
||||||
CQuaternion normalized() const { return *this / magnitude(); }
|
CQuaternion normalized() const { return *this / magnitude(); }
|
||||||
|
|
||||||
void invert();
|
static constexpr simd<float> InvertQuat = {1.f, -1.f, -1.f, -1.f};
|
||||||
|
|
||||||
CQuaternion inverse() const;
|
void invert() { mSimd *= InvertQuat; }
|
||||||
|
|
||||||
|
CQuaternion inverse() const { return mSimd * InvertQuat; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the rotation using axis angle notation
|
* @brief Set the rotation using axis angle notation
|
||||||
|
|
|
@ -221,12 +221,14 @@ public:
|
||||||
sse_data[__index % 2] = __val;
|
sse_data[__index % 2] = __val;
|
||||||
__storage_[__index / 2] = _mm_load_pd(sse_data.data());
|
__storage_[__index / 2] = _mm_load_pd(sse_data.data());
|
||||||
}
|
}
|
||||||
constexpr __simd_storage(double a, double b, double c, double d) : __storage_{__m128d{a, b}, __m128d{c, d}} {}
|
static constexpr storage_type __make_array(__m128d a, __m128d b) { return {a, b}; }
|
||||||
|
constexpr __simd_storage(double a, double b, double c, double d)
|
||||||
|
: __storage_(__make_array(__m128d{a, b}, __m128d{c, d})) {}
|
||||||
void __set4(double a, double b, double c, double d) noexcept {
|
void __set4(double a, double b, double c, double d) noexcept {
|
||||||
__storage_[0] = _mm_set_pd(b, a);
|
__storage_[0] = _mm_set_pd(b, a);
|
||||||
__storage_[1] = _mm_set_pd(d, c);
|
__storage_[1] = _mm_set_pd(d, c);
|
||||||
}
|
}
|
||||||
constexpr __simd_storage(double rv) : __storage_{__m128d{rv, rv}, __m128d{rv, rv}} {}
|
constexpr __simd_storage(double rv) : __storage_(__make_array(__m128d{rv, rv}, __m128d{rv, rv})) {}
|
||||||
void __broadcast(double __val) noexcept {
|
void __broadcast(double __val) noexcept {
|
||||||
for (int i = 0; i < 2; ++i)
|
for (int i = 0; i < 2; ++i)
|
||||||
__storage_[i] = _mm_set1_pd(__val);
|
__storage_[i] = _mm_set1_pd(__val);
|
||||||
|
|
|
@ -149,12 +149,6 @@ const CQuaternion& CQuaternion::operator/=(float scale) {
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const simd<float> InvertQuat(1.f, -1.f, -1.f, -1.f);
|
|
||||||
|
|
||||||
void CQuaternion::invert() { mSimd *= InvertQuat; }
|
|
||||||
|
|
||||||
CQuaternion CQuaternion::inverse() const { return mSimd * InvertQuat; }
|
|
||||||
|
|
||||||
CQuaternion CQuaternion::log() const {
|
CQuaternion CQuaternion::log() const {
|
||||||
float a = std::acos(w());
|
float a = std::acos(w());
|
||||||
float sina = std::sin(a);
|
float sina = std::sin(a);
|
||||||
|
|
|
@ -4,7 +4,5 @@ project(zeustest)
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
include_directories(../include)
|
|
||||||
|
|
||||||
add_executable(zeustest main.cpp)
|
add_executable(zeustest main.cpp)
|
||||||
target_link_libraries(zeustest zeus)
|
target_link_libraries(zeustest zeus)
|
||||||
|
|
|
@ -12,6 +12,8 @@ union Color {
|
||||||
zeus::Comp32 rgba;
|
zeus::Comp32 rgba;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
zeus::detectCPU();
|
zeus::detectCPU();
|
||||||
assert(!CAABox({100, 100, 100}, {100, 100, 100}).invalid());
|
assert(!CAABox({100, 100, 100}, {100, 100, 100}).invalid());
|
||||||
|
|
Loading…
Reference in New Issue