|
@@ -340,7 +340,7 @@ b,c,d,e){Li(a,Lf,b,c,d,"latitudinal",e);Li(Lf,a,c,c,d,"longitudinal",e)}function
|
|
|
1);a=new ub({uniforms:{envMap:{value:null},texelSize:{value:a},inputEncoding:{value:lb[3E3]},outputEncoding:{value:lb[3E3]}},vertexShader:ih(),fragmentShader:"\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform vec2 texelSize;\n\n"+jh()+"\n\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tvec3 outputDirection = normalize(vOutputDirection);\n\tvec2 uv;\n\tuv.y = asin(clamp(outputDirection.y, -1.0, 1.0)) * RECIPROCAL_PI + 0.5;\n\tuv.x = atan(outputDirection.z, outputDirection.x) * RECIPROCAL_PI2 + 0.5;\n\tvec2 f = fract(uv / texelSize - 0.5);\n\tuv -= f * texelSize;\n\tvec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x += texelSize.x;\n\tvec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.y += texelSize.y;\n\tvec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x -= texelSize.x;\n\tvec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tvec3 tm = mix(tl, tr, f.x);\n\tvec3 bm = mix(bl, br, f.x);\n\tgl_FragColor.rgb = mix(tm, bm, f.y);\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t",
|
|
|
blending:0,depthTest:!1,depthWrite:!1});a.type="EquirectangularToCubeUV";return a}function Oi(){var a=new ub({uniforms:{envMap:{value:null},inputEncoding:{value:lb[3E3]},outputEncoding:{value:lb[3E3]}},vertexShader:ih(),fragmentShader:"\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform samplerCube envMap;\n\n"+jh()+"\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb = envMapTexelToLinear(textureCube(envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ))).rgb;\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t",
|
|
|
blending:0,depthTest:!1,depthWrite:!1});a.type="CubemapToCubeUV";return a}function ih(){return"\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.x *= -1.0;\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.y *= -1.0;\n\t} else if (face == 5.0) {\n\t\tdirection.xz *= -1.0;\n\t}\n\treturn direction;\n}\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t"}
|
|
|
-function jh(){return"\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include <encodings_pars_fragment>\n\nvec4 inputTexelToLinear(vec4 value){\n\t\tif(inputEncoding == 0){\n\t\t\t\treturn value;\n\t\t}else if(inputEncoding == 1){\n\t\t\t\treturn sRGBToLinear(value);\n\t\t}else if(inputEncoding == 2){\n\t\t\t\treturn RGBEToLinear(value);\n\t\t}else if(inputEncoding == 3){\n\t\t\t\treturn RGBMToLinear(value, 7.0);\n\t\t}else if(inputEncoding == 4){\n\t\t\t\treturn RGBMToLinear(value, 16.0);\n\t\t}else if(inputEncoding == 5){\n\t\t\t\treturn RGBDToLinear(value, 256.0);\n\t\t}else{\n\t\t\t\treturn GammaToLinear(value, 2.2);\n\t\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\t\tif(outputEncoding == 0){\n\t\t\t\treturn value;\n\t\t}else if(outputEncoding == 1){\n\t\t\t\treturn LinearTosRGB(value);\n\t\t}else if(outputEncoding == 2){\n\t\t\t\treturn LinearToRGBE(value);\n\t\t}else if(outputEncoding == 3){\n\t\t\t\treturn LinearToRGBM(value, 7.0);\n\t\t}else if(outputEncoding == 4){\n\t\t\t\treturn LinearToRGBM(value, 16.0);\n\t\t}else if(outputEncoding == 5){\n\t\t\t\treturn LinearToRGBD(value, 256.0);\n\t\t}else{\n\t\t\t\treturn LinearToGamma(value, 2.2);\n\t\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t"}
|
|
|
+function jh(){return"\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include <encodings_pars_fragment>\n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t"}
|
|
|
function Pi(a){console.warn("THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.");Ca.call(this,a);this.type="catmullrom";this.closed=!0}function Qi(a){console.warn("THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.");Ca.call(this,a);this.type="catmullrom"}function kh(a){console.warn("THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.");Ca.call(this,a);this.type="catmullrom"}void 0===Number.EPSILON&&(Number.EPSILON=Math.pow(2,
|
|
|
-52));void 0===Number.isInteger&&(Number.isInteger=function(a){return"number"===typeof a&&isFinite(a)&&Math.floor(a)===a});void 0===Math.sign&&(Math.sign=function(a){return 0>a?-1:0<a?1:+a});!1==="name"in Function.prototype&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}});void 0===Object.assign&&(Object.assign=function(a){if(void 0===a||null===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=
|
|
|
Object(a),c=1;c<arguments.length;c++){var d=arguments[c];if(void 0!==d&&null!==d)for(var e in d)Object.prototype.hasOwnProperty.call(d,e)&&(b[e]=d[e])}return b});Object.assign(Da.prototype,{addEventListener:function(a,b){void 0===this._listeners&&(this._listeners={});var c=this._listeners;void 0===c[a]&&(c[a]=[]);-1===c[a].indexOf(b)&&c[a].push(b)},hasEventListener:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;return void 0!==c[a]&&-1!==c[a].indexOf(b)},removeEventListener:function(a,
|
|
@@ -946,7 +946,7 @@ Object.create(Z.prototype);Ce.prototype.constructor=Ce;Ce.prototype.updateMatrix
|
|
|
C.prototype.updateMatrixWorld.call(this,a)};var yj=new n,Jf,dh;xb.prototype=Object.create(C.prototype);xb.prototype.constructor=xb;xb.prototype.setDirection=function(a){.99999<a.y?this.quaternion.set(0,0,0,1):-.99999>a.y?this.quaternion.set(1,0,0,0):(yj.set(a.z,0,-a.x).normalize(),this.quaternion.setFromAxisAngle(yj,Math.acos(a.y)))};xb.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a);void 0===c&&(c=.2*b);this.line.scale.set(1,Math.max(1E-4,a-b),1);this.line.updateMatrix();this.cone.scale.set(c,
|
|
|
b,c);this.cone.position.y=a;this.cone.updateMatrix()};xb.prototype.setColor=function(a){this.line.material.color.set(a);this.cone.material.color.set(a)};xb.prototype.copy=function(a){C.prototype.copy.call(this,a,!1);this.line.copy(a.line);this.cone.copy(a.cone);return this};xb.prototype.clone=function(){return(new this.constructor).copy(this)};Ee.prototype=Object.create(Z.prototype);Ee.prototype.constructor=Ee;var kb=Math.pow(2,8),zj=[.125,.215,.35,.446,.526,.582],Ii=5+zj.length,lb={3E3:0,3001:1,
|
|
|
3002:2,3004:3,3005:4,3006:5,3007:6},gh=new hd,Kf=function(a){var b=new Float32Array(a),c=new n(0,1,0);a=new ub({defines:{n:a},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:b},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:c},inputEncoding:{value:lb[3E3]},outputEncoding:{value:lb[3E3]}},vertexShader:ih(),fragmentShader:"\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform int samples;\nuniform float weights[n];\nuniform bool latitudinal;\nuniform float dTheta;\nuniform float mipInt;\nuniform vec3 poleAxis;\n\n"+
|
|
|
-jh()+"\n\n#define ENVMAP_TYPE_CUBE_UV\n#include <cube_uv_reflection_fragment>\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\t\tfor (int i = 0; i < n; i++) {\n\t\t\tif (i >= samples)\n\t\t\t\tbreak;\n\t\t\tfor (int dir = -1; dir < 2; dir += 2) {\n\t\t\t\tif (i == 0 && dir == 1)\n\t\t\t\t\tcontinue;\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross(poleAxis, vOutputDirection);\n\t\t\t\tif (all(equal(axis, vec3(0.0))))\n\t\t\t\t\taxis = cross(vec3(0.0, 1.0, 0.0), vOutputDirection);\n\t\t\t\taxis = normalize(axis);\n\t\t\t\tfloat theta = dTheta * float(dir * i);\n\t\t\t\tfloat cosTheta = cos(theta);\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t\t+ cross(axis, vOutputDirection) * sin(theta)\n\t\t\t\t\t\t+ axis * dot(axis, vOutputDirection) * (1.0 - cosTheta);\n\t\t\t\tgl_FragColor.rgb +=\n\t\t\t\t\t\tweights[i] * bilinearCubeUV(envMap, sampleDirection, mipInt);\n\t\t\t}\n\t\t}\n\t\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t",
|
|
|
+jh()+"\n\n#define ENVMAP_TYPE_CUBE_UV\n#include <cube_uv_reflection_fragment>\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tfor (int i = 0; i < n; i++) {\n\t\tif (i >= samples)\n\t\t\tbreak;\n\t\tfor (int dir = -1; dir < 2; dir += 2) {\n\t\t\tif (i == 0 && dir == 1)\n\t\t\t\tcontinue;\n\t\t\tvec3 axis = latitudinal ? poleAxis : cross(poleAxis, vOutputDirection);\n\t\t\tif (all(equal(axis, vec3(0.0))))\n\t\t\t\taxis = cross(vec3(0.0, 1.0, 0.0), vOutputDirection);\n\t\t\taxis = normalize(axis);\n\t\t\tfloat theta = dTheta * float(dir * i);\n\t\t\tfloat cosTheta = cos(theta);\n\t\t\t// Rodrigues' axis-angle rotation\n\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross(axis, vOutputDirection) * sin(theta)\n\t\t\t\t\t+ axis * dot(axis, vOutputDirection) * (1.0 - cosTheta);\n\t\t\tgl_FragColor.rgb +=\n\t\t\t\t\tweights[i] * bilinearCubeUV(envMap, sampleDirection, mipInt);\n\t\t}\n\t}\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t",
|
|
|
blending:0,depthTest:!1,depthWrite:!1});a.type="SphericalGaussianBlur";return a}(20),Ub=null,Vb=null,Hh=function(){for(var a=[],b=[],c=[],d=8,e=0;e<Ii;e++){var f=Math.pow(2,d);b.push(f);var g=1/f;4<e?g=zj[e-8+4-1]:0==e&&(g=0);c.push(g);g=1/(f-1);f=-g/2;g=1+g/2;var h=[f,f,g,f,g,g,f,f,g,g,f,g];f=new Float32Array(108);g=new Float32Array(72);for(var k=new Float32Array(36),m=0;6>m;m++){var n=m%3*2/3-1,p=2<m?0:-1;f.set([n,p,0,n+2/3,p,0,n+2/3,p+1,0,n,p,0,n+2/3,p+1,0,n,p+1,0],18*m);g.set(h,12*m);k.set([m,
|
|
|
m,m,m,m,m],6*m)}h=new E;h.setAttribute("position",new N(f,3));h.setAttribute("uv",new N(g,2));h.setAttribute("faceIndex",new N(k,1));a.push(h);4<d&&d--}return{_lodPlanes:a,_sizeLods:b,_sigmas:c}}(),Fe=Hh._lodPlanes,Mi=Hh._sizeLods,Mf=Hh._sigmas,Lf=null,W=null,Dc=(1+Math.sqrt(5))/2,Dd=1/Dc,Ki=[new n(1,1,1),new n(-1,1,1),new n(1,1,-1),new n(-1,1,-1),new n(0,Dc,Dd),new n(0,Dc,-Dd),new n(Dd,0,Dc),new n(-Dd,0,Dc),new n(Dc,Dd,0),new n(-Dc,Dd,0)];eh.prototype={constructor:eh,fromScene:function(a,b,c,d){void 0===
|
|
|
b&&(b=0);void 0===c&&(c=.1);void 0===d&&(d=100);var e=Ei();c=new pa(90,1,c,d);d=[1,1,1,1,-1,1];var f=[1,1,-1,-1,-1,1],g=W.outputEncoding,h=W.toneMapping,k=W.toneMappingExposure,m=W.getClearColor(),n=W.getClearAlpha();W.toneMapping=1;W.toneMappingExposure=1;W.outputEncoding=3E3;a.scale.z*=-1;var p=a.background;if(p&&p.isColor){p.convertSRGBToLinear();var u=Math.min(Math.max(Math.ceil(Math.log2(Math.max(p.r,p.g,p.b))),-128),127);p=p.multiplyScalar(Math.pow(2,-u));W.setClearColor(p,(u+128)/255);a.background=
|