shaders/skybox.tstypescript
import { ShaderProgram } from "../webgl/ShaderProgram";
import { types } from "../webgl/types";
export function skybox(): ShaderProgram {
return new ShaderProgram("skybox", {
uniforms: {
projectionViewMatrix: { type: types.MAT4 },
uSampler: "samplercube"
},
attributes: {
aVertexPosition: "vec3"
},
vertexShader: `attribute vec3 aVertexPosition;
uniform mat4 projectionViewMatrix;
varying vec3 vTextureCoord;
void main(void) {
vTextureCoord = normalize(aVertexPosition);
vec4 clipPos = projectionViewMatrix * vec4(aVertexPosition, 1.0);
gl_Position = clipPos.xyww;
}`,
fragmentShader: `precision highp float;
varying vec3 vTextureCoord;
uniform samplerCube uSampler;
void main(void) {
gl_FragColor = textureCube(uSampler, vTextureCoord);
}`
});
}