REFRACT(3G) [FIXME: manual] REFRACT(3G)

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.

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) - - - - - -

dot(), reflect()

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 © 2011-2014 Khronos Group

05/21/2022 [FIXME: source]