Răsfoiți Sursa

Added "iv" uniform type for passing integer arrays interpreted as ivec3.

alteredq 13 ani în urmă
părinte
comite
ea4b13aed2
3 a modificat fișierele cu 38 adăugiri și 34 ștergeri
  1. 17 17
      build/Three.js
  2. 17 17
      build/custom/ThreeWebGL.js
  3. 4 0
      src/renderers/WebGLRenderer.js

+ 17 - 17
build/Three.js

@@ -326,23 +326,23 @@ d.opacity;D.gammaInput?j.diffuse.value.copyGammaToLinear(d.color):j.diffuse.valu
 THREE.LineBasicMaterial){j.diffuse.value=d.color;j.opacity.value=d.opacity}else if(d instanceof THREE.ParticleBasicMaterial){j.psColor.value=d.color;j.opacity.value=d.opacity;j.size.value=d.size;j.scale.value=z.height/2;j.map.texture=d.map}else if(d instanceof THREE.MeshPhongMaterial){j.shininess.value=d.shininess;if(D.gammaInput){j.ambient.value.copyGammaToLinear(d.ambient);j.emissive.value.copyGammaToLinear(d.emissive);j.specular.value.copyGammaToLinear(d.specular)}else{j.ambient.value=d.ambient;
 j.emissive.value=d.emissive;j.specular.value=d.specular}d.wrapAround&&j.wrapRGB.value.copy(d.wrapRGB)}else if(d instanceof THREE.MeshLambertMaterial){if(D.gammaInput){j.ambient.value.copyGammaToLinear(d.ambient);j.emissive.value.copyGammaToLinear(d.emissive)}else{j.ambient.value=d.ambient;j.emissive.value=d.emissive}d.wrapAround&&j.wrapRGB.value.copy(d.wrapRGB)}else if(d instanceof THREE.MeshDepthMaterial){j.mNear.value=a.near;j.mFar.value=a.far;j.opacity.value=d.opacity}else if(d instanceof THREE.MeshNormalMaterial)j.opacity.value=
 d.opacity;if(f.receiveShadow&&!d._shadowPass&&j.shadowMatrix){e=c=0;for(i=b.length;e<i;e++){l=b[e];if(l.castShadow&&(l instanceof THREE.SpotLight||l instanceof THREE.DirectionalLight&&!l.shadowCascade)){j.shadowMap.texture[c]=l.shadowMap;j.shadowMapSize.value[c]=l.shadowMapSize;j.shadowMatrix.value[c]=l.shadowMatrix;j.shadowDarkness.value[c]=l.shadowDarkness;j.shadowBias.value[c]=l.shadowBias;c++}}}b=d.uniformsList;j=0;for(c=b.length;j<c;j++)if(l=g.uniforms[b[j][1]]){e=b[j][0];m=e.type;i=e.value;
-if(m==="i")k.uniform1i(l,i);else if(m==="f")k.uniform1f(l,i);else if(m==="v2")k.uniform2f(l,i.x,i.y);else if(m==="v3")k.uniform3f(l,i.x,i.y,i.z);else if(m==="v4")k.uniform4f(l,i.x,i.y,i.z,i.w);else if(m==="c")k.uniform3f(l,i.r,i.g,i.b);else if(m==="iv1")k.uniform1iv(l,i);else if(m==="fv1")k.uniform1fv(l,i);else if(m==="fv")k.uniform3fv(l,i);else if(m==="v2v"){if(e._array===void 0)e._array=new Float32Array(2*i.length);m=0;for(o=i.length;m<o;m++){q=m*2;e._array[q]=i[m].x;e._array[q+1]=i[m].y}k.uniform2fv(l,
-e._array)}else if(m==="v3v"){if(e._array===void 0)e._array=new Float32Array(3*i.length);m=0;for(o=i.length;m<o;m++){q=m*3;e._array[q]=i[m].x;e._array[q+1]=i[m].y;e._array[q+2]=i[m].z}k.uniform3fv(l,e._array)}else if(m==="v4v"){if(e._array===void 0)e._array=new Float32Array(4*i.length);m=0;for(o=i.length;m<o;m++){q=m*4;e._array[q]=i[m].x;e._array[q+1]=i[m].y;e._array[q+2]=i[m].z;e._array[q+3]=i[m].w}k.uniform4fv(l,e._array)}else if(m==="m4"){if(e._array===void 0)e._array=new Float32Array(16);i.flattenToArray(e._array);
-k.uniformMatrix4fv(l,false,e._array)}else if(m==="m4v"){if(e._array===void 0)e._array=new Float32Array(16*i.length);m=0;for(o=i.length;m<o;m++)i[m].flattenToArrayOffset(e._array,m*16);k.uniformMatrix4fv(l,false,e._array)}else if(m==="t"){k.uniform1i(l,i);if(l=e.texture)if(l.image instanceof Array&&l.image.length===6){e=l;if(e.image.length===6)if(e.needsUpdate){if(!e.image.__webglTextureCube)e.image.__webglTextureCube=k.createTexture();k.activeTexture(k.TEXTURE0+i);k.bindTexture(k.TEXTURE_CUBE_MAP,
-e.image.__webglTextureCube);k.pixelStorei(k.UNPACK_FLIP_Y_WEBGL,e.flipY);i=[];for(l=0;l<6;l++){m=i;o=l;if(D.autoScaleCubemaps){q=e.image[l];w=dc;if(!(q.width<=w&&q.height<=w)){t=Math.max(q.width,q.height);s=Math.floor(q.width*w/t);w=Math.floor(q.height*w/t);t=document.createElement("canvas");t.width=s;t.height=w;t.getContext("2d").drawImage(q,0,0,q.width,q.height,0,0,s,w);q=t}}else q=e.image[l];m[o]=q}l=i[0];m=(l.width&l.width-1)===0&&(l.height&l.height-1)===0;o=C(e.format);q=C(e.type);v(k.TEXTURE_CUBE_MAP,
-e,m);for(l=0;l<6;l++)k.texImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+l,0,o,o,q,i[l]);e.generateMipmaps&&m&&k.generateMipmap(k.TEXTURE_CUBE_MAP);e.needsUpdate=false;if(e.onUpdate)e.onUpdate()}else{k.activeTexture(k.TEXTURE0+i);k.bindTexture(k.TEXTURE_CUBE_MAP,e.image.__webglTextureCube)}}else if(l instanceof THREE.WebGLRenderTargetCube){e=l;k.activeTexture(k.TEXTURE0+i);k.bindTexture(k.TEXTURE_CUBE_MAP,e.__webglTexture)}else D.setTexture(l,i)}else if(m==="tv"){if(e._array===void 0){e._array=[];m=0;for(o=
-e.texture.length;m<o;m++)e._array[m]=i+m}k.uniform1iv(l,e._array);m=0;for(o=e.texture.length;m<o;m++)(l=e.texture[m])&&D.setTexture(l,e._array[m])}}if((d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&h.cameraPosition!==null){b=a.matrixWorld.getPosition();k.uniform3f(h.cameraPosition,b.x,b.y,b.z)}(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&h.viewMatrix!==null&&k.uniformMatrix4fv(h.viewMatrix,
-false,a._viewMatrixArray)}if(d.skinning)if(Wa&&f.useVertexTexture){if(h.boneTexture!==null){k.uniform1i(h.boneTexture,12);D.setTexture(f.boneTexture,12)}}else h.boneGlobalMatrices!==null&&k.uniformMatrix4fv(h.boneGlobalMatrices,false,f.boneMatrices);k.uniformMatrix4fv(h.modelViewMatrix,false,f._modelViewMatrix.elements);h.normalMatrix&&k.uniformMatrix3fv(h.normalMatrix,false,f._normalMatrix.elements);h.objectMatrix!==null&&k.uniformMatrix4fv(h.objectMatrix,false,f.matrixWorld.elements);return g}function s(a,
-b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function u(a,b,c){if(Pa!==a){a?k.enable(k.POLYGON_OFFSET_FILL):k.disable(k.POLYGON_OFFSET_FILL);Pa=a}if(a&&(Qa!==b||Va!==c)){k.polygonOffset(b,c);Qa=b;Va=c}}function t(a,b){var c;a==="fragment"?c=k.createShader(k.FRAGMENT_SHADER):a==="vertex"&&(c=k.createShader(k.VERTEX_SHADER));k.shaderSource(c,b);k.compileShader(c);if(!k.getShaderParameter(c,k.COMPILE_STATUS)){console.error(k.getShaderInfoLog(c));
-console.error(b);return null}return c}function v(a,b,c){if(c){k.texParameteri(a,k.TEXTURE_WRAP_S,C(b.wrapS));k.texParameteri(a,k.TEXTURE_WRAP_T,C(b.wrapT));k.texParameteri(a,k.TEXTURE_MAG_FILTER,C(b.magFilter));k.texParameteri(a,k.TEXTURE_MIN_FILTER,C(b.minFilter))}else{k.texParameteri(a,k.TEXTURE_WRAP_S,k.CLAMP_TO_EDGE);k.texParameteri(a,k.TEXTURE_WRAP_T,k.CLAMP_TO_EDGE);k.texParameteri(a,k.TEXTURE_MAG_FILTER,F(b.magFilter));k.texParameteri(a,k.TEXTURE_MIN_FILTER,F(b.minFilter))}}function x(a,b){k.bindRenderbuffer(k.RENDERBUFFER,
-a);if(b.depthBuffer&&!b.stencilBuffer){k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_COMPONENT16,b.width,b.height);k.framebufferRenderbuffer(k.FRAMEBUFFER,k.DEPTH_ATTACHMENT,k.RENDERBUFFER,a)}else if(b.depthBuffer&&b.stencilBuffer){k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_STENCIL,b.width,b.height);k.framebufferRenderbuffer(k.FRAMEBUFFER,k.DEPTH_STENCIL_ATTACHMENT,k.RENDERBUFFER,a)}else k.renderbufferStorage(k.RENDERBUFFER,k.RGBA4,b.width,b.height)}function F(a){return a===THREE.NearestFilter||
-a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?k.NEAREST:k.LINEAR}function C(a){return a===THREE.RepeatWrapping?k.REPEAT:a===THREE.ClampToEdgeWrapping?k.CLAMP_TO_EDGE:a===THREE.MirroredRepeatWrapping?k.MIRRORED_REPEAT:a===THREE.NearestFilter?k.NEAREST:a===THREE.NearestMipMapNearestFilter?k.NEAREST_MIPMAP_NEAREST:a===THREE.NearestMipMapLinearFilter?k.NEAREST_MIPMAP_LINEAR:a===THREE.LinearFilter?k.LINEAR:a===THREE.LinearMipMapNearestFilter?k.LINEAR_MIPMAP_NEAREST:a===THREE.LinearMipMapLinearFilter?
-k.LINEAR_MIPMAP_LINEAR:a===THREE.UnsignedByteType?k.UNSIGNED_BYTE:a===THREE.UnsignedShort4444Type?k.UNSIGNED_SHORT_4_4_4_4:a===THREE.UnsignedShort5551Type?k.UNSIGNED_SHORT_5_5_5_1:a===THREE.UnsignedShort565Type?k.UNSIGNED_SHORT_5_6_5:a===THREE.ByteType?k.BYTE:a===THREE.ShortType?k.SHORT:a===THREE.UnsignedShortType?k.UNSIGNED_SHORT:a===THREE.IntType?k.INT:a===THREE.UnsignedIntType?k.UNSIGNED_INT:a===THREE.FloatType?k.FLOAT:a===THREE.AlphaFormat?k.ALPHA:a===THREE.RGBFormat?k.RGB:a===THREE.RGBAFormat?
-k.RGBA:a===THREE.LuminanceFormat?k.LUMINANCE:a===THREE.LuminanceAlphaFormat?k.LUMINANCE_ALPHA:a===THREE.AddEquation?k.FUNC_ADD:a===THREE.SubtractEquation?k.FUNC_SUBTRACT:a===THREE.ReverseSubtractEquation?k.FUNC_REVERSE_SUBTRACT:a===THREE.ZeroFactor?k.ZERO:a===THREE.OneFactor?k.ONE:a===THREE.SrcColorFactor?k.SRC_COLOR:a===THREE.OneMinusSrcColorFactor?k.ONE_MINUS_SRC_COLOR:a===THREE.SrcAlphaFactor?k.SRC_ALPHA:a===THREE.OneMinusSrcAlphaFactor?k.ONE_MINUS_SRC_ALPHA:a===THREE.DstAlphaFactor?k.DST_ALPHA:
-a===THREE.OneMinusDstAlphaFactor?k.ONE_MINUS_DST_ALPHA:a===THREE.DstColorFactor?k.DST_COLOR:a===THREE.OneMinusDstColorFactor?k.ONE_MINUS_DST_COLOR:a===THREE.SrcAlphaSaturateFactor?k.SRC_ALPHA_SATURATE:0}console.log("THREE.WebGLRenderer",THREE.REVISION);var a=a||{},z=a.canvas!==void 0?a.canvas:document.createElement("canvas"),w=a.precision!==void 0?a.precision:"highp",H=a.alpha!==void 0?a.alpha:true,E=a.premultipliedAlpha!==void 0?a.premultipliedAlpha:true,O=a.antialias!==void 0?a.antialias:false,
-Q=a.stencil!==void 0?a.stencil:true,Y=a.preserveDrawingBuffer!==void 0?a.preserveDrawingBuffer:false,B=a.clearColor!==void 0?new THREE.Color(a.clearColor):new THREE.Color(0),J=a.clearAlpha!==void 0?a.clearAlpha:0,P=a.maxLights!==void 0?a.maxLights:4;this.domElement=z;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=true;this.shadowMapEnabled=this.physicallyBasedShading=this.gammaOutput=this.gammaInput=
-false;this.shadowMapCullFrontFaces=this.shadowMapSoft=this.shadowMapAutoUpdate=true;this.shadowMapCascade=this.shadowMapDebug=false;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=true;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var D=this,W=[],R=0,N=null,ba=null,U=-1,I=null,ca=null,ha=0,L=-1,X=-1,S=-1,T=-1,ia=-1,ma=-1,za=-1,Ga=-1,Pa=null,Qa=null,Va=null,nb=null,Nb=0,Ob=
-0,ob=0,jb=0,kb=0,bb=0,Da=new THREE.Frustum,Aa=new THREE.Matrix4,fb=new THREE.Matrix4,pa=new THREE.Vector4,Fa=new THREE.Vector3,Sa=true,ra={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],angles:[],exponents:[]}},k;try{if(!(k=z.getContext("experimental-webgl",{alpha:H,premultipliedAlpha:E,antialias:O,stencil:Q,preserveDrawingBuffer:Y})))throw"Error creating WebGL context.";
+if(m==="i")k.uniform1i(l,i);else if(m==="f")k.uniform1f(l,i);else if(m==="v2")k.uniform2f(l,i.x,i.y);else if(m==="v3")k.uniform3f(l,i.x,i.y,i.z);else if(m==="v4")k.uniform4f(l,i.x,i.y,i.z,i.w);else if(m==="c")k.uniform3f(l,i.r,i.g,i.b);else if(m==="iv1")k.uniform1iv(l,i);else if(m==="iv")k.uniform3iv(l,i);else if(m==="fv1")k.uniform1fv(l,i);else if(m==="fv")k.uniform3fv(l,i);else if(m==="v2v"){if(e._array===void 0)e._array=new Float32Array(2*i.length);m=0;for(o=i.length;m<o;m++){q=m*2;e._array[q]=
+i[m].x;e._array[q+1]=i[m].y}k.uniform2fv(l,e._array)}else if(m==="v3v"){if(e._array===void 0)e._array=new Float32Array(3*i.length);m=0;for(o=i.length;m<o;m++){q=m*3;e._array[q]=i[m].x;e._array[q+1]=i[m].y;e._array[q+2]=i[m].z}k.uniform3fv(l,e._array)}else if(m==="v4v"){if(e._array===void 0)e._array=new Float32Array(4*i.length);m=0;for(o=i.length;m<o;m++){q=m*4;e._array[q]=i[m].x;e._array[q+1]=i[m].y;e._array[q+2]=i[m].z;e._array[q+3]=i[m].w}k.uniform4fv(l,e._array)}else if(m==="m4"){if(e._array===
+void 0)e._array=new Float32Array(16);i.flattenToArray(e._array);k.uniformMatrix4fv(l,false,e._array)}else if(m==="m4v"){if(e._array===void 0)e._array=new Float32Array(16*i.length);m=0;for(o=i.length;m<o;m++)i[m].flattenToArrayOffset(e._array,m*16);k.uniformMatrix4fv(l,false,e._array)}else if(m==="t"){k.uniform1i(l,i);if(l=e.texture)if(l.image instanceof Array&&l.image.length===6){e=l;if(e.image.length===6)if(e.needsUpdate){if(!e.image.__webglTextureCube)e.image.__webglTextureCube=k.createTexture();
+k.activeTexture(k.TEXTURE0+i);k.bindTexture(k.TEXTURE_CUBE_MAP,e.image.__webglTextureCube);k.pixelStorei(k.UNPACK_FLIP_Y_WEBGL,e.flipY);i=[];for(l=0;l<6;l++){m=i;o=l;if(D.autoScaleCubemaps){q=e.image[l];w=dc;if(!(q.width<=w&&q.height<=w)){t=Math.max(q.width,q.height);s=Math.floor(q.width*w/t);w=Math.floor(q.height*w/t);t=document.createElement("canvas");t.width=s;t.height=w;t.getContext("2d").drawImage(q,0,0,q.width,q.height,0,0,s,w);q=t}}else q=e.image[l];m[o]=q}l=i[0];m=(l.width&l.width-1)===0&&
+(l.height&l.height-1)===0;o=C(e.format);q=C(e.type);v(k.TEXTURE_CUBE_MAP,e,m);for(l=0;l<6;l++)k.texImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+l,0,o,o,q,i[l]);e.generateMipmaps&&m&&k.generateMipmap(k.TEXTURE_CUBE_MAP);e.needsUpdate=false;if(e.onUpdate)e.onUpdate()}else{k.activeTexture(k.TEXTURE0+i);k.bindTexture(k.TEXTURE_CUBE_MAP,e.image.__webglTextureCube)}}else if(l instanceof THREE.WebGLRenderTargetCube){e=l;k.activeTexture(k.TEXTURE0+i);k.bindTexture(k.TEXTURE_CUBE_MAP,e.__webglTexture)}else D.setTexture(l,
+i)}else if(m==="tv"){if(e._array===void 0){e._array=[];m=0;for(o=e.texture.length;m<o;m++)e._array[m]=i+m}k.uniform1iv(l,e._array);m=0;for(o=e.texture.length;m<o;m++)(l=e.texture[m])&&D.setTexture(l,e._array[m])}}if((d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&h.cameraPosition!==null){b=a.matrixWorld.getPosition();k.uniform3f(h.cameraPosition,b.x,b.y,b.z)}(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||
+d.skinning)&&h.viewMatrix!==null&&k.uniformMatrix4fv(h.viewMatrix,false,a._viewMatrixArray)}if(d.skinning)if(Wa&&f.useVertexTexture){if(h.boneTexture!==null){k.uniform1i(h.boneTexture,12);D.setTexture(f.boneTexture,12)}}else h.boneGlobalMatrices!==null&&k.uniformMatrix4fv(h.boneGlobalMatrices,false,f.boneMatrices);k.uniformMatrix4fv(h.modelViewMatrix,false,f._modelViewMatrix.elements);h.normalMatrix&&k.uniformMatrix3fv(h.normalMatrix,false,f._normalMatrix.elements);h.objectMatrix!==null&&k.uniformMatrix4fv(h.objectMatrix,
+false,f.matrixWorld.elements);return g}function s(a,b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function u(a,b,c){if(Pa!==a){a?k.enable(k.POLYGON_OFFSET_FILL):k.disable(k.POLYGON_OFFSET_FILL);Pa=a}if(a&&(Qa!==b||Va!==c)){k.polygonOffset(b,c);Qa=b;Va=c}}function t(a,b){var c;a==="fragment"?c=k.createShader(k.FRAGMENT_SHADER):a==="vertex"&&(c=k.createShader(k.VERTEX_SHADER));k.shaderSource(c,b);k.compileShader(c);
+if(!k.getShaderParameter(c,k.COMPILE_STATUS)){console.error(k.getShaderInfoLog(c));console.error(b);return null}return c}function v(a,b,c){if(c){k.texParameteri(a,k.TEXTURE_WRAP_S,C(b.wrapS));k.texParameteri(a,k.TEXTURE_WRAP_T,C(b.wrapT));k.texParameteri(a,k.TEXTURE_MAG_FILTER,C(b.magFilter));k.texParameteri(a,k.TEXTURE_MIN_FILTER,C(b.minFilter))}else{k.texParameteri(a,k.TEXTURE_WRAP_S,k.CLAMP_TO_EDGE);k.texParameteri(a,k.TEXTURE_WRAP_T,k.CLAMP_TO_EDGE);k.texParameteri(a,k.TEXTURE_MAG_FILTER,F(b.magFilter));
+k.texParameteri(a,k.TEXTURE_MIN_FILTER,F(b.minFilter))}}function x(a,b){k.bindRenderbuffer(k.RENDERBUFFER,a);if(b.depthBuffer&&!b.stencilBuffer){k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_COMPONENT16,b.width,b.height);k.framebufferRenderbuffer(k.FRAMEBUFFER,k.DEPTH_ATTACHMENT,k.RENDERBUFFER,a)}else if(b.depthBuffer&&b.stencilBuffer){k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_STENCIL,b.width,b.height);k.framebufferRenderbuffer(k.FRAMEBUFFER,k.DEPTH_STENCIL_ATTACHMENT,k.RENDERBUFFER,a)}else k.renderbufferStorage(k.RENDERBUFFER,
+k.RGBA4,b.width,b.height)}function F(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?k.NEAREST:k.LINEAR}function C(a){return a===THREE.RepeatWrapping?k.REPEAT:a===THREE.ClampToEdgeWrapping?k.CLAMP_TO_EDGE:a===THREE.MirroredRepeatWrapping?k.MIRRORED_REPEAT:a===THREE.NearestFilter?k.NEAREST:a===THREE.NearestMipMapNearestFilter?k.NEAREST_MIPMAP_NEAREST:a===THREE.NearestMipMapLinearFilter?k.NEAREST_MIPMAP_LINEAR:a===THREE.LinearFilter?k.LINEAR:
+a===THREE.LinearMipMapNearestFilter?k.LINEAR_MIPMAP_NEAREST:a===THREE.LinearMipMapLinearFilter?k.LINEAR_MIPMAP_LINEAR:a===THREE.UnsignedByteType?k.UNSIGNED_BYTE:a===THREE.UnsignedShort4444Type?k.UNSIGNED_SHORT_4_4_4_4:a===THREE.UnsignedShort5551Type?k.UNSIGNED_SHORT_5_5_5_1:a===THREE.UnsignedShort565Type?k.UNSIGNED_SHORT_5_6_5:a===THREE.ByteType?k.BYTE:a===THREE.ShortType?k.SHORT:a===THREE.UnsignedShortType?k.UNSIGNED_SHORT:a===THREE.IntType?k.INT:a===THREE.UnsignedIntType?k.UNSIGNED_INT:a===THREE.FloatType?
+k.FLOAT:a===THREE.AlphaFormat?k.ALPHA:a===THREE.RGBFormat?k.RGB:a===THREE.RGBAFormat?k.RGBA:a===THREE.LuminanceFormat?k.LUMINANCE:a===THREE.LuminanceAlphaFormat?k.LUMINANCE_ALPHA:a===THREE.AddEquation?k.FUNC_ADD:a===THREE.SubtractEquation?k.FUNC_SUBTRACT:a===THREE.ReverseSubtractEquation?k.FUNC_REVERSE_SUBTRACT:a===THREE.ZeroFactor?k.ZERO:a===THREE.OneFactor?k.ONE:a===THREE.SrcColorFactor?k.SRC_COLOR:a===THREE.OneMinusSrcColorFactor?k.ONE_MINUS_SRC_COLOR:a===THREE.SrcAlphaFactor?k.SRC_ALPHA:a===THREE.OneMinusSrcAlphaFactor?
+k.ONE_MINUS_SRC_ALPHA:a===THREE.DstAlphaFactor?k.DST_ALPHA:a===THREE.OneMinusDstAlphaFactor?k.ONE_MINUS_DST_ALPHA:a===THREE.DstColorFactor?k.DST_COLOR:a===THREE.OneMinusDstColorFactor?k.ONE_MINUS_DST_COLOR:a===THREE.SrcAlphaSaturateFactor?k.SRC_ALPHA_SATURATE:0}console.log("THREE.WebGLRenderer",THREE.REVISION);var a=a||{},z=a.canvas!==void 0?a.canvas:document.createElement("canvas"),w=a.precision!==void 0?a.precision:"highp",H=a.alpha!==void 0?a.alpha:true,E=a.premultipliedAlpha!==void 0?a.premultipliedAlpha:
+true,O=a.antialias!==void 0?a.antialias:false,Q=a.stencil!==void 0?a.stencil:true,Y=a.preserveDrawingBuffer!==void 0?a.preserveDrawingBuffer:false,B=a.clearColor!==void 0?new THREE.Color(a.clearColor):new THREE.Color(0),J=a.clearAlpha!==void 0?a.clearAlpha:0,P=a.maxLights!==void 0?a.maxLights:4;this.domElement=z;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=true;this.shadowMapEnabled=this.physicallyBasedShading=
+this.gammaOutput=this.gammaInput=false;this.shadowMapCullFrontFaces=this.shadowMapSoft=this.shadowMapAutoUpdate=true;this.shadowMapCascade=this.shadowMapDebug=false;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=true;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var D=this,W=[],R=0,N=null,ba=null,U=-1,I=null,ca=null,ha=0,L=-1,X=-1,S=-1,T=-1,ia=-1,ma=-1,za=-1,Ga=-1,Pa=null,
+Qa=null,Va=null,nb=null,Nb=0,Ob=0,ob=0,jb=0,kb=0,bb=0,Da=new THREE.Frustum,Aa=new THREE.Matrix4,fb=new THREE.Matrix4,pa=new THREE.Vector4,Fa=new THREE.Vector3,Sa=true,ra={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],angles:[],exponents:[]}},k;try{if(!(k=z.getContext("experimental-webgl",{alpha:H,premultipliedAlpha:E,antialias:O,stencil:Q,preserveDrawingBuffer:Y})))throw"Error creating WebGL context.";
 }catch(Fb){console.error(Fb)}(a=k.getExtension("OES_texture_float"))||console.log("THREE.WebGLRenderer: Float textures not supported.");k.clearColor(0,0,0,1);k.clearDepth(1);k.clearStencil(0);k.enable(k.DEPTH_TEST);k.depthFunc(k.LEQUAL);k.frontFace(k.CCW);k.cullFace(k.BACK);k.enable(k.CULL_FACE);k.enable(k.BLEND);k.blendEquation(k.FUNC_ADD);k.blendFunc(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA);k.clearColor(B.r,B.g,B.b,J);this.context=k;H=k.getParameter(k.MAX_VERTEX_TEXTURE_IMAGE_UNITS);k.getParameter(k.MAX_TEXTURE_SIZE);
 var dc=k.getParameter(k.MAX_CUBE_MAP_TEXTURE_SIZE),Ha=H>0,Wa=Ha&&a;this.getContext=function(){return k};this.supportsVertexTextures=function(){return Ha};this.setSize=function(a,b){z.width=a;z.height=b;this.setViewport(0,0,z.width,z.height)};this.setViewport=function(a,b,c,d){Nb=a;Ob=b;ob=c;jb=d;k.viewport(Nb,Ob,ob,jb)};this.setScissor=function(a,b,c,d){k.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?k.enable(k.SCISSOR_TEST):k.disable(k.SCISSOR_TEST)};this.setClearColorHex=function(a,b){B.setHex(a);
 J=b;k.clearColor(B.r,B.g,B.b,J)};this.setClearColor=function(a,b){B.copy(a);J=b;k.clearColor(B.r,B.g,B.b,J)};this.getClearColor=function(){return B};this.getClearAlpha=function(){return J};this.clear=function(a,b,c){var d=0;if(a===void 0||a)d=d|k.COLOR_BUFFER_BIT;if(b===void 0||b)d=d|k.DEPTH_BUFFER_BIT;if(c===void 0||c)d=d|k.STENCIL_BUFFER_BIT;k.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};

