REFRACT(3G)

    .SH "NAME" refract - calculate the refraction direction for an incident vector
    .SH "DECLARATION"

            .HP u genType refract(genType I, genType N, float eta);
            .HP u genDType refract(genDType I, genDType N, float eta);

    .SH "PARAMETERS"

        .PP I

                    Specifies the incident vector.

            .RE
            .PP N

                        Specifies the normal vector.

                .RE
                .PP eta

                            Specifies the ratio of indices of refraction.

                    .RE

                .SH "DESCRIPTION"
                    .PP For a given incident vector I, surface normal N and ratio of indices of refraction, eta, refract returns the refraction vector, R.
                    .PP R is calculated as:
                    .PP
                    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;

                    .PP The input parameters I and N should be normalized in order to achieve the desired result.

                .SH "VERSION SUPPORT"
                    .TS allbox tab(:); lB cB s s s s s s s s s s s lB cB cB cB cB cB cB cB cB cB cB cB cB. T{ T}:T{ OpenGL Shading Language Version T} T{ Function Name T}:T{ 1.10 T}:T{ 1.20 T}:T{ 1.30 T}:T{ 1.40 T}:T{ 1.50 T}:T{ 3.30 T}:T{ 4.00 T}:T{ 4.10 T}:T{ 4.20 T}:T{ 4.30 T}:T{ 4.40 T}:T{ 4.50 T} l c c c c c c c c c c c c l c c c c c c c c c c c c. T{ refract (genType) T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T} T{ refract (genDType) T}:T{ - T}:T{ - T}:T{ - T}:T{ - T}:T{ - T}:T{ - T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}:T{ ✔ T}

                .SH "SEE ALSO"
                    .PP dot(), reflect()

                .SH "COPYRIGHT"
                    .PP 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. https://opencontent.org/openpub/.

COPYRIGHT
Copyright © 2011-2014 Khronos Group