| ((function refract |
| (signature float |
| (parameters |
| (declare (in) float i) |
| (declare (in) float n) |
| (declare (in) float eta)) |
| ((declare () float k) |
| (assign (constant bool (1)) (x) (var_ref k) |
| (expression float - (constant float (1.0)) |
| (expression float * (var_ref eta) |
| (expression float * (var_ref eta) |
| (expression float - (constant float (1.0)) |
| (expression float * |
| (expression float * (var_ref n) (var_ref i)) |
| (expression float * (var_ref n) (var_ref i)))))))) |
| (if (expression bool < (var_ref k) (constant float (0.0))) |
| ((return (constant float (0.0)))) |
| ((return (expression float - |
| (expression float * (var_ref eta) (var_ref i)) |
| (expression float * |
| (expression float + |
| (expression float * (var_ref eta) |
| (expression float * (var_ref n) (var_ref i))) |
| (expression float sqrt (var_ref k))) |
| (var_ref n)))))))) |
| |
| (signature vec2 |
| (parameters |
| (declare (in) vec2 i) |
| (declare (in) vec2 n) |
| (declare (in) float eta)) |
| ((declare () float k) |
| (assign (constant bool (1)) (x) (var_ref k) |
| (expression float - (constant float (1.0)) |
| (expression float * (var_ref eta) |
| (expression float * (var_ref eta) |
| (expression float - (constant float (1.0)) |
| (expression float * |
| (expression float dot (var_ref n) (var_ref i)) |
| (expression float dot (var_ref n) (var_ref i)))))))) |
| (if (expression bool < (var_ref k) (constant float (0.0))) |
| ((return (constant vec2 (0.0 0.0)))) |
| ((return (expression vec2 - |
| (expression vec2 * (var_ref eta) (var_ref i)) |
| (expression vec2 * |
| (expression float + |
| (expression float * (var_ref eta) |
| (expression float dot (var_ref n) (var_ref i))) |
| (expression float sqrt (var_ref k))) |
| (var_ref n)))))))) |
| |
| (signature vec3 |
| (parameters |
| (declare (in) vec3 i) |
| (declare (in) vec3 n) |
| (declare (in) float eta)) |
| ((declare () float k) |
| (assign (constant bool (1)) (x) (var_ref k) |
| (expression float - (constant float (1.0)) |
| (expression float * (var_ref eta) |
| (expression float * (var_ref eta) |
| (expression float - (constant float (1.0)) |
| (expression float * |
| (expression float dot (var_ref n) (var_ref i)) |
| (expression float dot (var_ref n) (var_ref i)))))))) |
| (if (expression bool < (var_ref k) (constant float (0.0))) |
| ((return (constant vec3 (0.0 0.0 0.0)))) |
| ((return (expression vec3 - |
| (expression vec3 * (var_ref eta) (var_ref i)) |
| (expression vec3 * |
| (expression float + |
| (expression float * (var_ref eta) |
| (expression float dot (var_ref n) (var_ref i))) |
| (expression float sqrt (var_ref k))) |
| (var_ref n)))))))) |
| |
| (signature vec4 |
| (parameters |
| (declare (in) vec4 i) |
| (declare (in) vec4 n) |
| (declare (in) float eta)) |
| ((declare () float k) |
| (assign (constant bool (1)) (x) (var_ref k) |
| (expression float - (constant float (1.0)) |
| (expression float * (var_ref eta) |
| (expression float * (var_ref eta) |
| (expression float - (constant float (1.0)) |
| (expression float * |
| (expression float dot (var_ref n) (var_ref i)) |
| (expression float dot (var_ref n) (var_ref i)))))))) |
| (if (expression bool < (var_ref k) (constant float (0.0))) |
| ((return (constant vec4 (0.0 0.0 0.0 0.0)))) |
| ((return (expression vec4 - |
| (expression vec4 * (var_ref eta) (var_ref i)) |
| (expression vec4 * |
| (expression float + |
| (expression float * (var_ref eta) |
| (expression float dot (var_ref n) (var_ref i))) |
| (expression float sqrt (var_ref k))) |
| (var_ref n)))))))) |
| |
| )) |