Light | Dark

refract

Name

refract — calculate the refraction direction for an incident vector

Declaration

genType refract( genType I,
genType N,
float eta);

Parameters

I

Specifies the incident vector.

N

Specifies the normal vector.

eta

Specifies the ratio of indices of refraction.

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 ES Shading Language Version
Function Name 1.00 3.00 3.10
refract (genType)

See Also

dot, reflect

Think you can improve this page? Edit this page on GitHub.