REFRACT(3G) [FIXME: manual] REFRACT(3G) 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 | +-----------+------+------+------+------+------+------+------+------+------+------+------+------+ |Function | 1.10 | 1.20 | 1.30 | 1.40 | 1.50 | 3.30 | 4.00 | 4.10 | 4.20 | 4.30 | 4.40 | 4.50 | |Name | | | | | | | | | | | | | +-----------+------+------+------+------+------+------+------+------+------+------+------+------+ |refract | | | | | | | | | | | | | |(genType) | | | | | | | | | | | | | +-----------+------+------+------+------+------+------+------+------+------+------+------+------+ |refract | - | - | - | - | - | - | | | | | | | |(genDType) | | | | | | | | | | | | | +-----------+------+------+------+------+------+------+------+------+------+------+------+------+ SEE ALSO dot(), reflect() COPYRIGHT Copyright (C) 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 (C) 2011-2014 Khronos Group [FIXME: source] 05/21/2022 REFRACT(3G)