+ 17 - 17
build/custom/ThreeWebGL.js

@@ -288,23 +288,23 @@ d.opacity;E.gammaInput?j.diffuse.value.copyGammaToLinear(d.color):j.diffuse.valu
 THREE.LineBasicMaterial){j.diffuse.value=d.color;j.opacity.value=d.opacity}else if(d instanceof THREE.ParticleBasicMaterial){j.psColor.value=d.color;j.opacity.value=d.opacity;j.size.value=d.size;j.scale.value=N.height/2;j.map.texture=d.map}else if(d instanceof THREE.MeshPhongMaterial){j.shininess.value=d.shininess;if(E.gammaInput){j.ambient.value.copyGammaToLinear(d.ambient);j.emissive.value.copyGammaToLinear(d.emissive);j.specular.value.copyGammaToLinear(d.specular)}else{j.ambient.value=d.ambient;
 j.emissive.value=d.emissive;j.specular.value=d.specular}d.wrapAround&&j.wrapRGB.value.copy(d.wrapRGB)}else if(d instanceof THREE.MeshLambertMaterial){if(E.gammaInput){j.ambient.value.copyGammaToLinear(d.ambient);j.emissive.value.copyGammaToLinear(d.emissive)}else{j.ambient.value=d.ambient;j.emissive.value=d.emissive}d.wrapAround&&j.wrapRGB.value.copy(d.wrapRGB)}else if(d instanceof THREE.MeshDepthMaterial){j.mNear.value=a.near;j.mFar.value=a.far;j.opacity.value=d.opacity}else if(d instanceof THREE.MeshNormalMaterial)j.opacity.value=
 d.opacity;if(f.receiveShadow&&!d._shadowPass&&j.shadowMatrix){e=c=0;for(k=b.length;e<k;e++){n=b[e];if(n.castShadow&&(n instanceof THREE.SpotLight||n instanceof THREE.DirectionalLight&&!n.shadowCascade)){j.shadowMap.texture[c]=n.shadowMap;j.shadowMapSize.value[c]=n.shadowMapSize;j.shadowMatrix.value[c]=n.shadowMatrix;j.shadowDarkness.value[c]=n.shadowDarkness;j.shadowBias.value[c]=n.shadowBias;c++}}}b=d.uniformsList;j=0;for(c=b.length;j<c;j++)if(n=h.uniforms[b[j][1]]){e=b[j][0];l=e.type;k=e.value;
-if(l==="i")g.uniform1i(n,k);else if(l==="f")g.uniform1f(n,k);else if(l==="v2")g.uniform2f(n,k.x,k.y);else if(l==="v3")g.uniform3f(n,k.x,k.y,k.z);else if(l==="v4")g.uniform4f(n,k.x,k.y,k.z,k.w);else if(l==="c")g.uniform3f(n,k.r,k.g,k.b);else if(l==="iv1")g.uniform1iv(n,k);else if(l==="fv1")g.uniform1fv(n,k);else if(l==="fv")g.uniform3fv(n,k);else if(l==="v2v"){if(e._array===void 0)e._array=new Float32Array(2*k.length);l=0;for(m=k.length;l<m;l++){p=l*2;e._array[p]=k[l].x;e._array[p+1]=k[l].y}g.uniform2fv(n,
-e._array)}else if(l==="v3v"){if(e._array===void 0)e._array=new Float32Array(3*k.length);l=0;for(m=k.length;l<m;l++){p=l*3;e._array[p]=k[l].x;e._array[p+1]=k[l].y;e._array[p+2]=k[l].z}g.uniform3fv(n,e._array)}else if(l==="v4v"){if(e._array===void 0)e._array=new Float32Array(4*k.length);l=0;for(m=k.length;l<m;l++){p=l*4;e._array[p]=k[l].x;e._array[p+1]=k[l].y;e._array[p+2]=k[l].z;e._array[p+3]=k[l].w}g.uniform4fv(n,e._array)}else if(l==="m4"){if(e._array===void 0)e._array=new Float32Array(16);k.flattenToArray(e._array);
-g.uniformMatrix4fv(n,false,e._array)}else if(l==="m4v"){if(e._array===void 0)e._array=new Float32Array(16*k.length);l=0;for(m=k.length;l<m;l++)k[l].flattenToArrayOffset(e._array,l*16);g.uniformMatrix4fv(n,false,e._array)}else if(l==="t"){g.uniform1i(n,k);if(n=e.texture)if(n.image instanceof Array&&n.image.length===6){e=n;if(e.image.length===6)if(e.needsUpdate){if(!e.image.__webglTextureCube)e.image.__webglTextureCube=g.createTexture();g.activeTexture(g.TEXTURE0+k);g.bindTexture(g.TEXTURE_CUBE_MAP,
-e.image.__webglTextureCube);g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,e.flipY);k=[];for(n=0;n<6;n++){l=k;m=n;if(E.autoScaleCubemaps){p=e.image[n];s=Nc;if(!(p.width<=s&&p.height<=s)){v=Math.max(p.width,p.height);u=Math.floor(p.width*s/v);s=Math.floor(p.height*s/v);v=document.createElement("canvas");v.width=u;v.height=s;v.getContext("2d").drawImage(p,0,0,p.width,p.height,0,0,u,s);p=v}}else p=e.image[n];l[m]=p}n=k[0];l=(n.width&n.width-1)===0&&(n.height&n.height-1)===0;m=A(e.format);p=A(e.type);F(g.TEXTURE_CUBE_MAP,
-e,l);for(n=0;n<6;n++)g.texImage2D(g.TEXTURE_CUBE_MAP_POSITIVE_X+n,0,m,m,p,k[n]);e.generateMipmaps&&l&&g.generateMipmap(g.TEXTURE_CUBE_MAP);e.needsUpdate=false;if(e.onUpdate)e.onUpdate()}else{g.activeTexture(g.TEXTURE0+k);g.bindTexture(g.TEXTURE_CUBE_MAP,e.image.__webglTextureCube)}}else if(n instanceof THREE.WebGLRenderTargetCube){e=n;g.activeTexture(g.TEXTURE0+k);g.bindTexture(g.TEXTURE_CUBE_MAP,e.__webglTexture)}else E.setTexture(n,k)}else if(l==="tv"){if(e._array===void 0){e._array=[];l=0;for(m=
-e.texture.length;l<m;l++)e._array[l]=k+l}g.uniform1iv(n,e._array);l=0;for(m=e.texture.length;l<m;l++)(n=e.texture[l])&&E.setTexture(n,e._array[l])}}if((d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&i.cameraPosition!==null){b=a.matrixWorld.getPosition();g.uniform3f(i.cameraPosition,b.x,b.y,b.z)}(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&i.viewMatrix!==null&&g.uniformMatrix4fv(i.viewMatrix,
-false,a._viewMatrixArray)}if(d.skinning)if(Vb&&f.useVertexTexture){if(i.boneTexture!==null){g.uniform1i(i.boneTexture,12);E.setTexture(f.boneTexture,12)}}else i.boneGlobalMatrices!==null&&g.uniformMatrix4fv(i.boneGlobalMatrices,false,f.boneMatrices);g.uniformMatrix4fv(i.modelViewMatrix,false,f._modelViewMatrix.elements);i.normalMatrix&&g.uniformMatrix3fv(i.normalMatrix,false,f._normalMatrix.elements);i.objectMatrix!==null&&g.uniformMatrix4fv(i.objectMatrix,false,f.matrixWorld.elements);return h}function p(a,
-b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function v(a,b,c){if(Va!==a){a?g.enable(g.POLYGON_OFFSET_FILL):g.disable(g.POLYGON_OFFSET_FILL);Va=a}if(a&&(ob!==b||Kb!==c)){g.polygonOffset(b,c);ob=b;Kb=c}}function x(a,b){var c;a==="fragment"?c=g.createShader(g.FRAGMENT_SHADER):a==="vertex"&&(c=g.createShader(g.VERTEX_SHADER));g.shaderSource(c,b);g.compileShader(c);if(!g.getShaderParameter(c,g.COMPILE_STATUS)){console.error(g.getShaderInfoLog(c));
-console.error(b);return null}return c}function F(a,b,c){if(c){g.texParameteri(a,g.TEXTURE_WRAP_S,A(b.wrapS));g.texParameteri(a,g.TEXTURE_WRAP_T,A(b.wrapT));g.texParameteri(a,g.TEXTURE_MAG_FILTER,A(b.magFilter));g.texParameteri(a,g.TEXTURE_MIN_FILTER,A(b.minFilter))}else{g.texParameteri(a,g.TEXTURE_WRAP_S,g.CLAMP_TO_EDGE);g.texParameteri(a,g.TEXTURE_WRAP_T,g.CLAMP_TO_EDGE);g.texParameteri(a,g.TEXTURE_MAG_FILTER,I(b.magFilter));g.texParameteri(a,g.TEXTURE_MIN_FILTER,I(b.minFilter))}}function s(a,b){g.bindRenderbuffer(g.RENDERBUFFER,
-a);if(b.depthBuffer&&!b.stencilBuffer){g.renderbufferStorage(g.RENDERBUFFER,g.DEPTH_COMPONENT16,b.width,b.height);g.framebufferRenderbuffer(g.FRAMEBUFFER,g.DEPTH_ATTACHMENT,g.RENDERBUFFER,a)}else if(b.depthBuffer&&b.stencilBuffer){g.renderbufferStorage(g.RENDERBUFFER,g.DEPTH_STENCIL,b.width,b.height);g.framebufferRenderbuffer(g.FRAMEBUFFER,g.DEPTH_STENCIL_ATTACHMENT,g.RENDERBUFFER,a)}else g.renderbufferStorage(g.RENDERBUFFER,g.RGBA4,b.width,b.height)}function I(a){return a===THREE.NearestFilter||
-a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?g.NEAREST:g.LINEAR}function A(a){return a===THREE.RepeatWrapping?g.REPEAT:a===THREE.ClampToEdgeWrapping?g.CLAMP_TO_EDGE:a===THREE.MirroredRepeatWrapping?g.MIRRORED_REPEAT:a===THREE.NearestFilter?g.NEAREST:a===THREE.NearestMipMapNearestFilter?g.NEAREST_MIPMAP_NEAREST:a===THREE.NearestMipMapLinearFilter?g.NEAREST_MIPMAP_LINEAR:a===THREE.LinearFilter?g.LINEAR:a===THREE.LinearMipMapNearestFilter?g.LINEAR_MIPMAP_NEAREST:a===THREE.LinearMipMapLinearFilter?
-g.LINEAR_MIPMAP_LINEAR:a===THREE.UnsignedByteType?g.UNSIGNED_BYTE:a===THREE.UnsignedShort4444Type?g.UNSIGNED_SHORT_4_4_4_4:a===THREE.UnsignedShort5551Type?g.UNSIGNED_SHORT_5_5_5_1:a===THREE.UnsignedShort565Type?g.UNSIGNED_SHORT_5_6_5:a===THREE.ByteType?g.BYTE:a===THREE.ShortType?g.SHORT:a===THREE.UnsignedShortType?g.UNSIGNED_SHORT:a===THREE.IntType?g.INT:a===THREE.UnsignedIntType?g.UNSIGNED_INT:a===THREE.FloatType?g.FLOAT:a===THREE.AlphaFormat?g.ALPHA:a===THREE.RGBFormat?g.RGB:a===THREE.RGBAFormat?
-g.RGBA:a===THREE.LuminanceFormat?g.LUMINANCE:a===THREE.LuminanceAlphaFormat?g.LUMINANCE_ALPHA:a===THREE.AddEquation?g.FUNC_ADD:a===THREE.SubtractEquation?g.FUNC_SUBTRACT:a===THREE.ReverseSubtractEquation?g.FUNC_REVERSE_SUBTRACT:a===THREE.ZeroFactor?g.ZERO:a===THREE.OneFactor?g.ONE:a===THREE.SrcColorFactor?g.SRC_COLOR:a===THREE.OneMinusSrcColorFactor?g.ONE_MINUS_SRC_COLOR:a===THREE.SrcAlphaFactor?g.SRC_ALPHA:a===THREE.OneMinusSrcAlphaFactor?g.ONE_MINUS_SRC_ALPHA:a===THREE.DstAlphaFactor?g.DST_ALPHA:
-a===THREE.OneMinusDstAlphaFactor?g.ONE_MINUS_DST_ALPHA:a===THREE.DstColorFactor?g.DST_COLOR:a===THREE.OneMinusDstColorFactor?g.ONE_MINUS_DST_COLOR:a===THREE.SrcAlphaSaturateFactor?g.SRC_ALPHA_SATURATE:0}console.log("THREE.WebGLRenderer",THREE.REVISION);var a=a||{},N=a.canvas!==void 0?a.canvas:document.createElement("canvas"),D=a.precision!==void 0?a.precision:"highp",H=a.alpha!==void 0?a.alpha:true,G=a.premultipliedAlpha!==void 0?a.premultipliedAlpha:true,R=a.antialias!==void 0?a.antialias:false,
-U=a.stencil!==void 0?a.stencil:true,T=a.preserveDrawingBuffer!==void 0?a.preserveDrawingBuffer:false,z=a.clearColor!==void 0?new THREE.Color(a.clearColor):new THREE.Color(0),K=a.clearAlpha!==void 0?a.clearAlpha:0,V=a.maxLights!==void 0?a.maxLights:4;this.domElement=N;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=true;this.shadowMapEnabled=this.physicallyBasedShading=this.gammaOutput=this.gammaInput=
-false;this.shadowMapCullFrontFaces=this.shadowMapSoft=this.shadowMapAutoUpdate=true;this.shadowMapCascade=this.shadowMapDebug=false;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=true;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var E=this,$=[],fa=0,J=null,ra=null,S=-1,ba=null,aa=null,va=0,L=-1,qa=-1,xa=-1,Aa=-1,Pa=-1,ja=-1,Ba=-1,Qa=-1,Va=null,ob=null,Kb=null,wb=null,Ub=
-0,fc=0,hc=0,Nb=0,wc=0,gc=0,Ob=new THREE.Frustum,Mb=new THREE.Matrix4,Lb=new THREE.Matrix4,pb=new THREE.Vector4,Ha=new THREE.Vector3,Wa=true,xc={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],angles:[],exponents:[]}},g;try{if(!(g=N.getContext("experimental-webgl",{alpha:H,premultipliedAlpha:G,antialias:R,stencil:U,preserveDrawingBuffer:T})))throw"Error creating WebGL context.";
+if(l==="i")g.uniform1i(n,k);else if(l==="f")g.uniform1f(n,k);else if(l==="v2")g.uniform2f(n,k.x,k.y);else if(l==="v3")g.uniform3f(n,k.x,k.y,k.z);else if(l==="v4")g.uniform4f(n,k.x,k.y,k.z,k.w);else if(l==="c")g.uniform3f(n,k.r,k.g,k.b);else if(l==="iv1")g.uniform1iv(n,k);else if(l==="iv")g.uniform3iv(n,k);else if(l==="fv1")g.uniform1fv(n,k);else if(l==="fv")g.uniform3fv(n,k);else if(l==="v2v"){if(e._array===void 0)e._array=new Float32Array(2*k.length);l=0;for(m=k.length;l<m;l++){p=l*2;e._array[p]=
+k[l].x;e._array[p+1]=k[l].y}g.uniform2fv(n,e._array)}else if(l==="v3v"){if(e._array===void 0)e._array=new Float32Array(3*k.length);l=0;for(m=k.length;l<m;l++){p=l*3;e._array[p]=k[l].x;e._array[p+1]=k[l].y;e._array[p+2]=k[l].z}g.uniform3fv(n,e._array)}else if(l==="v4v"){if(e._array===void 0)e._array=new Float32Array(4*k.length);l=0;for(m=k.length;l<m;l++){p=l*4;e._array[p]=k[l].x;e._array[p+1]=k[l].y;e._array[p+2]=k[l].z;e._array[p+3]=k[l].w}g.uniform4fv(n,e._array)}else if(l==="m4"){if(e._array===
+void 0)e._array=new Float32Array(16);k.flattenToArray(e._array);g.uniformMatrix4fv(n,false,e._array)}else if(l==="m4v"){if(e._array===void 0)e._array=new Float32Array(16*k.length);l=0;for(m=k.length;l<m;l++)k[l].flattenToArrayOffset(e._array,l*16);g.uniformMatrix4fv(n,false,e._array)}else if(l==="t"){g.uniform1i(n,k);if(n=e.texture)if(n.image instanceof Array&&n.image.length===6){e=n;if(e.image.length===6)if(e.needsUpdate){if(!e.image.__webglTextureCube)e.image.__webglTextureCube=g.createTexture();
+g.activeTexture(g.TEXTURE0+k);g.bindTexture(g.TEXTURE_CUBE_MAP,e.image.__webglTextureCube);g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,e.flipY);k=[];for(n=0;n<6;n++){l=k;m=n;if(E.autoScaleCubemaps){p=e.image[n];s=Nc;if(!(p.width<=s&&p.height<=s)){v=Math.max(p.width,p.height);u=Math.floor(p.width*s/v);s=Math.floor(p.height*s/v);v=document.createElement("canvas");v.width=u;v.height=s;v.getContext("2d").drawImage(p,0,0,p.width,p.height,0,0,u,s);p=v}}else p=e.image[n];l[m]=p}n=k[0];l=(n.width&n.width-1)===0&&
+(n.height&n.height-1)===0;m=A(e.format);p=A(e.type);F(g.TEXTURE_CUBE_MAP,e,l);for(n=0;n<6;n++)g.texImage2D(g.TEXTURE_CUBE_MAP_POSITIVE_X+n,0,m,m,p,k[n]);e.generateMipmaps&&l&&g.generateMipmap(g.TEXTURE_CUBE_MAP);e.needsUpdate=false;if(e.onUpdate)e.onUpdate()}else{g.activeTexture(g.TEXTURE0+k);g.bindTexture(g.TEXTURE_CUBE_MAP,e.image.__webglTextureCube)}}else if(n instanceof THREE.WebGLRenderTargetCube){e=n;g.activeTexture(g.TEXTURE0+k);g.bindTexture(g.TEXTURE_CUBE_MAP,e.__webglTexture)}else E.setTexture(n,
+k)}else if(l==="tv"){if(e._array===void 0){e._array=[];l=0;for(m=e.texture.length;l<m;l++)e._array[l]=k+l}g.uniform1iv(n,e._array);l=0;for(m=e.texture.length;l<m;l++)(n=e.texture[l])&&E.setTexture(n,e._array[l])}}if((d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&i.cameraPosition!==null){b=a.matrixWorld.getPosition();g.uniform3f(i.cameraPosition,b.x,b.y,b.z)}(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||
+d.skinning)&&i.viewMatrix!==null&&g.uniformMatrix4fv(i.viewMatrix,false,a._viewMatrixArray)}if(d.skinning)if(Vb&&f.useVertexTexture){if(i.boneTexture!==null){g.uniform1i(i.boneTexture,12);E.setTexture(f.boneTexture,12)}}else i.boneGlobalMatrices!==null&&g.uniformMatrix4fv(i.boneGlobalMatrices,false,f.boneMatrices);g.uniformMatrix4fv(i.modelViewMatrix,false,f._modelViewMatrix.elements);i.normalMatrix&&g.uniformMatrix3fv(i.normalMatrix,false,f._normalMatrix.elements);i.objectMatrix!==null&&g.uniformMatrix4fv(i.objectMatrix,
+false,f.matrixWorld.elements);return h}function p(a,b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function v(a,b,c){if(Va!==a){a?g.enable(g.POLYGON_OFFSET_FILL):g.disable(g.POLYGON_OFFSET_FILL);Va=a}if(a&&(ob!==b||Kb!==c)){g.polygonOffset(b,c);ob=b;Kb=c}}function x(a,b){var c;a==="fragment"?c=g.createShader(g.FRAGMENT_SHADER):a==="vertex"&&(c=g.createShader(g.VERTEX_SHADER));g.shaderSource(c,b);g.compileShader(c);
+if(!g.getShaderParameter(c,g.COMPILE_STATUS)){console.error(g.getShaderInfoLog(c));console.error(b);return null}return c}function F(a,b,c){if(c){g.texParameteri(a,g.TEXTURE_WRAP_S,A(b.wrapS));g.texParameteri(a,g.TEXTURE_WRAP_T,A(b.wrapT));g.texParameteri(a,g.TEXTURE_MAG_FILTER,A(b.magFilter));g.texParameteri(a,g.TEXTURE_MIN_FILTER,A(b.minFilter))}else{g.texParameteri(a,g.TEXTURE_WRAP_S,g.CLAMP_TO_EDGE);g.texParameteri(a,g.TEXTURE_WRAP_T,g.CLAMP_TO_EDGE);g.texParameteri(a,g.TEXTURE_MAG_FILTER,I(b.magFilter));
+g.texParameteri(a,g.TEXTURE_MIN_FILTER,I(b.minFilter))}}function s(a,b){g.bindRenderbuffer(g.RENDERBUFFER,a);if(b.depthBuffer&&!b.stencilBuffer){g.renderbufferStorage(g.RENDERBUFFER,g.DEPTH_COMPONENT16,b.width,b.height);g.framebufferRenderbuffer(g.FRAMEBUFFER,g.DEPTH_ATTACHMENT,g.RENDERBUFFER,a)}else if(b.depthBuffer&&b.stencilBuffer){g.renderbufferStorage(g.RENDERBUFFER,g.DEPTH_STENCIL,b.width,b.height);g.framebufferRenderbuffer(g.FRAMEBUFFER,g.DEPTH_STENCIL_ATTACHMENT,g.RENDERBUFFER,a)}else g.renderbufferStorage(g.RENDERBUFFER,
+g.RGBA4,b.width,b.height)}function I(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?g.NEAREST:g.LINEAR}function A(a){return a===THREE.RepeatWrapping?g.REPEAT:a===THREE.ClampToEdgeWrapping?g.CLAMP_TO_EDGE:a===THREE.MirroredRepeatWrapping?g.MIRRORED_REPEAT:a===THREE.NearestFilter?g.NEAREST:a===THREE.NearestMipMapNearestFilter?g.NEAREST_MIPMAP_NEAREST:a===THREE.NearestMipMapLinearFilter?g.NEAREST_MIPMAP_LINEAR:a===THREE.LinearFilter?g.LINEAR:
+a===THREE.LinearMipMapNearestFilter?g.LINEAR_MIPMAP_NEAREST:a===THREE.LinearMipMapLinearFilter?g.LINEAR_MIPMAP_LINEAR:a===THREE.UnsignedByteType?g.UNSIGNED_BYTE:a===THREE.UnsignedShort4444Type?g.UNSIGNED_SHORT_4_4_4_4:a===THREE.UnsignedShort5551Type?g.UNSIGNED_SHORT_5_5_5_1:a===THREE.UnsignedShort565Type?g.UNSIGNED_SHORT_5_6_5:a===THREE.ByteType?g.BYTE:a===THREE.ShortType?g.SHORT:a===THREE.UnsignedShortType?g.UNSIGNED_SHORT:a===THREE.IntType?g.INT:a===THREE.UnsignedIntType?g.UNSIGNED_INT:a===THREE.FloatType?
+g.FLOAT:a===THREE.AlphaFormat?g.ALPHA:a===THREE.RGBFormat?g.RGB:a===THREE.RGBAFormat?g.RGBA:a===THREE.LuminanceFormat?g.LUMINANCE:a===THREE.LuminanceAlphaFormat?g.LUMINANCE_ALPHA:a===THREE.AddEquation?g.FUNC_ADD:a===THREE.SubtractEquation?g.FUNC_SUBTRACT:a===THREE.ReverseSubtractEquation?g.FUNC_REVERSE_SUBTRACT:a===THREE.ZeroFactor?g.ZERO:a===THREE.OneFactor?g.ONE:a===THREE.SrcColorFactor?g.SRC_COLOR:a===THREE.OneMinusSrcColorFactor?g.ONE_MINUS_SRC_COLOR:a===THREE.SrcAlphaFactor?g.SRC_ALPHA:a===THREE.OneMinusSrcAlphaFactor?
+g.ONE_MINUS_SRC_ALPHA:a===THREE.DstAlphaFactor?g.DST_ALPHA:a===THREE.OneMinusDstAlphaFactor?g.ONE_MINUS_DST_ALPHA:a===THREE.DstColorFactor?g.DST_COLOR:a===THREE.OneMinusDstColorFactor?g.ONE_MINUS_DST_COLOR:a===THREE.SrcAlphaSaturateFactor?g.SRC_ALPHA_SATURATE:0}console.log("THREE.WebGLRenderer",THREE.REVISION);var a=a||{},N=a.canvas!==void 0?a.canvas:document.createElement("canvas"),D=a.precision!==void 0?a.precision:"highp",H=a.alpha!==void 0?a.alpha:true,G=a.premultipliedAlpha!==void 0?a.premultipliedAlpha:
+true,R=a.antialias!==void 0?a.antialias:false,U=a.stencil!==void 0?a.stencil:true,T=a.preserveDrawingBuffer!==void 0?a.preserveDrawingBuffer:false,z=a.clearColor!==void 0?new THREE.Color(a.clearColor):new THREE.Color(0),K=a.clearAlpha!==void 0?a.clearAlpha:0,V=a.maxLights!==void 0?a.maxLights:4;this.domElement=N;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=true;this.shadowMapEnabled=this.physicallyBasedShading=
+this.gammaOutput=this.gammaInput=false;this.shadowMapCullFrontFaces=this.shadowMapSoft=this.shadowMapAutoUpdate=true;this.shadowMapCascade=this.shadowMapDebug=false;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=true;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var E=this,$=[],fa=0,J=null,ra=null,S=-1,ba=null,aa=null,va=0,L=-1,qa=-1,xa=-1,Aa=-1,Pa=-1,ja=-1,Ba=-1,Qa=-1,Va=
+null,ob=null,Kb=null,wb=null,Ub=0,fc=0,hc=0,Nb=0,wc=0,gc=0,Ob=new THREE.Frustum,Mb=new THREE.Matrix4,Lb=new THREE.Matrix4,pb=new THREE.Vector4,Ha=new THREE.Vector3,Wa=true,xc={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],angles:[],exponents:[]}},g;try{if(!(g=N.getContext("experimental-webgl",{alpha:H,premultipliedAlpha:G,antialias:R,stencil:U,preserveDrawingBuffer:T})))throw"Error creating WebGL context.";
 }catch(Oc){console.error(Oc)}(a=g.getExtension("OES_texture_float"))||console.log("THREE.WebGLRenderer: Float textures not supported.");g.clearColor(0,0,0,1);g.clearDepth(1);g.clearStencil(0);g.enable(g.DEPTH_TEST);g.depthFunc(g.LEQUAL);g.frontFace(g.CCW);g.cullFace(g.BACK);g.enable(g.CULL_FACE);g.enable(g.BLEND);g.blendEquation(g.FUNC_ADD);g.blendFunc(g.SRC_ALPHA,g.ONE_MINUS_SRC_ALPHA);g.clearColor(z.r,z.g,z.b,K);this.context=g;H=g.getParameter(g.MAX_VERTEX_TEXTURE_IMAGE_UNITS);g.getParameter(g.MAX_TEXTURE_SIZE);
 var Nc=g.getParameter(g.MAX_CUBE_MAP_TEXTURE_SIZE),ic=H>0,Vb=ic&&a;this.getContext=function(){return g};this.supportsVertexTextures=function(){return ic};this.setSize=function(a,b){N.width=a;N.height=b;this.setViewport(0,0,N.width,N.height)};this.setViewport=function(a,b,c,d){Ub=a;fc=b;hc=c;Nb=d;g.viewport(Ub,fc,hc,Nb)};this.setScissor=function(a,b,c,d){g.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?g.enable(g.SCISSOR_TEST):g.disable(g.SCISSOR_TEST)};this.setClearColorHex=function(a,b){z.setHex(a);
 K=b;g.clearColor(z.r,z.g,z.b,K)};this.setClearColor=function(a,b){z.copy(a);K=b;g.clearColor(z.r,z.g,z.b,K)};this.getClearColor=function(){return z};this.getClearAlpha=function(){return K};this.clear=function(a,b,c){var d=0;if(a===void 0||a)d=d|g.COLOR_BUFFER_BIT;if(b===void 0||b)d=d|g.DEPTH_BUFFER_BIT;if(c===void 0||c)d=d|g.STENCIL_BUFFER_BIT;g.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};

+ 4 - 0
src/renderers/WebGLRenderer.js

@@ -5075,6 +5075,10 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 				_gl.uniform1iv( location, value );
 
+			} else if ( type === "iv" ) { // flat array of integers with 3 x N size (JS or typed array)
+
+				_gl.uniform3iv( location, value );
+
 			} else if ( type === "fv1" ) { // flat array of floats (JS or typed array)
 
 				_gl.uniform1fv( location, value );