|
@@ -794,26 +794,30 @@ attribute vec3 position;
|
|
attribute vec2 uv;
|
|
attribute vec2 uv;
|
|
attribute float faceIndex;
|
|
attribute float faceIndex;
|
|
varying vec3 vOutputDirection;
|
|
varying vec3 vOutputDirection;
|
|
|
|
+
|
|
|
|
+// RH coordinate system; PMREM face-indexing convention
|
|
vec3 getDirection(vec2 uv, float face) {
|
|
vec3 getDirection(vec2 uv, float face) {
|
|
uv = 2.0 * uv - 1.0;
|
|
uv = 2.0 * uv - 1.0;
|
|
vec3 direction = vec3(uv, 1.0);
|
|
vec3 direction = vec3(uv, 1.0);
|
|
if (face == 0.0) {
|
|
if (face == 0.0) {
|
|
- direction = direction.zyx;
|
|
|
|
- direction.z *= -1.0;
|
|
|
|
|
|
+ direction = direction.zyx; // ( 1, v, u ) pos x
|
|
} else if (face == 1.0) {
|
|
} else if (face == 1.0) {
|
|
direction = direction.xzy;
|
|
direction = direction.xzy;
|
|
- direction.z *= -1.0;
|
|
|
|
|
|
+ direction.xz *= -1.0; // ( -u, 1, -v ) pos y
|
|
|
|
+ } else if (face == 2.0) {
|
|
|
|
+ direction.x *= -1.0; // ( -u, v, 1 ) pos z
|
|
} else if (face == 3.0) {
|
|
} else if (face == 3.0) {
|
|
direction = direction.zyx;
|
|
direction = direction.zyx;
|
|
- direction.x *= -1.0;
|
|
|
|
|
|
+ direction.xz *= -1.0; // ( -1, v, -u ) neg x
|
|
} else if (face == 4.0) {
|
|
} else if (face == 4.0) {
|
|
direction = direction.xzy;
|
|
direction = direction.xzy;
|
|
- direction.y *= -1.0;
|
|
|
|
|
|
+ direction.xy *= -1.0; // ( -u, -1, v ) neg y
|
|
} else if (face == 5.0) {
|
|
} else if (face == 5.0) {
|
|
- direction.xz *= -1.0;
|
|
|
|
|
|
+ direction.z *= -1.0; // ( u, v, -1 ) neg z
|
|
}
|
|
}
|
|
return direction;
|
|
return direction;
|
|
}
|
|
}
|
|
|
|
+
|
|
void main() {
|
|
void main() {
|
|
vOutputDirection = getDirection(uv, faceIndex);
|
|
vOutputDirection = getDirection(uv, faceIndex);
|
|
gl_Position = vec4( position, 1.0 );
|
|
gl_Position = vec4( position, 1.0 );
|