|
@@ -85,21 +85,21 @@ q);else if(""!==a)console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",a);e
|
|
|
a}return n};this.destroy=function(){d.deleteProgram(r);this.program=void 0};this.name=c.shaderName;this.id=mk++;this.cacheKey=b;this.usedTimes=1;this.program=r;this.vertexShader=f;this.fragmentShader=g;return this}function nk(a,b,c){function d(a){if(a)a.isTexture?b=a.encoding:a.isWebGLRenderTarget&&(console.warn("THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead."),b=a.texture.encoding);else var b=3E3;return b}var e=[],f=c.isWebGL2,
|
|
|
g=c.logarithmicDepthBuffer,h=c.floatVertexTextures,l=c.maxVertexUniforms,m=c.vertexTextures,t=c.precision,p={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"},
|
|
|
k="precision isWebGL2 supportsVertexTextures outputEncoding instancing map mapEncoding matcap matcapEncoding envMap envMapMode envMapEncoding envMapCubeUV lightMap lightMapEncoding aoMap emissiveMap emissiveMapEncoding bumpMap normalMap objectSpaceNormalMap tangentSpaceNormalMap clearcoatMap clearcoatRoughnessMap clearcoatNormalMap displacementMap specularMap roughnessMap metalnessMap gradientMap alphaMap combine vertexColors vertexTangents vertexUvs uvsVertexOnly fog useFog fogExp2 flatShading sizeAttenuation logarithmicDepthBuffer skinning maxBones useVertexTexture morphTargets morphNormals maxMorphTargets maxMorphNormals premultipliedAlpha numDirLights numPointLights numSpotLights numHemiLights numRectAreaLights numDirLightShadows numPointLightShadows numSpotLightShadows shadowMapEnabled shadowMapType toneMapping physicallyCorrectLights alphaTest doubleSided flipSided numClippingPlanes numClipIntersection depthPacking dithering sheen".split(" ");
|
|
|
-this.getParameters=function(e,k,v,n,z,x,Ba){var q=n.fog;n=e.isMeshStandardMaterial?n.environment:null;n=e.envMap||n;var r=p[e.type];if(Ba.isSkinnedMesh){var u=Ba.skeleton.bones;if(h)u=1024;else{var A=Math.min(Math.floor((l-20)/4),u.length);A<u.length?(console.warn("THREE.WebGLRenderer: Skeleton has "+u.length+" bones. This GPU supports "+A+"."),u=0):u=A}}else u=0;null!==e.precision&&(t=c.getMaxPrecision(e.precision),t!==e.precision&&console.warn("THREE.WebGLProgram.getParameters:",e.precision,"not supported, using",
|
|
|
+return{getParameters:function(e,k,v,n,z,x,Ba){var q=n.fog;n=e.isMeshStandardMaterial?n.environment:null;n=e.envMap||n;var r=p[e.type];if(Ba.isSkinnedMesh){var u=Ba.skeleton.bones;if(h)u=1024;else{var A=Math.min(Math.floor((l-20)/4),u.length);A<u.length?(console.warn("THREE.WebGLRenderer: Skeleton has "+u.length+" bones. This GPU supports "+A+"."),u=0):u=A}}else u=0;null!==e.precision&&(t=c.getMaxPrecision(e.precision),t!==e.precision&&console.warn("THREE.WebGLProgram.getParameters:",e.precision,"not supported, using",
|
|
|
t,"instead."));r?(A=fb[r],A={name:e.type,uniforms:Qh.clone(A.uniforms),vertexShader:A.vertexShader,fragmentShader:A.fragmentShader}):A={name:e.type,uniforms:e.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader};e.onBeforeCompile(A,a);var w=a.getRenderTarget();return{isWebGL2:f,shaderID:r,shaderName:A.name,uniforms:A.uniforms,vertexShader:A.vertexShader,fragmentShader:A.fragmentShader,defines:e.defines,isRawShaderMaterial:e.isRawShaderMaterial,isShaderMaterial:e.isShaderMaterial,
|
|
|
precision:t,instancing:!0===Ba.isInstancedMesh,supportsVertexTextures:m,outputEncoding:null!==w?d(w.texture):a.outputEncoding,map:!!e.map,mapEncoding:d(e.map),matcap:!!e.matcap,matcapEncoding:d(e.matcap),envMap:!!n,envMapMode:n&&n.mapping,envMapEncoding:d(n),envMapCubeUV:!!n&&(306===n.mapping||307===n.mapping),lightMap:!!e.lightMap,lightMapEncoding:d(e.lightMap),aoMap:!!e.aoMap,emissiveMap:!!e.emissiveMap,emissiveMapEncoding:d(e.emissiveMap),bumpMap:!!e.bumpMap,normalMap:!!e.normalMap,objectSpaceNormalMap:1===
|
|
|
e.normalMapType,tangentSpaceNormalMap:0===e.normalMapType,clearcoatMap:!!e.clearcoatMap,clearcoatRoughnessMap:!!e.clearcoatRoughnessMap,clearcoatNormalMap:!!e.clearcoatNormalMap,displacementMap:!!e.displacementMap,roughnessMap:!!e.roughnessMap,metalnessMap:!!e.metalnessMap,specularMap:!!e.specularMap,alphaMap:!!e.alphaMap,gradientMap:!!e.gradientMap,sheen:!!e.sheen,combine:e.combine,vertexTangents:e.normalMap&&e.vertexTangents,vertexColors:e.vertexColors,vertexUvs:!!e.map||!!e.bumpMap||!!e.normalMap||
|
|
|
!!e.specularMap||!!e.alphaMap||!!e.emissiveMap||!!e.roughnessMap||!!e.metalnessMap||!!e.clearcoatMap||!!e.clearcoatRoughnessMap||!!e.clearcoatNormalMap||!!e.displacementMap,uvsVertexOnly:!(e.map||e.bumpMap||e.normalMap||e.specularMap||e.alphaMap||e.emissiveMap||e.roughnessMap||e.metalnessMap||e.clearcoatNormalMap)&&!!e.displacementMap,fog:!!q,useFog:e.fog,fogExp2:q&&q.isFogExp2,flatShading:e.flatShading,sizeAttenuation:e.sizeAttenuation,logarithmicDepthBuffer:g,skinning:e.skinning&&0<u,maxBones:u,
|
|
|
useVertexTexture:h,morphTargets:e.morphTargets,morphNormals:e.morphNormals,maxMorphTargets:a.maxMorphTargets,maxMorphNormals:a.maxMorphNormals,numDirLights:k.directional.length,numPointLights:k.point.length,numSpotLights:k.spot.length,numRectAreaLights:k.rectArea.length,numHemiLights:k.hemi.length,numDirLightShadows:k.directionalShadowMap.length,numPointLightShadows:k.pointShadowMap.length,numSpotLightShadows:k.spotShadowMap.length,numClippingPlanes:z,numClipIntersection:x,dithering:e.dithering,shadowMapEnabled:a.shadowMap.enabled&&
|
|
|
0<v.length,shadowMapType:a.shadowMap.type,toneMapping:e.toneMapped?a.toneMapping:0,physicallyCorrectLights:a.physicallyCorrectLights,premultipliedAlpha:e.premultipliedAlpha,alphaTest:e.alphaTest,doubleSided:2===e.side,flipSided:1===e.side,depthPacking:void 0!==e.depthPacking?e.depthPacking:!1,index0AttributeName:e.index0AttributeName,extensionDerivatives:e.extensions&&e.extensions.derivatives,extensionFragDepth:e.extensions&&e.extensions.fragDepth,extensionDrawBuffers:e.extensions&&e.extensions.drawBuffers,
|
|
|
-extensionShaderTextureLOD:e.extensions&&e.extensions.shaderTextureLOD,rendererExtensionFragDepth:f||null!==b.get("EXT_frag_depth"),rendererExtensionDrawBuffers:f||null!==b.get("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:f||null!==b.get("EXT_shader_texture_lod"),onBeforeCompile:e.onBeforeCompile}};this.getProgramCacheKey=function(b){var c=[];b.shaderID?c.push(b.shaderID):(c.push(b.fragmentShader),c.push(b.vertexShader));if(void 0!==b.defines)for(var d in b.defines)c.push(d),c.push(b.defines[d]);
|
|
|
-if(void 0===b.isRawShaderMaterial){for(d=0;d<k.length;d++)c.push(b[k[d]]);c.push(a.outputEncoding);c.push(a.gammaFactor)}c.push(b.onBeforeCompile.toString());return c.join()};this.acquireProgram=function(b,c){for(var d,f=0,g=e.length;f<g;f++){var h=e[f];if(h.cacheKey===c){d=h;++d.usedTimes;break}}void 0===d&&(d=new lk(a,c,b),e.push(d));return d};this.releaseProgram=function(a){if(0===--a.usedTimes){var b=e.indexOf(a);e[b]=e[e.length-1];e.pop();a.destroy()}};this.programs=e}function ok(){var a=new WeakMap;
|
|
|
-return{get:function(b){var c=a.get(b);void 0===c&&(c={},a.set(b,c));return c},remove:function(b){a.delete(b)},update:function(b,c,d){a.get(b)[c]=d},dispose:function(){a=new WeakMap}}}function pk(a,b){return a.groupOrder!==b.groupOrder?a.groupOrder-b.groupOrder:a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.program!==b.program?a.program.id-b.program.id:a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function qk(a,b){return a.groupOrder!==b.groupOrder?
|
|
|
-a.groupOrder-b.groupOrder:a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function Rh(){function a(a,d,e,m,t,p){var g=b[c];void 0===g?(g={id:a.id,object:a,geometry:d,material:e,program:e.program||f,groupOrder:m,renderOrder:a.renderOrder,z:t,group:p},b[c]=g):(g.id=a.id,g.object=a,g.geometry=d,g.material=e,g.program=e.program||f,g.groupOrder=m,g.renderOrder=a.renderOrder,g.z=t,g.group=p);c++;return g}var b=[],c=0,d=[],e=[],f={id:-1};return{opaque:d,transparent:e,
|
|
|
-init:function(){c=0;d.length=0;e.length=0},push:function(b,c,f,m,t,p){b=a(b,c,f,m,t,p);(!0===f.transparent?e:d).push(b)},unshift:function(b,c,f,m,t,p){b=a(b,c,f,m,t,p);(!0===f.transparent?e:d).unshift(b)},finish:function(){for(var a=c,d=b.length;a<d;a++){var e=b[a];if(null===e.id)break;e.id=null;e.object=null;e.geometry=null;e.material=null;e.program=null;e.group=null}},sort:function(a,b){1<d.length&&d.sort(a||pk);1<e.length&&e.sort(b||qk)}}}function rk(){function a(c){c=c.target;c.removeEventListener("dispose",
|
|
|
-a);b.delete(c)}var b=new WeakMap;return{get:function(c,d){var e=b.get(c);if(void 0===e){var f=new Rh;b.set(c,new WeakMap);b.get(c).set(d,f);c.addEventListener("dispose",a)}else f=e.get(d),void 0===f&&(f=new Rh,e.set(d,f));return f},dispose:function(){b=new WeakMap}}}function sk(){var a={};return{get:function(b){if(void 0!==a[b.id])return a[b.id];switch(b.type){case "DirectionalLight":var c={direction:new n,color:new D};break;case "SpotLight":c={position:new n,direction:new n,color:new D,distance:0,
|
|
|
-coneCos:0,penumbraCos:0,decay:0};break;case "PointLight":c={position:new n,color:new D,distance:0,decay:0};break;case "HemisphereLight":c={direction:new n,skyColor:new D,groundColor:new D};break;case "RectAreaLight":c={color:new D,position:new n,halfWidth:new n,halfHeight:new n}}return a[b.id]=c}}}function tk(){var a={};return{get:function(b){if(void 0!==a[b.id])return a[b.id];switch(b.type){case "DirectionalLight":var c={shadowBias:0,shadowRadius:1,shadowMapSize:new w};break;case "SpotLight":c={shadowBias:0,
|
|
|
-shadowRadius:1,shadowMapSize:new w};break;case "PointLight":c={shadowBias:0,shadowRadius:1,shadowMapSize:new w,shadowCameraNear:1,shadowCameraFar:1E3}}return a[b.id]=c}}}function uk(a,b){return(b.castShadow?1:0)-(a.castShadow?1:0)}function vk(){for(var a=new sk,b=tk(),c={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],
|
|
|
+extensionShaderTextureLOD:e.extensions&&e.extensions.shaderTextureLOD,rendererExtensionFragDepth:f||null!==b.get("EXT_frag_depth"),rendererExtensionDrawBuffers:f||null!==b.get("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:f||null!==b.get("EXT_shader_texture_lod"),onBeforeCompile:e.onBeforeCompile}},getProgramCacheKey:function(b){var c=[];b.shaderID?c.push(b.shaderID):(c.push(b.fragmentShader),c.push(b.vertexShader));if(void 0!==b.defines)for(var d in b.defines)c.push(d),c.push(b.defines[d]);
|
|
|
+if(void 0===b.isRawShaderMaterial){for(d=0;d<k.length;d++)c.push(b[k[d]]);c.push(a.outputEncoding);c.push(a.gammaFactor)}c.push(b.onBeforeCompile.toString());return c.join()},acquireProgram:function(b,c){for(var d,f=0,g=e.length;f<g;f++){var h=e[f];if(h.cacheKey===c){d=h;++d.usedTimes;break}}void 0===d&&(d=new lk(a,c,b),e.push(d));return d},releaseProgram:function(a){if(0===--a.usedTimes){var b=e.indexOf(a);e[b]=e[e.length-1];e.pop();a.destroy()}},programs:e}}function ok(){var a=new WeakMap;return{get:function(b){var c=
|
|
|
+a.get(b);void 0===c&&(c={},a.set(b,c));return c},remove:function(b){a.delete(b)},update:function(b,c,d){a.get(b)[c]=d},dispose:function(){a=new WeakMap}}}function pk(a,b){return a.groupOrder!==b.groupOrder?a.groupOrder-b.groupOrder:a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.program!==b.program?a.program.id-b.program.id:a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function qk(a,b){return a.groupOrder!==b.groupOrder?a.groupOrder-b.groupOrder:
|
|
|
+a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function Rh(){function a(a,d,e,m,t,p){var g=b[c];void 0===g?(g={id:a.id,object:a,geometry:d,material:e,program:e.program||f,groupOrder:m,renderOrder:a.renderOrder,z:t,group:p},b[c]=g):(g.id=a.id,g.object=a,g.geometry=d,g.material=e,g.program=e.program||f,g.groupOrder=m,g.renderOrder=a.renderOrder,g.z=t,g.group=p);c++;return g}var b=[],c=0,d=[],e=[],f={id:-1};return{opaque:d,transparent:e,init:function(){c=0;d.length=
|
|
|
+0;e.length=0},push:function(b,c,f,m,t,p){b=a(b,c,f,m,t,p);(!0===f.transparent?e:d).push(b)},unshift:function(b,c,f,m,t,p){b=a(b,c,f,m,t,p);(!0===f.transparent?e:d).unshift(b)},finish:function(){for(var a=c,d=b.length;a<d;a++){var e=b[a];if(null===e.id)break;e.id=null;e.object=null;e.geometry=null;e.material=null;e.program=null;e.group=null}},sort:function(a,b){1<d.length&&d.sort(a||pk);1<e.length&&e.sort(b||qk)}}}function rk(){function a(c){c=c.target;c.removeEventListener("dispose",a);b.delete(c)}
|
|
|
+var b=new WeakMap;return{get:function(c,d){var e=b.get(c);if(void 0===e){var f=new Rh;b.set(c,new WeakMap);b.get(c).set(d,f);c.addEventListener("dispose",a)}else f=e.get(d),void 0===f&&(f=new Rh,e.set(d,f));return f},dispose:function(){b=new WeakMap}}}function sk(){var a={};return{get:function(b){if(void 0!==a[b.id])return a[b.id];switch(b.type){case "DirectionalLight":var c={direction:new n,color:new D};break;case "SpotLight":c={position:new n,direction:new n,color:new D,distance:0,coneCos:0,penumbraCos:0,
|
|
|
+decay:0};break;case "PointLight":c={position:new n,color:new D,distance:0,decay:0};break;case "HemisphereLight":c={direction:new n,skyColor:new D,groundColor:new D};break;case "RectAreaLight":c={color:new D,position:new n,halfWidth:new n,halfHeight:new n}}return a[b.id]=c}}}function tk(){var a={};return{get:function(b){if(void 0!==a[b.id])return a[b.id];switch(b.type){case "DirectionalLight":var c={shadowBias:0,shadowRadius:1,shadowMapSize:new w};break;case "SpotLight":c={shadowBias:0,shadowRadius:1,
|
|
|
+shadowMapSize:new w};break;case "PointLight":c={shadowBias:0,shadowRadius:1,shadowMapSize:new w,shadowCameraNear:1,shadowCameraFar:1E3}}return a[b.id]=c}}}function uk(a,b){return(b.castShadow?1:0)-(a.castShadow?1:0)}function vk(){for(var a=new sk,b=tk(),c={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],
|
|
|
directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]},d=0;9>d;d++)c.probe.push(new n);var e=new n,f=new M,g=new M;return{setup:function(d,l,m){for(var h=l=0,p=0,k=0;9>k;k++)c.probe[k].set(0,0,0);var q=k=0,r=0,u=0,n=0,z=0,x=0,Ba=0;m=m.matrixWorldInverse;d.sort(uk);for(var ma=0,N=d.length;ma<N;ma++){var C=d[ma],P=C.color,w=C.intensity,O=C.distance,fa=C.shadow&&C.shadow.map?C.shadow.map.texture:
|
|
|
null;if(C.isAmbientLight)l+=P.r*w,h+=P.g*w,p+=P.b*w;else if(C.isLightProbe)for(fa=0;9>fa;fa++)c.probe[fa].addScaledVector(C.sh.coefficients[fa],w);else if(C.isDirectionalLight){w=a.get(C);w.color.copy(C.color).multiplyScalar(C.intensity);w.direction.setFromMatrixPosition(C.matrixWorld);e.setFromMatrixPosition(C.target.matrixWorld);w.direction.sub(e);w.direction.transformDirection(m);if(C.castShadow){var ia=C.shadow;P=b.get(C);P.shadowBias=ia.bias;P.shadowRadius=ia.radius;P.shadowMapSize=ia.mapSize;
|
|
|
c.directionalShadow[k]=P;c.directionalShadowMap[k]=fa;c.directionalShadowMatrix[k]=C.shadow.matrix;z++}c.directional[k]=w;k++}else C.isSpotLight?(ia=a.get(C),ia.position.setFromMatrixPosition(C.matrixWorld),ia.position.applyMatrix4(m),ia.color.copy(P).multiplyScalar(w),ia.distance=O,ia.direction.setFromMatrixPosition(C.matrixWorld),e.setFromMatrixPosition(C.target.matrixWorld),ia.direction.sub(e),ia.direction.transformDirection(m),ia.coneCos=Math.cos(C.angle),ia.penumbraCos=Math.cos(C.angle*(1-C.penumbra)),
|