فهرست منبع

Cleaned up a bit WebGLRenderer.

Clearing API for rendering to RenderTarget is now flipped: before forced clearing of render target was default, now no clearing is default.

New way of doing things saves one extra duplicitous clear call when switching render targets (like when doing postprocessing).

(doing documentation is indeed turning out to be useful)
alteredq 14 سال پیش
والد
کامیت
2294094adf

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 169 - 169
build/Three.js


+ 39 - 40
build/custom/ThreeWebGL.js

@@ -133,49 +133,48 @@ j){e.list[e.count]=j;e.count+=1}function y(e){var j,k,g=e.object,i=e.opaque,u=e.
 g,i,u,o,r,x,s,v={};e.geometryGroups={};i=0;for(u=e.faces.length;i<u;i++){o=e.faces[i];r=o.materials;x=j(r);v[x]==undefined&&(v[x]={hash:x,counter:0});s=v[x].hash+"_"+v[x].counter;e.geometryGroups[s]==undefined&&(e.geometryGroups[s]={faces:[],materials:r,vertices:0});o=o instanceof THREE.Face3?3:4;if(e.geometryGroups[s].vertices+o>65535){v[x].counter+=1;s=v[x].hash+"_"+v[x].counter;e.geometryGroups[s]==undefined&&(e.geometryGroups[s]={faces:[],materials:r,vertices:0})}e.geometryGroups[s].faces.push(i);
 e.geometryGroups[s].vertices+=o}}function L(e,j,k){e.push({buffer:j,object:k,opaque:{list:[],count:0},transparent:{list:[],count:0}})}function M(e){if(e!=za){switch(e){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;case THREE.BillboardBlending:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA);break;case THREE.ReverseSubtractiveBlending:c.blendEquation(c.FUNC_REVERSE_SUBTRACT);
 c.blendFunc(c.ONE,c.ONE);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}za=e}}function V(e,j,k){if((k.width&k.width-1)==0&&(k.height&k.height-1)==0){c.texParameteri(e,c.TEXTURE_WRAP_S,Y(j.wrapS));c.texParameteri(e,c.TEXTURE_WRAP_T,Y(j.wrapT));c.texParameteri(e,c.TEXTURE_MAG_FILTER,Y(j.magFilter));c.texParameteri(e,c.TEXTURE_MIN_FILTER,Y(j.minFilter));c.generateMipmap(e)}else{c.texParameteri(e,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(e,c.TEXTURE_WRAP_T,
-c.CLAMP_TO_EDGE);c.texParameteri(e,c.TEXTURE_MAG_FILTER,aa(j.magFilter));c.texParameteri(e,c.TEXTURE_MIN_FILTER,aa(j.minFilter))}}function X(e,j){if(e&&!e.__webGLFramebuffer){e.__webGLFramebuffer=c.createFramebuffer();e.__webGLRenderbuffer=c.createRenderbuffer();e.__webGLTexture=c.createTexture();c.bindRenderbuffer(c.RENDERBUFFER,e.__webGLRenderbuffer);c.renderbufferStorage(c.RENDERBUFFER,c.DEPTH_COMPONENT16,e.width,e.height);c.bindTexture(c.TEXTURE_2D,e.__webGLTexture);c.texParameteri(c.TEXTURE_2D,
+c.CLAMP_TO_EDGE);c.texParameteri(e,c.TEXTURE_MAG_FILTER,aa(j.magFilter));c.texParameteri(e,c.TEXTURE_MIN_FILTER,aa(j.minFilter))}}function X(e){if(e&&!e.__webGLFramebuffer){e.__webGLFramebuffer=c.createFramebuffer();e.__webGLRenderbuffer=c.createRenderbuffer();e.__webGLTexture=c.createTexture();c.bindRenderbuffer(c.RENDERBUFFER,e.__webGLRenderbuffer);c.renderbufferStorage(c.RENDERBUFFER,c.DEPTH_COMPONENT16,e.width,e.height);c.bindTexture(c.TEXTURE_2D,e.__webGLTexture);c.texParameteri(c.TEXTURE_2D,
 c.TEXTURE_WRAP_S,Y(e.wrapS));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,Y(e.wrapT));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,Y(e.magFilter));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,Y(e.minFilter));c.texImage2D(c.TEXTURE_2D,0,Y(e.format),e.width,e.height,0,Y(e.format),Y(e.type),null);c.bindFramebuffer(c.FRAMEBUFFER,e.__webGLFramebuffer);c.framebufferTexture2D(c.FRAMEBUFFER,c.COLOR_ATTACHMENT0,c.TEXTURE_2D,e.__webGLTexture,0);c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_ATTACHMENT,
