@animech-public/playcanvas
Version:
PlayCanvas WebGL game engine
47 lines (32 loc) • 1.08 kB
JavaScript
var skyboxVS = /* glsl */`
attribute vec3 aPosition;
uniform mat4 matrix_view;
uniform mat4 matrix_projectionSkybox;
uniform mat3 cubeMapRotationMatrix;
varying vec3 vViewDir;
uniform mat4 matrix_model;
varying vec3 vWorldPos;
void main(void) {
mat4 view = matrix_view;
vec4 worldPos = matrix_model * vec4(aPosition, 1.0);
vWorldPos = worldPos.xyz;
gl_Position = matrix_projectionSkybox * view * worldPos;
view[3][0] = view[3][1] = view[3][2] = 0.0;
gl_Position = matrix_projectionSkybox * view * vec4(aPosition, 1.0);
vViewDir = aPosition * cubeMapRotationMatrix;
// Force skybox to far Z, regardless of the clip planes on the camera
// Subtract a tiny fudge factor to ensure floating point errors don't
// still push pixels beyond far Z. See:
// https://community.khronos.org/t/skybox-problem/61857
gl_Position.z = gl_Position.w - 1.0e-7;
}
`;
export { skyboxVS as default };