Back to class index
float3[Class Summary]
x
y
z
zero[static][const]
one[static][const]
unitX[static][const]
unitY[static][const]
unitZ[static][const]
nan[static][const]
inf[static][const]
ctor (+5 overloads)
ptr() (+1 overload)
operator[](index) (+1 overload)
At(index) (+1 overload)
operators +,-,*,/(v)[const]
operators +=,-=,*=,/=(v)
Add/Sub/Mul/Div(v)[const] (+1 overload)
xx/xy/xz/..()[const]
xyz/xzy/yzx/..()[const]
Swizzled(i,j)[const] (+2 overloads)
SetFromScalar(scalar)
Set(x,y,z)
ToPos4()[const]
ToDir4()[const]
Length()[const]
LengthSq()[const]
Normalize()
Normalized()[const]
ScaleToLength(newLength)
ScaledToLength(newLength)[const]
IsNormalized(epsilonSq)[const]
IsZero(epsilonSq)[const]
IsFinite()[const]
IsPerpendicular(other,epsilon)[const]
Equals(other,epsilon)[const] (+1 overload)
SumOfElements()[const]
ProductOfElements()[const]
AverageOfElements()[const]
MinElement()[const]
MinElementIndex()[const]
MaxElement()[const]
MaxElementIndex()[const]
Abs()[const]
Neg()[const]
Recip()[const]
Min(ceil)[const] (+1 overload)
Max(floor)[const] (+1 overload)
Clamp(floor,ceil)[const] (+1 overload)
Clamp01()[const]
Distance(point)[const] (+9 overloads)
DistanceSq(point)[const]
Dot(v)[const]
Cross(v)[const]
OuterProduct(rhs)[const]
Perpendicular(hint,hint2)[const]
AnotherPerpendicular(hint,hint2)[const]
Reflect(normal)[const]
Refract(...)[const]
ProjectTo(direction)[const]
ProjectToNorm(direction)[const]
AngleBetween(other)[const]
AngleBetweenNorm(normalizedVector)[const]
Decompose(...)[const]
Lerp(b,t)[const]
FromScalar(scalar)[static]
FromString(str)[static]
ScalarTripleProduct(u,v,w)[static]
Lerp(a,b,t)[static]
Orthogonalize(a,b)[static] (+1 overload)
AreOrthogonal(a,b,epsilon)[static] (+1 overload)
Orthonormalize(a,b)[static] (+1 overload)
AreOrthonormal(a,b,epsilon)[static] (+1 overload)
RandomDir(lcg,length)[static]
RandomSphere(lcg,center,radius)[static]
RandomBox(...)[static] (+1 overload)

float3::Refract

Syntax

float3 float3::Refract(const float3 &normal, float negativeSideRefractionIndex, float positiveSideRefractionIndex) const; [10 lines of code]

Refracts this vector about a plane with the given normal.

Implementation from http://www.flipcode.com/archives/reflection_transmission.pdf .

By convention, the this vector points towards the plane, and the returned vector points away from the plane. When the ray is going from a denser material to a lighter one, total internal reflection can occur. In this case, this function will just return a reflected vector from a call to Reflect().

Parameters

const float3 &normalSpecifies the plane normal direction floatnegativeSideRefractionIndexThe refraction index of the material we are exiting. floatpositiveSideRefractionIndexThe refraction index of the material we are entering.

Performance

24.632nsecs/call ≈ 40.6M calls/second ≈ 676.64k calls/frame (@ 60fps).
This function does not perform dynamic memory allocation.

See Also

Reflect().

Leave a Comment

Name:
Comments:
Captcha:captcha image Type in the black symbols:
Back to class index