-c.RENDERBUFFER,e.__webGLRenderbuffer);c.bindTexture(c.TEXTURE_2D,null);c.bindRenderbuffer(c.RENDERBUFFER,null);c.bindFramebuffer(c.FRAMEBUFFER,null)}var k,g,i;if(e){k=e.__webGLFramebuffer;g=e.width;i=e.height}else{k=null;g=Ea;i=Fa}if(k!=la){c.bindFramebuffer(c.FRAMEBUFFER,k);c.viewport(va,Da,g,i);j&&c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT);la=k}}function ca(e,j){var k;if(e=="fragment")k=c.createShader(c.FRAGMENT_SHADER);else e=="vertex"&&(k=c.createShader(c.VERTEX_SHADER));c.shaderSource(k,
-j);c.compileShader(k);if(!c.getShaderParameter(k,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(k));return null}return k}function aa(e){switch(e){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return c.NEAREST;case THREE.LinearFilter:case THREE.LinearMipMapNearestFilter:case THREE.LinearMipMapLinearFilter:return c.LINEAR}}function Y(e){switch(e){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;
-case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return c.BYTE;case THREE.UnsignedByteType:return c.UNSIGNED_BYTE;case THREE.ShortType:return c.SHORT;case THREE.UnsignedShortType:return c.UNSIGNED_SHORT;
-case THREE.IntType:return c.INT;case THREE.UnsignedShortType:return c.UNSIGNED_INT;case THREE.FloatType:return c.FLOAT;case THREE.AlphaFormat:return c.ALPHA;case THREE.RGBFormat:return c.RGB;case THREE.RGBAFormat:return c.RGBA;case THREE.LuminanceFormat:return c.LUMINANCE;case THREE.LuminanceAlphaFormat:return c.LUMINANCE_ALPHA}return 0}var fa=document.createElement("canvas"),c,na=null,la=null,oa=this,pa=null,qa=null,za=null,Aa=null,va=0,Da=0,Ea=0,Fa=0,ra=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,
-new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],Ga=new THREE.Matrix4,Pa=new Float32Array(16),Ja=new Float32Array(16),Ba=new THREE.Vector4,Qa=!0,Ra=new THREE.Color(0),Sa=0;if(a){if(a.antialias!==undefined)Qa=a.antialias;a.clearColor!==undefined&&Ra.setHex(a.clearColor);if(a.clearAlpha!==undefined)Sa=a.clearAlpha}this.domElement=fa;this.autoClear=!0;this.sortObjects=!0;(function(e,j,k){try{if(!(c=fa.getContext("experimental-webgl",{antialias:e})))throw"Error creating WebGL context.";}catch(g){console.error(g)}c.clearColor(0,
-0,0,1);c.clearDepth(1);c.enable(c.DEPTH_TEST);c.depthFunc(c.LEQUAL);c.frontFace(c.CCW);c.cullFace(c.BACK);c.enable(c.CULL_FACE);c.enable(c.BLEND);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA);c.clearColor(j.r,j.g,j.b,k);_cullEnabled=!0})(Qa,Ra,Sa);this.context=c;this.lights={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[]}};this.setSize=function(e,j){fa.width=e;fa.height=j;this.setViewport(0,0,fa.width,fa.height)};this.setViewport=function(e,j,k,g){va=
-e;Da=j;Ea=k;Fa=g;c.viewport(va,Da,Ea,Fa)};this.setScissor=function(e,j,k,g){c.scissor(e,j,k,g)};this.enableScissorTest=function(e){e?c.enable(c.SCISSOR_TEST):c.disable(c.SCISSOR_TEST)};this.setClearColorHex=function(e,j){var k=new THREE.Color(e);c.clearColor(k.r,k.g,k.b,j)};this.setClearColor=function(e,j){c.clearColor(e.r,e.g,e.b,j)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.initMaterial=function(e,j,k){var g,i;if(e instanceof THREE.MeshDepthMaterial)d(e,THREE.ShaderLib.depth);
-else if(e instanceof THREE.MeshNormalMaterial)d(e,THREE.ShaderLib.normal);else if(e instanceof THREE.MeshBasicMaterial)d(e,THREE.ShaderLib.basic);else if(e instanceof THREE.MeshLambertMaterial)d(e,THREE.ShaderLib.lambert);else if(e instanceof THREE.MeshPhongMaterial)d(e,THREE.ShaderLib.phong);else if(e instanceof THREE.LineBasicMaterial)d(e,THREE.ShaderLib.basic);else e instanceof THREE.ParticleBasicMaterial&&d(e,THREE.ShaderLib.particle_basic);var u,o,r,x;i=r=x=0;for(u=j.length;i<u;i++){o=j[i];o instanceof
-THREE.DirectionalLight&&r++;o instanceof THREE.PointLight&&x++}if(x+r<=4)j=r;else{j=Math.ceil(4*r/(x+r));x=4-j}i={directional:j,point:x};x=e.fragmentShader;j=e.vertexShader;u={fog:k,map:e.map,envMap:e.envMap,lightMap:e.lightMap,vertexColors:e.vertexColors,skinning:e.skinning,maxDirLights:i.directional,maxPointLights:i.point};k=c.createProgram();i=["#ifdef GL_ES\nprecision highp float;\n#endif","#define MAX_DIR_LIGHTS "+u.maxDirLights,"#define MAX_POINT_LIGHTS "+u.maxPointLights,u.fog?"#define USE_FOG":
-"",u.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",u.map?"#define USE_MAP":"",u.envMap?"#define USE_ENVMAP":"",u.lightMap?"#define USE_LIGHTMAP":"",u.vertexColors?"#define USE_COLOR":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");u=[c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0?"#define VERTEX_TEXTURES":"","#define MAX_DIR_LIGHTS "+u.maxDirLights,"#define MAX_POINT_LIGHTS "+u.maxPointLights,u.map?"#define USE_MAP":"",u.envMap?"#define USE_ENVMAP":"",u.lightMap?
-"#define USE_LIGHTMAP":"",u.vertexColors?"#define USE_COLOR":"",u.skinning?"#define USE_SKINNING":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute vec2 uv;\nattribute vec2 uv2;\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n"].join("\n");
+c.RENDERBUFFER,e.__webGLRenderbuffer);c.bindTexture(c.TEXTURE_2D,null);c.bindRenderbuffer(c.RENDERBUFFER,null);c.bindFramebuffer(c.FRAMEBUFFER,null)}var j,k;if(e){j=e.__webGLFramebuffer;k=e.width;e=e.height}else{j=null;k=Ea;e=Fa}if(j!=la){c.bindFramebuffer(c.FRAMEBUFFER,j);c.viewport(va,Da,k,e);la=j}}function ca(e,j){var k;if(e=="fragment")k=c.createShader(c.FRAGMENT_SHADER);else e=="vertex"&&(k=c.createShader(c.VERTEX_SHADER));c.shaderSource(k,j);c.compileShader(k);if(!c.getShaderParameter(k,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(k));
+return null}return k}function aa(e){switch(e){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return c.NEAREST;case THREE.LinearFilter:case THREE.LinearMipMapNearestFilter:case THREE.LinearMipMapLinearFilter:return c.LINEAR}}function Y(e){switch(e){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;
+case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return c.BYTE;case THREE.UnsignedByteType:return c.UNSIGNED_BYTE;case THREE.ShortType:return c.SHORT;case THREE.UnsignedShortType:return c.UNSIGNED_SHORT;case THREE.IntType:return c.INT;case THREE.UnsignedShortType:return c.UNSIGNED_INT;case THREE.FloatType:return c.FLOAT;
+case THREE.AlphaFormat:return c.ALPHA;case THREE.RGBFormat:return c.RGB;case THREE.RGBAFormat:return c.RGBA;case THREE.LuminanceFormat:return c.LUMINANCE;case THREE.LuminanceAlphaFormat:return c.LUMINANCE_ALPHA}return 0}var fa=document.createElement("canvas"),c,na=null,la=null,oa=this,pa=null,qa=null,za=null,Aa=null,va=0,Da=0,Ea=0,Fa=0,ra=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],Ga=new THREE.Matrix4,Pa=new Float32Array(16),Ja=new Float32Array(16),
+Ba=new THREE.Vector4,Qa=!0,Ra=new THREE.Color(0),Sa=0;if(a){if(a.antialias!==undefined)Qa=a.antialias;a.clearColor!==undefined&&Ra.setHex(a.clearColor);if(a.clearAlpha!==undefined)Sa=a.clearAlpha}this.domElement=fa;this.autoClear=!0;this.sortObjects=!0;(function(e,j,k){try{if(!(c=fa.getContext("experimental-webgl",{antialias:e})))throw"Error creating WebGL context.";}catch(g){console.error(g)}c.clearColor(0,0,0,1);c.clearDepth(1);c.enable(c.DEPTH_TEST);c.depthFunc(c.LEQUAL);c.frontFace(c.CCW);c.cullFace(c.BACK);
+c.enable(c.CULL_FACE);c.enable(c.BLEND);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA);c.clearColor(j.r,j.g,j.b,k);_cullEnabled=!0})(Qa,Ra,Sa);this.context=c;this.lights={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[]}};this.setSize=function(e,j){fa.width=e;fa.height=j;this.setViewport(0,0,fa.width,fa.height)};this.setViewport=function(e,j,k,g){va=e;Da=j;Ea=k;Fa=g;c.viewport(va,Da,Ea,Fa)};this.setScissor=function(e,j,k,g){c.scissor(e,j,k,g)};this.enableScissorTest=
+function(e){e?c.enable(c.SCISSOR_TEST):c.disable(c.SCISSOR_TEST)};this.setClearColorHex=function(e,j){var k=new THREE.Color(e);c.clearColor(k.r,k.g,k.b,j)};this.setClearColor=function(e,j){c.clearColor(e.r,e.g,e.b,j)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.initMaterial=function(e,j,k){var g,i;if(e instanceof THREE.MeshDepthMaterial)d(e,THREE.ShaderLib.depth);else if(e instanceof THREE.MeshNormalMaterial)d(e,THREE.ShaderLib.normal);else if(e instanceof THREE.MeshBasicMaterial)d(e,
+THREE.ShaderLib.basic);else if(e instanceof THREE.MeshLambertMaterial)d(e,THREE.ShaderLib.lambert);else if(e instanceof THREE.MeshPhongMaterial)d(e,THREE.ShaderLib.phong);else if(e instanceof THREE.LineBasicMaterial)d(e,THREE.ShaderLib.basic);else e instanceof THREE.ParticleBasicMaterial&&d(e,THREE.ShaderLib.particle_basic);var u,o,r,x;i=r=x=0;for(u=j.length;i<u;i++){o=j[i];o instanceof THREE.DirectionalLight&&r++;o instanceof THREE.PointLight&&x++}if(x+r<=4)j=r;else{j=Math.ceil(4*r/(x+r));x=4-j}i=
+{directional:j,point:x};x=e.fragmentShader;j=e.vertexShader;u={fog:k,map:e.map,envMap:e.envMap,lightMap:e.lightMap,vertexColors:e.vertexColors,skinning:e.skinning,maxDirLights:i.directional,maxPointLights:i.point};k=c.createProgram();i=["#ifdef GL_ES\nprecision highp float;\n#endif","#define MAX_DIR_LIGHTS "+u.maxDirLights,"#define MAX_POINT_LIGHTS "+u.maxPointLights,u.fog?"#define USE_FOG":"",u.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",u.map?"#define USE_MAP":"",u.envMap?"#define USE_ENVMAP":
+"",u.lightMap?"#define USE_LIGHTMAP":"",u.vertexColors?"#define USE_COLOR":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");u=[c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0?"#define VERTEX_TEXTURES":"","#define MAX_DIR_LIGHTS "+u.maxDirLights,"#define MAX_POINT_LIGHTS "+u.maxPointLights,u.map?"#define USE_MAP":"",u.envMap?"#define USE_ENVMAP":"",u.lightMap?"#define USE_LIGHTMAP":"",u.vertexColors?"#define USE_COLOR":"",u.skinning?"#define USE_SKINNING":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute vec2 uv;\nattribute vec2 uv2;\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n"].join("\n");
 c.attachShader(k,ca("fragment",i+x));c.attachShader(k,ca("vertex",u+j));c.linkProgram(k);c.getProgramParameter(k,c.LINK_STATUS)||alert("Could not initialise shaders\nVALIDATE_STATUS: "+c.getProgramParameter(k,c.VALIDATE_STATUS)+", gl error ["+c.getError()+"]");k.uniforms={};k.attributes={};e.program=k;k=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices"];for(g in e.uniforms)k.push(g);g=e.program;x=0;for(j=k.length;x<
 j;x++){i=k[x];g.uniforms[i]=c.getUniformLocation(g,i)}g=e.program;k=["position","normal","uv","uv2","tangent","color","skinVertexA","skinVertexB","skinIndex","skinWeight"];x=0;for(j=k.length;x<j;x++){i=k[x];g.attributes[i]=c.getAttribLocation(g,i)}g=e.program.attributes;c.enableVertexAttribArray(g.position);g.color>=0&&c.enableVertexAttribArray(g.color);g.normal>=0&&c.enableVertexAttribArray(g.normal);g.tangent>=0&&c.enableVertexAttribArray(g.tangent);if(e.skinning&&g.skinVertexA>=0&&g.skinVertexB>=
-0&&g.skinIndex>=0&&g.skinWeight>=0){c.enableVertexAttribArray(g.skinVertexA);c.enableVertexAttribArray(g.skinVertexB);c.enableVertexAttribArray(g.skinIndex);c.enableVertexAttribArray(g.skinWeight)}};this.render=function(e,j,k,g){var i,u,o,r,x,s,v,J,P=e.lights,N=e.fog;j.matrixAutoUpdate&&j.update();j.matrixWorldInverse.flattenToArray(Ja);j.projectionMatrix.flattenToArray(Pa);Ga.multiply(j.projectionMatrix,j.matrixWorldInverse);m(Ga);e.update(undefined,!1,j);this.initWebGLObjects(e,j);X(k,g!==undefined?
-g:!0);this.autoClear&&this.clear();x=e.__webglObjects.length;for(g=0;g<x;g++){i=e.__webglObjects[g];v=i.object;if(v.visible)if(!(v instanceof THREE.Mesh)||w(v)){v.matrixWorld.flattenToArray(v._objectMatrixArray);F(v,j);D(i);i.render=!0;if(this.sortObjects){Ba.copy(v.position);Ga.multiplyVector3(Ba);i.z=Ba.z}}else i.render=!1;else i.render=!1}this.sortObjects&&e.__webglObjects.sort(E);s=e.__webglObjectsImmediate.length;for(g=0;g<s;g++){i=e.__webglObjectsImmediate[g];v=i.object;if(v.visible){v.matrixAutoUpdate&&
-v.matrixWorld.flattenToArray(v._objectMatrixArray);F(v,j);y(i)}}M(THREE.NormalBlending);for(g=0;g<x;g++){i=e.__webglObjects[g];if(i.render){v=i.object;J=i.buffer;o=i.opaque;l(v);for(i=0;i<o.count;i++){r=o.list[i];q(r.depthTest);h(j,P,N,r,J,v)}}}for(g=0;g<s;g++){i=e.__webglObjectsImmediate[g];v=i.object;if(v.visible){o=i.opaque;l(v);for(i=0;i<o.count;i++){r=o.list[i];q(r.depthTest);u=f(j,P,N,r,v);v.render(function(I){n(I,u)})}}}for(g=0;g<x;g++){i=e.__webglObjects[g];if(i.render){v=i.object;J=i.buffer;
-o=i.transparent;l(v);for(i=0;i<o.count;i++){r=o.list[i];M(r.blending);q(r.depthTest);h(j,P,N,r,J,v)}}}for(g=0;g<s;g++){i=e.__webglObjectsImmediate[g];v=i.object;if(v.visible){o=i.transparent;l(v);for(i=0;i<o.count;i++){r=o.list[i];M(r.blending);q(r.depthTest);u=f(j,P,N,r,v);v.render(function(I){n(I,u)})}}}if(k&&k.minFilter!==THREE.NearestFilter&&k.minFilter!==THREE.LinearFilter){c.bindTexture(c.TEXTURE_2D,k.__webGLTexture);c.generateMipmap(c.TEXTURE_2D);c.bindTexture(c.TEXTURE_2D,null)}};this.initWebGLObjects=
-function(e){if(!e.__webglObjects){e.__webglObjects=[];e.__webglObjectsImmediate=[]}for(;e.__objectsAdded.length;){var j=e.__objectsAdded[0],k=e,g=void 0,i=void 0,u=void 0;if(j._modelViewMatrix==undefined){j._modelViewMatrix=new THREE.Matrix4;j._normalMatrixArray=new Float32Array(9);j._modelViewMatrixArray=new Float32Array(16);j._objectMatrixArray=new Float32Array(16);j.matrixWorld.flattenToArray(j._objectMatrixArray)}if(j instanceof THREE.Mesh){i=j.geometry;i.geometryGroups==undefined&&H(i);for(g in i.geometryGroups){u=
-i.geometryGroups[g];if(!u.__webGLVertexBuffer){var o=u;o.__webGLVertexBuffer=c.createBuffer();o.__webGLNormalBuffer=c.createBuffer();o.__webGLTangentBuffer=c.createBuffer();o.__webGLColorBuffer=c.createBuffer();o.__webGLUVBuffer=c.createBuffer();o.__webGLUV2Buffer=c.createBuffer();o.__webGLSkinVertexABuffer=c.createBuffer();o.__webGLSkinVertexBBuffer=c.createBuffer();o.__webGLSkinIndicesBuffer=c.createBuffer();o.__webGLSkinWeightsBuffer=c.createBuffer();o.__webGLFaceBuffer=c.createBuffer();o.__webGLLineBuffer=
-c.createBuffer();o=u;var r=j,x=void 0,s=void 0,v=0,J=0,P=0,N=r.geometry.faces,I=o.faces;x=0;for(s=I.length;x<s;x++){fi=I[x];face=N[fi];if(face instanceof THREE.Face3){v+=3;J+=1;P+=3}else if(face instanceof THREE.Face4){v+=4;J+=2;P+=4}}o.__vertexArray=new Float32Array(v*3);o.__normalArray=new Float32Array(v*3);o.__tangentArray=new Float32Array(v*4);o.__colorArray=new Float32Array(v*3);o.__uvArray=new Float32Array(v*2);o.__uv2Array=new Float32Array(v*2);o.__skinVertexAArray=new Float32Array(v*4);o.__skinVertexBArray=
-new Float32Array(v*4);o.__skinIndexArray=new Float32Array(v*4);o.__skinWeightArray=new Float32Array(v*4);o.__faceArray=new Uint16Array(J*3);o.__lineArray=new Uint16Array(P*2);s=x=o;v=void 0;N=void 0;var K=void 0,G=void 0;K=void 0;I=!1;v=0;for(N=r.materials.length;v<N;v++){K=r.materials[v];if(K instanceof THREE.MeshFaceMaterial){K=0;for(G=s.materials.length;K<G;K++)if(s.materials[K]&&s.materials[K].shading!=undefined&&s.materials[K].shading==THREE.SmoothShading){I=!0;break}}else if(K&&K.shading!=undefined&&
-K.shading==THREE.SmoothShading){I=!0;break}if(I)break}x.__needsSmoothNormals=I;o.__webGLFaceCount=J*3;o.__webGLLineCount=P*2;i.__dirtyVertices=!0;i.__dirtyElements=!0;i.__dirtyUvs=!0;i.__dirtyNormals=!0;i.__dirtyTangents=!0;i.__dirtyColors=!0}L(k.__webglObjects,u,j)}}else if(j instanceof THREE.Ribbon){i=j.geometry;if(!i.__webGLVertexBuffer){g=i;g.__webGLVertexBuffer=c.createBuffer();g.__webGLColorBuffer=c.createBuffer();g=i;u=g.vertices.length;g.__vertexArray=new Float32Array(u*3);g.__colorArray=
-new Float32Array(u*3);g.__webGLVertexCount=u;i.__dirtyVertices=!0;i.__dirtyColors=!0}L(k.__webglObjects,i,j)}else if(j instanceof THREE.Line){i=j.geometry;if(!i.__webGLVertexBuffer){g=i;g.__webGLVertexBuffer=c.createBuffer();g.__webGLColorBuffer=c.createBuffer();g=i;u=g.vertices.length;g.__vertexArray=new Float32Array(u*3);g.__colorArray=new Float32Array(u*3);g.__webGLLineCount=u;i.__dirtyVertices=!0;i.__dirtyColors=!0}L(k.__webglObjects,i,j)}else if(j instanceof THREE.ParticleSystem){i=j.geometry;
-if(!i.__webGLVertexBuffer){g=i;g.__webGLVertexBuffer=c.createBuffer();g.__webGLColorBuffer=c.createBuffer();g=i;u=g.vertices.length;g.__vertexArray=new Float32Array(u*3);g.__colorArray=new Float32Array(u*3);g.__sortArray=[];g.__webGLParticleCount=u;i.__dirtyVertices=!0;i.__dirtyColors=!0}L(k.__webglObjects,i,j)}else THREE.MarchingCubes!==undefined&&j instanceof THREE.MarchingCubes&&k.__webglObjectsImmediate.push({object:j,opaque:{list:[],count:0},transparent:{list:[],count:0}});e.__objectsAdded.splice(0,
-1)}for(;e.__objectsRemoved.length;){j=e.__objectsRemoved[0];k=e;i=void 0;g=void 0;for(i=k.__webglObjects.length-1;i>=0;i--){g=k.__webglObjects[i].object;j==g&&k.__webglObjects.splice(i,1)}e.__objectsRemoved.splice(0,1)}j=0;for(k=e.__webglObjects.length;j<k;j++){g=e.__webglObjects[j].object;u=void 0;i=void 0;o=void 0;if(g instanceof THREE.Mesh){i=g.geometry;for(u in i.geometryGroups){o=i.geometryGroups[u];if(i.__dirtyVertices||i.__dirtyElements||i.__dirtyUvs||i.__dirtyNormals||i.__dirtyColors||i.__dirtyTangents){J=
-c.DYNAMIC_DRAW;P=void 0;x=void 0;var ha=void 0,t=void 0,da=void 0,ba=void 0,ga=void 0;ha=void 0;var z=void 0,B=void 0,C=void 0,O=void 0;z=void 0;B=void 0;C=void 0;t=void 0;z=void 0;B=void 0;C=void 0;O=void 0;z=void 0;B=void 0;C=void 0;O=void 0;z=void 0;B=void 0;C=void 0;O=void 0;z=void 0;B=void 0;C=void 0;O=void 0;z=void 0;B=void 0;C=void 0;O=void 0;t=void 0;ba=void 0;da=void 0;ga=void 0;var ia=G=K=I=N=v=r=s=0,W=0,p=0,Z=o.__vertexArray,Ha=o.__uvArray,Ia=o.__uv2Array,ma=o.__normalArray,Q=o.__tangentArray,
-$=o.__colorArray,R=o.__skinVertexAArray,S=o.__skinVertexBArray,T=o.__skinIndexArray,U=o.__skinWeightArray,sa=o.__faceArray,ja=o.__lineArray,Ta=o.__needsSmoothNormals,ea=g.geometry,Ka=ea.__dirtyVertices,La=ea.__dirtyElements,Ca=ea.__dirtyUvs,Ma=ea.__dirtyNormals,Na=ea.__dirtyTangents,Oa=ea.__dirtyColors,ka=ea.vertices,Ua=o.faces,Va=ea.faces,Wa=ea.uvs,Xa=ea.uvs2,ta=ea.colors,wa=ea.skinVerticesA,xa=ea.skinVerticesB,ya=ea.skinIndices,ua=ea.skinWeights;P=0;for(x=Ua.length;P<x;P++){ha=Ua[P];t=Va[ha];ga=
-Wa[ha];ha=Xa[ha];da=t.vertexNormals;ba=t.normal;if(t instanceof THREE.Face3){if(Ka){z=ka[t.a].position;B=ka[t.b].position;C=ka[t.c].position;Z[r]=z.x;Z[r+1]=z.y;Z[r+2]=z.z;Z[r+3]=B.x;Z[r+4]=B.y;Z[r+5]=B.z;Z[r+6]=C.x;Z[r+7]=C.y;Z[r+8]=C.z;r+=9}if(ua.length){z=ua[t.a];B=ua[t.b];C=ua[t.c];U[p]=z.x;U[p+1]=z.y;U[p+2]=z.z;U[p+3]=z.w;U[p+4]=B.x;U[p+5]=B.y;U[p+6]=B.z;U[p+7]=B.w;U[p+8]=C.x;U[p+9]=C.y;U[p+10]=C.z;U[p+11]=C.w;z=ya[t.a];B=ya[t.b];C=ya[t.c];T[p]=z.x;T[p+1]=z.y;T[p+2]=z.z;T[p+3]=z.w;T[p+4]=B.x;
-T[p+5]=B.y;T[p+6]=B.z;T[p+7]=B.w;T[p+8]=C.x;T[p+9]=C.y;T[p+10]=C.z;T[p+11]=C.w;z=wa[t.a];B=wa[t.b];C=wa[t.c];R[p]=z.x;R[p+1]=z.y;R[p+2]=z.z;R[p+3]=1;R[p+4]=B.x;R[p+5]=B.y;R[p+6]=B.z;R[p+7]=1;R[p+8]=C.x;R[p+9]=C.y;R[p+10]=C.z;R[p+11]=1;z=xa[t.a];B=xa[t.b];C=xa[t.c];S[p]=z.x;S[p+1]=z.y;S[p+2]=z.z;S[p+3]=1;S[p+4]=B.x;S[p+5]=B.y;S[p+6]=B.z;S[p+7]=1;S[p+8]=C.x;S[p+9]=C.y;S[p+10]=C.z;S[p+11]=1;p+=12}if(Oa&&ta.length){z=ta[t.a];B=ta[t.b];C=ta[t.c];$[W]=z.r;$[W+1]=z.g;$[W+2]=z.b;$[W+3]=B.r;$[W+4]=B.g;$[W+
-5]=B.b;$[W+6]=C.r;$[W+7]=C.g;$[W+8]=C.b;W+=9}if(Na&&ea.hasTangents){z=ka[t.a].tangent;B=ka[t.b].tangent;C=ka[t.c].tangent;Q[G]=z.x;Q[G+1]=z.y;Q[G+2]=z.z;Q[G+3]=z.w;Q[G+4]=B.x;Q[G+5]=B.y;Q[G+6]=B.z;Q[G+7]=B.w;Q[G+8]=C.x;Q[G+9]=C.y;Q[G+10]=C.z;Q[G+11]=C.w;G+=12}if(Ma)if(da.length==3&&Ta)for(t=0;t<3;t++){ba=da[t];ma[K]=ba.x;ma[K+1]=ba.y;ma[K+2]=ba.z;K+=3}else for(t=0;t<3;t++){ma[K]=ba.x;ma[K+1]=ba.y;ma[K+2]=ba.z;K+=3}if(Ca&&ga)for(t=0;t<3;t++){da=ga[t];Ha[v]=da.u;Ha[v+1]=da.v;v+=2}if(Ca&&ha)for(t=0;t<
-3;t++){ga=ha[t];Ia[N]=ga.u;Ia[N+1]=ga.v;N+=2}if(La){sa[I]=s;sa[I+1]=s+1;sa[I+2]=s+2;I+=3;ja[ia]=s;ja[ia+1]=s+1;ja[ia+2]=s;ja[ia+3]=s+2;ja[ia+4]=s+1;ja[ia+5]=s+2;ia+=6;s+=3}}else if(t instanceof THREE.Face4){if(Ka){z=ka[t.a].position;B=ka[t.b].position;C=ka[t.c].position;O=ka[t.d].position;Z[r]=z.x;Z[r+1]=z.y;Z[r+2]=z.z;Z[r+3]=B.x;Z[r+4]=B.y;Z[r+5]=B.z;Z[r+6]=C.x;Z[r+7]=C.y;Z[r+8]=C.z;Z[r+9]=O.x;Z[r+10]=O.y;Z[r+11]=O.z;r+=12}if(ua.length){z=ua[t.a];B=ua[t.b];C=ua[t.c];O=ua[t.d];U[p]=z.x;U[p+1]=z.y;
-U[p+2]=z.z;U[p+3]=z.w;U[p+4]=B.x;U[p+5]=B.y;U[p+6]=B.z;U[p+7]=B.w;U[p+8]=C.x;U[p+9]=C.y;U[p+10]=C.z;U[p+11]=C.w;U[p+12]=O.x;U[p+13]=O.y;U[p+14]=O.z;U[p+15]=O.w;z=ya[t.a];B=ya[t.b];C=ya[t.c];O=ya[t.d];T[p]=z.x;T[p+1]=z.y;T[p+2]=z.z;T[p+3]=z.w;T[p+4]=B.x;T[p+5]=B.y;T[p+6]=B.z;T[p+7]=B.w;T[p+8]=C.x;T[p+9]=C.y;T[p+10]=C.z;T[p+11]=C.w;T[p+12]=O.x;T[p+13]=O.y;T[p+14]=O.z;T[p+15]=O.w;z=wa[t.a];B=wa[t.b];C=wa[t.c];O=wa[t.d];R[p]=z.x;R[p+1]=z.y;R[p+2]=z.z;R[p+3]=1;R[p+4]=B.x;R[p+5]=B.y;R[p+6]=B.z;R[p+7]=1;
-R[p+8]=C.x;R[p+9]=C.y;R[p+10]=C.z;R[p+11]=1;R[p+12]=O.x;R[p+13]=O.y;R[p+14]=O.z;R[p+15]=1;z=xa[t.a];B=xa[t.b];C=xa[t.c];O=xa[t.d];S[p]=z.x;S[p+1]=z.y;S[p+2]=z.z;S[p+3]=1;S[p+4]=B.x;S[p+5]=B.y;S[p+6]=B.z;S[p+7]=1;S[p+8]=C.x;S[p+9]=C.y;S[p+10]=C.z;S[p+11]=1;S[p+12]=O.x;S[p+13]=O.y;S[p+14]=O.z;S[p+15]=1;p+=16}if(Oa&&ta.length){z=ta[t.a];B=ta[t.b];C=ta[t.c];O=ta[t.d];$[W]=z.r;$[W+1]=z.g;$[W+2]=z.b;$[W+3]=B.r;$[W+4]=B.g;$[W+5]=B.b;$[W+6]=C.r;$[W+7]=C.g;$[W+8]=C.b;$[W+9]=O.r;$[W+10]=O.g;$[W+11]=O.b;W+=
-12}if(Na&&ea.hasTangents){z=ka[t.a].tangent;B=ka[t.b].tangent;C=ka[t.c].tangent;t=ka[t.d].tangent;Q[G]=z.x;Q[G+1]=z.y;Q[G+2]=z.z;Q[G+3]=z.w;Q[G+4]=B.x;Q[G+5]=B.y;Q[G+6]=B.z;Q[G+7]=B.w;Q[G+8]=C.x;Q[G+9]=C.y;Q[G+10]=C.z;Q[G+11]=C.w;Q[G+12]=t.x;Q[G+13]=t.y;Q[G+14]=t.z;Q[G+15]=t.w;G+=16}if(Ma)if(da.length==4&&Ta)for(t=0;t<4;t++){ba=da[t];ma[K]=ba.x;ma[K+1]=ba.y;ma[K+2]=ba.z;K+=3}else for(t=0;t<4;t++){ma[K]=ba.x;ma[K+1]=ba.y;ma[K+2]=ba.z;K+=3}if(Ca&&ga)for(t=0;t<4;t++){da=ga[t];Ha[v]=da.u;Ha[v+1]=da.v;
-v+=2}if(Ca&&ha)for(t=0;t<4;t++){ga=ha[t];Ia[N]=ga.u;Ia[N+1]=ga.v;N+=2}if(La){sa[I]=s;sa[I+1]=s+1;sa[I+2]=s+2;sa[I+3]=s;sa[I+4]=s+2;sa[I+5]=s+3;I+=6;ja[ia]=s;ja[ia+1]=s+1;ja[ia+2]=s;ja[ia+3]=s+3;ja[ia+4]=s+1;ja[ia+5]=s+2;ja[ia+6]=s+2;ja[ia+7]=s+3;ia+=8;s+=4}}}if(Ka){c.bindBuffer(c.ARRAY_BUFFER,o.__webGLVertexBuffer);c.bufferData(c.ARRAY_BUFFER,Z,J)}if(Oa&&ta.length){c.bindBuffer(c.ARRAY_BUFFER,o.__webGLColorBuffer);c.bufferData(c.ARRAY_BUFFER,$,J)}if(Ma){c.bindBuffer(c.ARRAY_BUFFER,o.__webGLNormalBuffer);
-c.bufferData(c.ARRAY_BUFFER,ma,J)}if(Na&&ea.hasTangents){c.bindBuffer(c.ARRAY_BUFFER,o.__webGLTangentBuffer);c.bufferData(c.ARRAY_BUFFER,Q,J)}if(Ca&&v>0){c.bindBuffer(c.ARRAY_BUFFER,o.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,Ha,J)}if(Ca&&N>0){c.bindBuffer(c.ARRAY_BUFFER,o.__webGLUV2Buffer);c.bufferData(c.ARRAY_BUFFER,Ia,J)}if(La){c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,o.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,sa,J);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,o.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,
-ja,J)}if(p>0){c.bindBuffer(c.ARRAY_BUFFER,o.__webGLSkinVertexABuffer);c.bufferData(c.ARRAY_BUFFER,R,J);c.bindBuffer(c.ARRAY_BUFFER,o.__webGLSkinVertexBBuffer);c.bufferData(c.ARRAY_BUFFER,S,J);c.bindBuffer(c.ARRAY_BUFFER,o.__webGLSkinIndicesBuffer);c.bufferData(c.ARRAY_BUFFER,T,J);c.bindBuffer(c.ARRAY_BUFFER,o.__webGLSkinWeightsBuffer);c.bufferData(c.ARRAY_BUFFER,U,J)}}}i.__dirtyVertices=!1;i.__dirtyElements=!1;i.__dirtyUvs=!1;i.__dirtyNormals=!1;i.__dirtyTangents=!1;i.__dirtyColors=!1}else if(g instanceof
-THREE.Ribbon){i=g.geometry;if(i.__dirtyVertices||i.__dirtyColors){g=i;u=c.DYNAMIC_DRAW;s=void 0;s=void 0;r=void 0;o=void 0;v=g.vertices;J=g.colors;N=v.length;P=J.length;I=g.__vertexArray;x=g.__colorArray;K=g.__dirtyColors;if(g.__dirtyVertices){for(s=0;s<N;s++){r=v[s].position;o=s*3;I[o]=r.x;I[o+1]=r.y;I[o+2]=r.z}c.bindBuffer(c.ARRAY_BUFFER,g.__webGLVertexBuffer);c.bufferData(c.ARRAY_BUFFER,I,u)}if(K){for(s=0;s<P;s++){color=J[s];o=s*3;x[o]=color.r;x[o+1]=color.g;x[o+2]=color.b}c.bindBuffer(c.ARRAY_BUFFER,
-g.__webGLColorBuffer);c.bufferData(c.ARRAY_BUFFER,x,u)}}i.__dirtyVertices=!1;i.__dirtyColors=!1}else if(g instanceof THREE.Line){i=g.geometry;if(i.__dirtyVertices||i.__dirtyColors){g=i;u=c.DYNAMIC_DRAW;s=void 0;s=void 0;r=void 0;o=void 0;v=g.vertices;J=g.colors;N=v.length;P=J.length;I=g.__vertexArray;x=g.__colorArray;K=g.__dirtyColors;if(g.__dirtyVertices){for(s=0;s<N;s++){r=v[s].position;o=s*3;I[o]=r.x;I[o+1]=r.y;I[o+2]=r.z}c.bindBuffer(c.ARRAY_BUFFER,g.__webGLVertexBuffer);c.bufferData(c.ARRAY_BUFFER,
-I,u)}if(K){for(s=0;s<P;s++){color=J[s];o=s*3;x[o]=color.r;x[o+1]=color.g;x[o+2]=color.b}c.bindBuffer(c.ARRAY_BUFFER,g.__webGLColorBuffer);c.bufferData(c.ARRAY_BUFFER,x,u)}}i.__dirtyVertices=!1;i.__dirtyColors=!1}else if(g instanceof THREE.ParticleSystem){i=g.geometry;(i.__dirtyVertices||i.__dirtyColors||g.sortParticles)&&b(i,c.DYNAMIC_DRAW,g);i.__dirtyVertices=!1;i.__dirtyColors=!1}}};this.setFaceCulling=function(e,j){if(e){!j||j=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(e=="back")c.cullFace(c.BACK);
-else e=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK);c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)};this.supportsVertexTextures=function(){return c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0}};
+0&&g.skinIndex>=0&&g.skinWeight>=0){c.enableVertexAttribArray(g.skinVertexA);c.enableVertexAttribArray(g.skinVertexB);c.enableVertexAttribArray(g.skinIndex);c.enableVertexAttribArray(g.skinWeight)}};this.render=function(e,j,k,g){var i,u,o,r,x,s,v,J,P=e.lights,N=e.fog;j.matrixAutoUpdate&&j.update();j.matrixWorldInverse.flattenToArray(Ja);j.projectionMatrix.flattenToArray(Pa);Ga.multiply(j.projectionMatrix,j.matrixWorldInverse);m(Ga);e.update(undefined,!1,j);this.initWebGLObjects(e,j);X(k);(this.autoClear||
+g)&&this.clear();x=e.__webglObjects.length;for(g=0;g<x;g++){i=e.__webglObjects[g];v=i.object;if(v.visible)if(!(v instanceof THREE.Mesh)||w(v)){v.matrixWorld.flattenToArray(v._objectMatrixArray);F(v,j);D(i);i.render=!0;if(this.sortObjects){Ba.copy(v.position);Ga.multiplyVector3(Ba);i.z=Ba.z}}else i.render=!1;else i.render=!1}this.sortObjects&&e.__webglObjects.sort(E);s=e.__webglObjectsImmediate.length;for(g=0;g<s;g++){i=e.__webglObjectsImmediate[g];v=i.object;if(v.visible){v.matrixAutoUpdate&&v.matrixWorld.flattenToArray(v._objectMatrixArray);
+F(v,j);y(i)}}M(THREE.NormalBlending);for(g=0;g<x;g++){i=e.__webglObjects[g];if(i.render){v=i.object;J=i.buffer;o=i.opaque;l(v);for(i=0;i<o.count;i++){r=o.list[i];q(r.depthTest);h(j,P,N,r,J,v)}}}for(g=0;g<s;g++){i=e.__webglObjectsImmediate[g];v=i.object;if(v.visible){o=i.opaque;l(v);for(i=0;i<o.count;i++){r=o.list[i];q(r.depthTest);u=f(j,P,N,r,v);v.render(function(I){n(I,u)})}}}for(g=0;g<x;g++){i=e.__webglObjects[g];if(i.render){v=i.object;J=i.buffer;o=i.transparent;l(v);for(i=0;i<o.count;i++){r=o.list[i];
+M(r.blending);q(r.depthTest);h(j,P,N,r,J,v)}}}for(g=0;g<s;g++){i=e.__webglObjectsImmediate[g];v=i.object;if(v.visible){o=i.transparent;l(v);for(i=0;i<o.count;i++){r=o.list[i];M(r.blending);q(r.depthTest);u=f(j,P,N,r,v);v.render(function(I){n(I,u)})}}}if(k&&k.minFilter!==THREE.NearestFilter&&k.minFilter!==THREE.LinearFilter){c.bindTexture(c.TEXTURE_2D,k.__webGLTexture);c.generateMipmap(c.TEXTURE_2D);c.bindTexture(c.TEXTURE_2D,null)}};this.initWebGLObjects=function(e){if(!e.__webglObjects){e.__webglObjects=
+[];e.__webglObjectsImmediate=[]}for(;e.__objectsAdded.length;){var j=e.__objectsAdded[0],k=e,g=void 0,i=void 0,u=void 0;if(j._modelViewMatrix==undefined){j._modelViewMatrix=new THREE.Matrix4;j._normalMatrixArray=new Float32Array(9);j._modelViewMatrixArray=new Float32Array(16);j._objectMatrixArray=new Float32Array(16);j.matrixWorld.flattenToArray(j._objectMatrixArray)}if(j instanceof THREE.Mesh){i=j.geometry;i.geometryGroups==undefined&&H(i);for(g in i.geometryGroups){u=i.geometryGroups[g];if(!u.__webGLVertexBuffer){var o=
+u;o.__webGLVertexBuffer=c.createBuffer();o.__webGLNormalBuffer=c.createBuffer();o.__webGLTangentBuffer=c.createBuffer();o.__webGLColorBuffer=c.createBuffer();o.__webGLUVBuffer=c.createBuffer();o.__webGLUV2Buffer=c.createBuffer();o.__webGLSkinVertexABuffer=c.createBuffer();o.__webGLSkinVertexBBuffer=c.createBuffer();o.__webGLSkinIndicesBuffer=c.createBuffer();o.__webGLSkinWeightsBuffer=c.createBuffer();o.__webGLFaceBuffer=c.createBuffer();o.__webGLLineBuffer=c.createBuffer();o=u;var r=j,x=void 0,s=
+void 0,v=0,J=0,P=0,N=r.geometry.faces,I=o.faces;x=0;for(s=I.length;x<s;x++){fi=I[x];face=N[fi];if(face instanceof THREE.Face3){v+=3;J+=1;P+=3}else if(face instanceof THREE.Face4){v+=4;J+=2;P+=4}}o.__vertexArray=new Float32Array(v*3);o.__normalArray=new Float32Array(v*3);o.__tangentArray=new Float32Array(v*4);o.__colorArray=new Float32Array(v*3);o.__uvArray=new Float32Array(v*2);o.__uv2Array=new Float32Array(v*2);o.__skinVertexAArray=new Float32Array(v*4);o.__skinVertexBArray=new Float32Array(v*4);
+o.__skinIndexArray=new Float32Array(v*4);o.__skinWeightArray=new Float32Array(v*4);o.__faceArray=new Uint16Array(J*3);o.__lineArray=new Uint16Array(P*2);s=x=o;v=void 0;N=void 0;var K=void 0,G=void 0;K=void 0;I=!1;v=0;for(N=r.materials.length;v<N;v++){K=r.materials[v];if(K instanceof THREE.MeshFaceMaterial){K=0;for(G=s.materials.length;K<G;K++)if(s.materials[K]&&s.materials[K].shading!=undefined&&s.materials[K].shading==THREE.SmoothShading){I=!0;break}}else if(K&&K.shading!=undefined&&K.shading==THREE.SmoothShading){I=
+!0;break}if(I)break}x.__needsSmoothNormals=I;o.__webGLFaceCount=J*3;o.__webGLLineCount=P*2;i.__dirtyVertices=!0;i.__dirtyElements=!0;i.__dirtyUvs=!0;i.__dirtyNormals=!0;i.__dirtyTangents=!0;i.__dirtyColors=!0}L(k.__webglObjects,u,j)}}else if(j instanceof THREE.Ribbon){i=j.geometry;if(!i.__webGLVertexBuffer){g=i;g.__webGLVertexBuffer=c.createBuffer();g.__webGLColorBuffer=c.createBuffer();g=i;u=g.vertices.length;g.__vertexArray=new Float32Array(u*3);g.__colorArray=new Float32Array(u*3);g.__webGLVertexCount=
+u;i.__dirtyVertices=!0;i.__dirtyColors=!0}L(k.__webglObjects,i,j)}else if(j instanceof THREE.Line){i=j.geometry;if(!i.__webGLVertexBuffer){g=i;g.__webGLVertexBuffer=c.createBuffer();g.__webGLColorBuffer=c.createBuffer();g=i;u=g.vertices.length;g.__vertexArray=new Float32Array(u*3);g.__colorArray=new Float32Array(u*3);g.__webGLLineCount=u;i.__dirtyVertices=!0;i.__dirtyColors=!0}L(k.__webglObjects,i,j)}else if(j instanceof THREE.ParticleSystem){i=j.geometry;if(!i.__webGLVertexBuffer){g=i;g.__webGLVertexBuffer=
+c.createBuffer();g.__webGLColorBuffer=c.createBuffer();g=i;u=g.vertices.length;g.__vertexArray=new Float32Array(u*3);g.__colorArray=new Float32Array(u*3);g.__sortArray=[];g.__webGLParticleCount=u;i.__dirtyVertices=!0;i.__dirtyColors=!0}L(k.__webglObjects,i,j)}else THREE.MarchingCubes!==undefined&&j instanceof THREE.MarchingCubes&&k.__webglObjectsImmediate.push({object:j,opaque:{list:[],count:0},transparent:{list:[],count:0}});e.__objectsAdded.splice(0,1)}for(;e.__objectsRemoved.length;){j=e.__objectsRemoved[0];
+k=e;i=void 0;g=void 0;for(i=k.__webglObjects.length-1;i>=0;i--){g=k.__webglObjects[i].object;j==g&&k.__webglObjects.splice(i,1)}e.__objectsRemoved.splice(0,1)}j=0;for(k=e.__webglObjects.length;j<k;j++){g=e.__webglObjects[j].object;u=void 0;i=void 0;o=void 0;if(g instanceof THREE.Mesh){i=g.geometry;for(u in i.geometryGroups){o=i.geometryGroups[u];if(i.__dirtyVertices||i.__dirtyElements||i.__dirtyUvs||i.__dirtyNormals||i.__dirtyColors||i.__dirtyTangents){J=c.DYNAMIC_DRAW;P=void 0;x=void 0;var ha=void 0,
+t=void 0,da=void 0,ba=void 0,ga=void 0;ha=void 0;var z=void 0,B=void 0,C=void 0,O=void 0;z=void 0;B=void 0;C=void 0;t=void 0;z=void 0;B=void 0;C=void 0;O=void 0;z=void 0;B=void 0;C=void 0;O=void 0;z=void 0;B=void 0;C=void 0;O=void 0;z=void 0;B=void 0;C=void 0;O=void 0;z=void 0;B=void 0;C=void 0;O=void 0;t=void 0;ba=void 0;da=void 0;ga=void 0;var ia=G=K=I=N=v=r=s=0,W=0,p=0,Z=o.__vertexArray,Ha=o.__uvArray,Ia=o.__uv2Array,ma=o.__normalArray,Q=o.__tangentArray,$=o.__colorArray,R=o.__skinVertexAArray,
+S=o.__skinVertexBArray,T=o.__skinIndexArray,U=o.__skinWeightArray,sa=o.__faceArray,ja=o.__lineArray,Ta=o.__needsSmoothNormals,ea=g.geometry,Ka=ea.__dirtyVertices,La=ea.__dirtyElements,Ca=ea.__dirtyUvs,Ma=ea.__dirtyNormals,Na=ea.__dirtyTangents,Oa=ea.__dirtyColors,ka=ea.vertices,Ua=o.faces,Va=ea.faces,Wa=ea.uvs,Xa=ea.uvs2,ta=ea.colors,wa=ea.skinVerticesA,xa=ea.skinVerticesB,ya=ea.skinIndices,ua=ea.skinWeights;P=0;for(x=Ua.length;P<x;P++){ha=Ua[P];t=Va[ha];ga=Wa[ha];ha=Xa[ha];da=t.vertexNormals;ba=
+t.normal;if(t instanceof THREE.Face3){if(Ka){z=ka[t.a].position;B=ka[t.b].position;C=ka[t.c].position;Z[r]=z.x;Z[r+1]=z.y;Z[r+2]=z.z;Z[r+3]=B.x;Z[r+4]=B.y;Z[r+5]=B.z;Z[r+6]=C.x;Z[r+7]=C.y;Z[r+8]=C.z;r+=9}if(ua.length){z=ua[t.a];B=ua[t.b];C=ua[t.c];U[p]=z.x;U[p+1]=z.y;U[p+2]=z.z;U[p+3]=z.w;U[p+4]=B.x;U[p+5]=B.y;U[p+6]=B.z;U[p+7]=B.w;U[p+8]=C.x;U[p+9]=C.y;U[p+10]=C.z;U[p+11]=C.w;z=ya[t.a];B=ya[t.b];C=ya[t.c];T[p]=z.x;T[p+1]=z.y;T[p+2]=z.z;T[p+3]=z.w;T[p+4]=B.x;T[p+5]=B.y;T[p+6]=B.z;T[p+7]=B.w;T[p+8]=
+C.x;T[p+9]=C.y;T[p+10]=C.z;T[p+11]=C.w;z=wa[t.a];B=wa[t.b];C=wa[t.c];R[p]=z.x;R[p+1]=z.y;R[p+2]=z.z;R[p+3]=1;R[p+4]=B.x;R[p+5]=B.y;R[p+6]=B.z;R[p+7]=1;R[p+8]=C.x;R[p+9]=C.y;R[p+10]=C.z;R[p+11]=1;z=xa[t.a];B=xa[t.b];C=xa[t.c];S[p]=z.x;S[p+1]=z.y;S[p+2]=z.z;S[p+3]=1;S[p+4]=B.x;S[p+5]=B.y;S[p+6]=B.z;S[p+7]=1;S[p+8]=C.x;S[p+9]=C.y;S[p+10]=C.z;S[p+11]=1;p+=12}if(Oa&&ta.length){z=ta[t.a];B=ta[t.b];C=ta[t.c];$[W]=z.r;$[W+1]=z.g;$[W+2]=z.b;$[W+3]=B.r;$[W+4]=B.g;$[W+5]=B.b;$[W+6]=C.r;$[W+7]=C.g;$[W+8]=C.b;
+W+=9}if(Na&&ea.hasTangents){z=ka[t.a].tangent;B=ka[t.b].tangent;C=ka[t.c].tangent;Q[G]=z.x;Q[G+1]=z.y;Q[G+2]=z.z;Q[G+3]=z.w;Q[G+4]=B.x;Q[G+5]=B.y;Q[G+6]=B.z;Q[G+7]=B.w;Q[G+8]=C.x;Q[G+9]=C.y;Q[G+10]=C.z;Q[G+11]=C.w;G+=12}if(Ma)if(da.length==3&&Ta)for(t=0;t<3;t++){ba=da[t];ma[K]=ba.x;ma[K+1]=ba.y;ma[K+2]=ba.z;K+=3}else for(t=0;t<3;t++){ma[K]=ba.x;ma[K+1]=ba.y;ma[K+2]=ba.z;K+=3}if(Ca&&ga)for(t=0;t<3;t++){da=ga[t];Ha[v]=da.u;Ha[v+1]=da.v;v+=2}if(Ca&&ha)for(t=0;t<3;t++){ga=ha[t];Ia[N]=ga.u;Ia[N+1]=ga.v;
+N+=2}if(La){sa[I]=s;sa[I+1]=s+1;sa[I+2]=s+2;I+=3;ja[ia]=s;ja[ia+1]=s+1;ja[ia+2]=s;ja[ia+3]=s+2;ja[ia+4]=s+1;ja[ia+5]=s+2;ia+=6;s+=3}}else if(t instanceof THREE.Face4){if(Ka){z=ka[t.a].position;B=ka[t.b].position;C=ka[t.c].position;O=ka[t.d].position;Z[r]=z.x;Z[r+1]=z.y;Z[r+2]=z.z;Z[r+3]=B.x;Z[r+4]=B.y;Z[r+5]=B.z;Z[r+6]=C.x;Z[r+7]=C.y;Z[r+8]=C.z;Z[r+9]=O.x;Z[r+10]=O.y;Z[r+11]=O.z;r+=12}if(ua.length){z=ua[t.a];B=ua[t.b];C=ua[t.c];O=ua[t.d];U[p]=z.x;U[p+1]=z.y;U[p+2]=z.z;U[p+3]=z.w;U[p+4]=B.x;U[p+5]=
+B.y;U[p+6]=B.z;U[p+7]=B.w;U[p+8]=C.x;U[p+9]=C.y;U[p+10]=C.z;U[p+11]=C.w;U[p+12]=O.x;U[p+13]=O.y;U[p+14]=O.z;U[p+15]=O.w;z=ya[t.a];B=ya[t.b];C=ya[t.c];O=ya[t.d];T[p]=z.x;T[p+1]=z.y;T[p+2]=z.z;T[p+3]=z.w;T[p+4]=B.x;T[p+5]=B.y;T[p+6]=B.z;T[p+7]=B.w;T[p+8]=C.x;T[p+9]=C.y;T[p+10]=C.z;T[p+11]=C.w;T[p+12]=O.x;T[p+13]=O.y;T[p+14]=O.z;T[p+15]=O.w;z=wa[t.a];B=wa[t.b];C=wa[t.c];O=wa[t.d];R[p]=z.x;R[p+1]=z.y;R[p+2]=z.z;R[p+3]=1;R[p+4]=B.x;R[p+5]=B.y;R[p+6]=B.z;R[p+7]=1;R[p+8]=C.x;R[p+9]=C.y;R[p+10]=C.z;R[p+11]=
+1;R[p+12]=O.x;R[p+13]=O.y;R[p+14]=O.z;R[p+15]=1;z=xa[t.a];B=xa[t.b];C=xa[t.c];O=xa[t.d];S[p]=z.x;S[p+1]=z.y;S[p+2]=z.z;S[p+3]=1;S[p+4]=B.x;S[p+5]=B.y;S[p+6]=B.z;S[p+7]=1;S[p+8]=C.x;S[p+9]=C.y;S[p+10]=C.z;S[p+11]=1;S[p+12]=O.x;S[p+13]=O.y;S[p+14]=O.z;S[p+15]=1;p+=16}if(Oa&&ta.length){z=ta[t.a];B=ta[t.b];C=ta[t.c];O=ta[t.d];$[W]=z.r;$[W+1]=z.g;$[W+2]=z.b;$[W+3]=B.r;$[W+4]=B.g;$[W+5]=B.b;$[W+6]=C.r;$[W+7]=C.g;$[W+8]=C.b;$[W+9]=O.r;$[W+10]=O.g;$[W+11]=O.b;W+=12}if(Na&&ea.hasTangents){z=ka[t.a].tangent;
+B=ka[t.b].tangent;C=ka[t.c].tangent;t=ka[t.d].tangent;Q[G]=z.x;Q[G+1]=z.y;Q[G+2]=z.z;Q[G+3]=z.w;Q[G+4]=B.x;Q[G+5]=B.y;Q[G+6]=B.z;Q[G+7]=B.w;Q[G+8]=C.x;Q[G+9]=C.y;Q[G+10]=C.z;Q[G+11]=C.w;Q[G+12]=t.x;Q[G+13]=t.y;Q[G+14]=t.z;Q[G+15]=t.w;G+=16}if(Ma)if(da.length==4&&Ta)for(t=0;t<4;t++){ba=da[t];ma[K]=ba.x;ma[K+1]=ba.y;ma[K+2]=ba.z;K+=3}else for(t=0;t<4;t++){ma[K]=ba.x;ma[K+1]=ba.y;ma[K+2]=ba.z;K+=3}if(Ca&&ga)for(t=0;t<4;t++){da=ga[t];Ha[v]=da.u;Ha[v+1]=da.v;v+=2}if(Ca&&ha)for(t=0;t<4;t++){ga=ha[t];Ia[N]=
+ga.u;Ia[N+1]=ga.v;N+=2}if(La){sa[I]=s;sa[I+1]=s+1;sa[I+2]=s+2;sa[I+3]=s;sa[I+4]=s+2;sa[I+5]=s+3;I+=6;ja[ia]=s;ja[ia+1]=s+1;ja[ia+2]=s;ja[ia+3]=s+3;ja[ia+4]=s+1;ja[ia+5]=s+2;ja[ia+6]=s+2;ja[ia+7]=s+3;ia+=8;s+=4}}}if(Ka){c.bindBuffer(c.ARRAY_BUFFER,o.__webGLVertexBuffer);c.bufferData(c.ARRAY_BUFFER,Z,J)}if(Oa&&ta.length){c.bindBuffer(c.ARRAY_BUFFER,o.__webGLColorBuffer);c.bufferData(c.ARRAY_BUFFER,$,J)}if(Ma){c.bindBuffer(c.ARRAY_BUFFER,o.__webGLNormalBuffer);c.bufferData(c.ARRAY_BUFFER,ma,J)}if(Na&&
+ea.hasTangents){c.bindBuffer(c.ARRAY_BUFFER,o.__webGLTangentBuffer);c.bufferData(c.ARRAY_BUFFER,Q,J)}if(Ca&&v>0){c.bindBuffer(c.ARRAY_BUFFER,o.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,Ha,J)}if(Ca&&N>0){c.bindBuffer(c.ARRAY_BUFFER,o.__webGLUV2Buffer);c.bufferData(c.ARRAY_BUFFER,Ia,J)}if(La){c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,o.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,sa,J);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,o.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,ja,J)}if(p>0){c.bindBuffer(c.ARRAY_BUFFER,
+o.__webGLSkinVertexABuffer);c.bufferData(c.ARRAY_BUFFER,R,J);c.bindBuffer(c.ARRAY_BUFFER,o.__webGLSkinVertexBBuffer);c.bufferData(c.ARRAY_BUFFER,S,J);c.bindBuffer(c.ARRAY_BUFFER,o.__webGLSkinIndicesBuffer);c.bufferData(c.ARRAY_BUFFER,T,J);c.bindBuffer(c.ARRAY_BUFFER,o.__webGLSkinWeightsBuffer);c.bufferData(c.ARRAY_BUFFER,U,J)}}}i.__dirtyVertices=!1;i.__dirtyElements=!1;i.__dirtyUvs=!1;i.__dirtyNormals=!1;i.__dirtyTangents=!1;i.__dirtyColors=!1}else if(g instanceof THREE.Ribbon){i=g.geometry;if(i.__dirtyVertices||
+i.__dirtyColors){g=i;u=c.DYNAMIC_DRAW;s=void 0;s=void 0;r=void 0;o=void 0;v=g.vertices;J=g.colors;N=v.length;P=J.length;I=g.__vertexArray;x=g.__colorArray;K=g.__dirtyColors;if(g.__dirtyVertices){for(s=0;s<N;s++){r=v[s].position;o=s*3;I[o]=r.x;I[o+1]=r.y;I[o+2]=r.z}c.bindBuffer(c.ARRAY_BUFFER,g.__webGLVertexBuffer);c.bufferData(c.ARRAY_BUFFER,I,u)}if(K){for(s=0;s<P;s++){color=J[s];o=s*3;x[o]=color.r;x[o+1]=color.g;x[o+2]=color.b}c.bindBuffer(c.ARRAY_BUFFER,g.__webGLColorBuffer);c.bufferData(c.ARRAY_BUFFER,
+x,u)}}i.__dirtyVertices=!1;i.__dirtyColors=!1}else if(g instanceof THREE.Line){i=g.geometry;if(i.__dirtyVertices||i.__dirtyColors){g=i;u=c.DYNAMIC_DRAW;s=void 0;s=void 0;r=void 0;o=void 0;v=g.vertices;J=g.colors;N=v.length;P=J.length;I=g.__vertexArray;x=g.__colorArray;K=g.__dirtyColors;if(g.__dirtyVertices){for(s=0;s<N;s++){r=v[s].position;o=s*3;I[o]=r.x;I[o+1]=r.y;I[o+2]=r.z}c.bindBuffer(c.ARRAY_BUFFER,g.__webGLVertexBuffer);c.bufferData(c.ARRAY_BUFFER,I,u)}if(K){for(s=0;s<P;s++){color=J[s];o=s*
+3;x[o]=color.r;x[o+1]=color.g;x[o+2]=color.b}c.bindBuffer(c.ARRAY_BUFFER,g.__webGLColorBuffer);c.bufferData(c.ARRAY_BUFFER,x,u)}}i.__dirtyVertices=!1;i.__dirtyColors=!1}else if(g instanceof THREE.ParticleSystem){i=g.geometry;(i.__dirtyVertices||i.__dirtyColors||g.sortParticles)&&b(i,c.DYNAMIC_DRAW,g);i.__dirtyVertices=!1;i.__dirtyColors=!1}}};this.setFaceCulling=function(e,j){if(e){!j||j=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(e=="back")c.cullFace(c.BACK);else e=="front"?c.cullFace(c.FRONT):
+c.cullFace(c.FRONT_AND_BACK);c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)};this.supportsVertexTextures=function(){return c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0}};
 THREE.Snippets={fog_pars_fragment:"#ifdef USE_FOG\nuniform vec3 fogColor;\n#ifdef FOG_EXP2\nuniform float fogDensity;\n#else\nuniform float fogNear;\nuniform float fogFar;\n#endif\n#endif",fog_fragment:"#ifdef USE_FOG\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n#ifdef FOG_EXP2\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n#else\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n#endif\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\nvarying vec3 vReflect;\nuniform float reflectivity;\nuniform samplerCube envMap;\nuniform int combine;\n#endif",
 envmap_fragment:"#ifdef USE_ENVMAP\nvec4 cubeColor = textureCube( envMap, vec3( -vReflect.x, vReflect.yz ) );\nif ( combine == 1 ) {\ngl_FragColor = vec4( mix( gl_FragColor.xyz, cubeColor.xyz, reflectivity ), opacity );\n} else {\ngl_FragColor = gl_FragColor * cubeColor;\n}\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\nvarying vec3 vReflect;\nuniform float refractionRatio;\nuniform bool useRefract;\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvec3 nWorld = mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * normal;\nif ( useRefract ) {\nvReflect = refract( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ), refractionRatio );\n} else {\nvReflect = reflect( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ) );\n}\n#endif",
 map_particle_pars_fragment:"#ifdef USE_MAP\nuniform sampler2D map;\n#endif",map_particle_fragment:"#ifdef USE_MAP\ngl_FragColor = gl_FragColor * texture2D( map, gl_PointCoord );\n#endif",map_pars_fragment:"#ifdef USE_MAP\nvarying vec2 vUv;\nuniform sampler2D map;\n#endif",map_pars_vertex:"#ifdef USE_MAP\nvarying vec2 vUv;\n#endif",map_fragment:"#ifdef USE_MAP\ngl_FragColor = gl_FragColor * texture2D( map, vUv );\n#endif",map_vertex:"#ifdef USE_MAP\nvUv = uv;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\nuniform sampler2D lightMap;\n#endif",

+ 2 - 2
examples/misc_sound.html

@@ -226,7 +226,7 @@
 
 					// Render scene into texture
 
-					renderer.render( scene, camera, postprocessing.rtTexture1 );
+					renderer.render( scene, camera, postprocessing.rtTexture1, true );
 
 					// Render quad with blured scene into texture (convolution pass 1)
 
@@ -251,7 +251,7 @@
 					postprocessing.materialScreen.uniforms.tDiffuse.texture = postprocessing.rtTexture3;
 					postprocessing.materialScreen.uniforms.opacity.value = 1.3;
 
-					renderer.render( postprocessing.scene, postprocessing.camera, postprocessing.rtTexture1, false );
+					renderer.render( postprocessing.scene, postprocessing.camera, postprocessing.rtTexture1 );
 
 					// Render to screen
 

+ 2 - 2
examples/webgl_lines_colors.html

@@ -298,7 +298,7 @@
 
 				// Render scene into texture
 
-				renderer.render( scene, camera, rtTexture1 );
+				renderer.render( scene, camera, rtTexture1, true );
 
 				// Render quad with blured scene into texture (convolution pass 1)
 
@@ -323,7 +323,7 @@
 				materialScreen.uniforms.tDiffuse.texture = rtTexture3;
 				materialScreen.uniforms.opacity.value = 1.3;
 
-				renderer.render( sceneScreen, cameraOrtho, rtTexture1, false );
+				renderer.render( sceneScreen, cameraOrtho, rtTexture1 );
 
 				// Render to screen
 

+ 2 - 2
examples/webgl_materials_video.html

@@ -328,7 +328,7 @@
 
 					// Render scene into texture
 
-					renderer.render( scene, camera, postprocessing.rtTexture1 );
+					renderer.render( scene, camera, postprocessing.rtTexture1, true );
 
 					// Render quad with blured scene into texture (convolution pass 1)
 
@@ -353,7 +353,7 @@
 					postprocessing.materialScreen.uniforms.tDiffuse.texture = postprocessing.rtTexture3;
 					postprocessing.materialScreen.uniforms.opacity.value = 1.3;
 
-					renderer.render( postprocessing.scene, postprocessing.camera, postprocessing.rtTexture1, false );
+					renderer.render( postprocessing.scene, postprocessing.camera, postprocessing.rtTexture1 );
 
 					// Render to screen
 

+ 2 - 2
examples/webgl_postprocessing.html

@@ -280,7 +280,7 @@
 
 				// background
 
-				renderer.render( sceneBG, cameraOrtho, rtTexture1 );
+				renderer.render( sceneBG, cameraOrtho, rtTexture1, true );
 
 				// model
 
@@ -305,7 +305,7 @@
 
 				materialScreen.uniforms.tDiffuse.texture = rtTexture3;
 				materialScreen.uniforms.opacity.value = 1.0;
-				renderer.render( sceneScreen, cameraOrtho, rtTexture1, false );
+				renderer.render( sceneScreen, cameraOrtho, rtTexture1 );
 
 				// Render final scene to the screen with film shader
 

+ 2 - 2
examples/webgl_postprocessing_dof.html

@@ -305,7 +305,7 @@
 						for( i = 0; i < nobjects; i++ ) objects[i].materials = [ materials[i] ];
 
 
-					renderer.render( scene, camera, postprocessing.rtTextureColor );
+					renderer.render( scene, camera, postprocessing.rtTextureColor, true );
 
 					// Render depth into texture
 
@@ -314,7 +314,7 @@
 					else
 						for( i = 0; i < nobjects; i++ ) objects[i].materials = [ material_depth ];
 
-					renderer.render( scene, camera, postprocessing.rtTextureDepth );
+					renderer.render( scene, camera, postprocessing.rtTextureDepth, true );
 
 					// Render bokeh composite
 

+ 2 - 2
examples/webgl_ribbons.html

@@ -323,7 +323,7 @@
 
 					// Render scene into texture
 
-					renderer.render( scene, camera, postprocessing.rtTexture1 );
+					renderer.render( scene, camera, postprocessing.rtTexture1, true );
 
 					// Render quad with blured scene into texture (convolution pass 1)
 
@@ -348,7 +348,7 @@
 					postprocessing.materialScreen.uniforms.tDiffuse.texture = postprocessing.rtTexture3;
 					postprocessing.materialScreen.uniforms.opacity.value = 1.2;
 
-					renderer.render( postprocessing.scene, postprocessing.camera, postprocessing.rtTexture1, false );
+					renderer.render( postprocessing.scene, postprocessing.camera, postprocessing.rtTexture1 );
 
 					// Render to screen
 

+ 1 - 1
examples/webgl_rtt.html

@@ -264,7 +264,7 @@
 
 				// Render first scene into texture
 
-				renderer.render( sceneRTT, cameraRTT, rtTexture );
+				renderer.render( sceneRTT, cameraRTT, rtTexture, true );
 
 				// Render full screen quad with generated texture
 				// (disable depth writing so that it stays in the background)

+ 4 - 10
src/renderers/WebGLRenderer.js

@@ -1884,7 +1884,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	};
 
-	this.render = function( scene, camera, renderTarget, clear ) {
+	this.render = function( scene, camera, renderTarget, forceClear ) {
 
 		var i, program, opaque, transparent, material,
 			o, ol, oil, webglObject, object, buffer,
@@ -1904,9 +1904,9 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		this.initWebGLObjects( scene, camera );
 
-		setRenderTarget( renderTarget, clear !== undefined ? clear : true );
+		setRenderTarget( renderTarget );
 
-		if ( this.autoClear ) {
+		if ( this.autoClear || forceClear ) {
 
 			this.clear();
 
@@ -2852,7 +2852,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	};
 
-	function setRenderTarget( renderTexture, clear ) {
+	function setRenderTarget( renderTexture ) {
 
 		if ( renderTexture && !renderTexture.__webGLFramebuffer ) {
 
@@ -2909,12 +2909,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 			_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
 			_gl.viewport( _viewportX, _viewportY, width, height );
 
-			if ( clear ) {
-
-				_gl.clear( _gl.COLOR_BUFFER_BIT | _gl.DEPTH_BUFFER_BIT );
-
-			}
-
 			_oldFramebuffer = framebuffer;
 
 		}

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است