mesa: glsl: change refract() functions to allow inlining

This commit is contained in:
Brian Paul
2008-08-11 17:10:24 -06:00
parent 2023f7f91d
commit 1c30e56cd2
@@ -1279,36 +1279,48 @@ float refract(const float I, const float N, const float eta)
{
float n_dot_i = dot(N, I);
float k = 1.0 - eta * eta * (1.0 - n_dot_i * n_dot_i);
float retval;
if (k < 0.0)
return 0.0;
return eta * I - (eta * n_dot_i + sqrt(k)) * N;
retval = 0.0;
else
retval = eta * I - (eta * n_dot_i + sqrt(k)) * N;
return retval;
}
vec2 refract(const vec2 I, const vec2 N, const float eta)
{
float n_dot_i = dot(N, I);
float k = 1.0 - eta * eta * (1.0 - n_dot_i * n_dot_i);
vec2 retval;
if (k < 0.0)
return vec2(0.0);
return eta * I - (eta * n_dot_i + sqrt(k)) * N;
retval = vec2(0.0);
else
retval = eta * I - (eta * n_dot_i + sqrt(k)) * N;
return retval;
}
vec3 refract(const vec3 I, const vec3 N, const float eta)
{
float n_dot_i = dot(N, I);
float k = 1.0 - eta * eta * (1.0 - n_dot_i * n_dot_i);
vec3 retval;
if (k < 0.0)
return vec3(0.0);
return eta * I - (eta * n_dot_i + sqrt(k)) * N;
retval = vec3(0.0);
else
retval = eta * I - (eta * n_dot_i + sqrt(k)) * N;
return retval;
}
vec4 refract(const vec4 I, const vec4 N, const float eta)
{
float n_dot_i = dot(N, I);
float k = 1.0 - eta * eta * (1.0 - n_dot_i * n_dot_i);
vec4 retval;
if (k < 0.0)
return vec4(0.0);
return eta * I - (eta * n_dot_i + sqrt(k)) * N;
retval = vec4(0.0);
else
retval = eta * I - (eta * n_dot_i + sqrt(k)) * N;
return retval;
}