mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-10-17 05:09:20 +02:00
18 lines
398 B
GLSL
18 lines
398 B
GLSL
vec2 octahedral_encode(vec3 n)
|
|
{
|
|
n /= abs(n.x) + abs(n.y) + abs(n.z);
|
|
vec2 o = n.xy;
|
|
if (n.z < 0.0)
|
|
o = (1.0 - abs(n.yx)) * vec2(n.x >= 0.0 ? 1.0 : -1.0, n.y >= 0.0 ? 1.0 : -1.0);
|
|
return o;
|
|
}
|
|
|
|
vec3 octahedral_decode(vec2 o)
|
|
{
|
|
vec3 n = vec3(o, 1.0 - abs(o.x) - abs(o.y));
|
|
float t = clamp(-n.z, 0.0, 1.0);
|
|
n.x += (n.x >= 0.0 ? -t : t);
|
|
n.y += (n.y >= 0.0 ? -t : t);
|
|
return normalize(n);
|
|
}
|