litSceneProgramInfo = {
if(wow == "Texture Mapping"){
const vs = `#version 300 es
precision mediump float;
in vec3 position;
in vec3 normal;
in vec2 uv;
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
out vec3 fragNormal;
out vec3 fragPosition;
out vec2 fragUV;
void main () {
vec4 newPosition = modelMatrix*vec4(position,1);
fragPosition = newPosition.xyz;
gl_Position = projectionMatrix*viewMatrix*newPosition;
mat4 normalMatrix = transpose(inverse(modelMatrix));
fragNormal = normalize((normalMatrix*vec4(normal,0)).xyz);
fragUV = uv;
}`;
const fs = `#version 300 es
precision mediump float;
out vec4 outColor;
in vec3 fragNormal;
in vec3 fragPosition;
in vec2 fragUV;
uniform vec4 light;
uniform vec3 eyePosition;
uniform vec3 materialColor, interiorColor;
uniform float ambientIntensity;
uniform vec3 specularColor;
uniform float shininess;
uniform float K_s;
uniform sampler2D tex;
uniform int wows;
uniform samplerCube cubeMapTex;
void main () {
vec3 N = normalize(fragNormal);
vec3 V = normalize(eyePosition-fragPosition);
vec3 R = reflect(-V,N);
vec3 color = texture(tex,fragUV).rgb;
outColor = vec4(color,1);
}`;
errorBlock.style.height = "20px";
errorBlock.innerHTML = "Program Shader compilation successful";
return twgl.createProgramInfo(gl, [vs, fs], (message) => {
errorBlock.style.height = "400px";
errorBlock.innerHTML = "Scene Program Shader compilation error\n" + message;
});
}
else{
const vs = `#version 300 es
precision mediump float;
in vec3 position;
in vec3 normal;
in vec2 uv;
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
out vec3 fragNormal;
out vec3 fragPosition;
out vec2 fragUV;
void main () {
vec4 newPosition = modelMatrix*vec4(position,1);
fragPosition = newPosition.xyz;
gl_Position = projectionMatrix*viewMatrix*newPosition;
mat4 normalMatrix = transpose(inverse(modelMatrix));
fragNormal = normalize((normalMatrix*vec4(normal,0)).xyz);
fragUV = uv;
}`;
const fs = `#version 300 es
precision mediump float;
out vec4 outColor;
in vec3 fragNormal;
in vec3 fragPosition;
in vec2 fragUV;
uniform vec4 light;
uniform vec3 eyePosition;
uniform vec3 materialColor, interiorColor;
uniform float ambientIntensity;
uniform vec3 specularColor;
uniform float shininess;
uniform float K_s;
uniform sampler2D tex;
uniform int wows;
uniform samplerCube cubeMapTex;
void main () {
vec3 N = normalize(fragNormal);
vec3 V = normalize(eyePosition-fragPosition);
vec3 R = reflect(-V,N);
vec3 color = texture(cubeMapTex,R).rgb;
outColor = vec4(color,1);
}`;
errorBlock.style.height = "20px";
errorBlock.innerHTML = "Program Shader compilation successful";
return twgl.createProgramInfo(gl, [vs, fs], (message) => {
errorBlock.style.height = "400px";
errorBlock.innerHTML = "Scene Program Shader compilation error\n" + message;
});
}
}