|
@@ -6,11 +6,18 @@ function(a){window.clearTimeout(a)}})();THREE.CullFaceNone=0;THREE.CullFaceBack=
|
|
|
THREE.CustomBlending=5;THREE.AddEquation=100;THREE.SubtractEquation=101;THREE.ReverseSubtractEquation=102;THREE.ZeroFactor=200;THREE.OneFactor=201;THREE.SrcColorFactor=202;THREE.OneMinusSrcColorFactor=203;THREE.SrcAlphaFactor=204;THREE.OneMinusSrcAlphaFactor=205;THREE.DstAlphaFactor=206;THREE.OneMinusDstAlphaFactor=207;THREE.DstColorFactor=208;THREE.OneMinusDstColorFactor=209;THREE.SrcAlphaSaturateFactor=210;THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.AddOperation=2;THREE.UVMapping=function(){};
|
|
|
THREE.CubeReflectionMapping=function(){};THREE.CubeRefractionMapping=function(){};THREE.SphericalReflectionMapping=function(){};THREE.SphericalRefractionMapping=function(){};THREE.RepeatWrapping=1E3;THREE.ClampToEdgeWrapping=1001;THREE.MirroredRepeatWrapping=1002;THREE.NearestFilter=1003;THREE.NearestMipMapNearestFilter=1004;THREE.NearestMipMapLinearFilter=1005;THREE.LinearFilter=1006;THREE.LinearMipMapNearestFilter=1007;THREE.LinearMipMapLinearFilter=1008;THREE.UnsignedByteType=1009;
|
|
|
THREE.ByteType=1010;THREE.ShortType=1011;THREE.UnsignedShortType=1012;THREE.IntType=1013;THREE.UnsignedIntType=1014;THREE.FloatType=1015;THREE.UnsignedShort4444Type=1016;THREE.UnsignedShort5551Type=1017;THREE.UnsignedShort565Type=1018;THREE.AlphaFormat=1019;THREE.RGBFormat=1020;THREE.RGBAFormat=1021;THREE.LuminanceFormat=1022;THREE.LuminanceAlphaFormat=1023;THREE.RGB_S3TC_DXT1_Format=2001;THREE.RGBA_S3TC_DXT1_Format=2002;THREE.RGBA_S3TC_DXT3_Format=2003;THREE.RGBA_S3TC_DXT5_Format=2004;THREE.Clock=function(a){this.autoStart=void 0!==a?a:!0;this.elapsedTime=this.oldTime=this.startTime=0;this.running=!1};THREE.Clock.prototype.start=function(){this.oldTime=this.startTime=Date.now();this.running=!0};THREE.Clock.prototype.stop=function(){this.getElapsedTime();this.running=!1};THREE.Clock.prototype.getElapsedTime=function(){this.getDelta();return this.elapsedTime};
|
|
|
-THREE.Clock.prototype.getDelta=function(){var a=0;this.autoStart&&!this.running&&this.start();if(this.running){var b=Date.now(),a=0.001*(b-this.oldTime);this.oldTime=b;this.elapsedTime+=a}return a};THREE.Color=function(a){void 0!==a&&this.setHex(a);return this};
|
|
|
+THREE.Clock.prototype.getDelta=function(){var a=0;this.autoStart&&!this.running&&this.start();if(this.running){var b=Date.now(),a=0.001*(b-this.oldTime);this.oldTime=b;this.elapsedTime+=a}return a};THREE.Color=function(a){void 0!==a&&this.set(a);return this};
|
|
|
THREE.Color.prototype={constructor:THREE.Color,r:1,g:1,b:1,copy:function(a){this.r=a.r;this.g=a.g;this.b=a.b;return this},copyGammaToLinear:function(a){this.r=a.r*a.r;this.g=a.g*a.g;this.b=a.b*a.b;return this},copyLinearToGamma:function(a){this.r=Math.sqrt(a.r);this.g=Math.sqrt(a.g);this.b=Math.sqrt(a.b);return this},convertGammaToLinear:function(){var a=this.r,b=this.g,c=this.b;this.r=a*a;this.g=b*b;this.b=c*c;return this},convertLinearToGamma:function(){this.r=Math.sqrt(this.r);this.g=Math.sqrt(this.g);
|
|
|
-this.b=Math.sqrt(this.b);return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSV:function(a,b,c){var d,e,f;0===c?this.r=this.g=this.b=0:(d=Math.floor(6*a),e=6*a-d,a=c*(1-b),f=c*(1-b*e),b=c*(1-b*(1-e)),0===d?(this.r=c,this.g=b,this.b=a):1===d?(this.r=f,this.g=c,this.b=a):2===d?(this.r=a,this.g=c,this.b=b):3===d?(this.r=a,this.g=f,this.b=c):4===d?(this.r=b,this.g=a,this.b=c):5===d&&(this.r=c,this.g=a,this.b=f));return this},getHex:function(){return 255*this.r<<16^255*this.g<<
|
|
|
-8^255*this.b<<0},setHex:function(a){a=Math.floor(a);this.r=(a>>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getContextStyle:function(){return"rgb("+(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"},setContextStyle:function(a){a=/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/i.exec(a);this.r=parseInt(a[1],10)/255;this.g=parseInt(a[2],10)/255;this.b=parseInt(a[3],10)/255;return this},getHSV:function(a){var b=
|
|
|
-this.r,c=this.g,d=this.b,e=Math.max(Math.max(b,c),d),f=Math.min(Math.min(b,c),d);if(f===e)f=b=0;else{var g=e-f,f=g/e,b=(b===e?(c-d)/g:c===e?2+(d-b)/g:4+(b-c)/g)/6;0>b&&(b+=1);1<b&&(b-=1)}void 0===a&&(a={h:0,s:0,v:0});a.h=b;a.s=f;a.v=e;return a},lerpSelf:function(a,b){this.r+=(a.r-this.r)*b;this.g+=(a.g-this.g)*b;this.b+=(a.b-this.b)*b;return this},clone:function(){return(new THREE.Color).setRGB(this.r,this.g,this.b)}};THREE.Vector2=function(a,b){this.x=a||0;this.y=b||0};
|
|
|
+this.b=Math.sqrt(this.b);return this},set:function(a){switch(typeof a){case "number":this.setHex(a);break;case "string":this.setStyle(a)}},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSV:function(a,b,c){var d,e,f;0===c?this.r=this.g=this.b=0:(d=Math.floor(6*a),e=6*a-d,a=c*(1-b),f=c*(1-b*e),b=c*(1-b*(1-e)),0===d?(this.r=c,this.g=b,this.b=a):1===d?(this.r=f,this.g=c,this.b=a):2===d?(this.r=a,this.g=c,this.b=b):3===d?(this.r=a,this.g=f,this.b=c):4===d?(this.r=b,this.g=a,this.b=
|
|
|
+c):5===d&&(this.r=c,this.g=a,this.b=f));return this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},setHex:function(a){a=Math.floor(a);this.r=(a>>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getStyle:function(){return"rgb("+(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"},setStyle:function(a){if(/^rgb\((\d+),(\d+),(\d+)\)$/i.test(a))return a=/^rgb\((\d+),(\d+),(\d+)\)$/i.exec(a),
|
|
|
+this.r=parseInt(a[1],10)/255,this.g=parseInt(a[2],10)/255,this.b=parseInt(a[3],10)/255,this;if(/^(\w+)$/i.test(a))return this.setHex(THREE.ColorKeywords[a]),this},getHSV:function(a){var b=this.r,c=this.g,d=this.b,e=Math.max(Math.max(b,c),d),f=Math.min(Math.min(b,c),d);if(f===e)f=b=0;else{var g=e-f,f=g/e,b=(b===e?(c-d)/g:c===e?2+(d-b)/g:4+(b-c)/g)/6;0>b&&(b+=1);1<b&&(b-=1)}void 0===a&&(a={h:0,s:0,v:0});a.h=b;a.s=f;a.v=e;return a},lerpSelf:function(a,b){this.r+=(a.r-this.r)*b;this.g+=(a.g-this.g)*b;
|
|
|
+this.b+=(a.b-this.b)*b;return this},clone:function(){return(new THREE.Color).setRGB(this.r,this.g,this.b)}};
|
|
|
+THREE.ColorKeywords={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,
|
|
|
+darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,
|
|
|
+grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,
|
|
|
+lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,
|
|
|
+palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,
|
|
|
+tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};THREE.Vector2=function(a,b){this.x=a||0;this.y=b||0};
|
|
|
THREE.Vector2.prototype={constructor:THREE.Vector2,set:function(a,b){this.x=a;this.y=b;return this},copy:function(a){this.x=a.x;this.y=a.y;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},divideScalar:function(a){a?(this.x/=a,this.y/=a):this.set(0,
|
|
|
0);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.lengthSq())},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,a=this.y-a.y;return b*b+a*a},setLength:function(a){return this.normalize().multiplyScalar(a)},lerpSelf:function(a,
|
|
|
b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;return this},equals:function(a){return a.x===this.x&&a.y===this.y},clone:function(){return new THREE.Vector2(this.x,this.y)}};THREE.Vector3=function(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0};
|
|
@@ -178,7 +185,7 @@ s.parameters.normalScale&&ba.uNormalScale.value.set(s.parameters.normalScale[0],
|
|
|
!0),s.parameters.displacementMap&&(ba.tDisplacement.value=M.textures[s.parameters.displacementMap],ba.enableDisplacement.value=!0,ba.uDisplacementBias.value=s.parameters.displacementBias,ba.uDisplacementScale.value=s.parameters.displacementScale),ba.uDiffuseColor.value.setHex(m),ba.uSpecularColor.value.setHex(C),ba.uAmbientColor.value.setHex(ga),ba.uShininess.value=q,s.parameters.opacity&&(ba.uOpacity.value=s.parameters.opacity),B=new THREE.ShaderMaterial({fragmentShader:r.fragmentShader,vertexShader:r.vertexShader,
|
|
|
uniforms:ba,lights:!0,fog:!0})):B=new THREE[s.type](s.parameters);M.materials[p]=B}for(p in S.materials)if(s=S.materials[p],s.parameters.materials){v=[];for(C=0;C<s.parameters.materials.length;C++)v.push(M.materials[s.parameters.materials[C]]);M.materials[p].materials=v}e();M.cameras&&S.defaults.camera&&(M.currentCamera=M.cameras[S.defaults.camera]);M.fogs&&S.defaults.fog&&(M.scene.fog=M.fogs[S.defaults.fog]);x=S.defaults.bgcolor;M.bgColor=new THREE.Color;M.bgColor.setRGB(x[0],x[1],x[2]);M.bgColorAlpha=
|
|
|
S.defaults.bgalpha;l.callbackSync(M);j()};THREE.TextureLoader=function(){THREE.EventTarget.call(this);this.crossOrigin=null};THREE.TextureLoader.prototype={constructor:THREE.TextureLoader,load:function(a){var b=this,c=new Image;c.addEventListener("load",function(){var a=new THREE.Texture(c);a.needsUpdate=!0;b.dispatchEvent({type:"load",content:a})},!1);c.addEventListener("error",function(){b.dispatchEvent({type:"error",message:"Couldn't load URL ["+a+"]"})},!1);b.crossOrigin&&(c.crossOrigin=b.crossOrigin);c.src=a}};THREE.Material=function(){THREE.MaterialLibrary.push(this);this.id=THREE.MaterialIdCount++;this.name="";this.side=THREE.FrontSide;this.opacity=1;this.transparent=!1;this.blending=THREE.NormalBlending;this.blendSrc=THREE.SrcAlphaFactor;this.blendDst=THREE.OneMinusSrcAlphaFactor;this.blendEquation=THREE.AddEquation;this.depthWrite=this.depthTest=!0;this.polygonOffset=!1;this.alphaTest=this.polygonOffsetUnits=this.polygonOffsetFactor=0;this.overdraw=!1;this.needsUpdate=this.visible=!0};
|
|
|
-THREE.Material.prototype.setValues=function(a){if(void 0!==a)for(var b in a){var c=a[b];if(void 0===c)console.warn("THREE.Material: '"+b+"' parameter is undefined.");else if(b in this){var d=this[b];d instanceof THREE.Color&&c instanceof THREE.Color?d.copy(c):d instanceof THREE.Color&&"number"===typeof c?d.setHex(c):d instanceof THREE.Vector3&&c instanceof THREE.Vector3?d.copy(c):this[b]=c}}};
|
|
|
+THREE.Material.prototype.setValues=function(a){if(void 0!==a)for(var b in a){var c=a[b];if(void 0===c)console.warn("THREE.Material: '"+b+"' parameter is undefined.");else if(b in this){var d=this[b];d instanceof THREE.Color&&c instanceof THREE.Color?d.copy(c):d instanceof THREE.Color?d.set(c):d instanceof THREE.Vector3&&c instanceof THREE.Vector3?d.copy(c):this[b]=c}}};
|
|
|
THREE.Material.prototype.clone=function(a){void 0===a&&(a=new THREE.Material);a.name=this.name;a.side=this.side;a.opacity=this.opacity;a.transparent=this.transparent;a.blending=this.blending;a.blendSrc=this.blendSrc;a.blendDst=this.blendDst;a.blendEquation=this.blendEquation;a.depthTest=this.depthTest;a.depthWrite=this.depthWrite;a.polygonOffset=this.polygonOffset;a.polygonOffsetFactor=this.polygonOffsetFactor;a.polygonOffsetUnits=this.polygonOffsetUnits;a.alphaTest=this.alphaTest;a.overdraw=this.overdraw;
|
|
|
a.visible=this.visible;return a};THREE.Material.prototype.deallocate=function(){var a=THREE.MaterialLibrary.indexOf(this);-1!==a&&THREE.MaterialLibrary.splice(a,1)};THREE.MaterialIdCount=0;THREE.MaterialLibrary=[];THREE.LineBasicMaterial=function(a){THREE.Material.call(this);this.color=new THREE.Color(16777215);this.linewidth=1;this.linejoin=this.linecap="round";this.vertexColors=!1;this.fog=!0;this.setValues(a)};THREE.LineBasicMaterial.prototype=Object.create(THREE.Material.prototype);
|
|
|
THREE.LineBasicMaterial.prototype.clone=function(){var a=new THREE.LineBasicMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.linewidth=this.linewidth;a.linecap=this.linecap;a.linejoin=this.linejoin;a.vertexColors=this.vertexColors;a.fog=this.fog;return a};THREE.LineDashedMaterial=function(a){THREE.Material.call(this);this.color=new THREE.Color(16777215);this.scale=this.linewidth=1;this.dashSize=3;this.gapSize=1;this.vertexColors=!1;this.fog=!0;this.setValues(a)};THREE.LineDashedMaterial.prototype=Object.create(THREE.Material.prototype);
|
|
@@ -231,24 +238,24 @@ ca.r=ca.r*da.r+$.r,ca.g=ca.g*da.g+$.g,ca.b=ca.b*da.b+$.b,ia.r=ia.r*da.r+$.r,ia.g
|
|
|
j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(j.color)):j instanceof THREE.MeshBasicMaterial||j instanceof THREE.MeshLambertMaterial||j instanceof THREE.MeshPhongMaterial?null!==j.map?j.map.mapping instanceof THREE.UVMapping&&(Sa=i.uvs[0],z(I,K,Q,N,R,T,Sa[g].u,Sa[g].v,Sa[h].u,Sa[h].v,Sa[k].u,Sa[k].v,j.map)):null!==j.envMap?j.envMap.mapping instanceof THREE.SphericalReflectionMapping&&(a=l.matrixWorldInverse,Ba.copy(i.vertexNormalsWorld[g]),gb=0.5*(Ba.x*a.elements[0]+Ba.y*a.elements[4]+
|
|
|
Ba.z*a.elements[8])+0.5,vb=0.5*(Ba.x*a.elements[1]+Ba.y*a.elements[5]+Ba.z*a.elements[9])+0.5,Ba.copy(i.vertexNormalsWorld[h]),rb=0.5*(Ba.x*a.elements[0]+Ba.y*a.elements[4]+Ba.z*a.elements[8])+0.5,nb=0.5*(Ba.x*a.elements[1]+Ba.y*a.elements[5]+Ba.z*a.elements[9])+0.5,Ba.copy(i.vertexNormalsWorld[k]),mb=0.5*(Ba.x*a.elements[0]+Ba.y*a.elements[4]+Ba.z*a.elements[8])+0.5,ac=0.5*(Ba.x*a.elements[1]+Ba.y*a.elements[5]+Ba.z*a.elements[9])+0.5,z(I,K,Q,N,R,T,gb,vb,rb,nb,mb,ac,j.envMap)):(H.copy(j.color),j.vertexColors===
|
|
|
THREE.FaceColors&&(H.r*=i.color.r,H.g*=i.color.g,H.b*=i.color.b),!0===j.wireframe?t(H,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(H)):j instanceof THREE.MeshDepthMaterial?(Ma=l.near,za=l.far,ca.r=ca.g=ca.b=1-Ya(a.positionScreen.z,Ma,za),ia.r=ia.g=ia.b=1-Ya(d.positionScreen.z,Ma,za),Z.r=Z.g=Z.b=1-Ya(e.positionScreen.z,Ma,za),ja.r=0.5*(ia.r+Z.r),ja.g=0.5*(ia.g+Z.g),ja.b=0.5*(ia.b+Z.b),qa=F(ca,ia,Z,ja),E(I,K,Q,N,R,T,0,0,1,0,0,1,qa)):j instanceof THREE.MeshNormalMaterial&&(H.r=Za(i.normalWorld.x),
|
|
|
-H.g=Za(i.normalWorld.y),H.b=Za(i.normalWorld.z),!0===j.wireframe?t(H,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(H))}function n(a,b,c,d,e,f){r.beginPath();r.moveTo(a,b);r.lineTo(c,d);r.lineTo(e,f);r.closePath()}function s(a,b,c,d,e,f,g,h){r.beginPath();r.moveTo(a,b);r.lineTo(c,d);r.lineTo(e,f);r.lineTo(g,h);r.closePath()}function t(a,b,c,e){A!==b&&(A=r.lineWidth=b);x!==c&&(x=r.lineCap=c);v!==e&&(v=r.lineJoin=e);d(a.getContextStyle());r.stroke();ra.inflate(2*b)}function u(a){e(a.getContextStyle());
|
|
|
+H.g=Za(i.normalWorld.y),H.b=Za(i.normalWorld.z),!0===j.wireframe?t(H,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(H))}function n(a,b,c,d,e,f){r.beginPath();r.moveTo(a,b);r.lineTo(c,d);r.lineTo(e,f);r.closePath()}function s(a,b,c,d,e,f,g,h){r.beginPath();r.moveTo(a,b);r.lineTo(c,d);r.lineTo(e,f);r.lineTo(g,h);r.closePath()}function t(a,b,c,e){A!==b&&(A=r.lineWidth=b);x!==c&&(x=r.lineCap=c);v!==e&&(v=r.lineJoin=e);d(a.getStyle());r.stroke();ra.inflate(2*b)}function u(a){e(a.getStyle());
|
|
|
r.fill()}function z(a,b,c,d,f,g,h,k,i,j,l,Za,m){if(!(m instanceof THREE.DataTexture||void 0===m.image||0==m.image.width)){if(!0===m.needsUpdate){var n=m.wrapS==THREE.RepeatWrapping,ib=m.wrapT==THREE.RepeatWrapping;oa[m.id]=r.createPattern(m.image,!0===n&&!0===ib?"repeat":!0===n&&!1===ib?"repeat-x":!1===n&&!0===ib?"repeat-y":"no-repeat");m.needsUpdate=!1}void 0===oa[m.id]?e("rgba(0,0,0,1)"):e(oa[m.id]);var n=m.offset.x/m.repeat.x,ib=m.offset.y/m.repeat.y,p=m.image.width*m.repeat.x,q=m.image.height*
|
|
|
m.repeat.y,h=(h+n)*p,k=(1-k+ib)*q,c=c-a,d=d-b,f=f-a,g=g-b,i=(i+n)*p-h,j=(1-j+ib)*q-k,l=(l+n)*p-h,Za=(1-Za+ib)*q-k,n=i*Za-l*j;0===n?(void 0===fb[m.id]&&(b=document.createElement("canvas"),b.width=m.image.width,b.height=m.image.height,b=b.getContext("2d"),b.drawImage(m.image,0,0),fb[m.id]=b.getImageData(0,0,m.image.width,m.image.height).data),b=fb[m.id],h=4*(Math.floor(h)+Math.floor(k)*m.image.width),H.setRGB(b[h]/255,b[h+1]/255,b[h+2]/255),u(H)):(n=1/n,m=(Za*c-j*f)*n,j=(Za*d-j*g)*n,c=(i*f-l*c)*n,d=
|
|
|
(i*g-l*d)*n,a=a-m*h-c*k,h=b-j*h-d*k,r.save(),r.transform(m,j,c,d,a,h),r.fill(),r.restore())}}function E(a,b,c,d,e,f,g,h,k,i,j,l,m){var Za,n;Za=m.width-1;n=m.height-1;g*=Za;h*=n;c-=a;d-=b;e-=a;f-=b;k=k*Za-g;i=i*n-h;j=j*Za-g;l=l*n-h;n=1/(k*l-j*i);Za=(l*c-i*e)*n;i=(l*d-i*f)*n;c=(k*e-j*c)*n;d=(k*f-j*d)*n;a=a-Za*g-c*h;b=b-i*g-d*h;r.save();r.transform(Za,i,c,d,a,b);r.clip();r.drawImage(m,0,0);r.restore()}function F(a,b,c,d){Xa[0]=255*a.r|0;Xa[1]=255*a.g|0;Xa[2]=255*a.b|0;Xa[4]=255*b.r|0;Xa[5]=255*b.g|0;
|
|
|
Xa[6]=255*b.b|0;Xa[8]=255*c.r|0;Xa[9]=255*c.g|0;Xa[10]=255*c.b|0;Xa[12]=255*d.r|0;Xa[13]=255*d.g|0;Xa[14]=255*d.b|0;Wa.putImageData(wb,0,0);db.drawImage(tb,0,0);return bb}function Ya(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function Za(a){a=0.5*(a+1);return 0>a?0:1<a?1:a}function bc(a,b){var c=b.x-a.x,d=b.y-a.y,e=c*c+d*d;0!==e&&(e=1/Math.sqrt(e),c*=e,d*=e,b.x+=c,b.y+=d,a.x-=c,a.y-=d)}if(!1===l instanceof THREE.Camera)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");
|
|
|
else{var ib,zc,ma,ea;!0===this.autoClear?this.clear():r.setTransform(1,0,0,-1,p,q);f.info.render.vertices=0;f.info.render.faces=0;g=j.projectScene(a,l,this.sortObjects,this.sortElements);h=g.elements;i=g.lights;ob=0<i.length;if(!0===ob){la.setRGB(0,0,0);sb.setRGB(0,0,0);hb.setRGB(0,0,0);ib=0;for(zc=i.length;ib<zc;ib++){ea=i[ib];var na=ea.color;ea instanceof THREE.AmbientLight?(la.r+=na.r,la.g+=na.g,la.b+=na.b):ea instanceof THREE.DirectionalLight?(sb.r+=na.r,sb.g+=na.g,sb.b+=na.b):ea instanceof THREE.PointLight&&
|
|
|
(hb.r+=na.r,hb.g+=na.g,hb.b+=na.b)}}ib=0;for(zc=h.length;ib<zc;ib++)if(ma=h[ib],ea=ma.material,!(void 0===ea||!1===ea.visible)){ra.empty();if(ma instanceof THREE.RenderableParticle){D=ma;D.x*=p;D.y*=q;var na=D,cb=ma;b(ea.opacity);c(ea.blending);var Fb=void 0,Gb=void 0,xb=void 0,yb=void 0,jc=ma=void 0,Rc=void 0;ea instanceof THREE.ParticleBasicMaterial?null===ea.map?(xb=cb.object.scale.x,yb=cb.object.scale.y,xb*=cb.scale.x*p,yb*=cb.scale.y*q,ra.set(na.x-xb,na.y-yb,na.x+xb,na.y+yb),!1!==qb.intersects(ra)&&
|
|
|
-(e(ea.color.getContextStyle()),r.save(),r.translate(na.x,na.y),r.rotate(-cb.rotation),r.scale(xb,yb),r.fillRect(-1,-1,2,2),r.restore())):(ma=ea.map.image,jc=ma.width>>1,Rc=ma.height>>1,xb=cb.scale.x*p,yb=cb.scale.y*q,Fb=xb*jc,Gb=yb*Rc,ra.set(na.x-Fb,na.y-Gb,na.x+Fb,na.y+Gb),!1!==qb.intersects(ra)&&(r.save(),r.translate(na.x,na.y),r.rotate(-cb.rotation),r.scale(xb,-yb),r.translate(-jc,-Rc),r.drawImage(ma,0,0),r.restore())):ea instanceof THREE.ParticleCanvasMaterial&&(Fb=cb.scale.x*p,Gb=cb.scale.y*
|
|
|
-q,ra.set(na.x-Fb,na.y-Gb,na.x+Fb,na.y+Gb),!1!==qb.intersects(ra)&&(d(ea.color.getContextStyle()),e(ea.color.getContextStyle()),r.save(),r.translate(na.x,na.y),r.rotate(-cb.rotation),r.scale(Fb,Gb),ea.program(r),r.restore()))}else ma instanceof THREE.RenderableLine?(D=ma.v1,B=ma.v2,D.positionScreen.x*=p,D.positionScreen.y*=q,B.positionScreen.x*=p,B.positionScreen.y*=q,ra.addPoint(D.positionScreen.x,D.positionScreen.y),ra.addPoint(B.positionScreen.x,B.positionScreen.y),!0===qb.intersects(ra)&&(na=D,
|
|
|
-cb=B,b(ea.opacity),c(ea.blending),r.beginPath(),r.moveTo(na.positionScreen.x,na.positionScreen.y),r.lineTo(cb.positionScreen.x,cb.positionScreen.y),ea instanceof THREE.LineBasicMaterial&&(na=ea.linewidth,A!==na&&(A=r.lineWidth=na),na=ea.linecap,x!==na&&(x=r.lineCap=na),na=ea.linejoin,v!==na&&(v=r.lineJoin=na),d(ea.color.getContextStyle()),r.stroke(),ra.inflate(2*ea.linewidth)))):ma instanceof THREE.RenderableFace3?(D=ma.v1,B=ma.v2,J=ma.v3,D.positionScreen.x*=p,D.positionScreen.y*=q,B.positionScreen.x*=
|
|
|
-p,B.positionScreen.y*=q,J.positionScreen.x*=p,J.positionScreen.y*=q,!0===ea.overdraw&&(bc(D.positionScreen,B.positionScreen),bc(B.positionScreen,J.positionScreen),bc(J.positionScreen,D.positionScreen)),ra.add3Points(D.positionScreen.x,D.positionScreen.y,B.positionScreen.x,B.positionScreen.y,J.positionScreen.x,J.positionScreen.y),!0===qb.intersects(ra)&&k(D,B,J,0,1,2,ma,ea,a)):ma instanceof THREE.RenderableFace4&&(D=ma.v1,B=ma.v2,J=ma.v3,P=ma.v4,D.positionScreen.x*=p,D.positionScreen.y*=q,B.positionScreen.x*=
|
|
|
-p,B.positionScreen.y*=q,J.positionScreen.x*=p,J.positionScreen.y*=q,P.positionScreen.x*=p,P.positionScreen.y*=q,C.positionScreen.copy(B.positionScreen),L.positionScreen.copy(P.positionScreen),!0===ea.overdraw&&(bc(D.positionScreen,B.positionScreen),bc(B.positionScreen,P.positionScreen),bc(P.positionScreen,D.positionScreen),bc(J.positionScreen,C.positionScreen),bc(J.positionScreen,L.positionScreen)),ra.addPoint(D.positionScreen.x,D.positionScreen.y),ra.addPoint(B.positionScreen.x,B.positionScreen.y),
|
|
|
-ra.addPoint(J.positionScreen.x,J.positionScreen.y),ra.addPoint(P.positionScreen.x,P.positionScreen.y),!0===qb.intersects(ra)&&(na=D,cb=B,Fb=J,Gb=P,xb=C,yb=L,jc=a,f.info.render.vertices+=4,f.info.render.faces++,b(ea.opacity),c(ea.blending),void 0!==ea.map&&null!==ea.map||void 0!==ea.envMap&&null!==ea.envMap?(k(na,cb,Gb,0,1,3,ma,ea,jc),k(xb,Fb,yb,1,2,3,ma,ea,jc)):(I=na.positionScreen.x,K=na.positionScreen.y,Q=cb.positionScreen.x,N=cb.positionScreen.y,R=Fb.positionScreen.x,T=Fb.positionScreen.y,M=Gb.positionScreen.x,
|
|
|
-O=Gb.positionScreen.y,S=xb.positionScreen.x,ba=xb.positionScreen.y,ga=yb.positionScreen.x,Ia=yb.positionScreen.y,ea instanceof THREE.MeshLambertMaterial||ea instanceof THREE.MeshPhongMaterial?(da.copy(ea.color),$.copy(ea.emissive),ea.vertexColors===THREE.FaceColors&&(da.r*=ma.color.r,da.g*=ma.color.g,da.b*=ma.color.b),!0===ob?!1===ea.wireframe&&ea.shading==THREE.SmoothShading&&4==ma.vertexNormalsLength?(ca.r=ia.r=Z.r=ja.r=la.r,ca.g=ia.g=Z.g=ja.g=la.g,ca.b=ia.b=Z.b=ja.b=la.b,m(ma.v1.positionWorld,
|
|
|
-ma.vertexNormalsWorld[0],ca),m(ma.v2.positionWorld,ma.vertexNormalsWorld[1],ia),m(ma.v4.positionWorld,ma.vertexNormalsWorld[3],Z),m(ma.v3.positionWorld,ma.vertexNormalsWorld[2],ja),ca.r=ca.r*da.r+$.r,ca.g=ca.g*da.g+$.g,ca.b=ca.b*da.b+$.b,ia.r=ia.r*da.r+$.r,ia.g=ia.g*da.g+$.g,ia.b=ia.b*da.b+$.b,Z.r=Z.r*da.r+$.r,Z.g=Z.g*da.g+$.g,Z.b=Z.b*da.b+$.b,ja.r=ja.r*da.r+$.r,ja.g=ja.g*da.g+$.g,ja.b=ja.b*da.b+$.b,qa=F(ca,ia,Z,ja),n(I,K,Q,N,M,O),E(I,K,Q,N,M,O,0,0,1,0,0,1,qa),n(S,ba,R,T,ga,Ia),E(S,ba,R,T,ga,Ia,1,
|
|
|
-0,1,1,0,1,qa)):(H.r=la.r,H.g=la.g,H.b=la.b,m(ma.centroidWorld,ma.normalWorld,H),H.r=H.r*da.r+$.r,H.g=H.g*da.g+$.g,H.b=H.b*da.b+$.b,s(I,K,Q,N,R,T,M,O),!0===ea.wireframe?t(H,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(H)):(H.r=da.r+$.r,H.g=da.g+$.g,H.b=da.b+$.b,s(I,K,Q,N,R,T,M,O),!0===ea.wireframe?t(H,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(H))):ea instanceof THREE.MeshBasicMaterial?(H.copy(ea.color),ea.vertexColors===THREE.FaceColors&&(H.r*=ma.color.r,
|
|
|
-H.g*=ma.color.g,H.b*=ma.color.b),s(I,K,Q,N,R,T,M,O),!0===ea.wireframe?t(H,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(H)):ea instanceof THREE.MeshNormalMaterial?(H.r=Za(ma.normalWorld.x),H.g=Za(ma.normalWorld.y),H.b=Za(ma.normalWorld.z),s(I,K,Q,N,R,T,M,O),!0===ea.wireframe?t(H,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(H)):ea instanceof THREE.MeshDepthMaterial&&(Ma=l.near,za=l.far,ca.r=ca.g=ca.b=1-Ya(na.positionScreen.z,Ma,za),ia.r=ia.g=ia.b=1-Ya(cb.positionScreen.z,
|
|
|
-Ma,za),Z.r=Z.g=Z.b=1-Ya(Gb.positionScreen.z,Ma,za),ja.r=ja.g=ja.b=1-Ya(Fb.positionScreen.z,Ma,za),qa=F(ca,ia,Z,ja),n(I,K,Q,N,M,O),E(I,K,Q,N,M,O,0,0,1,0,0,1,qa),n(S,ba,R,T,ga,Ia),E(S,ba,R,T,ga,Ia,1,0,1,1,0,1,qa)))));Ta.addRectangle(ra)}r.setTransform(1,0,0,1,0,0)}}};THREE.ShaderChunk={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",
|
|
|
+(e(ea.color.getStyle()),r.save(),r.translate(na.x,na.y),r.rotate(-cb.rotation),r.scale(xb,yb),r.fillRect(-1,-1,2,2),r.restore())):(ma=ea.map.image,jc=ma.width>>1,Rc=ma.height>>1,xb=cb.scale.x*p,yb=cb.scale.y*q,Fb=xb*jc,Gb=yb*Rc,ra.set(na.x-Fb,na.y-Gb,na.x+Fb,na.y+Gb),!1!==qb.intersects(ra)&&(r.save(),r.translate(na.x,na.y),r.rotate(-cb.rotation),r.scale(xb,-yb),r.translate(-jc,-Rc),r.drawImage(ma,0,0),r.restore())):ea instanceof THREE.ParticleCanvasMaterial&&(Fb=cb.scale.x*p,Gb=cb.scale.y*q,ra.set(na.x-
|
|
|
+Fb,na.y-Gb,na.x+Fb,na.y+Gb),!1!==qb.intersects(ra)&&(d(ea.color.getStyle()),e(ea.color.getStyle()),r.save(),r.translate(na.x,na.y),r.rotate(-cb.rotation),r.scale(Fb,Gb),ea.program(r),r.restore()))}else ma instanceof THREE.RenderableLine?(D=ma.v1,B=ma.v2,D.positionScreen.x*=p,D.positionScreen.y*=q,B.positionScreen.x*=p,B.positionScreen.y*=q,ra.addPoint(D.positionScreen.x,D.positionScreen.y),ra.addPoint(B.positionScreen.x,B.positionScreen.y),!0===qb.intersects(ra)&&(na=D,cb=B,b(ea.opacity),c(ea.blending),
|
|
|
+r.beginPath(),r.moveTo(na.positionScreen.x,na.positionScreen.y),r.lineTo(cb.positionScreen.x,cb.positionScreen.y),ea instanceof THREE.LineBasicMaterial&&(na=ea.linewidth,A!==na&&(A=r.lineWidth=na),na=ea.linecap,x!==na&&(x=r.lineCap=na),na=ea.linejoin,v!==na&&(v=r.lineJoin=na),d(ea.color.getStyle()),r.stroke(),ra.inflate(2*ea.linewidth)))):ma instanceof THREE.RenderableFace3?(D=ma.v1,B=ma.v2,J=ma.v3,D.positionScreen.x*=p,D.positionScreen.y*=q,B.positionScreen.x*=p,B.positionScreen.y*=q,J.positionScreen.x*=
|
|
|
+p,J.positionScreen.y*=q,!0===ea.overdraw&&(bc(D.positionScreen,B.positionScreen),bc(B.positionScreen,J.positionScreen),bc(J.positionScreen,D.positionScreen)),ra.add3Points(D.positionScreen.x,D.positionScreen.y,B.positionScreen.x,B.positionScreen.y,J.positionScreen.x,J.positionScreen.y),!0===qb.intersects(ra)&&k(D,B,J,0,1,2,ma,ea,a)):ma instanceof THREE.RenderableFace4&&(D=ma.v1,B=ma.v2,J=ma.v3,P=ma.v4,D.positionScreen.x*=p,D.positionScreen.y*=q,B.positionScreen.x*=p,B.positionScreen.y*=q,J.positionScreen.x*=
|
|
|
+p,J.positionScreen.y*=q,P.positionScreen.x*=p,P.positionScreen.y*=q,C.positionScreen.copy(B.positionScreen),L.positionScreen.copy(P.positionScreen),!0===ea.overdraw&&(bc(D.positionScreen,B.positionScreen),bc(B.positionScreen,P.positionScreen),bc(P.positionScreen,D.positionScreen),bc(J.positionScreen,C.positionScreen),bc(J.positionScreen,L.positionScreen)),ra.addPoint(D.positionScreen.x,D.positionScreen.y),ra.addPoint(B.positionScreen.x,B.positionScreen.y),ra.addPoint(J.positionScreen.x,J.positionScreen.y),
|
|
|
+ra.addPoint(P.positionScreen.x,P.positionScreen.y),!0===qb.intersects(ra)&&(na=D,cb=B,Fb=J,Gb=P,xb=C,yb=L,jc=a,f.info.render.vertices+=4,f.info.render.faces++,b(ea.opacity),c(ea.blending),void 0!==ea.map&&null!==ea.map||void 0!==ea.envMap&&null!==ea.envMap?(k(na,cb,Gb,0,1,3,ma,ea,jc),k(xb,Fb,yb,1,2,3,ma,ea,jc)):(I=na.positionScreen.x,K=na.positionScreen.y,Q=cb.positionScreen.x,N=cb.positionScreen.y,R=Fb.positionScreen.x,T=Fb.positionScreen.y,M=Gb.positionScreen.x,O=Gb.positionScreen.y,S=xb.positionScreen.x,
|
|
|
+ba=xb.positionScreen.y,ga=yb.positionScreen.x,Ia=yb.positionScreen.y,ea instanceof THREE.MeshLambertMaterial||ea instanceof THREE.MeshPhongMaterial?(da.copy(ea.color),$.copy(ea.emissive),ea.vertexColors===THREE.FaceColors&&(da.r*=ma.color.r,da.g*=ma.color.g,da.b*=ma.color.b),!0===ob?!1===ea.wireframe&&ea.shading==THREE.SmoothShading&&4==ma.vertexNormalsLength?(ca.r=ia.r=Z.r=ja.r=la.r,ca.g=ia.g=Z.g=ja.g=la.g,ca.b=ia.b=Z.b=ja.b=la.b,m(ma.v1.positionWorld,ma.vertexNormalsWorld[0],ca),m(ma.v2.positionWorld,
|
|
|
+ma.vertexNormalsWorld[1],ia),m(ma.v4.positionWorld,ma.vertexNormalsWorld[3],Z),m(ma.v3.positionWorld,ma.vertexNormalsWorld[2],ja),ca.r=ca.r*da.r+$.r,ca.g=ca.g*da.g+$.g,ca.b=ca.b*da.b+$.b,ia.r=ia.r*da.r+$.r,ia.g=ia.g*da.g+$.g,ia.b=ia.b*da.b+$.b,Z.r=Z.r*da.r+$.r,Z.g=Z.g*da.g+$.g,Z.b=Z.b*da.b+$.b,ja.r=ja.r*da.r+$.r,ja.g=ja.g*da.g+$.g,ja.b=ja.b*da.b+$.b,qa=F(ca,ia,Z,ja),n(I,K,Q,N,M,O),E(I,K,Q,N,M,O,0,0,1,0,0,1,qa),n(S,ba,R,T,ga,Ia),E(S,ba,R,T,ga,Ia,1,0,1,1,0,1,qa)):(H.r=la.r,H.g=la.g,H.b=la.b,m(ma.centroidWorld,
|
|
|
+ma.normalWorld,H),H.r=H.r*da.r+$.r,H.g=H.g*da.g+$.g,H.b=H.b*da.b+$.b,s(I,K,Q,N,R,T,M,O),!0===ea.wireframe?t(H,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(H)):(H.r=da.r+$.r,H.g=da.g+$.g,H.b=da.b+$.b,s(I,K,Q,N,R,T,M,O),!0===ea.wireframe?t(H,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(H))):ea instanceof THREE.MeshBasicMaterial?(H.copy(ea.color),ea.vertexColors===THREE.FaceColors&&(H.r*=ma.color.r,H.g*=ma.color.g,H.b*=ma.color.b),s(I,K,Q,N,R,T,M,O),!0===ea.wireframe?
|
|
|
+t(H,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(H)):ea instanceof THREE.MeshNormalMaterial?(H.r=Za(ma.normalWorld.x),H.g=Za(ma.normalWorld.y),H.b=Za(ma.normalWorld.z),s(I,K,Q,N,R,T,M,O),!0===ea.wireframe?t(H,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(H)):ea instanceof THREE.MeshDepthMaterial&&(Ma=l.near,za=l.far,ca.r=ca.g=ca.b=1-Ya(na.positionScreen.z,Ma,za),ia.r=ia.g=ia.b=1-Ya(cb.positionScreen.z,Ma,za),Z.r=Z.g=Z.b=1-Ya(Gb.positionScreen.z,Ma,za),ja.r=
|
|
|
+ja.g=ja.b=1-Ya(Fb.positionScreen.z,Ma,za),qa=F(ca,ia,Z,ja),n(I,K,Q,N,M,O),E(I,K,Q,N,M,O,0,0,1,0,0,1,qa),n(S,ba,R,T,ga,Ia),E(S,ba,R,T,ga,Ia,1,0,1,1,0,1,qa)))));Ta.addRectangle(ra)}r.setTransform(1,0,0,1,0,0)}}};THREE.ShaderChunk={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\nuniform float reflectivity;\nuniform samplerCube envMap;\nuniform float flipEnvMap;\nuniform int combine;\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\nuniform bool useRefract;\nuniform float refractionRatio;\n#else\nvarying vec3 vReflect;\n#endif\n#endif",envmap_fragment:"#ifdef USE_ENVMAP\nvec3 reflectVec;\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\nvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\nif ( useRefract ) {\nreflectVec = refract( cameraToVertex, normal, refractionRatio );\n} else { \nreflectVec = reflect( cameraToVertex, normal );\n}\n#else\nreflectVec = vReflect;\n#endif\n#ifdef DOUBLE_SIDED\nfloat flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\nvec4 cubeColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n#else\nvec4 cubeColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n#endif\n#ifdef GAMMA_INPUT\ncubeColor.xyz *= cubeColor.xyz;\n#endif\nif ( combine == 1 ) {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, specularStrength * reflectivity );\n} else if ( combine == 2 ) {\ngl_FragColor.xyz += cubeColor.xyz * specularStrength * reflectivity;\n} else {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, gl_FragColor.xyz * cubeColor.xyz, specularStrength * reflectivity );\n}\n#endif",
|
|
|
envmap_pars_vertex:"#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP )\nvarying vec3 vReflect;\nuniform float refractionRatio;\nuniform bool useRefract;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )\n#ifdef USE_SKINNING\nvec4 worldPosition = modelMatrix * skinned;\n#endif\n#if defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\nvec4 worldPosition = modelMatrix * vec4( morphed, 1.0 );\n#endif\n#if ! defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\nvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n#endif\n#endif",
|
|
|
envmap_vertex:"#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP )\nvec3 worldNormal = mat3( modelMatrix[ 0 ].xyz, modelMatrix[ 1 ].xyz, modelMatrix[ 2 ].xyz ) * objectNormal;\nworldNormal = normalize( worldNormal );\nvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\nif ( useRefract ) {\nvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n} else {\nvReflect = reflect( cameraToVertex, worldNormal );\n}\n#endif",map_particle_pars_fragment:"#ifdef USE_MAP\nuniform sampler2D map;\n#endif",
|