fix refract

This commit is contained in:
Recep Aslantas
2024-03-22 21:59:10 +03:00
parent 96e415daa4
commit 6ad0aca7e0
3 changed files with 9 additions and 9 deletions

View File

@@ -746,15 +746,15 @@ glm_vec2_refract(vec2 I, vec2 N, float eta, vec2 dest) {
ndi = glm_vec2_dot(N, I);
eni = eta * ndi;
k = eta * eta + eni * eni;
k = 1.0f + eta * eta - eni * eni;
if (k > 1.0f) {
if (k < 0.0f) {
glm_vec2_zero(dest);
return;
}
glm_vec2_scale(I, eta, dest);
glm_vec2_mulsubs(N, eni + sqrtf(1.0f - k), dest);
glm_vec2_mulsubs(N, eni + sqrtf(k), dest);
}
#endif /* cglm_vec2_h */

View File

@@ -1260,15 +1260,15 @@ glm_vec3_refract(vec3 I, vec3 N, float eta, vec3 dest) {
ndi = glm_vec3_dot(N, I);
eni = eta * ndi;
k = eta * eta + eni * eni;
k = 1.0f + eta * eta - eni * eni;
if (k > 1.0f) {
if (k < 0.0f) {
glm_vec3_zero(dest);
return;
}
glm_vec3_scale(I, eta, dest);
glm_vec3_mulsubs(N, eni + sqrtf(1.0f - k), dest);
glm_vec3_mulsubs(N, eni + sqrtf(k), dest);
}
#endif /* cglm_vec3_h */

View File

@@ -1347,15 +1347,15 @@ glm_vec4_refract(vec4 I, vec4 N, float eta, vec4 dest) {
ndi = glm_vec4_dot(N, I);
eni = eta * ndi;
k = eta * eta + eni * eni - 1.0f;
k = 1.0f + eta * eta - eni * eni;
if (k > 0.0f) {
if (k < 0.0f) {
glm_vec4_zero(dest);
return;
}
glm_vec4_scale(I, eta, dest);
glm_vec4_mulsubs(N, eni + sqrtf(1.0f - k), dest);
glm_vec4_mulsubs(N, eni + sqrtf(k), dest);
}
#endif /* cglm_vec4_h */