table of contents
REFRACT(3G) | [FIXME: manual] | REFRACT(3G) |
NAME¶
refract - calculate the refraction direction for an incident vector
DECLARATION¶
genType refract(genType I, genType N, float eta);
genDType refract(genDType I, genDType N, float eta);
PARAMETERS¶
I
N
eta
DESCRIPTION¶
For a given incident vector I, surface normal N and ratio of indices of refraction, eta, refract returns the refraction vector, R.
R is calculated as:
k = 1.0 - eta * eta * (1.0 - dot(N, I) * dot(N, I));
if (k < 0.0)
R = genType(0.0); // or genDType(0.0)
else
R = eta * I - (eta * dot(N, I) + sqrt(k)) * N;
The input parameters I and N should be normalized in order to achieve the desired result.
VERSION SUPPORT¶
OpenGL Shading Language Version | ||||||||||||
Function Name | 1.10 | 1.20 | 1.30 | 1.40 | 1.50 | 3.30 | 4.00 | 4.10 | 4.20 | 4.30 | 4.40 | 4.50 |
refract (genType) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
refract (genDType) | - | - | - | - | - | - | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
SEE ALSO¶
dot(), reflect()
COPYRIGHT¶
Copyright © 2011-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.
COPYRIGHT¶
Copyright © 2011-2014 Khronos Group
11/18/2024 | [FIXME: source] |