stk-code_catmod/data/shaders/utils/encode_normal.frag
2024-01-18 01:13:23 +08:00

18 lines
329 B
GLSL

// Octahedron Normal Vector
vec2 OctWrap(vec2 v)
{
vec2 w = 1.0 - abs( v.yx );
if (v.x < 0.0) w.x = -w.x;
if (v.y < 0.0) w.y = -w.y;
return w;
}
vec2 EncodeNormal(vec3 n)
{
n /= (abs(n.x) + abs(n.y) + abs(n.z));
n.xy = n.z >= 0.0 ? n.xy : OctWrap(n.xy);
n.xy = n.xy * 0.5 + 0.5;
return n.xy;
}