m.getExtension("WEBKIT_EXT_texture_filter_anisotropic");Sa=m.getExtension("WEBGL_compressed_texture_s3tc")||m.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||m.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");pb=m.getExtension("OES_element_index_uint");null===ob&&console.log("THREE.WebGLRenderer: Float textures not supported.");null===tb&&console.log("THREE.WebGLRenderer: Standard derivatives not supported.");null===bb&&console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");
null===Sa&&console.log("THREE.WebGLRenderer: S3TC compressed textures not supported.");null===pb&&console.log("THREE.WebGLRenderer: elementindex as unsigned integer not supported.");void0===m.getShaderPrecisionFormat&&(m.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});ha&&m.getExtension("EXT_frag_depth")})();m.clearColor(0,0,0,1);m.clearDepth(1);m.clearStencil(0);m.enable(m.DEPTH_TEST);m.depthFunc(m.LEQUAL);m.frontFace(m.CCW);m.cullFace(m.BACK);m.enable(m.CULL_FACE);
m.HIGH_FLOAT),rc=m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.MEDIUM_FLOAT);m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.LOW_FLOAT);varsc=m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.HIGH_FLOAT),zc=m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.MEDIUM_FLOAT);m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.LOW_FLOAT);varAc=0<qc.precision&&0<sc.precision,Nb=0<rc.precision&&0<zc.precision;"highp"!==N||Ac||(Nb?(N="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(N=
m.HIGH_FLOAT),sc=m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.MEDIUM_FLOAT);m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.LOW_FLOAT);varzc=m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.HIGH_FLOAT),Ac=m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.MEDIUM_FLOAT);m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.LOW_FLOAT);varBc=0<rc.precision&&0<zc.precision,Nb=0<sc.precision&&0<Ac.precision;"highp"!==N||Bc||(Nb?(N="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(N=
"lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==N||Nb||(N="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));this.getContext=function(){returnm};this.supportsVertexTextures=function(){returnMb};this.supportsFloatTextures=function(){returnob};this.supportsStandardDerivatives=function(){returntb};this.supportsCompressedTextureS3TC=function(){returnSa};this.getMaxAnisotropy=function(){returnLb};this.getPrecision=
this.enableScissorTest=function(a){a?m.enable(m.SCISSOR_TEST):m.disable(m.SCISSOR_TEST)};this.setClearColor=function(a,b){X.set(a);qa=void0!==b?b:1;m.clearColor(X.r,X.g,X.b,qa)};this.setClearColorHex=function(a,b){console.warn("THREE.WebGLRenderer: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,b)};this.getClearColor=function(){returnX};this.getClearAlpha=function(){returnqa};this.clear=function(a,b,c){vard=0;if(void0===a||a)d|=m.COLOR_BUFFER_BIT;if(void0===
b,c,d){if(!1===binstanceofTHREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{vare,f,g,h,k=a.__lights,l=a.fog;ya=-1;Ya=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Sb.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);fc.setFromMatrix(Sb);this.autoUpdateObjects&&this.initWebGLObjects(a);sa.length=0;va.length=0;$=this.sortObjects;s(a,a,b);this.sortObjects&&
h++)}r=n=0;for(q=b.length;r<q;r++){vars=b[r];s.castShadow&&(sinstanceofTHREE.SpotLight&&n++,sinstanceofTHREE.DirectionalLight&&!s.shadowCascade&&n++)}b=n;Jb&&d&&d.skeleton&&d.skeleton.useVertexTexture?n=1024:(n=m.getParameter(m.MAX_VERTEX_UNIFORM_VECTORS),n=Math.floor((n-20)/4),void0!==d&&dinstanceofTHREE.SkinnedMesh&&(n=Math.min(d.skeleton.bones.length,n),n<d.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.skeleton.bones.length+", this GPU supports just "+n+" (try OpenGL instead of ANGLE)")));
b,c,d){if(!1===binstanceofTHREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{vare,f,g,h,k=a.__lights,l=a.fog;ya=-1;Ya=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Sb.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);gc.setFromMatrix(Sb);Ob(a);sa.length=0;va.length=0;$=this.sortObjects;s(a,a,b);this.sortObjects&&(sa.sort(q),va.sort(r));n(this.renderPluginsPre,
THREE.SpotLight&&n++,sinstanceofTHREE.DirectionalLight&&!s.shadowCascade&&n++)}b=n;Jb&&d&&d.skeleton&&d.skeleton.useVertexTexture?n=1024:(n=m.getParameter(m.MAX_VERTEX_UNIFORM_VECTORS),n=Math.floor((n-20)/4),void0!==d&&dinstanceofTHREE.SkinnedMesh&&(n=Math.min(d.skeleton.bones.length,n),n<d.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.skeleton.bones.length+", this GPU supports just "+n+" (try OpenGL instead of ANGLE)")));c={precision:N,supportsVertexTextures:Mb,map:!!a.map,