drawProgramInfo = {
const shaders = {
vert: `#version 300 es
precision mediump float;
in vec3 position;
in vec3 normal;
in vec2 uv;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
uniform vec4 shift;
out vec3 fragNormal;
out vec2 fragUV;
void main () {
fragUV = uv;
fragNormal = normal;
float theta = 3.14159*shift.w/180.;
float C = cos(theta);
float S = sin(theta);
vec3 vPosition = vec3(position.x*C-position.y*S, position.x*S+position.y*C,position.z);//(shift.x>4.99)?vec3(position.x*C-position.y*S, position.x*S+position.y*C,position.z):position;
vec3 vShift = vec3(shift.x*C-shift.y*S, shift.x*S+shift.y*C,shift.z);//(shift.x>4.99)?vec3(shift.x*C-shift.y*S, shift.x*S+shift.y*C,shift.z):shift.xyz;
gl_Position = projectionMatrix*viewMatrix*vec4(vPosition+vShift, 1);
}
`,
frag: `#version 300 es
precision mediump float;
in vec2 fragUV;
in vec3 fragNormal;
uniform sampler2D tex;
out vec4 outColor;
void main () {
vec3 textureColor = texture(tex, fragUV).xyz;
outColor = vec4(textureColor, 1);
}
`
};
errorBlock.style.height = "20px";
errorBlock.innerHTML = "Program Shader compilation successful";
return twgl.createProgramInfo(gl, [shaders.vert, shaders.frag], (message) => {
errorBlock.style.height = "400px";
errorBlock.innerHTML = "Scene Program Shader compilation error\n" + message;
});
}