File: encode_normal.frag

package info (click to toggle)
supertuxkart 1.5-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 845,908 kB
  • sloc: cpp: 416,684; ansic: 320,074; xml: 109,671; sh: 2,786; asm: 1,631; python: 1,162; java: 783; objc: 452; makefile: 386; javascript: 23; awk: 20
file content (17 lines) | stat: -rw-r--r-- 329 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 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;
}