Skip to content

Commit

Permalink
fix refract
Browse files Browse the repository at this point in the history
  • Loading branch information
recp committed Jul 15, 2024
1 parent d491108 commit 48839a3
Show file tree
Hide file tree
Showing 6 changed files with 9 additions and 9 deletions.
2 changes: 1 addition & 1 deletion include/cglm/vec2.h
Original file line number Diff line number Diff line change
Expand Up @@ -749,7 +749,7 @@ glm_vec2_refract(vec2 v, vec2 n, float eta, vec2 dest) {

ndi = glm_vec2_dot(n, v);
eni = eta * ndi;
k = 1.0f + eta * eta - eni * eni;
k = 1.0f - eta * eta + eni * eni;

if (k < 0.0f) {
glm_vec2_zero(dest);
Expand Down
2 changes: 1 addition & 1 deletion include/cglm/vec3.h
Original file line number Diff line number Diff line change
Expand Up @@ -1263,7 +1263,7 @@ glm_vec3_refract(vec3 v, vec3 n, float eta, vec3 dest) {

ndi = glm_vec3_dot(n, v);
eni = eta * ndi;
k = 1.0f + eta * eta - eni * eni;
k = 1.0f - eta * eta + eni * eni;

if (k < 0.0f) {
glm_vec3_zero(dest);
Expand Down
2 changes: 1 addition & 1 deletion include/cglm/vec4.h
Original file line number Diff line number Diff line change
Expand Up @@ -1350,7 +1350,7 @@ glm_vec4_refract(vec4 v, vec4 n, float eta, vec4 dest) {

ndi = glm_vec4_dot(n, v);
eni = eta * ndi;
k = 1.0f + eta * eta - eni * eni;
k = 1.0f - eta * eta + eni * eni;

if (k < 0.0f) {
glm_vec4_zero(dest);
Expand Down
4 changes: 2 additions & 2 deletions test/src/test_vec2.h
Original file line number Diff line number Diff line change
Expand Up @@ -792,7 +792,7 @@ TEST_IMPL(GLM_PREFIX, vec2_refract) {
r = GLM(vec2_refract)(v, N, eta, dest);
// In 2D, we expect a similar bending behavior as in 3D, so we check dest[1]
if (!(dest[0] == 0.0f && dest[1] == 0.0f)) {
ASSERT(dest[1] < -sqrtf(0.5f)); // Refracted ray bends away from the normal
ASSERT(dest[1] < -0.3f); // Refracted ray bends away from the normal
ASSERT(r == true);
} else {
ASSERT(dest[0] == 0.0f && dest[1] == 0.0f); // Total internal reflection
Expand All @@ -809,7 +809,7 @@ TEST_IMPL(GLM_PREFIX, vec2_refract) {
eta = 1.5f / 1.33f;
r = GLM(vec2_refract)(v, N, eta, dest);
ASSERT(r == true);
ASSERT(dest[1] < -sqrtf(0.5f)); // Expect bending towards the normal, less bending than air to glass
ASSERT(dest[1] < -0.6f); // Expect bending towards the normal, less bending than air to glass

/* Diamond to Air (eta = 2.42 / 1.0) */
eta = 2.42f / 1.0f;
Expand Down
4 changes: 2 additions & 2 deletions test/src/test_vec3.h
Original file line number Diff line number Diff line change
Expand Up @@ -1901,7 +1901,7 @@ TEST_IMPL(GLM_PREFIX, vec3_refract) {
eta = 1.33f / 1.0f;
r = GLM(vec3_refract)(v, N, eta, dest);
if (!(dest[0] == 0.0f && dest[1] == 0.0f && dest[2] == 0.0f)) {
ASSERT(dest[1] < -sqrtf(0.5f));
ASSERT(dest[1] < -0.3f);
ASSERT(r == true);
} else {
ASSERT(dest[0] == 0.0f && dest[1] == 0.0f && dest[2] == 0.0f);
Expand All @@ -1922,7 +1922,7 @@ TEST_IMPL(GLM_PREFIX, vec3_refract) {

/* Expect bending towards the normal, less bending than air to glass */
ASSERT(r == true);
ASSERT(dest[1] < -sqrtf(0.5f));
ASSERT(dest[1] < -0.6f);

/* Diamond to Air (eta = 2.42 / 1.0) */
eta = 2.42f / 1.0f;
Expand Down
4 changes: 2 additions & 2 deletions test/src/test_vec4.h
Original file line number Diff line number Diff line change
Expand Up @@ -1586,7 +1586,7 @@ TEST_IMPL(GLM_PREFIX, vec4_refract) {
eta = 1.33f / 1.0f;
r = GLM(vec4_refract)(v, N, eta, dest);
if (!(dest[0] == 0.0f && dest[1] == 0.0f && dest[2] == 0.0f && dest[3] == 0.0f)) {
ASSERT(dest[1] < -sqrtf(0.5f));
ASSERT(dest[1] < -0.3f);
ASSERT(r == true);
} else {
ASSERT(dest[0] == 0.0f && dest[1] == 0.0f && dest[2] == 0.0f && dest[3] == 0.0f);
Expand All @@ -1603,7 +1603,7 @@ TEST_IMPL(GLM_PREFIX, vec4_refract) {
eta = 1.5f / 1.33f;
r = GLM(vec4_refract)(v, N, eta, dest);
ASSERT(r == true);
ASSERT(dest[1] < -sqrtf(0.5f)); // Expect bending towards the normal, less bending than air to glass
ASSERT(dest[1] < -0.6f); // Expect bending towards the normal, less bending than air to glass

/* Diamond to Air (eta = 2.42 / 1.0) */
eta = 2.42f / 1.0f;
Expand Down

0 comments on commit 48839a3

Please sign in to comment.