Provided by: opengl-4-man-doc_1.0~svn33624-1_all bug

NAME

       refract - calculate the refraction direction for an incident vector

DECLARATION

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

       genDType refract(genDType I, genDType 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 Shading Language Version                                            │
       ├───────────┼──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┤
       │Function1.101.201.301.401.503.304.004.104.204.304.404.50 │
       │Name       │      │      │      │      │      │      │      │      │      │      │      │      │
       ├───────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
       │refract    │  ✔   │  ✔   │  ✔   │  ✔   │  ✔   │  ✔   │  ✔   │  ✔   │  ✔   │  ✔   │  ✔   │  ✔   │
       │(genType)  │      │      │      │      │      │      │      │      │      │      │      │      │
       ├───────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
       │refract    │  -   │  -   │  -   │  -   │  -   │  -   │  ✔   │  ✔   │  ✔   │  ✔   │  ✔   │  ✔   │
       │(genDType) │      │      │      │      │      │      │      │      │      │      │      │      │
       └───────────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘

SEE ALSO

       dot(), reflect()

COPYRIGHT

       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

       Copyright © 2011-2014 Khronos Group

[FIXME: source]                             01/03/2018                                REFRACT(3G)