refract - calculate the refraction direction for an incident vector
Contents
Copyright
Copyright © 2011-2014 Khronos Group
[FIXME: source] 11/18/2024 REFRACT(3G)
Declaration
genTyperefract(genTypeI,genTypeN,floateta);genDTyperefract(genDTypeI,genDTypeN,floateta);
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.
Name
refract - calculate the refraction direction for an incident vector
Parameters
I
Specifies the incident vector.
N
Specifies the normal vector.
eta
Specifies the ratio of indices of refraction.
See Also
dot(), reflect()
Version Support
┌────────────┬───────────────────────────────────────────────────────────────────────────────────┐
│ │ OpenGLShadingLanguageVersion │
├────────────┼──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┤
│ Function │ 1.10 │ 1.20 │ 1.30 │ 1.40 │ 1.50 │ 3.30 │ 4.00 │ 4.10 │ 4.20 │ 4.30 │ 4.40 │ 4.50 │
│ Name │ │ │ │ │ │ │ │ │ │ │ │ │
├────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ refract │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │
│ (genType) │ │ │ │ │ │ │ │ │ │ │ │ │
├────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ refract │ - │ - │ - │ - │ - │ - │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │
│ (genDType) │ │ │ │ │ │ │ │ │ │ │ │ │
└────────────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
