mirror of
https://github.com/g-truc/glm.git
synced 2024-11-09 20:21:47 +00:00
Fixed SIMD implementation #1222
This commit is contained in:
parent
90f2b025b1
commit
b101e8f3de
@ -215,7 +215,7 @@ GLM_FUNC_QUALIFIER glm_vec4 glm_vec4_smoothstep(glm_vec4 edge0, glm_vec4 edge1,
|
||||
{
|
||||
glm_vec4 const sub0 = glm_vec4_sub(x, edge0);
|
||||
glm_vec4 const sub1 = glm_vec4_sub(edge1, edge0);
|
||||
glm_vec4 const div0 = glm_vec4_sub(sub0, sub1);
|
||||
glm_vec4 const div0 = glm_vec4_div(sub0, sub1);
|
||||
glm_vec4 const clp0 = glm_vec4_clamp(div0, _mm_setzero_ps(), _mm_set1_ps(1.0f));
|
||||
glm_vec4 const mul0 = glm_vec4_mul(_mm_set1_ps(2.0f), clp0);
|
||||
glm_vec4 const sub2 = glm_vec4_sub(_mm_set1_ps(3.0f), mul0);
|
||||
|
@ -105,7 +105,7 @@ target_link_libraries(main PRIVATE glm::glm)
|
||||
|
||||
## Release notes
|
||||
|
||||
### [GLM 1.0.1](https://github.com/g-truc/glm) - 2024-XX-XX
|
||||
### [GLM 1.0.1](https://github.com/g-truc/glm) - 2024-02-XX
|
||||
|
||||
#### Improvements:
|
||||
- Enables only warnings as errors while building unit tests
|
||||
@ -115,6 +115,7 @@ target_link_libraries(main PRIVATE glm::glm)
|
||||
- Fixed C++ language auto detection build, disable C++98 warnings with Clang #1235, #1231
|
||||
- Fixed `GTX_color_space` missing <glm/ext/scalar_constants.hpp> include #1233 #1238
|
||||
- Fixed `EXT_matrix_transform` `shear` implementation #1140 #1182
|
||||
- Fixed `smoothstep` SIMD implementation #1222
|
||||
|
||||
### [GLM 1.0.0](https://github.com/g-truc/glm/releases/tag/1.0.0) - 2024-01-24
|
||||
#### Features:
|
||||
|
@ -657,6 +657,42 @@ namespace step_
|
||||
}
|
||||
}//namespace step_
|
||||
|
||||
namespace smoothstep_
|
||||
{
|
||||
static int test()
|
||||
{
|
||||
int Error = 0;
|
||||
|
||||
float const Edge = 2.0f;
|
||||
|
||||
// scalar
|
||||
{
|
||||
float const A = glm::smoothstep(0.0f, Edge, 1.0f);
|
||||
Error += glm::equal(A, 0.5f, glm::epsilon<float>()) ? 0 : 1;
|
||||
|
||||
float const B = glm::smoothstep(0.0f, Edge, 1.0f);
|
||||
Error += glm::equal(B, 0.5f, glm::epsilon<float>()) ? 0 : 1;
|
||||
|
||||
float const C = glm::smoothstep(0.0f, Edge, 1.0f);
|
||||
Error += glm::equal(C, 0.5f, glm::epsilon<float>()) ? 0 : 1;
|
||||
}
|
||||
|
||||
// vec4 and float
|
||||
{
|
||||
glm::vec4 Result = glm::smoothstep(0.0f, Edge, glm::vec4(1.0f));
|
||||
Error += glm::all(glm::equal(Result, glm::vec4(0.5f), glm::epsilon<float>())) ? 0 : 1;
|
||||
}
|
||||
|
||||
// vec4 and vec4
|
||||
{
|
||||
glm::vec4 Result = glm::smoothstep(glm::vec4(0.0f), glm::vec4(Edge), glm::vec4(1.0f));
|
||||
Error += glm::all(glm::equal(Result, glm::vec4(0.5f), glm::epsilon<float>())) ? 0 : 1;
|
||||
}
|
||||
|
||||
return Error;
|
||||
}
|
||||
}//namespace smoothstep_
|
||||
|
||||
namespace round_
|
||||
{
|
||||
static int test()
|
||||
@ -1367,6 +1403,7 @@ int main()
|
||||
Error += floatBitsToUint::test();
|
||||
Error += mix_::test();
|
||||
Error += step_::test();
|
||||
Error += smoothstep_::test();
|
||||
Error += max_::test();
|
||||
Error += min_::test();
|
||||
Error += clamp_::test();
|
||||
|
Loading…
Reference in New Issue
Block a user