@@ -10,40 +10,36 @@ layout(push_constant, std430) uniform Params {
1010params;
1111
1212vec3 texelCoordToVec(vec2 uv, uint faceID) {
13- mat3 faceUvVectors[6 ];
14-
15- // -x
16- faceUvVectors[1 ][0 ] = vec3 (0.0 , 0.0 , 1.0 ); // u -> +z
17- faceUvVectors[1 ][1 ] = vec3 (0.0 , - 1.0 , 0.0 ); // v -> -y
18- faceUvVectors[1 ][2 ] = vec3 (- 1.0 , 0.0 , 0.0 ); // -x face
19-
20- // +x
21- faceUvVectors[0 ][0 ] = vec3 (0.0 , 0.0 , - 1.0 ); // u -> -z
22- faceUvVectors[0 ][1 ] = vec3 (0.0 , - 1.0 , 0.0 ); // v -> -y
23- faceUvVectors[0 ][2 ] = vec3 (1.0 , 0.0 , 0.0 ); // +x face
24-
25- // -y
26- faceUvVectors[3 ][0 ] = vec3 (1.0 , 0.0 , 0.0 ); // u -> +x
27- faceUvVectors[3 ][1 ] = vec3 (0.0 , 0.0 , - 1.0 ); // v -> -z
28- faceUvVectors[3 ][2 ] = vec3 (0.0 , - 1.0 , 0.0 ); // -y face
29-
30- // +y
31- faceUvVectors[2 ][0 ] = vec3 (1.0 , 0.0 , 0.0 ); // u -> +x
32- faceUvVectors[2 ][1 ] = vec3 (0.0 , 0.0 , 1.0 ); // v -> +z
33- faceUvVectors[2 ][2 ] = vec3 (0.0 , 1.0 , 0.0 ); // +y face
34-
35- // -z
36- faceUvVectors[5 ][0 ] = vec3 (- 1.0 , 0.0 , 0.0 ); // u -> -x
37- faceUvVectors[5 ][1 ] = vec3 (0.0 , - 1.0 , 0.0 ); // v -> -y
38- faceUvVectors[5 ][2 ] = vec3 (0.0 , 0.0 , - 1.0 ); // -z face
39-
40- // +z
41- faceUvVectors[4 ][0 ] = vec3 (1.0 , 0.0 , 0.0 ); // u -> +x
42- faceUvVectors[4 ][1 ] = vec3 (0.0 , - 1.0 , 0.0 ); // v -> -y
43- faceUvVectors[4 ][2 ] = vec3 (0.0 , 0.0 , 1.0 ); // +z face
13+ vec3 a, b, c;
14+
15+ if (faceID == 1 ) { // -x
16+ a = vec3 (0.0 , 0.0 , 1.0 ); // u -> +z
17+ b = vec3 (0.0 , - 1.0 , 0.0 ); // v -> -y
18+ c = vec3 (- 1.0 , 0.0 , 0.0 ); // -x face
19+ } else if (faceID == 0 ) { // +x
20+ a = vec3 (0.0 , 0.0 , - 1.0 ); // u -> -z
21+ b = vec3 (0.0 , - 1.0 , 0.0 ); // v -> -y
22+ c = vec3 (1.0 , 0.0 , 0.0 ); // +x face
23+ } else if (faceID == 3 ) { // -y
24+ a = vec3 (1.0 , 0.0 , 0.0 ); // u -> +x
25+ b = vec3 (0.0 , 0.0 , - 1.0 ); // v -> -z
26+ c = vec3 (0.0 , - 1.0 , 0.0 ); // -y face
27+ } else if (faceID == 2 ) { // +y
28+ a = vec3 (1.0 , 0.0 , 0.0 ); // u -> +x
29+ b = vec3 (0.0 , 0.0 , 1.0 ); // v -> +z
30+ c = vec3 (0.0 , 1.0 , 0.0 ); // +y face
31+ } else if (faceID == 5 ) { // -z
32+ a = vec3 (- 1.0 , 0.0 , 0.0 ); // u -> -x
33+ b = vec3 (0.0 , - 1.0 , 0.0 ); // v -> -y
34+ c = vec3 (0.0 , 0.0 , - 1.0 ); // -z face
35+ } else /* if (faceID == 4) */ { // +z
36+ a = vec3 (1.0 , 0.0 , 0.0 ); // u -> +x
37+ b = vec3 (0.0 , - 1.0 , 0.0 ); // v -> -y
38+ c = vec3 (0.0 , 0.0 , 1.0 ); // +z face
39+ }
4440
4541 // out = u * s_faceUv[0] + v * s_faceUv[1] + s_faceUv[2].
46- vec3 result = (faceUvVectors[faceID][ 0 ] * uv.x) + (faceUvVectors[faceID][ 1 ] * uv.y) + faceUvVectors[faceID][ 2 ] ;
42+ vec3 result = (a * uv.x) + (b * uv.y) + c ;
4743 return normalize (result);
4844}
4945
0 commit comments