|
@@ -162,7 +162,7 @@ THREE.DirectionalLight&&y++;v instanceof THREE.PointLight&&t++}if(t+y<=4){u=y;t=
|
|
c.attachShader(s,i("fragment",v+t));c.attachShader(s,i("vertex",y+u));c.linkProgram(s);c.getProgramParameter(s,c.LINK_STATUS)||alert("Could not initialise shaders\nVALIDATE_STATUS: "+c.getProgramParameter(s,c.VALIDATE_STATUS)+", gl error ["+c.getError()+"]");s.uniforms={};s.attributes={};l.program=s;t=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(h in l.uniforms)t.push(h);h=l.program;u=0;for(s=t.length;u<s;u++){v=t[u];h.uniforms[v]=c.getUniformLocation(h,
|
|
c.attachShader(s,i("fragment",v+t));c.attachShader(s,i("vertex",y+u));c.linkProgram(s);c.getProgramParameter(s,c.LINK_STATUS)||alert("Could not initialise shaders\nVALIDATE_STATUS: "+c.getProgramParameter(s,c.VALIDATE_STATUS)+", gl error ["+c.getError()+"]");s.uniforms={};s.attributes={};l.program=s;t=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(h in l.uniforms)t.push(h);h=l.program;u=0;for(s=t.length;u<s;u++){v=t[u];h.uniforms[v]=c.getUniformLocation(h,
|
|
v)}h=l.program;t=["position","normal","uv","tangent"];u=0;for(s=t.length;u<s;u++){v=t[u];h.attributes[v]=c.getAttribLocation(h,v)}}h=l.program;if(h!=k){c.useProgram(h);k=h}this.loadCamera(h,d);this.loadMatrices(h);if(l instanceof THREE.MeshPhongMaterial||l instanceof THREE.MeshLambertMaterial){d=this.setupLights(h,g);l.uniforms.enableLighting.value=d.directional.positions.length+d.point.positions.length;l.uniforms.ambientLightColor.value=d.ambient;l.uniforms.directionalLightColor.value=d.directional.colors;
|
|
v)}h=l.program;t=["position","normal","uv","tangent"];u=0;for(s=t.length;u<s;u++){v=t[u];h.attributes[v]=c.getAttribLocation(h,v)}}h=l.program;if(h!=k){c.useProgram(h);k=h}this.loadCamera(h,d);this.loadMatrices(h);if(l instanceof THREE.MeshPhongMaterial||l instanceof THREE.MeshLambertMaterial){d=this.setupLights(h,g);l.uniforms.enableLighting.value=d.directional.positions.length+d.point.positions.length;l.uniforms.ambientLightColor.value=d.ambient;l.uniforms.directionalLightColor.value=d.directional.colors;
|
|
l.uniforms.directionalLightDirection.value=d.directional.positions;l.uniforms.pointLightColor.value=d.point.colors;l.uniforms.pointLightPosition.value=d.point.positions}if(l instanceof THREE.MeshBasicMaterial||l instanceof THREE.MeshLambertMaterial||l instanceof THREE.MeshPhongMaterial)f(l,o);l instanceof THREE.LineBasicMaterial&&e(l,o);if(l instanceof THREE.MeshPhongMaterial){l.uniforms.ambient.value.setRGB(l.ambient.r,l.ambient.g,l.ambient.b);l.uniforms.specular.value.setRGB(l.specular.r,l.specular.g,
|
|
l.uniforms.directionalLightDirection.value=d.directional.positions;l.uniforms.pointLightColor.value=d.point.colors;l.uniforms.pointLightPosition.value=d.point.positions}if(l instanceof THREE.MeshBasicMaterial||l instanceof THREE.MeshLambertMaterial||l instanceof THREE.MeshPhongMaterial)f(l,o);l instanceof THREE.LineBasicMaterial&&e(l,o);if(l instanceof THREE.MeshPhongMaterial){l.uniforms.ambient.value.setRGB(l.ambient.r,l.ambient.g,l.ambient.b);l.uniforms.specular.value.setRGB(l.specular.r,l.specular.g,
|
|
-l.specular.b);l.uniforms.shininess.value=l.shininess}o=l.uniforms;for(r in o){g=o[r].type;d=o[r].value;t=h.uniforms[r];if(g=="i")c.uniform1i(t,d);else if(g=="f")c.uniform1f(t,d);else if(g=="fv")c.uniform3fv(t,d);else if(g=="v2")c.uniform2f(t,d.x,d.y);else if(g=="v3")c.uniform3f(t,d.x,d.y,d.z);else if(g=="c")c.uniform3f(t,d.r,d.g,d.b);else if(g=="t"){c.uniform1i(t,d);if(g=o[r].texture)if(g.image instanceof Array&&g.image.length==6){g=g;d=d;if(g.image.length==6){if(!g.image.__webGLTextureCube&&!g.image.__cubeMapInitialized&&
|
|
|
|
|
|
+l.specular.b);l.uniforms.shininess.value=l.shininess}o=l.uniforms;for(r in o)if(t=h.uniforms[r]){g=o[r].type;d=o[r].value;if(g=="i")c.uniform1i(t,d);else if(g=="f")c.uniform1f(t,d);else if(g=="fv")c.uniform3fv(t,d);else if(g=="v2")c.uniform2f(t,d.x,d.y);else if(g=="v3")c.uniform3f(t,d.x,d.y,d.z);else if(g=="c")c.uniform3f(t,d.r,d.g,d.b);else if(g=="t"){c.uniform1i(t,d);if(g=o[r].texture)if(g.image instanceof Array&&g.image.length==6){g=g;d=d;if(g.image.length==6){if(!g.image.__webGLTextureCube&&!g.image.__cubeMapInitialized&&
|
|
g.image.loadCount==6){g.image.__webGLTextureCube=c.createTexture();c.bindTexture(c.TEXTURE_CUBE_MAP,g.image.__webGLTextureCube);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MAG_FILTER,c.LINEAR);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);for(t=0;t<6;++t)c.texImage2D(c.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,
|
|
g.image.loadCount==6){g.image.__webGLTextureCube=c.createTexture();c.bindTexture(c.TEXTURE_CUBE_MAP,g.image.__webGLTextureCube);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MAG_FILTER,c.LINEAR);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);for(t=0;t<6;++t)c.texImage2D(c.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,
|
|
g.image[t]);c.generateMipmap(c.TEXTURE_CUBE_MAP);c.bindTexture(c.TEXTURE_CUBE_MAP,null);g.image.__cubeMapInitialized=true}c.activeTexture(c.TEXTURE0+d);c.bindTexture(c.TEXTURE_CUBE_MAP,g.image.__webGLTextureCube)}}else{g=g;d=d;if(!g.__webGLTexture&&g.image.loaded){g.__webGLTexture=c.createTexture();c.bindTexture(c.TEXTURE_2D,g.__webGLTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,g.image);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,j(g.wrap_s));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,
|
|
g.image[t]);c.generateMipmap(c.TEXTURE_CUBE_MAP);c.bindTexture(c.TEXTURE_CUBE_MAP,null);g.image.__cubeMapInitialized=true}c.activeTexture(c.TEXTURE0+d);c.bindTexture(c.TEXTURE_CUBE_MAP,g.image.__webGLTextureCube)}}else{g=g;d=d;if(!g.__webGLTexture&&g.image.loaded){g.__webGLTexture=c.createTexture();c.bindTexture(c.TEXTURE_2D,g.__webGLTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,g.image);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,j(g.wrap_s));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,
|
|
j(g.wrap_t));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,j(g.mag_filter));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,j(g.min_filter));c.generateMipmap(c.TEXTURE_2D);c.bindTexture(c.TEXTURE_2D,null)}c.activeTexture(c.TEXTURE0+d);c.bindTexture(c.TEXTURE_2D,g.__webGLTexture)}}}r=h.attributes;c.bindBuffer(c.ARRAY_BUFFER,m.__webGLVertexBuffer);c.vertexAttribPointer(r.position,3,c.FLOAT,false,0,0);c.enableVertexAttribArray(r.position);if(r.normal>=0){c.bindBuffer(c.ARRAY_BUFFER,m.__webGLNormalBuffer);
|
|
j(g.wrap_t));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,j(g.mag_filter));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,j(g.min_filter));c.generateMipmap(c.TEXTURE_2D);c.bindTexture(c.TEXTURE_2D,null)}c.activeTexture(c.TEXTURE0+d);c.bindTexture(c.TEXTURE_2D,g.__webGLTexture)}}}r=h.attributes;c.bindBuffer(c.ARRAY_BUFFER,m.__webGLVertexBuffer);c.vertexAttribPointer(r.position,3,c.FLOAT,false,0,0);c.enableVertexAttribArray(r.position);if(r.normal>=0){c.bindBuffer(c.ARRAY_BUFFER,m.__webGLNormalBuffer);
|