refract — calculate the refraction direction for an incident vector
genType refract( | genType | I, |
genType | N, | |
float | eta) ; |
genDType refract( | genDType | I, |
genDType | N, | |
float | eta) ; |
I
Specifies the incident vector.
N
Specifies the normal vector.
eta
Specifies the ratio of indices of refraction.
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.
Function | Version 1.10 | Version 1.20 | Version 1.30 | Version 1.40 | Version 1.50 | Version 3.30 | Version 4.00 | Version 4.10 | Version 4.20 | Version 4.30 |
---|---|---|---|---|---|---|---|---|---|---|
refract (genType) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
refract (genDType) | - | - | - | - | - | - | Y | Y | Y | Y |
Copyright © 2011 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/.