|
@@ -1,6 +1,6 @@
|
|
|
// three.js - http://github.com/mrdoob/three.js
|
|
|
'use strict';var THREE=THREE||{REVISION:"56dev"};self.console=self.console||{info:function(){},log:function(){},debug:function(){},warn:function(){},error:function(){}};self.Int32Array=self.Int32Array||Array;self.Float32Array=self.Float32Array||Array;String.prototype.startsWith=String.prototype.startsWith||function(a){return this.slice(0,a.length)===a};String.prototype.endsWith=String.prototype.endsWith||function(a){var a=String(a),b=this.lastIndexOf(a);return(-1<b&&b)===this.length-a.length};
|
|
|
-String.prototype.trim=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")};THREE.extend=function(a,b){var a=a||{},c;for(c in b)a[c]="object"===typeof b[c]?THREE.extend(a[c],b[c]):b[c];return a};
|
|
|
+String.prototype.trim=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")};THREE.extend=function(a,b){if(Object.keys)for(var c=Object.keys(b),d=0,e=c.length;d<e;d++){var f=c[d];Object.defineProperty(a,f,Object.getOwnPropertyDescriptor(b,f))}else for(f in c={}.hasOwnProperty,b)c.call(b,f)&&(a[f]=b[f]);return a};
|
|
|
(function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c<b.length&&!window.requestAnimationFrame;++c)window.requestAnimationFrame=window[b[c]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[b[c]+"CancelAnimationFrame"]||window[b[c]+"CancelRequestAnimationFrame"];void 0===window.requestAnimationFrame&&(window.requestAnimationFrame=function(b){var c=Date.now(),f=Math.max(0,16-(c-a)),g=window.setTimeout(function(){b(c+f)},f);a=c+f;return g});window.cancelAnimationFrame=window.cancelAnimationFrame||
|
|
|
function(a){window.clearTimeout(a)}})();THREE.CullFaceNone=0;THREE.CullFaceBack=1;THREE.CullFaceFront=2;THREE.CullFaceFrontBack=3;THREE.FrontFaceDirectionCW=0;THREE.FrontFaceDirectionCCW=1;THREE.BasicShadowMap=0;THREE.PCFShadowMap=1;THREE.PCFSoftShadowMap=2;THREE.FrontSide=0;THREE.BackSide=1;THREE.DoubleSide=2;THREE.NoShading=0;THREE.FlatShading=1;THREE.SmoothShading=2;THREE.NoColors=0;THREE.FaceColors=1;THREE.VertexColors=2;THREE.NoBlending=0;THREE.NormalBlending=1;THREE.AdditiveBlending=2;
|
|
|
THREE.SubtractiveBlending=3;THREE.MultiplyBlending=4;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;
|
|
@@ -30,7 +30,7 @@ THREE.extend(THREE.Vector2.prototype,{set:function(a,b){this.x=a;this.y=b;return
|
|
|
b)return console.warn("DEPRECATED: Vector2's .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addScalar:function(a){this.x+=a;this.y+=a;return this},sub:function(a,b){if(void 0!==b)return console.warn("DEPRECATED: Vector2's .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;return this},
|
|
|
subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},divideScalar:function(a){0!==a?(this.x/=a,this.y/=a):this.set(0,0);return this},min:function(a){this.x>a.x&&(this.x=a.x);this.y>a.y&&(this.y=a.y);return this},max:function(a){this.x<a.x&&(this.x=a.x);this.y<a.y&&(this.y=a.y);return this},clamp:function(a,b){this.x<a.x?this.x=a.x:this.x>b.x&&(this.x=b.x);this.y<a.y?this.y=a.y:this.y>b.y&&(this.y=b.y);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.x*this.x+this.y*this.y)},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){var b=this.length();0!==b&&a!==b&&this.multiplyScalar(a/b);return this},lerp: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};
|
|
|
+b;this.y+=(a.y-this.y)*b;return this},equals:function(a){return a.x===this.x&&a.y===this.y},toArray:function(){return[this.x,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};
|
|
|
THREE.extend(THREE.Vector3.prototype,{set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;default:throw Error("index is out of range: "+a);}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+
|
|
|
a);}},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},add:function(a,b){if(void 0!==b)return console.warn("DEPRECATED: Vector3's .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},sub:function(a,b){if(void 0!==b)return console.warn("DEPRECATED: Vector3's .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),
|
|
|
this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},multiply:function(a,b){if(void 0!==b)return console.warn("DEPRECATED: Vector3's .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(a,b);this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},multiplyVectors:function(a,b){this.x=a.x*
|
|
@@ -39,22 +39,22 @@ this.x=(a[0]*b+a[4]*c+a[8]*d+a[12])*e;this.y=(a[1]*b+a[5]*c+a[9]*d+a[13])*e;this
|
|
|
new THREE.Quaternion;return function(b,c){var d=a.setFromAxisAngle(b,c);this.applyQuaternion(d);return this}}(),transformDirection:function(a){var b=this.x,c=this.y,d=this.z,a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d;this.y=a[1]*b+a[5]*c+a[9]*d;this.z=a[2]*b+a[6]*c+a[10]*d;this.normalize();return this},divide:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){0!==a?(this.x/=a,this.y/=a,this.z/=a):this.z=this.y=this.x=0;return this},min:function(a){this.x>a.x&&(this.x=
|
|
|
a.x);this.y>a.y&&(this.y=a.y);this.z>a.z&&(this.z=a.z);return this},max:function(a){this.x<a.x&&(this.x=a.x);this.y<a.y&&(this.y=a.y);this.z<a.z&&(this.z=a.z);return this},clamp:function(a,b){this.x<a.x?this.x=a.x:this.x>b.x&&(this.x=b.x);this.y<a.y?this.y=a.y:this.y>b.y&&(this.y=b.y);this.z<a.z?this.z=a.z:this.z>b.z&&(this.z=b.z);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*
|
|
|
this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){var b=this.length();0!==b&&a!==b&&this.multiplyScalar(a/b);return this},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;return this},cross:function(a,b){if(void 0!==b)return console.warn("DEPRECATED: Vector3's .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),
|
|
|
-this.crossVectors(a,b);var c=this.x,d=this.y,e=this.z;this.x=d*a.z-e*a.y;this.y=e*a.x-c*a.z;this.z=c*a.y-d*a.x;return this},crossVectors:function(a,b){this.x=a.y*b.z-a.z*b.y;this.y=a.z*b.x-a.x*b.z;this.z=a.x*b.y-a.y*b.x;return this},angleTo:function(a){return Math.acos(this.dot(a)/this.length()/a.length())},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y,a=this.z-a.z;return b*b+c*c+a*a},getPositionFromMatrix:function(a){this.x=
|
|
|
-a.elements[12];this.y=a.elements[13];this.z=a.elements[14];return this},setEulerFromRotationMatrix:function(a,b){function c(a){return Math.min(Math.max(a,-1),1)}var d=a.elements,e=d[0],f=d[4],g=d[8],h=d[1],i=d[5],k=d[9],l=d[2],n=d[6],d=d[10];void 0===b||"XYZ"===b?(this.y=Math.asin(c(g)),0.99999>Math.abs(g)?(this.x=Math.atan2(-k,d),this.z=Math.atan2(-f,e)):(this.x=Math.atan2(n,i),this.z=0)):"YXZ"===b?(this.x=Math.asin(-c(k)),0.99999>Math.abs(k)?(this.y=Math.atan2(g,d),this.z=Math.atan2(h,i)):(this.y=
|
|
|
-Math.atan2(-l,e),this.z=0)):"ZXY"===b?(this.x=Math.asin(c(n)),0.99999>Math.abs(n)?(this.y=Math.atan2(-l,d),this.z=Math.atan2(-f,i)):(this.y=0,this.z=Math.atan2(h,e))):"ZYX"===b?(this.y=Math.asin(-c(l)),0.99999>Math.abs(l)?(this.x=Math.atan2(n,d),this.z=Math.atan2(h,e)):(this.x=0,this.z=Math.atan2(-f,i))):"YZX"===b?(this.z=Math.asin(c(h)),0.99999>Math.abs(h)?(this.x=Math.atan2(-k,i),this.y=Math.atan2(-l,e)):(this.x=0,this.y=Math.atan2(g,d))):"XZY"===b&&(this.z=Math.asin(-c(f)),0.99999>Math.abs(f)?
|
|
|
-(this.x=Math.atan2(n,i),this.y=Math.atan2(g,e)):(this.x=Math.atan2(-k,d),this.y=0));return this},setEulerFromQuaternion:function(a,b){function c(a){return Math.min(Math.max(a,-1),1)}var d=a.x*a.x,e=a.y*a.y,f=a.z*a.z,g=a.w*a.w;void 0===b||"XYZ"===b?(this.x=Math.atan2(2*(a.x*a.w-a.y*a.z),g-d-e+f),this.y=Math.asin(c(2*(a.x*a.z+a.y*a.w))),this.z=Math.atan2(2*(a.z*a.w-a.x*a.y),g+d-e-f)):"YXZ"===b?(this.x=Math.asin(c(2*(a.x*a.w-a.y*a.z))),this.y=Math.atan2(2*(a.x*a.z+a.y*a.w),g-d-e+f),this.z=Math.atan2(2*
|
|
|
-(a.x*a.y+a.z*a.w),g-d+e-f)):"ZXY"===b?(this.x=Math.asin(c(2*(a.x*a.w+a.y*a.z))),this.y=Math.atan2(2*(a.y*a.w-a.z*a.x),g-d-e+f),this.z=Math.atan2(2*(a.z*a.w-a.x*a.y),g-d+e-f)):"ZYX"===b?(this.x=Math.atan2(2*(a.x*a.w+a.z*a.y),g-d-e+f),this.y=Math.asin(c(2*(a.y*a.w-a.x*a.z))),this.z=Math.atan2(2*(a.x*a.y+a.z*a.w),g+d-e-f)):"YZX"===b?(this.x=Math.atan2(2*(a.x*a.w-a.z*a.y),g-d+e-f),this.y=Math.atan2(2*(a.y*a.w-a.x*a.z),g+d-e-f),this.z=Math.asin(c(2*(a.x*a.y+a.z*a.w)))):"XZY"===b&&(this.x=Math.atan2(2*
|
|
|
-(a.x*a.w+a.y*a.z),g-d+e-f),this.y=Math.atan2(2*(a.x*a.z+a.y*a.w),g+d-e-f),this.z=Math.asin(c(2*(a.z*a.w-a.x*a.y))));return this},getScaleFromMatrix:function(a){var b=this.set(a.elements[0],a.elements[1],a.elements[2]).length(),c=this.set(a.elements[4],a.elements[5],a.elements[6]).length(),a=this.set(a.elements[8],a.elements[9],a.elements[10]).length();this.x=b;this.y=c;this.z=a;return this},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},clone:function(){return new THREE.Vector3(this.x,
|
|
|
-this.y,this.z)}});THREE.Vector4=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1};
|
|
|
+this.crossVectors(a,b);var c=this.x,d=this.y,e=this.z;this.x=d*a.z-e*a.y;this.y=e*a.x-c*a.z;this.z=c*a.y-d*a.x;return this},crossVectors:function(a,b){this.x=a.y*b.z-a.z*b.y;this.y=a.z*b.x-a.x*b.z;this.z=a.x*b.y-a.y*b.x;return this},projectOnVector:function(){var a=new THREE.Vector3;return function(b){a.copy(b).normalize();b=this.dot(a);return this.copy(a).multiplyScalar(b)}}(),projectOnPlane:function(){var a=new THREE.Vector3;return function(b){a.copy(this).projectOnVector(b);return this.sub(a)}}(),
|
|
|
+reflect:function(){var a=new THREE.Vector3;return function(b){a.copy(this).projectOnVector(b).multiplyScalar(2);return this.subVectors(a,this)}}(),angleTo:function(a){return Math.acos(this.dot(a)/this.length()/a.length())},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y,a=this.z-a.z;return b*b+c*c+a*a},getPositionFromMatrix:function(a){this.x=a.elements[12];this.y=a.elements[13];this.z=a.elements[14];return this},setEulerFromRotationMatrix:function(a,
|
|
|
+b){function c(a){return Math.min(Math.max(a,-1),1)}var d=a.elements,e=d[0],f=d[4],g=d[8],h=d[1],i=d[5],k=d[9],l=d[2],n=d[6],d=d[10];void 0===b||"XYZ"===b?(this.y=Math.asin(c(g)),0.99999>Math.abs(g)?(this.x=Math.atan2(-k,d),this.z=Math.atan2(-f,e)):(this.x=Math.atan2(n,i),this.z=0)):"YXZ"===b?(this.x=Math.asin(-c(k)),0.99999>Math.abs(k)?(this.y=Math.atan2(g,d),this.z=Math.atan2(h,i)):(this.y=Math.atan2(-l,e),this.z=0)):"ZXY"===b?(this.x=Math.asin(c(n)),0.99999>Math.abs(n)?(this.y=Math.atan2(-l,d),
|
|
|
+this.z=Math.atan2(-f,i)):(this.y=0,this.z=Math.atan2(h,e))):"ZYX"===b?(this.y=Math.asin(-c(l)),0.99999>Math.abs(l)?(this.x=Math.atan2(n,d),this.z=Math.atan2(h,e)):(this.x=0,this.z=Math.atan2(-f,i))):"YZX"===b?(this.z=Math.asin(c(h)),0.99999>Math.abs(h)?(this.x=Math.atan2(-k,i),this.y=Math.atan2(-l,e)):(this.x=0,this.y=Math.atan2(g,d))):"XZY"===b&&(this.z=Math.asin(-c(f)),0.99999>Math.abs(f)?(this.x=Math.atan2(n,i),this.y=Math.atan2(g,e)):(this.x=Math.atan2(-k,d),this.y=0));return this},setEulerFromQuaternion:function(a,
|
|
|
+b){function c(a){return Math.min(Math.max(a,-1),1)}var d=a.x*a.x,e=a.y*a.y,f=a.z*a.z,g=a.w*a.w;void 0===b||"XYZ"===b?(this.x=Math.atan2(2*(a.x*a.w-a.y*a.z),g-d-e+f),this.y=Math.asin(c(2*(a.x*a.z+a.y*a.w))),this.z=Math.atan2(2*(a.z*a.w-a.x*a.y),g+d-e-f)):"YXZ"===b?(this.x=Math.asin(c(2*(a.x*a.w-a.y*a.z))),this.y=Math.atan2(2*(a.x*a.z+a.y*a.w),g-d-e+f),this.z=Math.atan2(2*(a.x*a.y+a.z*a.w),g-d+e-f)):"ZXY"===b?(this.x=Math.asin(c(2*(a.x*a.w+a.y*a.z))),this.y=Math.atan2(2*(a.y*a.w-a.z*a.x),g-d-e+f),this.z=
|
|
|
+Math.atan2(2*(a.z*a.w-a.x*a.y),g-d+e-f)):"ZYX"===b?(this.x=Math.atan2(2*(a.x*a.w+a.z*a.y),g-d-e+f),this.y=Math.asin(c(2*(a.y*a.w-a.x*a.z))),this.z=Math.atan2(2*(a.x*a.y+a.z*a.w),g+d-e-f)):"YZX"===b?(this.x=Math.atan2(2*(a.x*a.w-a.z*a.y),g-d+e-f),this.y=Math.atan2(2*(a.y*a.w-a.x*a.z),g+d-e-f),this.z=Math.asin(c(2*(a.x*a.y+a.z*a.w)))):"XZY"===b&&(this.x=Math.atan2(2*(a.x*a.w+a.y*a.z),g-d+e-f),this.y=Math.atan2(2*(a.x*a.z+a.y*a.w),g+d-e-f),this.z=Math.asin(c(2*(a.z*a.w-a.x*a.y))));return this},getScaleFromMatrix:function(a){var b=
|
|
|
+this.set(a.elements[0],a.elements[1],a.elements[2]).length(),c=this.set(a.elements[4],a.elements[5],a.elements[6]).length(),a=this.set(a.elements[8],a.elements[9],a.elements[10]).length();this.x=b;this.y=c;this.z=a;return this},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},toArray:function(){return[this.x,this.y,this.z]},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)}});THREE.Vector4=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1};
|
|
|
THREE.extend(THREE.Vector4.prototype,{set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setW:function(a){this.w=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;case 3:this.w=b;break;default:throw Error("index is out of range: "+a);}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;
|
|
|
case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+a);}},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=void 0!==a.w?a.w:1;return this},add:function(a,b){if(void 0!==b)return console.warn("DEPRECATED: Vector4's .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;this.w+=a;return this},addVectors:function(a,
|
|
|
b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},sub:function(a,b){if(void 0!==b)return console.warn("DEPRECATED: Vector4's .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},applyMatrix4:function(a){var b=
|
|
|
-this.x,c=this.y,d=this.z,e=this.w,a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12]*e;this.y=a[1]*b+a[5]*c+a[9]*d+a[13]*e;this.z=a[2]*b+a[6]*c+a[10]*d+a[14]*e;this.w=a[3]*b+a[7]*c+a[11]*d+a[15]*e;return this},divideScalar:function(a){0!==a?(this.x/=a,this.y/=a,this.z/=a,this.w/=a):(this.z=this.y=this.x=0,this.w=1);return this},min:function(a){this.x>a.x&&(this.x=a.x);this.y>a.y&&(this.y=a.y);this.z>a.z&&(this.z=a.z);this.w>a.w&&(this.w=a.w);return this},max:function(a){this.x<a.x&&(this.x=a.x);this.y<
|
|
|
-a.y&&(this.y=a.y);this.z<a.z&&(this.z=a.z);this.w<a.w&&(this.w=a.w);return this},clamp:function(a,b){this.x<a.x?this.x=a.x:this.x>b.x&&(this.x=b.x);this.y<a.y?this.y=a.y:this.y>b.y&&(this.y=b.y);this.z<a.z?this.z=a.z:this.z>b.z&&(this.z=b.z);this.w<a.w?this.w=a.w:this.w>b.w&&(this.w=b.w);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},
|
|
|
-length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){var b=this.length();0!==b&&a!==b&&this.multiplyScalar(a/b);return this},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this},equals:function(a){return a.x===
|
|
|
-this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);1E-4>b?(this.x=1,this.z=this.y=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b);return this},setAxisAngleFromRotationMatrix:function(a){var b,c,d,a=a.elements,e=a[0];d=a[4];var f=a[8],g=a[1],h=a[5],i=a[9];c=a[2];b=a[6];var k=a[10];if(0.01>Math.abs(d-g)&&0.01>Math.abs(f-c)&&0.01>Math.abs(i-b)){if(0.1>
|
|
|
-Math.abs(d+g)&&0.1>Math.abs(f+c)&&0.1>Math.abs(i+b)&&0.1>Math.abs(e+h+k-3))return this.set(1,0,0,0),this;a=Math.PI;e=(e+1)/2;h=(h+1)/2;k=(k+1)/2;d=(d+g)/4;f=(f+c)/4;i=(i+b)/4;e>h&&e>k?0.01>e?(b=0,d=c=0.707106781):(b=Math.sqrt(e),c=d/b,d=f/b):h>k?0.01>h?(b=0.707106781,c=0,d=0.707106781):(c=Math.sqrt(h),b=d/c,d=i/c):0.01>k?(c=b=0.707106781,d=0):(d=Math.sqrt(k),b=f/d,c=i/d);this.set(b,c,d,a);return this}a=Math.sqrt((b-i)*(b-i)+(f-c)*(f-c)+(g-d)*(g-d));0.001>Math.abs(a)&&(a=1);this.x=(b-i)/a;this.y=(f-
|
|
|
-c)/a;this.z=(g-d)/a;this.w=Math.acos((e+h+k-1)/2);return this}});THREE.Box2=function(a,b){this.min=void 0!==a?a:new THREE.Vector2(Infinity,Infinity);this.max=void 0!==b?b:new THREE.Vector2(-Infinity,-Infinity)};
|
|
|
+this.x,c=this.y,d=this.z,e=this.w,a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12]*e;this.y=a[1]*b+a[5]*c+a[9]*d+a[13]*e;this.z=a[2]*b+a[6]*c+a[10]*d+a[14]*e;this.w=a[3]*b+a[7]*c+a[11]*d+a[15]*e;return this},divideScalar:function(a){0!==a?(this.x/=a,this.y/=a,this.z/=a,this.w/=a):(this.z=this.y=this.x=0,this.w=1);return this},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);1E-4>b?(this.x=1,this.z=this.y=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b);return this},
|
|
|
+setAxisAngleFromRotationMatrix:function(a){var b,c,d,a=a.elements,e=a[0];d=a[4];var f=a[8],g=a[1],h=a[5],i=a[9];c=a[2];b=a[6];var k=a[10];if(0.01>Math.abs(d-g)&&0.01>Math.abs(f-c)&&0.01>Math.abs(i-b)){if(0.1>Math.abs(d+g)&&0.1>Math.abs(f+c)&&0.1>Math.abs(i+b)&&0.1>Math.abs(e+h+k-3))return this.set(1,0,0,0),this;a=Math.PI;e=(e+1)/2;h=(h+1)/2;k=(k+1)/2;d=(d+g)/4;f=(f+c)/4;i=(i+b)/4;e>h&&e>k?0.01>e?(b=0,d=c=0.707106781):(b=Math.sqrt(e),c=d/b,d=f/b):h>k?0.01>h?(b=0.707106781,c=0,d=0.707106781):(c=Math.sqrt(h),
|
|
|
+b=d/c,d=i/c):0.01>k?(c=b=0.707106781,d=0):(d=Math.sqrt(k),b=f/d,c=i/d);this.set(b,c,d,a);return this}a=Math.sqrt((b-i)*(b-i)+(f-c)*(f-c)+(g-d)*(g-d));0.001>Math.abs(a)&&(a=1);this.x=(b-i)/a;this.y=(f-c)/a;this.z=(g-d)/a;this.w=Math.acos((e+h+k-1)/2);return this},min:function(a){this.x>a.x&&(this.x=a.x);this.y>a.y&&(this.y=a.y);this.z>a.z&&(this.z=a.z);this.w>a.w&&(this.w=a.w);return this},max:function(a){this.x<a.x&&(this.x=a.x);this.y<a.y&&(this.y=a.y);this.z<a.z&&(this.z=a.z);this.w<a.w&&(this.w=
|
|
|
+a.w);return this},clamp:function(a,b){this.x<a.x?this.x=a.x:this.x>b.x&&(this.x=b.x);this.y<a.y?this.y=a.y:this.y>b.y&&(this.y=b.y);this.z<a.z?this.z=a.z:this.z>b.z&&(this.z=b.z);this.w<a.w?this.w=a.w:this.w>b.w&&(this.w=b.w);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+
|
|
|
+this.z*this.z+this.w*this.w)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){var b=this.length();0!==b&&a!==b&&this.multiplyScalar(a/b);return this},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w},toArray:function(){return[this.x,
|
|
|
+this.y,this.z,this.w]},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)}});THREE.Box2=function(a,b){this.min=void 0!==a?a:new THREE.Vector2(Infinity,Infinity);this.max=void 0!==b?b:new THREE.Vector2(-Infinity,-Infinity)};
|
|
|
THREE.extend(THREE.Box2.prototype,{set:function(a,b){this.min.copy(a);this.max.copy(b);return this},setFromPoints:function(a){if(0<a.length){var b=a[0];this.min.copy(b);this.max.copy(b);for(var c=1,d=a.length;c<d;c++)b=a[c],b.x<this.min.x?this.min.x=b.x:b.x>this.max.x&&(this.max.x=b.x),b.y<this.min.y?this.min.y=b.y:b.y>this.max.y&&(this.max.y=b.y)}else this.makeEmpty();return this},setFromCenterAndSize:function(){var a=new THREE.Vector2;return function(b,c){var d=a.copy(c).multiplyScalar(0.5);this.min.copy(b).sub(d);
|
|
|
this.max.copy(b).add(d);return this}}(),copy:function(a){this.min.copy(a.min);this.max.copy(a.max);return this},makeEmpty:function(){this.min.x=this.min.y=Infinity;this.max.x=this.max.y=-Infinity;return this},empty:function(){return this.max.x<this.min.x||this.max.y<this.min.y},center:function(a){return(a||new THREE.Vector2).addVectors(this.min,this.max).multiplyScalar(0.5)},size:function(a){return(a||new THREE.Vector2).subVectors(this.max,this.min)},expandByPoint:function(a){this.min.min(a);this.max.max(a);
|
|
|
return this},expandByVector:function(a){this.min.sub(a);this.max.add(a);return this},expandByScalar:function(a){this.min.addScalar(-a);this.max.addScalar(a);return this},containsPoint:function(a){return a.x<this.min.x||a.x>this.max.x||a.y<this.min.y||a.y>this.max.y?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y?!0:!1},getParameter:function(a){return new THREE.Vector2((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/
|
|
@@ -118,7 +118,7 @@ THREE.extend(THREE.Triangle.prototype,{constructor:THREE.Triangle,set:function(a
|
|
|
midpoint:function(a){return(a||new THREE.Vector3).addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(a){return THREE.Triangle.normal(this.a,this.b,this.c,a)},plane:function(a){return(a||new THREE.Plane).setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(a,b){return THREE.Triangle.barycoordFromPoint(a,this.a,this.b,this.c,b)},containsPoint:function(a){return THREE.Triangle.containsPoint(a,this.a,this.b,this.c)},equals:function(a){return a.a.equals(this.a)&&
|
|
|
a.b.equals(this.b)&&a.c.equals(this.c)},clone:function(){return(new THREE.Triangle).copy(this)}});THREE.Vertex=function(a){console.warn("THREE.Vertex has been DEPRECATED. Use THREE.Vector3 instead.");return a};THREE.UV=function(a,b){console.warn("THREE.UV has been DEPRECATED. Use THREE.Vector2 instead.");return new THREE.Vector2(a,b)};THREE.Clock=function(a){this.autoStart=void 0!==a?a:!0;this.elapsedTime=this.oldTime=this.startTime=0;this.running=!1};
|
|
|
THREE.extend(THREE.Clock.prototype,{start:function(){this.oldTime=this.startTime=void 0!==window.performance&&void 0!==window.performance.now?window.performance.now():Date.now();this.running=!0},stop:function(){this.getElapsedTime();this.running=!1},getElapsedTime:function(){this.getDelta();return this.elapsedTime},getDelta:function(){var a=0;this.autoStart&&!this.running&&this.start();if(this.running){var b=void 0!==window.performance&&void 0!==window.performance.now?window.performance.now():Date.now(),
|
|
|
-a=0.001*(b-this.oldTime);this.oldTime=b;this.elapsedTime+=a}return a}});THREE.EventDispatcher=function(){var a={};this.addEventListener=function(b,c){void 0===a[b]&&(a[b]=[]);-1===a[b].indexOf(c)&&a[b].push(c)};this.removeEventListener=function(b,c){var d=a[b].indexOf(c);-1!==d&&a[b].splice(d,1)};this.dispatchEvent=function(b){var c=a[b.type];if(void 0!==c){b.target=this;for(var d=0,e=c.length;d<e;d++)c[d].call(this,b)}}};(function(a){a.Raycaster=function(b,c,d,e){this.ray=new a.Ray(b,c);0<this.ray.direction.length()&&this.ray.direction.normalize();this.near=d||0;this.far=e||Infinity};var b=new a.Sphere,c=new a.Ray,d=new a.Plane,e=new a.Vector3,f=new a.Matrix4,g=function(a,b){return a.distance-b.distance},h=function(g,h,i){if(g instanceof a.Particle){h=h.ray.distanceToPoint(g.matrixWorld.getPosition());if(h>g.scale.x)return i;i.push({distance:h,point:g.position,face:null,object:g})}else if(g instanceof a.Mesh){b.set(g.matrixWorld.getPosition(),
|
|
|
+a=0.001*(b-this.oldTime);this.oldTime=b;this.elapsedTime+=a}return a}});THREE.EventDispatcher=function(){var a={};this.addEventListener=function(b,c){void 0===a[b]&&(a[b]=[]);-1===a[b].indexOf(c)&&a[b].push(c)};this.removeEventListener=function(b,c){var d=a[b].indexOf(c);-1!==d&&a[b].splice(d,1)};this.dispatchEvent=function(b){var c=a[b.type];if(void 0!==c){b.target=this;for(var d=0,e=c.length;d<e;d++)c[d].call(this,b)}}};(function(a){a.Raycaster=function(b,c,d,e){this.ray=new a.Ray(b,c);0<this.ray.direction.lengthSq()&&this.ray.direction.normalize();this.near=d||0;this.far=e||Infinity};var b=new a.Sphere,c=new a.Ray,d=new a.Plane,e=new a.Vector3,f=new a.Matrix4,g=function(a,b){return a.distance-b.distance},h=function(g,h,i){if(g instanceof a.Particle){h=h.ray.distanceToPoint(g.matrixWorld.getPosition());if(h>g.scale.x)return i;i.push({distance:h,point:g.position,face:null,object:g})}else if(g instanceof a.Mesh){b.set(g.matrixWorld.getPosition(),
|
|
|
g.geometry.boundingSphere.radius*g.matrixWorld.getMaxScaleOnAxis());if(!h.ray.isIntersectionSphere(b))return i;var m=g.geometry,s=m.vertices,q=g.material instanceof a.MeshFaceMaterial,r=!0===q?g.material.materials:null,p=g.material.side,t,x,w,v=h.precision;g.matrixRotationWorld.extractRotation(g.matrixWorld);f.getInverse(g.matrixWorld);c.copy(h.ray).transform(f);for(var H=0,F=m.faces.length;H<F;H++){var A=m.faces[H],p=!0===q?r[A.materialIndex]:g.material;if(void 0!==p){d.setFromNormalAndCoplanarPoint(A.normal,
|
|
|
s[A.a]);var z=c.distanceToPlane(d);if(!(Math.abs(z)<v)&&!(0>z)){p=p.side;if(p!==a.DoubleSide&&(t=c.direction.dot(d.normal),!(p===a.FrontSide?0>t:0<t)))continue;if(!(z<h.near||z>h.far)){e=c.at(z,e);if(A instanceof a.Face3){if(p=s[A.a],t=s[A.b],x=s[A.c],!a.Triangle.containsPoint(e,p,t,x))continue}else if(A instanceof a.Face4){if(p=s[A.a],t=s[A.b],x=s[A.c],w=s[A.d],!a.Triangle.containsPoint(e,p,t,w)&&!a.Triangle.containsPoint(e,t,x,w))continue}else throw Error("face type not supported");i.push({distance:z,
|
|
|
point:h.ray.at(z),face:A,faceIndex:H,object:g})}}}}}},i=function(a,b,c){for(var a=a.getDescendants(),d=0,e=a.length;d<e;d++)h(a[d],b,c)};a.Raycaster.prototype.precision=1E-4;a.Raycaster.prototype.set=function(a,b){this.ray.set(a,b);0<this.ray.direction.length()&&this.ray.direction.normalize()};a.Raycaster.prototype.intersectObject=function(a,b){var c=[];!0===b&&i(a,this,c);h(a,this,c);c.sort(g);return c};a.Raycaster.prototype.intersectObjects=function(a,b){for(var c=[],d=0,e=a.length;d<e;d++)h(a[d],
|
|
@@ -266,16 +266,16 @@ Ua.translate(-yb/2,-yb/2);Ua.scale(yb,yb);yb--;void 0===w.setLineDash&&(w.setLin
|
|
|
a*this.devicePixelRatio;p=b*this.devicePixelRatio;t=Math.floor(r/2);x=Math.floor(p/2);q.width=r;q.height=p;q.style.width=a+"px";q.style.height=b+"px";pb.set(new THREE.Vector2(-t,-x),new THREE.Vector2(t,x));qa.set(new THREE.Vector2(-t,-x),new THREE.Vector2(t,x));F=1;A=0;V=E=I=K=z=null};this.setClearColor=function(a,b){v.copy(a);H=void 0!==b?b:1;qa.set(new THREE.Vector2(-t,-x),new THREE.Vector2(t,x))};this.setClearColorHex=function(a,b){v.setHex(a);H=void 0!==b?b:1;qa.set(new THREE.Vector2(-t,-x),new THREE.Vector2(t,
|
|
|
x))};this.getMaxAnisotropy=function(){return 0};this.clear=function(){w.setTransform(1,0,0,-1,t,x);!1===qa.empty()&&(qa.intersect(pb),qa.expandByScalar(2),1>H&&w.clearRect(qa.min.x|0,qa.min.y|0,qa.max.x-qa.min.x|0,qa.max.y-qa.min.y|0),0<H&&(c(THREE.NormalBlending),b(1),h("rgba("+Math.floor(255*v.r)+","+Math.floor(255*v.g)+","+Math.floor(255*v.b)+","+H+")"),w.fillRect(qa.min.x|0,qa.min.y|0,qa.max.x-qa.min.x|0,qa.max.y-qa.min.y|0)),qa.makeEmpty())};this.render=function(a,p){function q(a,b,c){for(var d=
|
|
|
0,e=m.length;d<e;d++){var f=m[d];Da.copy(f.color);if(f instanceof THREE.DirectionalLight){var g=$a.getPositionFromMatrix(f.matrixWorld).normalize(),j=b.dot(g);0>=j||(j*=f.intensity,c.add(Da.multiplyScalar(j)))}else f instanceof THREE.PointLight&&(g=$a.getPositionFromMatrix(f.matrixWorld),j=b.dot($a.subVectors(g,a).normalize()),0>=j||(j*=0==f.distance?1:1-Math.min(a.distanceTo(g)/f.distance,1),0!=j&&(j*=f.intensity,c.add(Da.multiplyScalar(j)))))}}function r(a,d,e,f,g,j,h,i){k.info.render.vertices+=
|
|
|
-3;k.info.render.faces++;b(i.opacity);c(i.blending);oa=a.positionScreen.x;J=a.positionScreen.y;da=d.positionScreen.x;ka=d.positionScreen.y;Y=e.positionScreen.x;L=e.positionScreen.y;v(oa,J,da,ka,Y,L);(i instanceof THREE.MeshLambertMaterial||i instanceof THREE.MeshPhongMaterial)&&null===i.map&&null===i.map?(ra.copy(i.color),fa.copy(i.emissive),i.vertexColors===THREE.FaceColors&&ra.multiply(h.color),!0===fc?!1===i.wireframe&&i.shading==THREE.SmoothShading&&3==h.vertexNormalsLength?(ja.copy(ub),ma.copy(ub),
|
|
|
-X.copy(ub),q(h.v1.positionWorld,h.vertexNormalsModel[0],ja),q(h.v2.positionWorld,h.vertexNormalsModel[1],ma),q(h.v3.positionWorld,h.vertexNormalsModel[2],X),ja.multiply(ra).add(fa),ma.multiply(ra).add(fa),X.multiply(ra).add(fa),ha.addColors(ma,X).multiplyScalar(0.5),Ta=H(ja,ma,X,ha),E(oa,J,da,ka,Y,L,0,0,1,0,0,1,Ta)):(ga.copy(ub),q(h.centroidModel,h.normalModel,ga),ga.multiply(ra).add(fa),!0===i.wireframe?B(ga,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):A(ga)):!0===i.wireframe?B(i.color,
|
|
|
-i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):A(i.color)):i instanceof THREE.MeshBasicMaterial||i instanceof THREE.MeshLambertMaterial||i instanceof THREE.MeshPhongMaterial?null!==i.map?i.map.mapping instanceof THREE.UVMapping&&(Ra=h.uvs[0],F(oa,J,da,ka,Y,L,Ra[f].x,Ra[f].y,Ra[g].x,Ra[g].y,Ra[j].x,Ra[j].y,i.map)):null!==i.envMap?i.envMap.mapping instanceof THREE.SphericalReflectionMapping&&($a.copy(h.vertexNormalsModelView[f]),eb=0.5*$a.x+0.5,ob=0.5*$a.y+0.5,$a.copy(h.vertexNormalsModelView[g]),
|
|
|
-Hb=0.5*$a.x+0.5,Ib=0.5*$a.y+0.5,$a.copy(h.vertexNormalsModelView[j]),ec=0.5*$a.x+0.5,mc=0.5*$a.y+0.5,F(oa,J,da,ka,Y,L,eb,ob,Hb,Ib,ec,mc,i.envMap)):(ga.copy(i.color),i.vertexColors===THREE.FaceColors&&ga.multiply(h.color),!0===i.wireframe?B(ga,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):A(ga)):i instanceof THREE.MeshDepthMaterial?(ia=p.near,Qa=p.far,g=1-K(a.positionScreen.z*a.positionScreen.w,ia,Qa),ja.setRGB(g,g,g),g=1-K(d.positionScreen.z*d.positionScreen.w,ia,Qa),ma.setRGB(g,g,
|
|
|
-g),g=1-K(e.positionScreen.z*e.positionScreen.w,ia,Qa),X.setRGB(g,g,g),ha.addColors(ma,X).multiplyScalar(0.5),Ta=H(ja,ma,X,ha),E(oa,J,da,ka,Y,L,0,0,1,0,0,1,Ta)):i instanceof THREE.MeshNormalMaterial&&(i.shading==THREE.FlatShading?(d=h.normalModelView,ga.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),!0===i.wireframe?B(ga,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):A(ga)):i.shading==THREE.SmoothShading&&(d=h.vertexNormalsModelView[f],ja.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),
|
|
|
-d=h.vertexNormalsModelView[g],ma.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),d=h.vertexNormalsModelView[j],X.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),ha.addColors(ma,X).multiplyScalar(0.5),Ta=H(ja,ma,X,ha),E(oa,J,da,ka,Y,L,0,0,1,0,0,1,Ta)))}function v(a,b,c,d,e,f){w.beginPath();w.moveTo(a,b);w.lineTo(c,d);w.lineTo(e,f);w.closePath()}function z(a,b,c,d,e,f,g,j){w.beginPath();w.moveTo(a,b);w.lineTo(c,d);w.lineTo(e,f);w.lineTo(g,j);w.closePath()}function B(a,b,c,j){d(b);e(c);
|
|
|
-f(j);g(a.getStyle());w.stroke();Ea.expandByScalar(2*b)}function A(a){h(a.getStyle());w.fill()}function F(a,b,c,d,e,f,g,j,i,ea,k,l,m){if(!(m instanceof THREE.DataTexture||void 0===m.image||0==m.image.width)){if(!0===m.needsUpdate){var n=m.wrapS==THREE.RepeatWrapping,fb=m.wrapT==THREE.RepeatWrapping;Ya[m.id]=w.createPattern(m.image,!0===n&&!0===fb?"repeat":!0===n&&!1===fb?"repeat-x":!1===n&&!0===fb?"repeat-y":"no-repeat");m.needsUpdate=!1}void 0===Ya[m.id]?h("rgba(0,0,0,1)"):h(Ya[m.id]);var n=m.offset.x/
|
|
|
-m.repeat.x,fb=m.offset.y/m.repeat.y,q=m.image.width*m.repeat.x,p=m.image.height*m.repeat.y,g=(g+n)*q,j=(1-j+fb)*p,c=c-a,d=d-b,e=e-a,f=f-b,i=(i+n)*q-g,ea=(1-ea+fb)*p-j,k=(k+n)*q-g,l=(1-l+fb)*p-j,n=i*l-k*ea;0===n?(void 0===Za[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),Za[m.id]=b.getImageData(0,0,m.image.width,m.image.height).data),b=Za[m.id],g=4*(Math.floor(g)+Math.floor(j)*m.image.width),ga.setRGB(b[g]/255,
|
|
|
-b[g+1]/255,b[g+2]/255),A(ga)):(n=1/n,m=(l*c-ea*e)*n,ea=(l*d-ea*f)*n,c=(i*e-k*c)*n,d=(i*f-k*d)*n,a=a-m*g-c*j,g=b-ea*g-d*j,w.save(),w.transform(m,ea,c,d,a,g),w.fill(),w.restore())}}function E(a,b,c,d,e,f,g,j,h,i,ea,k,m){var l,n;l=m.width-1;n=m.height-1;g*=l;j*=n;c-=a;d-=b;e-=a;f-=b;h=h*l-g;i=i*n-j;ea=ea*l-g;k=k*n-j;n=1/(h*k-ea*i);l=(k*c-i*e)*n;i=(k*d-i*f)*n;c=(h*e-ea*c)*n;d=(h*f-ea*d)*n;a=a-l*g-c*j;b=b-i*g-d*j;w.save();w.transform(l,i,c,d,a,b);w.clip();w.drawImage(m,0,0);w.restore()}function H(a,b,
|
|
|
-c,d){ab[0]=255*a.r|0;ab[1]=255*a.g|0;ab[2]=255*a.b|0;ab[4]=255*b.r|0;ab[5]=255*b.g|0;ab[6]=255*b.b|0;ab[8]=255*c.r|0;ab[9]=255*c.g|0;ab[10]=255*c.b|0;ab[12]=255*d.r|0;ab[13]=255*d.g|0;ab[14]=255*d.b|0;j.putImageData(xb,0,0);Ua.drawImage(wb,0,0);return nb}function K(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function I(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===p instanceof THREE.Camera)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");
|
|
|
+3;k.info.render.faces++;b(i.opacity);c(i.blending);oa=a.positionScreen.x;J=a.positionScreen.y;da=d.positionScreen.x;ka=d.positionScreen.y;Y=e.positionScreen.x;L=e.positionScreen.y;v(oa,J,da,ka,Y,L);(i instanceof THREE.MeshLambertMaterial||i instanceof THREE.MeshPhongMaterial)&&null===i.map?(ra.copy(i.color),fa.copy(i.emissive),i.vertexColors===THREE.FaceColors&&ra.multiply(h.color),!0===fc?!1===i.wireframe&&i.shading==THREE.SmoothShading&&3==h.vertexNormalsLength?(ja.copy(ub),ma.copy(ub),X.copy(ub),
|
|
|
+q(h.v1.positionWorld,h.vertexNormalsModel[0],ja),q(h.v2.positionWorld,h.vertexNormalsModel[1],ma),q(h.v3.positionWorld,h.vertexNormalsModel[2],X),ja.multiply(ra).add(fa),ma.multiply(ra).add(fa),X.multiply(ra).add(fa),ha.addColors(ma,X).multiplyScalar(0.5),Ta=H(ja,ma,X,ha),E(oa,J,da,ka,Y,L,0,0,1,0,0,1,Ta)):(ga.copy(ub),q(h.centroidModel,h.normalModel,ga),ga.multiply(ra).add(fa),!0===i.wireframe?B(ga,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):A(ga)):!0===i.wireframe?B(i.color,i.wireframeLinewidth,
|
|
|
+i.wireframeLinecap,i.wireframeLinejoin):A(i.color)):i instanceof THREE.MeshBasicMaterial||i instanceof THREE.MeshLambertMaterial||i instanceof THREE.MeshPhongMaterial?null!==i.map?i.map.mapping instanceof THREE.UVMapping&&(Ra=h.uvs[0],F(oa,J,da,ka,Y,L,Ra[f].x,Ra[f].y,Ra[g].x,Ra[g].y,Ra[j].x,Ra[j].y,i.map)):null!==i.envMap?i.envMap.mapping instanceof THREE.SphericalReflectionMapping&&($a.copy(h.vertexNormalsModelView[f]),eb=0.5*$a.x+0.5,ob=0.5*$a.y+0.5,$a.copy(h.vertexNormalsModelView[g]),Hb=0.5*$a.x+
|
|
|
+0.5,Ib=0.5*$a.y+0.5,$a.copy(h.vertexNormalsModelView[j]),ec=0.5*$a.x+0.5,mc=0.5*$a.y+0.5,F(oa,J,da,ka,Y,L,eb,ob,Hb,Ib,ec,mc,i.envMap)):(ga.copy(i.color),i.vertexColors===THREE.FaceColors&&ga.multiply(h.color),!0===i.wireframe?B(ga,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):A(ga)):i instanceof THREE.MeshDepthMaterial?(ia=p.near,Qa=p.far,g=1-K(a.positionScreen.z*a.positionScreen.w,ia,Qa),ja.setRGB(g,g,g),g=1-K(d.positionScreen.z*d.positionScreen.w,ia,Qa),ma.setRGB(g,g,g),g=1-K(e.positionScreen.z*
|
|
|
+e.positionScreen.w,ia,Qa),X.setRGB(g,g,g),ha.addColors(ma,X).multiplyScalar(0.5),Ta=H(ja,ma,X,ha),E(oa,J,da,ka,Y,L,0,0,1,0,0,1,Ta)):i instanceof THREE.MeshNormalMaterial&&(i.shading==THREE.FlatShading?(d=h.normalModelView,ga.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),!0===i.wireframe?B(ga,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):A(ga)):i.shading==THREE.SmoothShading&&(d=h.vertexNormalsModelView[f],ja.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),d=h.vertexNormalsModelView[g],
|
|
|
+ma.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),d=h.vertexNormalsModelView[j],X.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),ha.addColors(ma,X).multiplyScalar(0.5),Ta=H(ja,ma,X,ha),E(oa,J,da,ka,Y,L,0,0,1,0,0,1,Ta)))}function v(a,b,c,d,e,f){w.beginPath();w.moveTo(a,b);w.lineTo(c,d);w.lineTo(e,f);w.closePath()}function z(a,b,c,d,e,f,g,j){w.beginPath();w.moveTo(a,b);w.lineTo(c,d);w.lineTo(e,f);w.lineTo(g,j);w.closePath()}function B(a,b,c,j){d(b);e(c);f(j);g(a.getStyle());w.stroke();
|
|
|
+Ea.expandByScalar(2*b)}function A(a){h(a.getStyle());w.fill()}function F(a,b,c,d,e,f,g,j,i,ea,k,l,m){if(!(m instanceof THREE.DataTexture||void 0===m.image||0==m.image.width)){if(!0===m.needsUpdate){var n=m.wrapS==THREE.RepeatWrapping,fb=m.wrapT==THREE.RepeatWrapping;Ya[m.id]=w.createPattern(m.image,!0===n&&!0===fb?"repeat":!0===n&&!1===fb?"repeat-x":!1===n&&!0===fb?"repeat-y":"no-repeat");m.needsUpdate=!1}void 0===Ya[m.id]?h("rgba(0,0,0,1)"):h(Ya[m.id]);var n=m.offset.x/m.repeat.x,fb=m.offset.y/m.repeat.y,
|
|
|
+q=m.image.width*m.repeat.x,p=m.image.height*m.repeat.y,g=(g+n)*q,j=(1-j+fb)*p,c=c-a,d=d-b,e=e-a,f=f-b,i=(i+n)*q-g,ea=(1-ea+fb)*p-j,k=(k+n)*q-g,l=(1-l+fb)*p-j,n=i*l-k*ea;0===n?(void 0===Za[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),Za[m.id]=b.getImageData(0,0,m.image.width,m.image.height).data),b=Za[m.id],g=4*(Math.floor(g)+Math.floor(j)*m.image.width),ga.setRGB(b[g]/255,b[g+1]/255,b[g+2]/255),A(ga)):(n=1/n,
|
|
|
+m=(l*c-ea*e)*n,ea=(l*d-ea*f)*n,c=(i*e-k*c)*n,d=(i*f-k*d)*n,a=a-m*g-c*j,g=b-ea*g-d*j,w.save(),w.transform(m,ea,c,d,a,g),w.fill(),w.restore())}}function E(a,b,c,d,e,f,g,j,h,i,ea,k,m){var l,n;l=m.width-1;n=m.height-1;g*=l;j*=n;c-=a;d-=b;e-=a;f-=b;h=h*l-g;i=i*n-j;ea=ea*l-g;k=k*n-j;n=1/(h*k-ea*i);l=(k*c-i*e)*n;i=(k*d-i*f)*n;c=(h*e-ea*c)*n;d=(h*f-ea*d)*n;a=a-l*g-c*j;b=b-i*g-d*j;w.save();w.transform(l,i,c,d,a,b);w.clip();w.drawImage(m,0,0);w.restore()}function H(a,b,c,d){ab[0]=255*a.r|0;ab[1]=255*a.g|0;
|
|
|
+ab[2]=255*a.b|0;ab[4]=255*b.r|0;ab[5]=255*b.g|0;ab[6]=255*b.b|0;ab[8]=255*c.r|0;ab[9]=255*c.g|0;ab[10]=255*c.b|0;ab[12]=255*d.r|0;ab[13]=255*d.g|0;ab[14]=255*d.b|0;j.putImageData(xb,0,0);Ua.drawImage(wb,0,0);return nb}function K(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function I(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===p instanceof THREE.Camera)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");
|
|
|
else{!0===this.autoClear&&this.clear();w.setTransform(1,0,0,-1,t,x);k.info.render.vertices=0;k.info.render.faces=0;l=s.projectScene(a,p,this.sortObjects,this.sortElements);n=l.elements;m=l.lights;fc=0<m.length;if(!0===fc){ub.setRGB(0,0,0);gc.setRGB(0,0,0);Na.setRGB(0,0,0);for(var T=0,V=m.length;T<V;T++){var O=m[T],aa=O.color;O instanceof THREE.AmbientLight?ub.add(aa):O instanceof THREE.DirectionalLight?gc.add(aa):O instanceof THREE.PointLight&&Na.add(aa)}}T=0;for(V=n.length;T<V;T++){var ea=n[T],O=
|
|
|
ea.material;if(!(void 0===O||!1===O.visible)){Ea.makeEmpty();if(ea instanceof THREE.RenderableParticle){C=ea;C.x*=t;C.y*=x;var aa=C,ib=ea;b(O.opacity);c(O.blending);var fb=void 0,zb=void 0,Ab=void 0,Bb=void 0,yc=ea=void 0,od=void 0;O instanceof THREE.ParticleBasicMaterial?null===O.map?(Ab=ib.object.scale.x,Bb=ib.object.scale.y,Ab*=ib.scale.x*t,Bb*=ib.scale.y*x,Ea.min.set(aa.x-Ab,aa.y-Bb),Ea.max.set(aa.x+Ab,aa.y+Bb),!1!==pb.isIntersectionBox(Ea)&&(h(O.color.getStyle()),w.save(),w.translate(aa.x,aa.y),
|
|
|
w.rotate(-ib.rotation),w.scale(Ab,Bb),w.fillRect(-1,-1,2,2),w.restore())):(ea=O.map.image,yc=ea.width>>1,od=ea.height>>1,Ab=ib.scale.x*t,Bb=ib.scale.y*x,fb=Ab*yc,zb=Bb*od,Ea.min.set(aa.x-fb,aa.y-zb),Ea.max.set(aa.x+fb,aa.y+zb),!1!==pb.isIntersectionBox(Ea)&&(w.save(),w.translate(aa.x,aa.y),w.rotate(-ib.rotation),w.scale(Ab,-Bb),w.translate(-yc,-od),w.drawImage(ea,0,0),w.restore())):O instanceof THREE.ParticleCanvasMaterial&&(fb=ib.scale.x*t,zb=ib.scale.y*x,Ea.min.set(aa.x-fb,aa.y-zb),Ea.max.set(aa.x+
|
|
@@ -383,101 +383,101 @@ this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDept
|
|
|
geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var L=this,va=[],Xa=0,lb=null,Gb=null,ta=-1,Ma=null,ga=null,ja=0,ma=0,X=-1,ha=-1,ra=-1,fa=-1,Da=-1,Ya=-1,Za=-1,ia=-1,Qa=null,Ta=null,Ra=null,eb=null,ob=0,Hb=0,Ib=0,ec=0,mc=0,pb=0,qa={},Ea=new THREE.Frustum,fc=new THREE.Matrix4,ub=new THREE.Matrix4,gc=new THREE.Vector3,Na=new THREE.Vector3,$a=!0,wb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,
|
|
|
colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},j,xb,ab,nb,Ua;try{if(!(j=M.getContext("experimental-webgl",{alpha:ua,premultipliedAlpha:Ha,antialias:oa,stencil:J,preserveDrawingBuffer:da})))throw"Error creating WebGL context.";}catch(yb){console.error(yb)}xb=j.getExtension("OES_texture_float");ab=j.getExtension("OES_standard_derivatives");nb=j.getExtension("EXT_texture_filter_anisotropic")||j.getExtension("MOZ_EXT_texture_filter_anisotropic")||
|
|
|
j.getExtension("WEBKIT_EXT_texture_filter_anisotropic");Ua=j.getExtension("WEBGL_compressed_texture_s3tc")||j.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||j.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");xb||console.log("THREE.WebGLRenderer: Float textures not supported.");ab||console.log("THREE.WebGLRenderer: Standard derivatives not supported.");nb||console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");Ua||console.log("THREE.WebGLRenderer: S3TC compressed textures not supported.");
|
|
|
-j.clearColor(0,0,0,1);j.clearDepth(1);j.clearStencil(0);j.enable(j.DEPTH_TEST);j.depthFunc(j.LEQUAL);j.frontFace(j.CCW);j.cullFace(j.BACK);j.enable(j.CULL_FACE);j.enable(j.BLEND);j.blendEquation(j.FUNC_ADD);j.blendFunc(j.SRC_ALPHA,j.ONE_MINUS_SRC_ALPHA);j.clearColor(ka.r,ka.g,ka.b,Y);this.context=j;var Oc=j.getParameter(j.MAX_TEXTURE_IMAGE_UNITS),hd=j.getParameter(j.MAX_VERTEX_TEXTURE_IMAGE_UNITS);j.getParameter(j.MAX_TEXTURE_SIZE);var id=j.getParameter(j.MAX_CUBE_MAP_TEXTURE_SIZE),Ec=nb?j.getParameter(nb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):
|
|
|
-0,sc=0<hd,tc=sc&&xb;Ua&&j.getParameter(j.COMPRESSED_TEXTURE_FORMATS);var ld=j.getShaderPrecisionFormat(j.VERTEX_SHADER,j.HIGH_FLOAT),md=j.getShaderPrecisionFormat(j.VERTEX_SHADER,j.MEDIUM_FLOAT);j.getShaderPrecisionFormat(j.VERTEX_SHADER,j.LOW_FLOAT);var nd=j.getShaderPrecisionFormat(j.FRAGMENT_SHADER,j.HIGH_FLOAT),kd=j.getShaderPrecisionFormat(j.FRAGMENT_SHADER,j.MEDIUM_FLOAT);j.getShaderPrecisionFormat(j.FRAGMENT_SHADER,j.LOW_FLOAT);j.getShaderPrecisionFormat(j.VERTEX_SHADER,j.HIGH_INT);j.getShaderPrecisionFormat(j.VERTEX_SHADER,
|
|
|
-j.MEDIUM_INT);j.getShaderPrecisionFormat(j.VERTEX_SHADER,j.LOW_INT);j.getShaderPrecisionFormat(j.FRAGMENT_SHADER,j.HIGH_INT);j.getShaderPrecisionFormat(j.FRAGMENT_SHADER,j.MEDIUM_INT);j.getShaderPrecisionFormat(j.FRAGMENT_SHADER,j.LOW_INT);var jd=0<ld.precision&&0<nd.precision,Pc=0<md.precision&&0<kd.precision;"highp"===W&&!jd&&(Pc?(W="mediump",console.warn("WebGLRenderer: highp not supported, using mediump")):(W="lowp",console.warn("WebGLRenderer: highp and mediump not supported, using lowp")));
|
|
|
-"mediump"===W&&!Pc&&(W="lowp",console.warn("WebGLRenderer: mediump not supported, using lowp"));this.getContext=function(){return j};this.supportsVertexTextures=function(){return sc};this.supportsFloatTextures=function(){return xb};this.supportsStandardDerivatives=function(){return ab};this.supportsCompressedTextureS3TC=function(){return Ua};this.getMaxAnisotropy=function(){return Ec};this.getPrecision=function(){return W};this.setSize=function(a,b){M.width=a*this.devicePixelRatio;M.height=b*this.devicePixelRatio;
|
|
|
-M.style.width=a+"px";M.style.height=b+"px";this.setViewport(0,0,M.width,M.height)};this.setViewport=function(a,b,c,d){ob=void 0!==a?a:0;Hb=void 0!==b?b:0;Ib=void 0!==c?c:M.width;ec=void 0!==d?d:M.height;j.viewport(ob,Hb,Ib,ec)};this.setScissor=function(a,b,c,d){j.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?j.enable(j.SCISSOR_TEST):j.disable(j.SCISSOR_TEST)};this.setClearColorHex=function(a,b){ka.setHex(a);Y=b;j.clearColor(ka.r,ka.g,ka.b,Y)};this.setClearColor=function(a,b){ka.copy(a);Y=
|
|
|
-b;j.clearColor(ka.r,ka.g,ka.b,Y)};this.getClearColor=function(){return ka};this.getClearAlpha=function(){return Y};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=j.COLOR_BUFFER_BIT;if(void 0===b||b)d|=j.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=j.STENCIL_BUFFER_BIT;j.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};
|
|
|
-this.updateShadowMap=function(a,b){lb=null;ta=Ma=ia=Za=ra=-1;$a=!0;ha=X=-1;this.shadowMapPlugin.update(a,b)};var xd=function(a){a=a.target;a.removeEventListener("dispose",xd);a.__webglInit=void 0;void 0!==a.__webglVertexBuffer&&j.deleteBuffer(a.__webglVertexBuffer);void 0!==a.__webglNormalBuffer&&j.deleteBuffer(a.__webglNormalBuffer);void 0!==a.__webglTangentBuffer&&j.deleteBuffer(a.__webglTangentBuffer);void 0!==a.__webglColorBuffer&&j.deleteBuffer(a.__webglColorBuffer);void 0!==a.__webglUVBuffer&&
|
|
|
-j.deleteBuffer(a.__webglUVBuffer);void 0!==a.__webglUV2Buffer&&j.deleteBuffer(a.__webglUV2Buffer);void 0!==a.__webglSkinIndicesBuffer&&j.deleteBuffer(a.__webglSkinIndicesBuffer);void 0!==a.__webglSkinWeightsBuffer&&j.deleteBuffer(a.__webglSkinWeightsBuffer);void 0!==a.__webglFaceBuffer&&j.deleteBuffer(a.__webglFaceBuffer);void 0!==a.__webglLineBuffer&&j.deleteBuffer(a.__webglLineBuffer);void 0!==a.__webglLineDistanceBuffer&&j.deleteBuffer(a.__webglLineDistanceBuffer);if(void 0!==a.geometryGroups)for(var c in a.geometryGroups){var d=
|
|
|
-a.geometryGroups[c];if(void 0!==d.numMorphTargets)for(var e=0,f=d.numMorphTargets;e<f;e++)j.deleteBuffer(d.__webglMorphTargetsBuffers[e]);if(void 0!==d.numMorphNormals){e=0;for(f=d.numMorphNormals;e<f;e++)j.deleteBuffer(d.__webglMorphNormalsBuffers[e])}b(d)}b(a);L.info.memory.geometries--},Qc=function(a){a=a.target;a.removeEventListener("dispose",Qc);a.image&&a.image.__webglTextureCube?j.deleteTexture(a.image.__webglTextureCube):a.__webglInit&&(a.__webglInit=!1,j.deleteTexture(a.__webglTexture));
|
|
|
-L.info.memory.textures--},Rc=function(a){a=a.target;a.removeEventListener("dispose",Rc);if(a&&a.__webglTexture)if(j.deleteTexture(a.__webglTexture),a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)j.deleteFramebuffer(a.__webglFramebuffer[b]),j.deleteRenderbuffer(a.__webglRenderbuffer[b]);else j.deleteFramebuffer(a.__webglFramebuffer),j.deleteRenderbuffer(a.__webglRenderbuffer);L.info.memory.textures--},O=function(a){a=a.target;a.removeEventListener("dispose",O);aa(a)},aa=function(a){var b=
|
|
|
-a.program;if(void 0!==b){a.program=void 0;var c,d,e=!1,a=0;for(c=va.length;a<c;a++)if(d=va[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=va.length;a<c;a++)d=va[a],d.program!==b&&e.push(d);va=e;j.deleteProgram(b);L.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=j.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer=j.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&
|
|
|
-(a.__webglUvBuffer=j.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=j.createBuffer());a.hasPositions&&(j.bindBuffer(j.ARRAY_BUFFER,a.__webglVertexBuffer),j.bufferData(j.ARRAY_BUFFER,a.positionArray,j.DYNAMIC_DRAW),j.enableVertexAttribArray(b.attributes.position),j.vertexAttribPointer(b.attributes.position,3,j.FLOAT,!1,0,0));if(a.hasNormals){j.bindBuffer(j.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,e,f,g,i,h,k,l,m,n,p,q=3*a.count;for(p=0;p<
|
|
|
-q;p+=9)n=a.normalArray,d=n[p],e=n[p+1],f=n[p+2],g=n[p+3],h=n[p+4],l=n[p+5],i=n[p+6],k=n[p+7],m=n[p+8],d=(d+g+i)/3,e=(e+h+k)/3,f=(f+l+m)/3,n[p]=d,n[p+1]=e,n[p+2]=f,n[p+3]=d,n[p+4]=e,n[p+5]=f,n[p+6]=d,n[p+7]=e,n[p+8]=f}j.bufferData(j.ARRAY_BUFFER,a.normalArray,j.DYNAMIC_DRAW);j.enableVertexAttribArray(b.attributes.normal);j.vertexAttribPointer(b.attributes.normal,3,j.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(j.bindBuffer(j.ARRAY_BUFFER,a.__webglUvBuffer),j.bufferData(j.ARRAY_BUFFER,a.uvArray,j.DYNAMIC_DRAW),
|
|
|
-j.enableVertexAttribArray(b.attributes.uv),j.vertexAttribPointer(b.attributes.uv,2,j.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(j.bindBuffer(j.ARRAY_BUFFER,a.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,a.colorArray,j.DYNAMIC_DRAW),j.enableVertexAttribArray(b.attributes.color),j.vertexAttribPointer(b.attributes.color,3,j.FLOAT,!1,0,0));j.drawArrays(j.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(!1!==d.visible)if(c=H(a,b,c,d,f),a=c.attributes,
|
|
|
-b=!1,d=16777215*e.id+2*c.id+(d.wireframe?1:0),d!==Ma&&(Ma=d,b=!0),b&&l(),f instanceof THREE.Mesh)if(f=e.attributes.index){d=e.offsets;1<d.length&&(b=!0);for(var c=0,g=d.length;c<g;c++){var i=d[c].index;if(b){var h=e.attributes.position,m=h.itemSize;j.bindBuffer(j.ARRAY_BUFFER,h.buffer);k(a.position);j.vertexAttribPointer(a.position,m,j.FLOAT,!1,0,4*i*m);m=e.attributes.normal;if(0<=a.normal&&m){var n=m.itemSize;j.bindBuffer(j.ARRAY_BUFFER,m.buffer);k(a.normal);j.vertexAttribPointer(a.normal,n,j.FLOAT,
|
|
|
-!1,0,4*i*n)}m=e.attributes.uv;0<=a.uv&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.uv),j.vertexAttribPointer(a.uv,n,j.FLOAT,!1,0,4*i*n));m=e.attributes.color;0<=a.color&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.color),j.vertexAttribPointer(a.color,n,j.FLOAT,!1,0,4*i*n));m=e.attributes.tangent;0<=a.tangent&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.tangent),j.vertexAttribPointer(a.tangent,n,j.FLOAT,!1,0,4*i*n));j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,f.buffer)}j.drawElements(j.TRIANGLES,
|
|
|
-d[c].count,j.UNSIGNED_SHORT,2*d[c].start);L.info.render.calls++;L.info.render.vertices+=d[c].count;L.info.render.faces+=d[c].count/3}}else b&&(h=e.attributes.position,m=h.itemSize,j.bindBuffer(j.ARRAY_BUFFER,h.buffer),k(a.position),j.vertexAttribPointer(a.position,m,j.FLOAT,!1,0,0),m=e.attributes.normal,0<=a.normal&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.normal),j.vertexAttribPointer(a.normal,n,j.FLOAT,!1,0,0)),m=e.attributes.uv,0<=a.uv&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-m.buffer),k(a.uv),j.vertexAttribPointer(a.uv,n,j.FLOAT,!1,0,0)),m=e.attributes.color,0<=a.color&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.color),j.vertexAttribPointer(a.color,n,j.FLOAT,!1,0,0)),m=e.attributes.tangent,0<=a.tangent&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.tangent),j.vertexAttribPointer(a.tangent,n,j.FLOAT,!1,0,0))),j.drawArrays(j.TRIANGLES,0,h.numItems/3),L.info.render.calls++,L.info.render.vertices+=h.numItems/3,L.info.render.faces+=h.numItems/
|
|
|
-3/3;else f instanceof THREE.ParticleSystem?b&&(h=e.attributes.position,m=h.itemSize,j.bindBuffer(j.ARRAY_BUFFER,h.buffer),k(a.position),j.vertexAttribPointer(a.position,m,j.FLOAT,!1,0,0),m=e.attributes.color,0<=a.color&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.color),j.vertexAttribPointer(a.color,n,j.FLOAT,!1,0,0)),j.drawArrays(j.POINTS,0,h.numItems/3),L.info.render.calls++,L.info.render.points+=h.numItems/3):f instanceof THREE.Line&&b&&(h=e.attributes.position,m=h.itemSize,j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-h.buffer),k(a.position),j.vertexAttribPointer(a.position,m,j.FLOAT,!1,0,0),m=e.attributes.color,0<=a.color&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.color),j.vertexAttribPointer(a.color,n,j.FLOAT,!1,0,0)),j.drawArrays(j.LINE_STRIP,0,h.numItems/3),L.info.render.calls++,L.info.render.points+=h.numItems)};this.renderBuffer=function(a,b,c,d,e,f){if(!1!==d.visible){var g,i,c=H(a,b,c,d,f),b=c.attributes,a=!1,c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==Ma&&(Ma=c,a=!0);a&&l();if(!d.morphTargets&&
|
|
|
-0<=b.position)a&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglVertexBuffer),k(b.position),j.vertexAttribPointer(b.position,3,j.FLOAT,!1,0,0));else if(f.morphTargetBase){c=d.program.attributes;-1!==f.morphTargetBase&&0<=c.position?(j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]),k(c.position),j.vertexAttribPointer(c.position,3,j.FLOAT,!1,0,0)):0<=c.position&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglVertexBuffer),k(c.position),j.vertexAttribPointer(c.position,3,j.FLOAT,!1,0,0));if(f.morphTargetForcedOrder.length){var h=
|
|
|
-0;i=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;h<d.numSupportedMorphTargets&&h<i.length;)0<=c["morphTarget"+h]&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[i[h]]),k(c["morphTarget"+h]),j.vertexAttribPointer(c["morphTarget"+h],3,j.FLOAT,!1,0,0)),0<=c["morphNormal"+h]&&d.morphNormals&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[i[h]]),k(c["morphNormal"+h]),j.vertexAttribPointer(c["morphNormal"+h],3,j.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[h]=g[i[h]],h++}else{i=
|
|
|
-[];g=f.morphTargetInfluences;var n,p=g.length;for(n=0;n<p;n++)h=g[n],0<h&&i.push([h,n]);i.length>d.numSupportedMorphTargets?(i.sort(m),i.length=d.numSupportedMorphTargets):i.length>d.numSupportedMorphNormals?i.sort(m):0===i.length&&i.push([0,0]);for(h=0;h<d.numSupportedMorphTargets;)i[h]?(n=i[h][1],0<=c["morphTarget"+h]&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[n]),k(c["morphTarget"+h]),j.vertexAttribPointer(c["morphTarget"+h],3,j.FLOAT,!1,0,0)),0<=c["morphNormal"+h]&&d.morphNormals&&
|
|
|
-(j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[n]),k(c["morphNormal"+h]),j.vertexAttribPointer(c["morphNormal"+h],3,j.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[h]=g[n]):f.__webglMorphTargetInfluences[h]=0,h++}null!==d.program.uniforms.morphTargetInfluences&&j.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList){g=0;for(i=e.__webglCustomAttributesList.length;g<i;g++)c=e.__webglCustomAttributesList[g],0<=b[c.buffer.belongsToAttribute]&&
|
|
|
-(j.bindBuffer(j.ARRAY_BUFFER,c.buffer),k(b[c.buffer.belongsToAttribute]),j.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,j.FLOAT,!1,0,0))}0<=b.color&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglColorBuffer),k(b.color),j.vertexAttribPointer(b.color,3,j.FLOAT,!1,0,0));0<=b.normal&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglNormalBuffer),k(b.normal),j.vertexAttribPointer(b.normal,3,j.FLOAT,!1,0,0));0<=b.tangent&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglTangentBuffer),k(b.tangent),j.vertexAttribPointer(b.tangent,
|
|
|
-4,j.FLOAT,!1,0,0));0<=b.uv&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglUVBuffer),k(b.uv),j.vertexAttribPointer(b.uv,2,j.FLOAT,!1,0,0));0<=b.uv2&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglUV2Buffer),k(b.uv2),j.vertexAttribPointer(b.uv2,2,j.FLOAT,!1,0,0));d.skinning&&(0<=b.skinIndex&&0<=b.skinWeight)&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),k(b.skinIndex),j.vertexAttribPointer(b.skinIndex,4,j.FLOAT,!1,0,0),j.bindBuffer(j.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),k(b.skinWeight),j.vertexAttribPointer(b.skinWeight,
|
|
|
-4,j.FLOAT,!1,0,0));0<=b.lineDistance&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglLineDistanceBuffer),k(b.lineDistance),j.vertexAttribPointer(b.lineDistance,1,j.FLOAT,!1,0,0))}f instanceof THREE.Mesh?(d.wireframe?(d=d.wireframeLinewidth,d!==eb&&(j.lineWidth(d),eb=d),a&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),j.drawElements(j.LINES,e.__webglLineCount,j.UNSIGNED_SHORT,0)):(a&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),j.drawElements(j.TRIANGLES,e.__webglFaceCount,j.UNSIGNED_SHORT,
|
|
|
-0)),L.info.render.calls++,L.info.render.vertices+=e.__webglFaceCount,L.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?j.LINE_STRIP:j.LINES,d=d.linewidth,d!==eb&&(j.lineWidth(d),eb=d),j.drawArrays(f,0,e.__webglLineCount),L.info.render.calls++):f instanceof THREE.ParticleSystem?(j.drawArrays(j.POINTS,0,e.__webglParticleCount),L.info.render.calls++,L.info.render.points+=e.__webglParticleCount):f instanceof THREE.Ribbon&&(j.drawArrays(j.TRIANGLE_STRIP,0,e.__webglVertexCount),
|
|
|
-L.info.render.calls++)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e,f,g,i,h=a.__lights,k=a.fog;ta=-1;$a=!0;this.autoUpdateScene&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);fc.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Ea.setFromMatrix(fc);this.autoUpdateObjects&&this.initWebGLObjects(a);s(this.renderPluginsPre,
|
|
|
-a,b);L.info.render.calls=0;L.info.render.vertices=0;L.info.render.faces=0;L.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);i=a.__webglObjects;d=0;for(e=i.length;d<e;d++)if(f=i[d],g=f.object,f.render=!1,g.visible&&(!(g instanceof THREE.Mesh||g instanceof THREE.ParticleSystem)||!g.frustumCulled||Ea.intersectsObject(g))){A(g,b);var m=f,l=m.buffer,p=void 0,t=p=void 0,t=m.object.material;if(t instanceof THREE.MeshFaceMaterial)p=
|
|
|
-l.materialIndex,p=t.materials[p],p.transparent?(m.transparent=p,m.opaque=null):(m.opaque=p,m.transparent=null);else if(p=t)p.transparent?(m.transparent=p,m.opaque=null):(m.opaque=p,m.transparent=null);f.render=!0;!0===this.sortObjects&&(null!==g.renderDepth?f.z=g.renderDepth:(gc.copy(g.matrixWorld.getPosition()),gc.applyProjection(fc),f.z=gc.z),f.id=g.id)}this.sortObjects&&i.sort(n);i=a.__webglObjectsImmediate;d=0;for(e=i.length;d<e;d++)f=i[d],g=f.object,g.visible&&(A(g,b),g=f.object.material,g.transparent?
|
|
|
-(f.transparent=g,f.opaque=null):(f.opaque=g,f.transparent=null));a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),I(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),q(a.__webglObjects,!1,"",b,h,k,!0,d),r(a.__webglObjectsImmediate,"",b,h,k,!1,d)):(d=null,this.setBlending(THREE.NoBlending),q(a.__webglObjects,!0,"opaque",b,h,k,!1,d),r(a.__webglObjectsImmediate,"opaque",
|
|
|
-b,h,k,!1,d),q(a.__webglObjects,!1,"transparent",b,h,k,!0,d),r(a.__webglObjectsImmediate,"transparent",b,h,k,!0,d));s(this.renderPluginsPost,a,b);c&&(c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter)&&(c instanceof THREE.WebGLRenderTargetCube?(j.bindTexture(j.TEXTURE_CUBE_MAP,c.__webglTexture),j.generateMipmap(j.TEXTURE_CUBE_MAP),j.bindTexture(j.TEXTURE_CUBE_MAP,null)):(j.bindTexture(j.TEXTURE_2D,c.__webglTexture),j.generateMipmap(j.TEXTURE_2D),j.bindTexture(j.TEXTURE_2D,
|
|
|
-null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=H(a,b,c,d,e);Ma=-1;L.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,j,Ea):e.render(function(a){L.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){a.__webglObjects||(a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[]);for(;a.__objectsAdded.length;){var b=a.__objectsAdded[0],k=a,l=void 0,n=void 0,q=void 0,s=void 0;
|
|
|
-if(!b.__webglInit)if(b.__webglInit=!0,b._modelViewMatrix=new THREE.Matrix4,b._normalMatrix=new THREE.Matrix3,void 0!==b.geometry&&void 0===b.geometry.__webglInit&&(b.geometry.__webglInit=!0,b.geometry.addEventListener("dispose",xd)),b instanceof THREE.Mesh)if(n=b.geometry,q=b.material,n instanceof THREE.Geometry){if(void 0===n.geometryGroups){var r=n,z=void 0,C=void 0,B=void 0,A=void 0,F=void 0,E=void 0,G={},H=r.morphTargets.length,I=r.morphNormals.length,K=q instanceof THREE.MeshFaceMaterial;r.geometryGroups=
|
|
|
-{};z=0;for(C=r.faces.length;z<C;z++)B=r.faces[z],A=K?B.materialIndex:0,void 0===G[A]&&(G[A]={hash:A,counter:0}),E=G[A].hash+"_"+G[A].counter,void 0===r.geometryGroups[E]&&(r.geometryGroups[E]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:H,numMorphNormals:I}),F=B instanceof THREE.Face3?3:4,65535<r.geometryGroups[E].vertices+F&&(G[A].counter+=1,E=G[A].hash+"_"+G[A].counter,void 0===r.geometryGroups[E]&&(r.geometryGroups[E]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:H,
|
|
|
-numMorphNormals:I})),B instanceof THREE.Face3?r.geometryGroups[E].faces3.push(z):r.geometryGroups[E].faces4.push(z),r.geometryGroups[E].vertices+=F;r.geometryGroupsList=[];var M=void 0;for(M in r.geometryGroups)r.geometryGroups[M].id=ja++,r.geometryGroupsList.push(r.geometryGroups[M])}for(l in n.geometryGroups)if(s=n.geometryGroups[l],!s.__webglVertexBuffer){var J=s;J.__webglVertexBuffer=j.createBuffer();J.__webglNormalBuffer=j.createBuffer();J.__webglTangentBuffer=j.createBuffer();J.__webglColorBuffer=
|
|
|
-j.createBuffer();J.__webglUVBuffer=j.createBuffer();J.__webglUV2Buffer=j.createBuffer();J.__webglSkinIndicesBuffer=j.createBuffer();J.__webglSkinWeightsBuffer=j.createBuffer();J.__webglFaceBuffer=j.createBuffer();J.__webglLineBuffer=j.createBuffer();var O=void 0,T=void 0;if(J.numMorphTargets){J.__webglMorphTargetsBuffers=[];O=0;for(T=J.numMorphTargets;O<T;O++)J.__webglMorphTargetsBuffers.push(j.createBuffer())}if(J.numMorphNormals){J.__webglMorphNormalsBuffers=[];O=0;for(T=J.numMorphNormals;O<T;O++)J.__webglMorphNormalsBuffers.push(j.createBuffer())}L.info.memory.geometries++;
|
|
|
-d(s,b);n.verticesNeedUpdate=!0;n.morphTargetsNeedUpdate=!0;n.elementsNeedUpdate=!0;n.uvsNeedUpdate=!0;n.normalsNeedUpdate=!0;n.tangentsNeedUpdate=!0;n.colorsNeedUpdate=!0}}else n instanceof THREE.BufferGeometry&&h(n);else if(b instanceof THREE.Ribbon){if(n=b.geometry,!n.__webglVertexBuffer){var X=n;X.__webglVertexBuffer=j.createBuffer();X.__webglColorBuffer=j.createBuffer();X.__webglNormalBuffer=j.createBuffer();L.info.memory.geometries++;var ga=n,W=b,va=ga.vertices.length;ga.__vertexArray=new Float32Array(3*
|
|
|
-va);ga.__colorArray=new Float32Array(3*va);ga.__normalArray=new Float32Array(3*va);ga.__webglVertexCount=va;c(ga,W);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0;n.normalsNeedUpdate=!0}}else if(b instanceof THREE.Line){if(n=b.geometry,!n.__webglVertexBuffer)if(n instanceof THREE.Geometry){var V=n;V.__webglVertexBuffer=j.createBuffer();V.__webglColorBuffer=j.createBuffer();V.__webglLineDistanceBuffer=j.createBuffer();L.info.memory.geometries++;var Y=n,da=b,aa=Y.vertices.length;Y.__vertexArray=new Float32Array(3*
|
|
|
-aa);Y.__colorArray=new Float32Array(3*aa);Y.__lineDistanceArray=new Float32Array(1*aa);Y.__webglLineCount=aa;c(Y,da);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0;n.lineDistancesNeedUpdate=!0}else n instanceof THREE.BufferGeometry&&h(n)}else if(b instanceof THREE.ParticleSystem&&(n=b.geometry,!n.__webglVertexBuffer))if(n instanceof THREE.Geometry){var ma=n;ma.__webglVertexBuffer=j.createBuffer();ma.__webglColorBuffer=j.createBuffer();L.info.memory.geometries++;var ha=n,ka=b,Xa=ha.vertices.length;
|
|
|
-ha.__vertexArray=new Float32Array(3*Xa);ha.__colorArray=new Float32Array(3*Xa);ha.__sortArray=[];ha.__webglParticleCount=Xa;c(ha,ka);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0}else n instanceof THREE.BufferGeometry&&h(n);if(!b.__webglActive){if(b instanceof THREE.Mesh)if(n=b.geometry,n instanceof THREE.BufferGeometry)p(k.__webglObjects,n,b);else{if(n instanceof THREE.Geometry)for(l in n.geometryGroups)s=n.geometryGroups[l],p(k.__webglObjects,s,b)}else b instanceof THREE.Ribbon||b instanceof THREE.Line||
|
|
|
-b instanceof THREE.ParticleSystem?(n=b.geometry,p(k.__webglObjects,n,b)):b instanceof THREE.ImmediateRenderObject||b.immediateRenderCallback?k.__webglObjectsImmediate.push({object:b,opaque:null,transparent:null}):b instanceof THREE.Sprite?k.__webglSprites.push(b):b instanceof THREE.LensFlare&&k.__webglFlares.push(b);b.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var fa=a.__objectsRemoved[0],lb=a;fa instanceof THREE.Mesh||fa instanceof THREE.ParticleSystem||fa instanceof
|
|
|
-THREE.Ribbon||fa instanceof THREE.Line?w(lb.__webglObjects,fa):fa instanceof THREE.Sprite?v(lb.__webglSprites,fa):fa instanceof THREE.LensFlare?v(lb.__webglFlares,fa):(fa instanceof THREE.ImmediateRenderObject||fa.immediateRenderCallback)&&w(lb.__webglObjectsImmediate,fa);fa.__webglActive=!1;a.__objectsRemoved.splice(0,1)}for(var ra=0,Ma=a.__webglObjects.length;ra<Ma;ra++){var ia=a.__webglObjects[ra].object,N=ia.geometry,ua=void 0,oa=void 0,ta=void 0;if(ia instanceof THREE.Mesh)if(N instanceof THREE.BufferGeometry)(N.verticesNeedUpdate||
|
|
|
-N.elementsNeedUpdate||N.uvsNeedUpdate||N.normalsNeedUpdate||N.colorsNeedUpdate||N.tangentsNeedUpdate)&&i(N,j.DYNAMIC_DRAW,!N.dynamic),N.verticesNeedUpdate=!1,N.elementsNeedUpdate=!1,N.uvsNeedUpdate=!1,N.normalsNeedUpdate=!1,N.colorsNeedUpdate=!1,N.tangentsNeedUpdate=!1;else{for(var Da=0,Gb=N.geometryGroupsList.length;Da<Gb;Da++)if(ua=N.geometryGroupsList[Da],ta=e(ia,ua),N.buffersNeedUpdate&&d(ua,ia),oa=ta.attributes&&t(ta),N.verticesNeedUpdate||N.morphTargetsNeedUpdate||N.elementsNeedUpdate||N.uvsNeedUpdate||
|
|
|
-N.normalsNeedUpdate||N.colorsNeedUpdate||N.tangentsNeedUpdate||oa){var sa=ua,Ha=ia,qa=j.DYNAMIC_DRAW,Na=!N.dynamic,Ea=ta;if(sa.__inittedArrays){var Ta=f(Ea),Ya=Ea.vertexColors?Ea.vertexColors:!1,$a=g(Ea),ab=Ta===THREE.SmoothShading,D=void 0,U=void 0,Qa=void 0,P=void 0,Za=void 0,Ua=void 0,Ra=void 0,nb=void 0,eb=void 0,ob=void 0,pb=void 0,Q=void 0,R=void 0,S=void 0,pa=void 0,Lb=void 0,Mb=void 0,Nb=void 0,wb=void 0,Ob=void 0,Pb=void 0,Qb=void 0,xb=void 0,Rb=void 0,Sb=void 0,Tb=void 0,yb=void 0,Ub=void 0,
|
|
|
-Vb=void 0,Wb=void 0,Hb=void 0,Xb=void 0,Yb=void 0,Zb=void 0,Ib=void 0,ya=void 0,ec=void 0,nc=void 0,zc=void 0,Ac=void 0,bb=void 0,mc=void 0,Va=void 0,Wa=void 0,oc=void 0,hc=void 0,Oa=0,Sa=0,ic=0,jc=0,Cb=0,jb=0,Ba=0,mb=0,Pa=0,$=0,la=0,y=0,za=void 0,cb=sa.__vertexArray,Fc=sa.__uvArray,Gc=sa.__uv2Array,Db=sa.__normalArray,Ia=sa.__tangentArray,db=sa.__colorArray,Ja=sa.__skinIndexArray,Ka=sa.__skinWeightArray,sc=sa.__morphTargetsArrays,tc=sa.__morphNormalsArrays,pd=sa.__webglCustomAttributesList,u=void 0,
|
|
|
-$b=sa.__faceArray,vb=sa.__lineArray,qb=Ha.geometry,Oc=qb.elementsNeedUpdate,Ec=qb.uvsNeedUpdate,Pc=qb.normalsNeedUpdate,Qc=qb.tangentsNeedUpdate,Rc=qb.colorsNeedUpdate,hd=qb.morphTargetsNeedUpdate,uc=qb.vertices,wa=sa.faces3,xa=sa.faces4,kb=qb.faces,qd=qb.faceVertexUvs[0],rd=qb.faceVertexUvs[1],vc=qb.skinIndices,pc=qb.skinWeights,qc=qb.morphTargets,Sc=qb.morphNormals;if(qb.verticesNeedUpdate){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],Q=uc[P.a],R=uc[P.b],S=uc[P.c],cb[Sa]=Q.x,cb[Sa+1]=Q.y,cb[Sa+2]=Q.z,
|
|
|
-cb[Sa+3]=R.x,cb[Sa+4]=R.y,cb[Sa+5]=R.z,cb[Sa+6]=S.x,cb[Sa+7]=S.y,cb[Sa+8]=S.z,Sa+=9;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],Q=uc[P.a],R=uc[P.b],S=uc[P.c],pa=uc[P.d],cb[Sa]=Q.x,cb[Sa+1]=Q.y,cb[Sa+2]=Q.z,cb[Sa+3]=R.x,cb[Sa+4]=R.y,cb[Sa+5]=R.z,cb[Sa+6]=S.x,cb[Sa+7]=S.y,cb[Sa+8]=S.z,cb[Sa+9]=pa.x,cb[Sa+10]=pa.y,cb[Sa+11]=pa.z,Sa+=12;j.bindBuffer(j.ARRAY_BUFFER,sa.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,cb,qa)}if(hd){bb=0;for(mc=qc.length;bb<mc;bb++){D=la=0;for(U=wa.length;D<U;D++)oc=wa[D],P=
|
|
|
-kb[oc],Q=qc[bb].vertices[P.a],R=qc[bb].vertices[P.b],S=qc[bb].vertices[P.c],Va=sc[bb],Va[la]=Q.x,Va[la+1]=Q.y,Va[la+2]=Q.z,Va[la+3]=R.x,Va[la+4]=R.y,Va[la+5]=R.z,Va[la+6]=S.x,Va[la+7]=S.y,Va[la+8]=S.z,Ea.morphNormals&&(ab?(hc=Sc[bb].vertexNormals[oc],Ob=hc.a,Pb=hc.b,Qb=hc.c):Qb=Pb=Ob=Sc[bb].faceNormals[oc],Wa=tc[bb],Wa[la]=Ob.x,Wa[la+1]=Ob.y,Wa[la+2]=Ob.z,Wa[la+3]=Pb.x,Wa[la+4]=Pb.y,Wa[la+5]=Pb.z,Wa[la+6]=Qb.x,Wa[la+7]=Qb.y,Wa[la+8]=Qb.z),la+=9;D=0;for(U=xa.length;D<U;D++)oc=xa[D],P=kb[oc],Q=qc[bb].vertices[P.a],
|
|
|
-R=qc[bb].vertices[P.b],S=qc[bb].vertices[P.c],pa=qc[bb].vertices[P.d],Va=sc[bb],Va[la]=Q.x,Va[la+1]=Q.y,Va[la+2]=Q.z,Va[la+3]=R.x,Va[la+4]=R.y,Va[la+5]=R.z,Va[la+6]=S.x,Va[la+7]=S.y,Va[la+8]=S.z,Va[la+9]=pa.x,Va[la+10]=pa.y,Va[la+11]=pa.z,Ea.morphNormals&&(ab?(hc=Sc[bb].vertexNormals[oc],Ob=hc.a,Pb=hc.b,Qb=hc.c,xb=hc.d):xb=Qb=Pb=Ob=Sc[bb].faceNormals[oc],Wa=tc[bb],Wa[la]=Ob.x,Wa[la+1]=Ob.y,Wa[la+2]=Ob.z,Wa[la+3]=Pb.x,Wa[la+4]=Pb.y,Wa[la+5]=Pb.z,Wa[la+6]=Qb.x,Wa[la+7]=Qb.y,Wa[la+8]=Qb.z,Wa[la+9]=xb.x,
|
|
|
-Wa[la+10]=xb.y,Wa[la+11]=xb.z),la+=12;j.bindBuffer(j.ARRAY_BUFFER,sa.__webglMorphTargetsBuffers[bb]);j.bufferData(j.ARRAY_BUFFER,sc[bb],qa);Ea.morphNormals&&(j.bindBuffer(j.ARRAY_BUFFER,sa.__webglMorphNormalsBuffers[bb]),j.bufferData(j.ARRAY_BUFFER,tc[bb],qa))}}if(pc.length){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],Ub=pc[P.a],Vb=pc[P.b],Wb=pc[P.c],Ka[$]=Ub.x,Ka[$+1]=Ub.y,Ka[$+2]=Ub.z,Ka[$+3]=Ub.w,Ka[$+4]=Vb.x,Ka[$+5]=Vb.y,Ka[$+6]=Vb.z,Ka[$+7]=Vb.w,Ka[$+8]=Wb.x,Ka[$+9]=Wb.y,Ka[$+10]=Wb.z,Ka[$+11]=Wb.w,
|
|
|
-Xb=vc[P.a],Yb=vc[P.b],Zb=vc[P.c],Ja[$]=Xb.x,Ja[$+1]=Xb.y,Ja[$+2]=Xb.z,Ja[$+3]=Xb.w,Ja[$+4]=Yb.x,Ja[$+5]=Yb.y,Ja[$+6]=Yb.z,Ja[$+7]=Yb.w,Ja[$+8]=Zb.x,Ja[$+9]=Zb.y,Ja[$+10]=Zb.z,Ja[$+11]=Zb.w,$+=12;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],Ub=pc[P.a],Vb=pc[P.b],Wb=pc[P.c],Hb=pc[P.d],Ka[$]=Ub.x,Ka[$+1]=Ub.y,Ka[$+2]=Ub.z,Ka[$+3]=Ub.w,Ka[$+4]=Vb.x,Ka[$+5]=Vb.y,Ka[$+6]=Vb.z,Ka[$+7]=Vb.w,Ka[$+8]=Wb.x,Ka[$+9]=Wb.y,Ka[$+10]=Wb.z,Ka[$+11]=Wb.w,Ka[$+12]=Hb.x,Ka[$+13]=Hb.y,Ka[$+14]=Hb.z,Ka[$+15]=Hb.w,Xb=vc[P.a],
|
|
|
-Yb=vc[P.b],Zb=vc[P.c],Ib=vc[P.d],Ja[$]=Xb.x,Ja[$+1]=Xb.y,Ja[$+2]=Xb.z,Ja[$+3]=Xb.w,Ja[$+4]=Yb.x,Ja[$+5]=Yb.y,Ja[$+6]=Yb.z,Ja[$+7]=Yb.w,Ja[$+8]=Zb.x,Ja[$+9]=Zb.y,Ja[$+10]=Zb.z,Ja[$+11]=Zb.w,Ja[$+12]=Ib.x,Ja[$+13]=Ib.y,Ja[$+14]=Ib.z,Ja[$+15]=Ib.w,$+=16;0<$&&(j.bindBuffer(j.ARRAY_BUFFER,sa.__webglSkinIndicesBuffer),j.bufferData(j.ARRAY_BUFFER,Ja,qa),j.bindBuffer(j.ARRAY_BUFFER,sa.__webglSkinWeightsBuffer),j.bufferData(j.ARRAY_BUFFER,Ka,qa))}if(Rc&&Ya){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],Ra=P.vertexColors,
|
|
|
-nb=P.color,3===Ra.length&&Ya===THREE.VertexColors?(Rb=Ra[0],Sb=Ra[1],Tb=Ra[2]):Tb=Sb=Rb=nb,db[Pa]=Rb.r,db[Pa+1]=Rb.g,db[Pa+2]=Rb.b,db[Pa+3]=Sb.r,db[Pa+4]=Sb.g,db[Pa+5]=Sb.b,db[Pa+6]=Tb.r,db[Pa+7]=Tb.g,db[Pa+8]=Tb.b,Pa+=9;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],Ra=P.vertexColors,nb=P.color,4===Ra.length&&Ya===THREE.VertexColors?(Rb=Ra[0],Sb=Ra[1],Tb=Ra[2],yb=Ra[3]):yb=Tb=Sb=Rb=nb,db[Pa]=Rb.r,db[Pa+1]=Rb.g,db[Pa+2]=Rb.b,db[Pa+3]=Sb.r,db[Pa+4]=Sb.g,db[Pa+5]=Sb.b,db[Pa+6]=Tb.r,db[Pa+7]=Tb.g,db[Pa+8]=
|
|
|
-Tb.b,db[Pa+9]=yb.r,db[Pa+10]=yb.g,db[Pa+11]=yb.b,Pa+=12;0<Pa&&(j.bindBuffer(j.ARRAY_BUFFER,sa.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,db,qa))}if(Qc&&qb.hasTangents){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],eb=P.vertexTangents,Lb=eb[0],Mb=eb[1],Nb=eb[2],Ia[Ba]=Lb.x,Ia[Ba+1]=Lb.y,Ia[Ba+2]=Lb.z,Ia[Ba+3]=Lb.w,Ia[Ba+4]=Mb.x,Ia[Ba+5]=Mb.y,Ia[Ba+6]=Mb.z,Ia[Ba+7]=Mb.w,Ia[Ba+8]=Nb.x,Ia[Ba+9]=Nb.y,Ia[Ba+10]=Nb.z,Ia[Ba+11]=Nb.w,Ba+=12;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],eb=P.vertexTangents,Lb=eb[0],
|
|
|
-Mb=eb[1],Nb=eb[2],wb=eb[3],Ia[Ba]=Lb.x,Ia[Ba+1]=Lb.y,Ia[Ba+2]=Lb.z,Ia[Ba+3]=Lb.w,Ia[Ba+4]=Mb.x,Ia[Ba+5]=Mb.y,Ia[Ba+6]=Mb.z,Ia[Ba+7]=Mb.w,Ia[Ba+8]=Nb.x,Ia[Ba+9]=Nb.y,Ia[Ba+10]=Nb.z,Ia[Ba+11]=Nb.w,Ia[Ba+12]=wb.x,Ia[Ba+13]=wb.y,Ia[Ba+14]=wb.z,Ia[Ba+15]=wb.w,Ba+=16;j.bindBuffer(j.ARRAY_BUFFER,sa.__webglTangentBuffer);j.bufferData(j.ARRAY_BUFFER,Ia,qa)}if(Pc&&Ta){D=0;for(U=wa.length;D<U;D++)if(P=kb[wa[D]],Za=P.vertexNormals,Ua=P.normal,3===Za.length&&ab)for(ya=0;3>ya;ya++)nc=Za[ya],Db[jb]=nc.x,Db[jb+1]=
|
|
|
-nc.y,Db[jb+2]=nc.z,jb+=3;else for(ya=0;3>ya;ya++)Db[jb]=Ua.x,Db[jb+1]=Ua.y,Db[jb+2]=Ua.z,jb+=3;D=0;for(U=xa.length;D<U;D++)if(P=kb[xa[D]],Za=P.vertexNormals,Ua=P.normal,4===Za.length&&ab)for(ya=0;4>ya;ya++)nc=Za[ya],Db[jb]=nc.x,Db[jb+1]=nc.y,Db[jb+2]=nc.z,jb+=3;else for(ya=0;4>ya;ya++)Db[jb]=Ua.x,Db[jb+1]=Ua.y,Db[jb+2]=Ua.z,jb+=3;j.bindBuffer(j.ARRAY_BUFFER,sa.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Db,qa)}if(Ec&&qd&&$a){D=0;for(U=wa.length;D<U;D++)if(Qa=wa[D],ob=qd[Qa],void 0!==ob)for(ya=
|
|
|
-0;3>ya;ya++)zc=ob[ya],Fc[ic]=zc.x,Fc[ic+1]=zc.y,ic+=2;D=0;for(U=xa.length;D<U;D++)if(Qa=xa[D],ob=qd[Qa],void 0!==ob)for(ya=0;4>ya;ya++)zc=ob[ya],Fc[ic]=zc.x,Fc[ic+1]=zc.y,ic+=2;0<ic&&(j.bindBuffer(j.ARRAY_BUFFER,sa.__webglUVBuffer),j.bufferData(j.ARRAY_BUFFER,Fc,qa))}if(Ec&&rd&&$a){D=0;for(U=wa.length;D<U;D++)if(Qa=wa[D],pb=rd[Qa],void 0!==pb)for(ya=0;3>ya;ya++)Ac=pb[ya],Gc[jc]=Ac.x,Gc[jc+1]=Ac.y,jc+=2;D=0;for(U=xa.length;D<U;D++)if(Qa=xa[D],pb=rd[Qa],void 0!==pb)for(ya=0;4>ya;ya++)Ac=pb[ya],Gc[jc]=
|
|
|
-Ac.x,Gc[jc+1]=Ac.y,jc+=2;0<jc&&(j.bindBuffer(j.ARRAY_BUFFER,sa.__webglUV2Buffer),j.bufferData(j.ARRAY_BUFFER,Gc,qa))}if(Oc){D=0;for(U=wa.length;D<U;D++)$b[Cb]=Oa,$b[Cb+1]=Oa+1,$b[Cb+2]=Oa+2,Cb+=3,vb[mb]=Oa,vb[mb+1]=Oa+1,vb[mb+2]=Oa,vb[mb+3]=Oa+2,vb[mb+4]=Oa+1,vb[mb+5]=Oa+2,mb+=6,Oa+=3;D=0;for(U=xa.length;D<U;D++)$b[Cb]=Oa,$b[Cb+1]=Oa+1,$b[Cb+2]=Oa+3,$b[Cb+3]=Oa+1,$b[Cb+4]=Oa+2,$b[Cb+5]=Oa+3,Cb+=6,vb[mb]=Oa,vb[mb+1]=Oa+1,vb[mb+2]=Oa,vb[mb+3]=Oa+3,vb[mb+4]=Oa+1,vb[mb+5]=Oa+2,vb[mb+6]=Oa+2,vb[mb+7]=
|
|
|
-Oa+3,mb+=8,Oa+=4;j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,sa.__webglFaceBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,$b,qa);j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,sa.__webglLineBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,vb,qa)}if(pd){ya=0;for(ec=pd.length;ya<ec;ya++)if(u=pd[ya],u.__original.needsUpdate){y=0;if(1===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],u.array[y]=u.value[P.a],u.array[y+1]=u.value[P.b],u.array[y+2]=u.value[P.c],y+=3;D=0;for(U=xa.length;D<
|
|
|
-U;D++)P=kb[xa[D]],u.array[y]=u.value[P.a],u.array[y+1]=u.value[P.b],u.array[y+2]=u.value[P.c],u.array[y+3]=u.value[P.d],y+=4}else{if("faces"===u.boundTo){D=0;for(U=wa.length;D<U;D++)za=u.value[wa[D]],u.array[y]=za,u.array[y+1]=za,u.array[y+2]=za,y+=3;D=0;for(U=xa.length;D<U;D++)za=u.value[xa[D]],u.array[y]=za,u.array[y+1]=za,u.array[y+2]=za,u.array[y+3]=za,y+=4}}else if(2===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],Q=u.value[P.a],R=u.value[P.b],
|
|
|
-S=u.value[P.c],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=R.x,u.array[y+3]=R.y,u.array[y+4]=S.x,u.array[y+5]=S.y,y+=6;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],Q=u.value[P.a],R=u.value[P.b],S=u.value[P.c],pa=u.value[P.d],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=R.x,u.array[y+3]=R.y,u.array[y+4]=S.x,u.array[y+5]=S.y,u.array[y+6]=pa.x,u.array[y+7]=pa.y,y+=8}else{if("faces"===u.boundTo){D=0;for(U=wa.length;D<U;D++)S=R=Q=za=u.value[wa[D]],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=R.x,u.array[y+
|
|
|
-3]=R.y,u.array[y+4]=S.x,u.array[y+5]=S.y,y+=6;D=0;for(U=xa.length;D<U;D++)pa=S=R=Q=za=u.value[xa[D]],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=R.x,u.array[y+3]=R.y,u.array[y+4]=S.x,u.array[y+5]=S.y,u.array[y+6]=pa.x,u.array[y+7]=pa.y,y+=8}}else if(3===u.size){var Z;Z="c"===u.type?["r","g","b"]:["x","y","z"];if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],Q=u.value[P.a],R=u.value[P.b],S=u.value[P.c],u.array[y]=Q[Z[0]],u.array[y+1]=Q[Z[1]],u.array[y+2]=Q[Z[2]],
|
|
|
-u.array[y+3]=R[Z[0]],u.array[y+4]=R[Z[1]],u.array[y+5]=R[Z[2]],u.array[y+6]=S[Z[0]],u.array[y+7]=S[Z[1]],u.array[y+8]=S[Z[2]],y+=9;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],Q=u.value[P.a],R=u.value[P.b],S=u.value[P.c],pa=u.value[P.d],u.array[y]=Q[Z[0]],u.array[y+1]=Q[Z[1]],u.array[y+2]=Q[Z[2]],u.array[y+3]=R[Z[0]],u.array[y+4]=R[Z[1]],u.array[y+5]=R[Z[2]],u.array[y+6]=S[Z[0]],u.array[y+7]=S[Z[1]],u.array[y+8]=S[Z[2]],u.array[y+9]=pa[Z[0]],u.array[y+10]=pa[Z[1]],u.array[y+11]=pa[Z[2]],y+=12}else if("faces"===
|
|
|
-u.boundTo){D=0;for(U=wa.length;D<U;D++)S=R=Q=za=u.value[wa[D]],u.array[y]=Q[Z[0]],u.array[y+1]=Q[Z[1]],u.array[y+2]=Q[Z[2]],u.array[y+3]=R[Z[0]],u.array[y+4]=R[Z[1]],u.array[y+5]=R[Z[2]],u.array[y+6]=S[Z[0]],u.array[y+7]=S[Z[1]],u.array[y+8]=S[Z[2]],y+=9;D=0;for(U=xa.length;D<U;D++)pa=S=R=Q=za=u.value[xa[D]],u.array[y]=Q[Z[0]],u.array[y+1]=Q[Z[1]],u.array[y+2]=Q[Z[2]],u.array[y+3]=R[Z[0]],u.array[y+4]=R[Z[1]],u.array[y+5]=R[Z[2]],u.array[y+6]=S[Z[0]],u.array[y+7]=S[Z[1]],u.array[y+8]=S[Z[2]],u.array[y+
|
|
|
-9]=pa[Z[0]],u.array[y+10]=pa[Z[1]],u.array[y+11]=pa[Z[2]],y+=12}else if("faceVertices"===u.boundTo){D=0;for(U=wa.length;D<U;D++)za=u.value[wa[D]],Q=za[0],R=za[1],S=za[2],u.array[y]=Q[Z[0]],u.array[y+1]=Q[Z[1]],u.array[y+2]=Q[Z[2]],u.array[y+3]=R[Z[0]],u.array[y+4]=R[Z[1]],u.array[y+5]=R[Z[2]],u.array[y+6]=S[Z[0]],u.array[y+7]=S[Z[1]],u.array[y+8]=S[Z[2]],y+=9;D=0;for(U=xa.length;D<U;D++)za=u.value[xa[D]],Q=za[0],R=za[1],S=za[2],pa=za[3],u.array[y]=Q[Z[0]],u.array[y+1]=Q[Z[1]],u.array[y+2]=Q[Z[2]],
|
|
|
-u.array[y+3]=R[Z[0]],u.array[y+4]=R[Z[1]],u.array[y+5]=R[Z[2]],u.array[y+6]=S[Z[0]],u.array[y+7]=S[Z[1]],u.array[y+8]=S[Z[2]],u.array[y+9]=pa[Z[0]],u.array[y+10]=pa[Z[1]],u.array[y+11]=pa[Z[2]],y+=12}}else if(4===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],Q=u.value[P.a],R=u.value[P.b],S=u.value[P.c],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=Q.z,u.array[y+3]=Q.w,u.array[y+4]=R.x,u.array[y+5]=R.y,u.array[y+6]=R.z,u.array[y+7]=R.w,u.array[y+8]=S.x,
|
|
|
-u.array[y+9]=S.y,u.array[y+10]=S.z,u.array[y+11]=S.w,y+=12;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],Q=u.value[P.a],R=u.value[P.b],S=u.value[P.c],pa=u.value[P.d],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=Q.z,u.array[y+3]=Q.w,u.array[y+4]=R.x,u.array[y+5]=R.y,u.array[y+6]=R.z,u.array[y+7]=R.w,u.array[y+8]=S.x,u.array[y+9]=S.y,u.array[y+10]=S.z,u.array[y+11]=S.w,u.array[y+12]=pa.x,u.array[y+13]=pa.y,u.array[y+14]=pa.z,u.array[y+15]=pa.w,y+=16}else if("faces"===u.boundTo){D=0;for(U=wa.length;D<U;D++)S=
|
|
|
-R=Q=za=u.value[wa[D]],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=Q.z,u.array[y+3]=Q.w,u.array[y+4]=R.x,u.array[y+5]=R.y,u.array[y+6]=R.z,u.array[y+7]=R.w,u.array[y+8]=S.x,u.array[y+9]=S.y,u.array[y+10]=S.z,u.array[y+11]=S.w,y+=12;D=0;for(U=xa.length;D<U;D++)pa=S=R=Q=za=u.value[xa[D]],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=Q.z,u.array[y+3]=Q.w,u.array[y+4]=R.x,u.array[y+5]=R.y,u.array[y+6]=R.z,u.array[y+7]=R.w,u.array[y+8]=S.x,u.array[y+9]=S.y,u.array[y+10]=S.z,u.array[y+11]=S.w,u.array[y+
|
|
|
-12]=pa.x,u.array[y+13]=pa.y,u.array[y+14]=pa.z,u.array[y+15]=pa.w,y+=16}else if("faceVertices"===u.boundTo){D=0;for(U=wa.length;D<U;D++)za=u.value[wa[D]],Q=za[0],R=za[1],S=za[2],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=Q.z,u.array[y+3]=Q.w,u.array[y+4]=R.x,u.array[y+5]=R.y,u.array[y+6]=R.z,u.array[y+7]=R.w,u.array[y+8]=S.x,u.array[y+9]=S.y,u.array[y+10]=S.z,u.array[y+11]=S.w,y+=12;D=0;for(U=xa.length;D<U;D++)za=u.value[xa[D]],Q=za[0],R=za[1],S=za[2],pa=za[3],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+
|
|
|
-2]=Q.z,u.array[y+3]=Q.w,u.array[y+4]=R.x,u.array[y+5]=R.y,u.array[y+6]=R.z,u.array[y+7]=R.w,u.array[y+8]=S.x,u.array[y+9]=S.y,u.array[y+10]=S.z,u.array[y+11]=S.w,u.array[y+12]=pa.x,u.array[y+13]=pa.y,u.array[y+14]=pa.z,u.array[y+15]=pa.w,y+=16}j.bindBuffer(j.ARRAY_BUFFER,u.buffer);j.bufferData(j.ARRAY_BUFFER,u.array,qa)}}Na&&(delete sa.__inittedArrays,delete sa.__colorArray,delete sa.__normalArray,delete sa.__tangentArray,delete sa.__uvArray,delete sa.__uv2Array,delete sa.__faceArray,delete sa.__vertexArray,
|
|
|
-delete sa.__lineArray,delete sa.__skinIndexArray,delete sa.__skinWeightArray)}}N.verticesNeedUpdate=!1;N.morphTargetsNeedUpdate=!1;N.elementsNeedUpdate=!1;N.uvsNeedUpdate=!1;N.normalsNeedUpdate=!1;N.colorsNeedUpdate=!1;N.tangentsNeedUpdate=!1;N.buffersNeedUpdate=!1;ta.attributes&&x(ta)}else if(ia instanceof THREE.Ribbon){ta=e(ia,N);oa=ta.attributes&&t(ta);if(N.verticesNeedUpdate||N.colorsNeedUpdate||N.normalsNeedUpdate||oa){var Eb=N,Tc=j.DYNAMIC_DRAW,Hc=void 0,Ic=void 0,Jc=void 0,Uc=void 0,Aa=void 0,
|
|
|
-Vc=void 0,Wc=void 0,Xc=void 0,yd=void 0,gb=void 0,Bc=void 0,Fa=void 0,rb=void 0,zd=Eb.vertices,Ad=Eb.colors,Bd=Eb.normals,id=zd.length,jd=Ad.length,kd=Bd.length,Yc=Eb.__vertexArray,Zc=Eb.__colorArray,$c=Eb.__normalArray,ld=Eb.colorsNeedUpdate,md=Eb.normalsNeedUpdate,sd=Eb.__webglCustomAttributesList;if(Eb.verticesNeedUpdate){for(Hc=0;Hc<id;Hc++)Uc=zd[Hc],Aa=3*Hc,Yc[Aa]=Uc.x,Yc[Aa+1]=Uc.y,Yc[Aa+2]=Uc.z;j.bindBuffer(j.ARRAY_BUFFER,Eb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Yc,Tc)}if(ld){for(Ic=
|
|
|
-0;Ic<jd;Ic++)Vc=Ad[Ic],Aa=3*Ic,Zc[Aa]=Vc.r,Zc[Aa+1]=Vc.g,Zc[Aa+2]=Vc.b;j.bindBuffer(j.ARRAY_BUFFER,Eb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Zc,Tc)}if(md){for(Jc=0;Jc<kd;Jc++)Wc=Bd[Jc],Aa=3*Jc,$c[Aa]=Wc.x,$c[Aa+1]=Wc.y,$c[Aa+2]=Wc.z;j.bindBuffer(j.ARRAY_BUFFER,Eb.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,$c,Tc)}if(sd){Xc=0;for(yd=sd.length;Xc<yd;Xc++)if(Fa=sd[Xc],Fa.needsUpdate&&(void 0===Fa.boundTo||"vertices"===Fa.boundTo)){Aa=0;Bc=Fa.value.length;if(1===Fa.size)for(gb=0;gb<Bc;gb++)Fa.array[gb]=
|
|
|
-Fa.value[gb];else if(2===Fa.size)for(gb=0;gb<Bc;gb++)rb=Fa.value[gb],Fa.array[Aa]=rb.x,Fa.array[Aa+1]=rb.y,Aa+=2;else if(3===Fa.size)if("c"===Fa.type)for(gb=0;gb<Bc;gb++)rb=Fa.value[gb],Fa.array[Aa]=rb.r,Fa.array[Aa+1]=rb.g,Fa.array[Aa+2]=rb.b,Aa+=3;else for(gb=0;gb<Bc;gb++)rb=Fa.value[gb],Fa.array[Aa]=rb.x,Fa.array[Aa+1]=rb.y,Fa.array[Aa+2]=rb.z,Aa+=3;else if(4===Fa.size)for(gb=0;gb<Bc;gb++)rb=Fa.value[gb],Fa.array[Aa]=rb.x,Fa.array[Aa+1]=rb.y,Fa.array[Aa+2]=rb.z,Fa.array[Aa+3]=rb.w,Aa+=4;j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-Fa.buffer);j.bufferData(j.ARRAY_BUFFER,Fa.array,Tc)}}}N.verticesNeedUpdate=!1;N.colorsNeedUpdate=!1;N.normalsNeedUpdate=!1;ta.attributes&&x(ta)}else if(ia instanceof THREE.Line)if(N instanceof THREE.BufferGeometry)(N.verticesNeedUpdate||N.colorsNeedUpdate)&&i(N,j.DYNAMIC_DRAW,!N.dynamic),N.verticesNeedUpdate=!1,N.colorsNeedUpdate=!1;else{ta=e(ia,N);oa=ta.attributes&&t(ta);if(N.verticesNeedUpdate||N.colorsNeedUpdate||N.lineDistancesNeedUpdate||oa){var Fb=N,ad=j.DYNAMIC_DRAW,Kc=void 0,Lc=void 0,Mc=
|
|
|
-void 0,bd=void 0,La=void 0,cd=void 0,Cd=Fb.vertices,Dd=Fb.colors,Ed=Fb.lineDistances,nd=Cd.length,Kd=Dd.length,Ld=Ed.length,dd=Fb.__vertexArray,ed=Fb.__colorArray,Fd=Fb.__lineDistanceArray,Md=Fb.colorsNeedUpdate,Nd=Fb.lineDistancesNeedUpdate,td=Fb.__webglCustomAttributesList,fd=void 0,Gd=void 0,hb=void 0,Cc=void 0,sb=void 0,Ga=void 0;if(Fb.verticesNeedUpdate){for(Kc=0;Kc<nd;Kc++)bd=Cd[Kc],La=3*Kc,dd[La]=bd.x,dd[La+1]=bd.y,dd[La+2]=bd.z;j.bindBuffer(j.ARRAY_BUFFER,Fb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,
|
|
|
-dd,ad)}if(Md){for(Lc=0;Lc<Kd;Lc++)cd=Dd[Lc],La=3*Lc,ed[La]=cd.r,ed[La+1]=cd.g,ed[La+2]=cd.b;j.bindBuffer(j.ARRAY_BUFFER,Fb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,ed,ad)}if(Nd){for(Mc=0;Mc<Ld;Mc++)Fd[Mc]=Ed[Mc];j.bindBuffer(j.ARRAY_BUFFER,Fb.__webglLineDistanceBuffer);j.bufferData(j.ARRAY_BUFFER,Fd,ad)}if(td){fd=0;for(Gd=td.length;fd<Gd;fd++)if(Ga=td[fd],Ga.needsUpdate&&(void 0===Ga.boundTo||"vertices"===Ga.boundTo)){La=0;Cc=Ga.value.length;if(1===Ga.size)for(hb=0;hb<Cc;hb++)Ga.array[hb]=
|
|
|
-Ga.value[hb];else if(2===Ga.size)for(hb=0;hb<Cc;hb++)sb=Ga.value[hb],Ga.array[La]=sb.x,Ga.array[La+1]=sb.y,La+=2;else if(3===Ga.size)if("c"===Ga.type)for(hb=0;hb<Cc;hb++)sb=Ga.value[hb],Ga.array[La]=sb.r,Ga.array[La+1]=sb.g,Ga.array[La+2]=sb.b,La+=3;else for(hb=0;hb<Cc;hb++)sb=Ga.value[hb],Ga.array[La]=sb.x,Ga.array[La+1]=sb.y,Ga.array[La+2]=sb.z,La+=3;else if(4===Ga.size)for(hb=0;hb<Cc;hb++)sb=Ga.value[hb],Ga.array[La]=sb.x,Ga.array[La+1]=sb.y,Ga.array[La+2]=sb.z,Ga.array[La+3]=sb.w,La+=4;j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-Ga.buffer);j.bufferData(j.ARRAY_BUFFER,Ga.array,ad)}}}N.verticesNeedUpdate=!1;N.colorsNeedUpdate=!1;N.lineDistancesNeedUpdate=!1;ta.attributes&&x(ta)}else if(ia instanceof THREE.ParticleSystem)if(N instanceof THREE.BufferGeometry)(N.verticesNeedUpdate||N.colorsNeedUpdate)&&i(N,j.DYNAMIC_DRAW,!N.dynamic),N.verticesNeedUpdate=!1,N.colorsNeedUpdate=!1;else{ta=e(ia,N);oa=ta.attributes&&t(ta);if(N.verticesNeedUpdate||N.colorsNeedUpdate||ia.sortParticles||oa){var ac=N,ud=j.DYNAMIC_DRAW,Nc=ia,tb=void 0,
|
|
|
-bc=void 0,cc=void 0,ca=void 0,dc=void 0,rc=void 0,gd=ac.vertices,vd=gd.length,wd=ac.colors,Hd=wd.length,wc=ac.__vertexArray,xc=ac.__colorArray,kc=ac.__sortArray,Id=ac.verticesNeedUpdate,Jd=ac.colorsNeedUpdate,lc=ac.__webglCustomAttributesList,Jb=void 0,Dc=void 0,na=void 0,Kb=void 0,Ca=void 0,ba=void 0;if(Nc.sortParticles){ub.copy(fc);ub.multiply(Nc.matrixWorld);for(tb=0;tb<vd;tb++)cc=gd[tb],gc.copy(cc),gc.applyProjection(ub),kc[tb]=[gc.z,tb];kc.sort(m);for(tb=0;tb<vd;tb++)cc=gd[kc[tb][1]],ca=3*tb,
|
|
|
-wc[ca]=cc.x,wc[ca+1]=cc.y,wc[ca+2]=cc.z;for(bc=0;bc<Hd;bc++)ca=3*bc,rc=wd[kc[bc][1]],xc[ca]=rc.r,xc[ca+1]=rc.g,xc[ca+2]=rc.b;if(lc){Jb=0;for(Dc=lc.length;Jb<Dc;Jb++)if(ba=lc[Jb],void 0===ba.boundTo||"vertices"===ba.boundTo)if(ca=0,Kb=ba.value.length,1===ba.size)for(na=0;na<Kb;na++)dc=kc[na][1],ba.array[na]=ba.value[dc];else if(2===ba.size)for(na=0;na<Kb;na++)dc=kc[na][1],Ca=ba.value[dc],ba.array[ca]=Ca.x,ba.array[ca+1]=Ca.y,ca+=2;else if(3===ba.size)if("c"===ba.type)for(na=0;na<Kb;na++)dc=kc[na][1],
|
|
|
-Ca=ba.value[dc],ba.array[ca]=Ca.r,ba.array[ca+1]=Ca.g,ba.array[ca+2]=Ca.b,ca+=3;else for(na=0;na<Kb;na++)dc=kc[na][1],Ca=ba.value[dc],ba.array[ca]=Ca.x,ba.array[ca+1]=Ca.y,ba.array[ca+2]=Ca.z,ca+=3;else if(4===ba.size)for(na=0;na<Kb;na++)dc=kc[na][1],Ca=ba.value[dc],ba.array[ca]=Ca.x,ba.array[ca+1]=Ca.y,ba.array[ca+2]=Ca.z,ba.array[ca+3]=Ca.w,ca+=4}}else{if(Id)for(tb=0;tb<vd;tb++)cc=gd[tb],ca=3*tb,wc[ca]=cc.x,wc[ca+1]=cc.y,wc[ca+2]=cc.z;if(Jd)for(bc=0;bc<Hd;bc++)rc=wd[bc],ca=3*bc,xc[ca]=rc.r,xc[ca+
|
|
|
-1]=rc.g,xc[ca+2]=rc.b;if(lc){Jb=0;for(Dc=lc.length;Jb<Dc;Jb++)if(ba=lc[Jb],ba.needsUpdate&&(void 0===ba.boundTo||"vertices"===ba.boundTo))if(Kb=ba.value.length,ca=0,1===ba.size)for(na=0;na<Kb;na++)ba.array[na]=ba.value[na];else if(2===ba.size)for(na=0;na<Kb;na++)Ca=ba.value[na],ba.array[ca]=Ca.x,ba.array[ca+1]=Ca.y,ca+=2;else if(3===ba.size)if("c"===ba.type)for(na=0;na<Kb;na++)Ca=ba.value[na],ba.array[ca]=Ca.r,ba.array[ca+1]=Ca.g,ba.array[ca+2]=Ca.b,ca+=3;else for(na=0;na<Kb;na++)Ca=ba.value[na],
|
|
|
-ba.array[ca]=Ca.x,ba.array[ca+1]=Ca.y,ba.array[ca+2]=Ca.z,ca+=3;else if(4===ba.size)for(na=0;na<Kb;na++)Ca=ba.value[na],ba.array[ca]=Ca.x,ba.array[ca+1]=Ca.y,ba.array[ca+2]=Ca.z,ba.array[ca+3]=Ca.w,ca+=4}}if(Id||Nc.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ac.__webglVertexBuffer),j.bufferData(j.ARRAY_BUFFER,wc,ud);if(Jd||Nc.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ac.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,xc,ud);if(lc){Jb=0;for(Dc=lc.length;Jb<Dc;Jb++)if(ba=lc[Jb],ba.needsUpdate||Nc.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
-ba.buffer),j.bufferData(j.ARRAY_BUFFER,ba.array,ud)}}N.verticesNeedUpdate=!1;N.colorsNeedUpdate=!1;ta.attributes&&x(ta)}}};this.initMaterial=function(a,b,c,d){var e,f,g,i;a.addEventListener("dispose",O);var h,k,m,n,l;a instanceof THREE.MeshDepthMaterial?l="depth":a instanceof THREE.MeshNormalMaterial?l="normal":a instanceof THREE.MeshBasicMaterial?l="basic":a instanceof THREE.MeshLambertMaterial?l="lambert":a instanceof THREE.MeshPhongMaterial?l="phong":a instanceof THREE.LineBasicMaterial?l="basic":
|
|
|
-a instanceof THREE.LineDashedMaterial?l="dashed":a instanceof THREE.ParticleBasicMaterial&&(l="particle_basic");if(l){var p=THREE.ShaderLib[l];a.uniforms=THREE.UniformsUtils.clone(p.uniforms);a.vertexShader=p.vertexShader;a.fragmentShader=p.fragmentShader}var q,s,r;e=g=s=r=p=0;for(f=b.length;e<f;e++)q=b[e],q.onlyShadow||(q instanceof THREE.DirectionalLight&&g++,q instanceof THREE.PointLight&&s++,q instanceof THREE.SpotLight&&r++,q instanceof THREE.HemisphereLight&&p++);e=g;f=s;g=r;i=p;p=q=0;for(r=
|
|
|
-b.length;p<r;p++)s=b[p],s.castShadow&&(s instanceof THREE.SpotLight&&q++,s instanceof THREE.DirectionalLight&&!s.shadowCascade&&q++);n=q;tc&&d&&d.useVertexTexture?m=1024:(b=j.getParameter(j.MAX_VERTEX_UNIFORM_VECTORS),b=Math.floor((b-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&(b=Math.min(d.bones.length,b),b<d.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.bones.length+", this GPU supports just "+b+" (try OpenGL instead of ANGLE)")),m=b);a:{s=a.fragmentShader;r=a.vertexShader;
|
|
|
-p=a.uniforms;b=a.attributes;q=a.defines;var c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,normalMap:!!a.normalMap,specularMap:!!a.specularMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,maxBones:m,useVertexTexture:tc&&d&&d.useVertexTexture,boneTextureWidth:d&&d.boneTextureWidth,boneTextureHeight:d&&d.boneTextureHeight,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,
|
|
|
-maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxHemiLights:i,maxShadows:n,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapType:this.shadowMapType,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide,flipSided:a.side===THREE.BackSide},t,v,w,d=[];l?d.push(l):(d.push(s),d.push(r));for(v in q)d.push(v),d.push(q[v]);
|
|
|
-for(t in c)d.push(t),d.push(c[t]);l=d.join();t=0;for(v=va.length;t<v;t++)if(d=va[t],d.code===l){d.usedTimes++;k=d.program;break a}t="SHADOWMAP_TYPE_BASIC";c.shadowMapType===THREE.PCFShadowMap?t="SHADOWMAP_TYPE_PCF":c.shadowMapType===THREE.PCFSoftShadowMap&&(t="SHADOWMAP_TYPE_PCF_SOFT");v=[];for(w in q)d=q[w],!1!==d&&(d="#define "+w+" "+d,v.push(d));d=v.join("\n");w=j.createProgram();v=["precision "+W+" float;",d,sc?"#define VERTEX_TEXTURES":"",L.gammaInput?"#define GAMMA_INPUT":"",L.gammaOutput?"#define GAMMA_OUTPUT":
|
|
|
-"",L.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":
|
|
|
-"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.useVertexTexture?"#define BONE_TEXTURE":"",c.boneTextureWidth?"#define N_BONE_PIXEL_X "+c.boneTextureWidth.toFixed(1):"",c.boneTextureHeight?"#define N_BONE_PIXEL_Y "+c.boneTextureHeight.toFixed(1):"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.morphNormals?"#define USE_MORPHNORMALS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?
|
|
|
-"#define FLIP_SIDED":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapEnabled?"#define "+t:"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\n#ifdef USE_MORPHNORMALS\nattribute vec3 morphNormal0;\nattribute vec3 morphNormal1;\nattribute vec3 morphNormal2;\nattribute vec3 morphNormal3;\n#else\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
+void 0===j.getShaderPrecisionFormat&&(j.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});j.clearColor(0,0,0,1);j.clearDepth(1);j.clearStencil(0);j.enable(j.DEPTH_TEST);j.depthFunc(j.LEQUAL);j.frontFace(j.CCW);j.cullFace(j.BACK);j.enable(j.CULL_FACE);j.enable(j.BLEND);j.blendEquation(j.FUNC_ADD);j.blendFunc(j.SRC_ALPHA,j.ONE_MINUS_SRC_ALPHA);j.clearColor(ka.r,ka.g,ka.b,Y);this.context=j;var Oc=j.getParameter(j.MAX_TEXTURE_IMAGE_UNITS),hd=j.getParameter(j.MAX_VERTEX_TEXTURE_IMAGE_UNITS);
|
|
|
+j.getParameter(j.MAX_TEXTURE_SIZE);var id=j.getParameter(j.MAX_CUBE_MAP_TEXTURE_SIZE),Ec=nb?j.getParameter(nb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,sc=0<hd,tc=sc&&xb;Ua&&j.getParameter(j.COMPRESSED_TEXTURE_FORMATS);var ld=j.getShaderPrecisionFormat(j.VERTEX_SHADER,j.HIGH_FLOAT),md=j.getShaderPrecisionFormat(j.VERTEX_SHADER,j.MEDIUM_FLOAT);j.getShaderPrecisionFormat(j.VERTEX_SHADER,j.LOW_FLOAT);var nd=j.getShaderPrecisionFormat(j.FRAGMENT_SHADER,j.HIGH_FLOAT),kd=j.getShaderPrecisionFormat(j.FRAGMENT_SHADER,
|
|
|
+j.MEDIUM_FLOAT);j.getShaderPrecisionFormat(j.FRAGMENT_SHADER,j.LOW_FLOAT);j.getShaderPrecisionFormat(j.VERTEX_SHADER,j.HIGH_INT);j.getShaderPrecisionFormat(j.VERTEX_SHADER,j.MEDIUM_INT);j.getShaderPrecisionFormat(j.VERTEX_SHADER,j.LOW_INT);j.getShaderPrecisionFormat(j.FRAGMENT_SHADER,j.HIGH_INT);j.getShaderPrecisionFormat(j.FRAGMENT_SHADER,j.MEDIUM_INT);j.getShaderPrecisionFormat(j.FRAGMENT_SHADER,j.LOW_INT);var jd=0<ld.precision&&0<nd.precision,Pc=0<md.precision&&0<kd.precision;"highp"===W&&!jd&&
|
|
|
+(Pc?(W="mediump",console.warn("WebGLRenderer: highp not supported, using mediump")):(W="lowp",console.warn("WebGLRenderer: highp and mediump not supported, using lowp")));"mediump"===W&&!Pc&&(W="lowp",console.warn("WebGLRenderer: mediump not supported, using lowp"));this.getContext=function(){return j};this.supportsVertexTextures=function(){return sc};this.supportsFloatTextures=function(){return xb};this.supportsStandardDerivatives=function(){return ab};this.supportsCompressedTextureS3TC=function(){return Ua};
|
|
|
+this.getMaxAnisotropy=function(){return Ec};this.getPrecision=function(){return W};this.setSize=function(a,b){M.width=a*this.devicePixelRatio;M.height=b*this.devicePixelRatio;M.style.width=a+"px";M.style.height=b+"px";this.setViewport(0,0,M.width,M.height)};this.setViewport=function(a,b,c,d){ob=void 0!==a?a:0;Hb=void 0!==b?b:0;Ib=void 0!==c?c:M.width;ec=void 0!==d?d:M.height;j.viewport(ob,Hb,Ib,ec)};this.setScissor=function(a,b,c,d){j.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?j.enable(j.SCISSOR_TEST):
|
|
|
+j.disable(j.SCISSOR_TEST)};this.setClearColorHex=function(a,b){ka.setHex(a);Y=b;j.clearColor(ka.r,ka.g,ka.b,Y)};this.setClearColor=function(a,b){ka.copy(a);Y=b;j.clearColor(ka.r,ka.g,ka.b,Y)};this.getClearColor=function(){return ka};this.getClearAlpha=function(){return Y};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=j.COLOR_BUFFER_BIT;if(void 0===b||b)d|=j.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=j.STENCIL_BUFFER_BIT;j.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,
|
|
|
+c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.updateShadowMap=function(a,b){lb=null;ta=Ma=ia=Za=ra=-1;$a=!0;ha=X=-1;this.shadowMapPlugin.update(a,b)};var xd=function(a){a=a.target;a.removeEventListener("dispose",xd);a.__webglInit=void 0;void 0!==a.__webglVertexBuffer&&j.deleteBuffer(a.__webglVertexBuffer);void 0!==a.__webglNormalBuffer&&j.deleteBuffer(a.__webglNormalBuffer);void 0!==
|
|
|
+a.__webglTangentBuffer&&j.deleteBuffer(a.__webglTangentBuffer);void 0!==a.__webglColorBuffer&&j.deleteBuffer(a.__webglColorBuffer);void 0!==a.__webglUVBuffer&&j.deleteBuffer(a.__webglUVBuffer);void 0!==a.__webglUV2Buffer&&j.deleteBuffer(a.__webglUV2Buffer);void 0!==a.__webglSkinIndicesBuffer&&j.deleteBuffer(a.__webglSkinIndicesBuffer);void 0!==a.__webglSkinWeightsBuffer&&j.deleteBuffer(a.__webglSkinWeightsBuffer);void 0!==a.__webglFaceBuffer&&j.deleteBuffer(a.__webglFaceBuffer);void 0!==a.__webglLineBuffer&&
|
|
|
+j.deleteBuffer(a.__webglLineBuffer);void 0!==a.__webglLineDistanceBuffer&&j.deleteBuffer(a.__webglLineDistanceBuffer);if(void 0!==a.geometryGroups)for(var c in a.geometryGroups){var d=a.geometryGroups[c];if(void 0!==d.numMorphTargets)for(var e=0,f=d.numMorphTargets;e<f;e++)j.deleteBuffer(d.__webglMorphTargetsBuffers[e]);if(void 0!==d.numMorphNormals){e=0;for(f=d.numMorphNormals;e<f;e++)j.deleteBuffer(d.__webglMorphNormalsBuffers[e])}b(d)}b(a);L.info.memory.geometries--},Qc=function(a){a=a.target;
|
|
|
+a.removeEventListener("dispose",Qc);a.image&&a.image.__webglTextureCube?j.deleteTexture(a.image.__webglTextureCube):a.__webglInit&&(a.__webglInit=!1,j.deleteTexture(a.__webglTexture));L.info.memory.textures--},Rc=function(a){a=a.target;a.removeEventListener("dispose",Rc);if(a&&a.__webglTexture)if(j.deleteTexture(a.__webglTexture),a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)j.deleteFramebuffer(a.__webglFramebuffer[b]),j.deleteRenderbuffer(a.__webglRenderbuffer[b]);else j.deleteFramebuffer(a.__webglFramebuffer),
|
|
|
+j.deleteRenderbuffer(a.__webglRenderbuffer);L.info.memory.textures--},O=function(a){a=a.target;a.removeEventListener("dispose",O);aa(a)},aa=function(a){var b=a.program;if(void 0!==b){a.program=void 0;var c,d,e=!1,a=0;for(c=va.length;a<c;a++)if(d=va[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=va.length;a<c;a++)d=va[a],d.program!==b&&e.push(d);va=e;j.deleteProgram(b);L.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){a.hasPositions&&!a.__webglVertexBuffer&&
|
|
|
+(a.__webglVertexBuffer=j.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer=j.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=j.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=j.createBuffer());a.hasPositions&&(j.bindBuffer(j.ARRAY_BUFFER,a.__webglVertexBuffer),j.bufferData(j.ARRAY_BUFFER,a.positionArray,j.DYNAMIC_DRAW),j.enableVertexAttribArray(b.attributes.position),j.vertexAttribPointer(b.attributes.position,3,j.FLOAT,!1,0,0));
|
|
|
+if(a.hasNormals){j.bindBuffer(j.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,e,f,g,i,h,k,l,m,n,p,q=3*a.count;for(p=0;p<q;p+=9)n=a.normalArray,d=n[p],e=n[p+1],f=n[p+2],g=n[p+3],h=n[p+4],l=n[p+5],i=n[p+6],k=n[p+7],m=n[p+8],d=(d+g+i)/3,e=(e+h+k)/3,f=(f+l+m)/3,n[p]=d,n[p+1]=e,n[p+2]=f,n[p+3]=d,n[p+4]=e,n[p+5]=f,n[p+6]=d,n[p+7]=e,n[p+8]=f}j.bufferData(j.ARRAY_BUFFER,a.normalArray,j.DYNAMIC_DRAW);j.enableVertexAttribArray(b.attributes.normal);j.vertexAttribPointer(b.attributes.normal,
|
|
|
+3,j.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(j.bindBuffer(j.ARRAY_BUFFER,a.__webglUvBuffer),j.bufferData(j.ARRAY_BUFFER,a.uvArray,j.DYNAMIC_DRAW),j.enableVertexAttribArray(b.attributes.uv),j.vertexAttribPointer(b.attributes.uv,2,j.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(j.bindBuffer(j.ARRAY_BUFFER,a.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,a.colorArray,j.DYNAMIC_DRAW),j.enableVertexAttribArray(b.attributes.color),j.vertexAttribPointer(b.attributes.color,3,j.FLOAT,!1,0,0));j.drawArrays(j.TRIANGLES,
|
|
|
+0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(!1!==d.visible)if(c=H(a,b,c,d,f),a=c.attributes,b=!1,d=16777215*e.id+2*c.id+(d.wireframe?1:0),d!==Ma&&(Ma=d,b=!0),b&&l(),f instanceof THREE.Mesh)if(f=e.attributes.index){d=e.offsets;1<d.length&&(b=!0);for(var c=0,g=d.length;c<g;c++){var i=d[c].index;if(b){var h=e.attributes.position,m=h.itemSize;j.bindBuffer(j.ARRAY_BUFFER,h.buffer);k(a.position);j.vertexAttribPointer(a.position,m,j.FLOAT,!1,0,4*i*m);m=e.attributes.normal;if(0<=
|
|
|
+a.normal&&m){var n=m.itemSize;j.bindBuffer(j.ARRAY_BUFFER,m.buffer);k(a.normal);j.vertexAttribPointer(a.normal,n,j.FLOAT,!1,0,4*i*n)}m=e.attributes.uv;0<=a.uv&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.uv),j.vertexAttribPointer(a.uv,n,j.FLOAT,!1,0,4*i*n));m=e.attributes.color;0<=a.color&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.color),j.vertexAttribPointer(a.color,n,j.FLOAT,!1,0,4*i*n));m=e.attributes.tangent;0<=a.tangent&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+m.buffer),k(a.tangent),j.vertexAttribPointer(a.tangent,n,j.FLOAT,!1,0,4*i*n));j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,f.buffer)}j.drawElements(j.TRIANGLES,d[c].count,j.UNSIGNED_SHORT,2*d[c].start);L.info.render.calls++;L.info.render.vertices+=d[c].count;L.info.render.faces+=d[c].count/3}}else b&&(h=e.attributes.position,m=h.itemSize,j.bindBuffer(j.ARRAY_BUFFER,h.buffer),k(a.position),j.vertexAttribPointer(a.position,m,j.FLOAT,!1,0,0),m=e.attributes.normal,0<=a.normal&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+m.buffer),k(a.normal),j.vertexAttribPointer(a.normal,n,j.FLOAT,!1,0,0)),m=e.attributes.uv,0<=a.uv&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.uv),j.vertexAttribPointer(a.uv,n,j.FLOAT,!1,0,0)),m=e.attributes.color,0<=a.color&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.color),j.vertexAttribPointer(a.color,n,j.FLOAT,!1,0,0)),m=e.attributes.tangent,0<=a.tangent&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.tangent),j.vertexAttribPointer(a.tangent,n,j.FLOAT,
|
|
|
+!1,0,0))),j.drawArrays(j.TRIANGLES,0,h.numItems/3),L.info.render.calls++,L.info.render.vertices+=h.numItems/3,L.info.render.faces+=h.numItems/3/3;else f instanceof THREE.ParticleSystem?b&&(h=e.attributes.position,m=h.itemSize,j.bindBuffer(j.ARRAY_BUFFER,h.buffer),k(a.position),j.vertexAttribPointer(a.position,m,j.FLOAT,!1,0,0),m=e.attributes.color,0<=a.color&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.color),j.vertexAttribPointer(a.color,n,j.FLOAT,!1,0,0)),j.drawArrays(j.POINTS,0,
|
|
|
+h.numItems/3),L.info.render.calls++,L.info.render.points+=h.numItems/3):f instanceof THREE.Line&&b&&(h=e.attributes.position,m=h.itemSize,j.bindBuffer(j.ARRAY_BUFFER,h.buffer),k(a.position),j.vertexAttribPointer(a.position,m,j.FLOAT,!1,0,0),m=e.attributes.color,0<=a.color&&m&&(n=m.itemSize,j.bindBuffer(j.ARRAY_BUFFER,m.buffer),k(a.color),j.vertexAttribPointer(a.color,n,j.FLOAT,!1,0,0)),j.drawArrays(j.LINE_STRIP,0,h.numItems/3),L.info.render.calls++,L.info.render.points+=h.numItems)};this.renderBuffer=
|
|
|
+function(a,b,c,d,e,f){if(!1!==d.visible){var g,i,c=H(a,b,c,d,f),b=c.attributes,a=!1,c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==Ma&&(Ma=c,a=!0);a&&l();if(!d.morphTargets&&0<=b.position)a&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglVertexBuffer),k(b.position),j.vertexAttribPointer(b.position,3,j.FLOAT,!1,0,0));else if(f.morphTargetBase){c=d.program.attributes;-1!==f.morphTargetBase&&0<=c.position?(j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]),k(c.position),j.vertexAttribPointer(c.position,
|
|
|
+3,j.FLOAT,!1,0,0)):0<=c.position&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglVertexBuffer),k(c.position),j.vertexAttribPointer(c.position,3,j.FLOAT,!1,0,0));if(f.morphTargetForcedOrder.length){var h=0;i=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;h<d.numSupportedMorphTargets&&h<i.length;)0<=c["morphTarget"+h]&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[i[h]]),k(c["morphTarget"+h]),j.vertexAttribPointer(c["morphTarget"+h],3,j.FLOAT,!1,0,0)),0<=c["morphNormal"+h]&&d.morphNormals&&
|
|
|
+(j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[i[h]]),k(c["morphNormal"+h]),j.vertexAttribPointer(c["morphNormal"+h],3,j.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[h]=g[i[h]],h++}else{i=[];g=f.morphTargetInfluences;var n,p=g.length;for(n=0;n<p;n++)h=g[n],0<h&&i.push([h,n]);i.length>d.numSupportedMorphTargets?(i.sort(m),i.length=d.numSupportedMorphTargets):i.length>d.numSupportedMorphNormals?i.sort(m):0===i.length&&i.push([0,0]);for(h=0;h<d.numSupportedMorphTargets;)i[h]?(n=i[h][1],0<=
|
|
|
+c["morphTarget"+h]&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[n]),k(c["morphTarget"+h]),j.vertexAttribPointer(c["morphTarget"+h],3,j.FLOAT,!1,0,0)),0<=c["morphNormal"+h]&&d.morphNormals&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[n]),k(c["morphNormal"+h]),j.vertexAttribPointer(c["morphNormal"+h],3,j.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[h]=g[n]):f.__webglMorphTargetInfluences[h]=0,h++}null!==d.program.uniforms.morphTargetInfluences&&j.uniform1fv(d.program.uniforms.morphTargetInfluences,
|
|
|
+f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList){g=0;for(i=e.__webglCustomAttributesList.length;g<i;g++)c=e.__webglCustomAttributesList[g],0<=b[c.buffer.belongsToAttribute]&&(j.bindBuffer(j.ARRAY_BUFFER,c.buffer),k(b[c.buffer.belongsToAttribute]),j.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,j.FLOAT,!1,0,0))}0<=b.color&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglColorBuffer),k(b.color),j.vertexAttribPointer(b.color,3,j.FLOAT,!1,0,0));0<=b.normal&&(j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+e.__webglNormalBuffer),k(b.normal),j.vertexAttribPointer(b.normal,3,j.FLOAT,!1,0,0));0<=b.tangent&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglTangentBuffer),k(b.tangent),j.vertexAttribPointer(b.tangent,4,j.FLOAT,!1,0,0));0<=b.uv&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglUVBuffer),k(b.uv),j.vertexAttribPointer(b.uv,2,j.FLOAT,!1,0,0));0<=b.uv2&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglUV2Buffer),k(b.uv2),j.vertexAttribPointer(b.uv2,2,j.FLOAT,!1,0,0));d.skinning&&(0<=b.skinIndex&&0<=b.skinWeight)&&(j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+e.__webglSkinIndicesBuffer),k(b.skinIndex),j.vertexAttribPointer(b.skinIndex,4,j.FLOAT,!1,0,0),j.bindBuffer(j.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),k(b.skinWeight),j.vertexAttribPointer(b.skinWeight,4,j.FLOAT,!1,0,0));0<=b.lineDistance&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglLineDistanceBuffer),k(b.lineDistance),j.vertexAttribPointer(b.lineDistance,1,j.FLOAT,!1,0,0))}f instanceof THREE.Mesh?(d.wireframe?(d=d.wireframeLinewidth,d!==eb&&(j.lineWidth(d),eb=d),a&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,
|
|
|
+e.__webglLineBuffer),j.drawElements(j.LINES,e.__webglLineCount,j.UNSIGNED_SHORT,0)):(a&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),j.drawElements(j.TRIANGLES,e.__webglFaceCount,j.UNSIGNED_SHORT,0)),L.info.render.calls++,L.info.render.vertices+=e.__webglFaceCount,L.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?j.LINE_STRIP:j.LINES,d=d.linewidth,d!==eb&&(j.lineWidth(d),eb=d),j.drawArrays(f,0,e.__webglLineCount),L.info.render.calls++):f instanceof
|
|
|
+THREE.ParticleSystem?(j.drawArrays(j.POINTS,0,e.__webglParticleCount),L.info.render.calls++,L.info.render.points+=e.__webglParticleCount):f instanceof THREE.Ribbon&&(j.drawArrays(j.TRIANGLE_STRIP,0,e.__webglVertexCount),L.info.render.calls++)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e,f,g,i,h=a.__lights,k=a.fog;ta=-1;$a=!0;this.autoUpdateScene&&a.updateMatrixWorld();void 0===b.parent&&
|
|
|
+b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);fc.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Ea.setFromMatrix(fc);this.autoUpdateObjects&&this.initWebGLObjects(a);s(this.renderPluginsPre,a,b);L.info.render.calls=0;L.info.render.vertices=0;L.info.render.faces=0;L.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);i=a.__webglObjects;d=0;for(e=i.length;d<e;d++)if(f=i[d],g=f.object,
|
|
|
+f.render=!1,g.visible&&(!(g instanceof THREE.Mesh||g instanceof THREE.ParticleSystem)||!g.frustumCulled||Ea.intersectsObject(g))){A(g,b);var m=f,l=m.buffer,p=void 0,t=p=void 0,t=m.object.material;if(t instanceof THREE.MeshFaceMaterial)p=l.materialIndex,p=t.materials[p],p.transparent?(m.transparent=p,m.opaque=null):(m.opaque=p,m.transparent=null);else if(p=t)p.transparent?(m.transparent=p,m.opaque=null):(m.opaque=p,m.transparent=null);f.render=!0;!0===this.sortObjects&&(null!==g.renderDepth?f.z=g.renderDepth:
|
|
|
+(gc.copy(g.matrixWorld.getPosition()),gc.applyProjection(fc),f.z=gc.z),f.id=g.id)}this.sortObjects&&i.sort(n);i=a.__webglObjectsImmediate;d=0;for(e=i.length;d<e;d++)f=i[d],g=f.object,g.visible&&(A(g,b),g=f.object.material,g.transparent?(f.transparent=g,f.opaque=null):(f.opaque=g,f.transparent=null));a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),I(d.polygonOffset,d.polygonOffsetFactor,
|
|
|
+d.polygonOffsetUnits),q(a.__webglObjects,!1,"",b,h,k,!0,d),r(a.__webglObjectsImmediate,"",b,h,k,!1,d)):(d=null,this.setBlending(THREE.NoBlending),q(a.__webglObjects,!0,"opaque",b,h,k,!1,d),r(a.__webglObjectsImmediate,"opaque",b,h,k,!1,d),q(a.__webglObjects,!1,"transparent",b,h,k,!0,d),r(a.__webglObjectsImmediate,"transparent",b,h,k,!0,d));s(this.renderPluginsPost,a,b);c&&(c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter)&&(c instanceof THREE.WebGLRenderTargetCube?
|
|
|
+(j.bindTexture(j.TEXTURE_CUBE_MAP,c.__webglTexture),j.generateMipmap(j.TEXTURE_CUBE_MAP),j.bindTexture(j.TEXTURE_CUBE_MAP,null)):(j.bindTexture(j.TEXTURE_2D,c.__webglTexture),j.generateMipmap(j.TEXTURE_2D),j.bindTexture(j.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=H(a,b,c,d,e);Ma=-1;L.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,j,Ea):e.render(function(a){L.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=
|
|
|
+function(a){a.__webglObjects||(a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[]);for(;a.__objectsAdded.length;){var b=a.__objectsAdded[0],k=a,l=void 0,n=void 0,q=void 0,s=void 0;if(!b.__webglInit)if(b.__webglInit=!0,b._modelViewMatrix=new THREE.Matrix4,b._normalMatrix=new THREE.Matrix3,void 0!==b.geometry&&void 0===b.geometry.__webglInit&&(b.geometry.__webglInit=!0,b.geometry.addEventListener("dispose",xd)),b instanceof THREE.Mesh)if(n=b.geometry,q=b.material,
|
|
|
+n instanceof THREE.Geometry){if(void 0===n.geometryGroups){var r=n,z=void 0,C=void 0,B=void 0,A=void 0,F=void 0,E=void 0,G={},H=r.morphTargets.length,I=r.morphNormals.length,K=q instanceof THREE.MeshFaceMaterial;r.geometryGroups={};z=0;for(C=r.faces.length;z<C;z++)B=r.faces[z],A=K?B.materialIndex:0,void 0===G[A]&&(G[A]={hash:A,counter:0}),E=G[A].hash+"_"+G[A].counter,void 0===r.geometryGroups[E]&&(r.geometryGroups[E]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:H,numMorphNormals:I}),
|
|
|
+F=B instanceof THREE.Face3?3:4,65535<r.geometryGroups[E].vertices+F&&(G[A].counter+=1,E=G[A].hash+"_"+G[A].counter,void 0===r.geometryGroups[E]&&(r.geometryGroups[E]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:H,numMorphNormals:I})),B instanceof THREE.Face3?r.geometryGroups[E].faces3.push(z):r.geometryGroups[E].faces4.push(z),r.geometryGroups[E].vertices+=F;r.geometryGroupsList=[];var M=void 0;for(M in r.geometryGroups)r.geometryGroups[M].id=ja++,r.geometryGroupsList.push(r.geometryGroups[M])}for(l in n.geometryGroups)if(s=
|
|
|
+n.geometryGroups[l],!s.__webglVertexBuffer){var J=s;J.__webglVertexBuffer=j.createBuffer();J.__webglNormalBuffer=j.createBuffer();J.__webglTangentBuffer=j.createBuffer();J.__webglColorBuffer=j.createBuffer();J.__webglUVBuffer=j.createBuffer();J.__webglUV2Buffer=j.createBuffer();J.__webglSkinIndicesBuffer=j.createBuffer();J.__webglSkinWeightsBuffer=j.createBuffer();J.__webglFaceBuffer=j.createBuffer();J.__webglLineBuffer=j.createBuffer();var O=void 0,T=void 0;if(J.numMorphTargets){J.__webglMorphTargetsBuffers=
|
|
|
+[];O=0;for(T=J.numMorphTargets;O<T;O++)J.__webglMorphTargetsBuffers.push(j.createBuffer())}if(J.numMorphNormals){J.__webglMorphNormalsBuffers=[];O=0;for(T=J.numMorphNormals;O<T;O++)J.__webglMorphNormalsBuffers.push(j.createBuffer())}L.info.memory.geometries++;d(s,b);n.verticesNeedUpdate=!0;n.morphTargetsNeedUpdate=!0;n.elementsNeedUpdate=!0;n.uvsNeedUpdate=!0;n.normalsNeedUpdate=!0;n.tangentsNeedUpdate=!0;n.colorsNeedUpdate=!0}}else n instanceof THREE.BufferGeometry&&h(n);else if(b instanceof THREE.Ribbon){if(n=
|
|
|
+b.geometry,!n.__webglVertexBuffer){var X=n;X.__webglVertexBuffer=j.createBuffer();X.__webglColorBuffer=j.createBuffer();X.__webglNormalBuffer=j.createBuffer();L.info.memory.geometries++;var ga=n,W=b,va=ga.vertices.length;ga.__vertexArray=new Float32Array(3*va);ga.__colorArray=new Float32Array(3*va);ga.__normalArray=new Float32Array(3*va);ga.__webglVertexCount=va;c(ga,W);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0;n.normalsNeedUpdate=!0}}else if(b instanceof THREE.Line){if(n=b.geometry,!n.__webglVertexBuffer)if(n instanceof
|
|
|
+THREE.Geometry){var V=n;V.__webglVertexBuffer=j.createBuffer();V.__webglColorBuffer=j.createBuffer();V.__webglLineDistanceBuffer=j.createBuffer();L.info.memory.geometries++;var Y=n,da=b,aa=Y.vertices.length;Y.__vertexArray=new Float32Array(3*aa);Y.__colorArray=new Float32Array(3*aa);Y.__lineDistanceArray=new Float32Array(1*aa);Y.__webglLineCount=aa;c(Y,da);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0;n.lineDistancesNeedUpdate=!0}else n instanceof THREE.BufferGeometry&&h(n)}else if(b instanceof THREE.ParticleSystem&&
|
|
|
+(n=b.geometry,!n.__webglVertexBuffer))if(n instanceof THREE.Geometry){var ma=n;ma.__webglVertexBuffer=j.createBuffer();ma.__webglColorBuffer=j.createBuffer();L.info.memory.geometries++;var ha=n,ka=b,Xa=ha.vertices.length;ha.__vertexArray=new Float32Array(3*Xa);ha.__colorArray=new Float32Array(3*Xa);ha.__sortArray=[];ha.__webglParticleCount=Xa;c(ha,ka);n.verticesNeedUpdate=!0;n.colorsNeedUpdate=!0}else n instanceof THREE.BufferGeometry&&h(n);if(!b.__webglActive){if(b instanceof THREE.Mesh)if(n=b.geometry,
|
|
|
+n instanceof THREE.BufferGeometry)p(k.__webglObjects,n,b);else{if(n instanceof THREE.Geometry)for(l in n.geometryGroups)s=n.geometryGroups[l],p(k.__webglObjects,s,b)}else b instanceof THREE.Ribbon||b instanceof THREE.Line||b instanceof THREE.ParticleSystem?(n=b.geometry,p(k.__webglObjects,n,b)):b instanceof THREE.ImmediateRenderObject||b.immediateRenderCallback?k.__webglObjectsImmediate.push({object:b,opaque:null,transparent:null}):b instanceof THREE.Sprite?k.__webglSprites.push(b):b instanceof THREE.LensFlare&&
|
|
|
+k.__webglFlares.push(b);b.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var fa=a.__objectsRemoved[0],lb=a;fa instanceof THREE.Mesh||fa instanceof THREE.ParticleSystem||fa instanceof THREE.Ribbon||fa instanceof THREE.Line?w(lb.__webglObjects,fa):fa instanceof THREE.Sprite?v(lb.__webglSprites,fa):fa instanceof THREE.LensFlare?v(lb.__webglFlares,fa):(fa instanceof THREE.ImmediateRenderObject||fa.immediateRenderCallback)&&w(lb.__webglObjectsImmediate,fa);fa.__webglActive=
|
|
|
+!1;a.__objectsRemoved.splice(0,1)}for(var ra=0,Ma=a.__webglObjects.length;ra<Ma;ra++){var ia=a.__webglObjects[ra].object,N=ia.geometry,ua=void 0,oa=void 0,ta=void 0;if(ia instanceof THREE.Mesh)if(N instanceof THREE.BufferGeometry)(N.verticesNeedUpdate||N.elementsNeedUpdate||N.uvsNeedUpdate||N.normalsNeedUpdate||N.colorsNeedUpdate||N.tangentsNeedUpdate)&&i(N,j.DYNAMIC_DRAW,!N.dynamic),N.verticesNeedUpdate=!1,N.elementsNeedUpdate=!1,N.uvsNeedUpdate=!1,N.normalsNeedUpdate=!1,N.colorsNeedUpdate=!1,N.tangentsNeedUpdate=
|
|
|
+!1;else{for(var Da=0,Gb=N.geometryGroupsList.length;Da<Gb;Da++)if(ua=N.geometryGroupsList[Da],ta=e(ia,ua),N.buffersNeedUpdate&&d(ua,ia),oa=ta.attributes&&t(ta),N.verticesNeedUpdate||N.morphTargetsNeedUpdate||N.elementsNeedUpdate||N.uvsNeedUpdate||N.normalsNeedUpdate||N.colorsNeedUpdate||N.tangentsNeedUpdate||oa){var sa=ua,Ha=ia,qa=j.DYNAMIC_DRAW,Na=!N.dynamic,Ea=ta;if(sa.__inittedArrays){var Ta=f(Ea),Ya=Ea.vertexColors?Ea.vertexColors:!1,$a=g(Ea),ab=Ta===THREE.SmoothShading,D=void 0,U=void 0,Qa=void 0,
|
|
|
+P=void 0,Za=void 0,Ua=void 0,Ra=void 0,nb=void 0,eb=void 0,ob=void 0,pb=void 0,Q=void 0,R=void 0,S=void 0,pa=void 0,Lb=void 0,Mb=void 0,Nb=void 0,wb=void 0,Ob=void 0,Pb=void 0,Qb=void 0,xb=void 0,Rb=void 0,Sb=void 0,Tb=void 0,yb=void 0,Ub=void 0,Vb=void 0,Wb=void 0,Hb=void 0,Xb=void 0,Yb=void 0,Zb=void 0,Ib=void 0,ya=void 0,ec=void 0,nc=void 0,zc=void 0,Ac=void 0,bb=void 0,mc=void 0,Va=void 0,Wa=void 0,oc=void 0,hc=void 0,Oa=0,Sa=0,ic=0,jc=0,Cb=0,jb=0,Ba=0,mb=0,Pa=0,$=0,la=0,y=0,za=void 0,cb=sa.__vertexArray,
|
|
|
+Fc=sa.__uvArray,Gc=sa.__uv2Array,Db=sa.__normalArray,Ia=sa.__tangentArray,db=sa.__colorArray,Ja=sa.__skinIndexArray,Ka=sa.__skinWeightArray,sc=sa.__morphTargetsArrays,tc=sa.__morphNormalsArrays,pd=sa.__webglCustomAttributesList,u=void 0,$b=sa.__faceArray,vb=sa.__lineArray,qb=Ha.geometry,Oc=qb.elementsNeedUpdate,Ec=qb.uvsNeedUpdate,Pc=qb.normalsNeedUpdate,Qc=qb.tangentsNeedUpdate,Rc=qb.colorsNeedUpdate,hd=qb.morphTargetsNeedUpdate,uc=qb.vertices,wa=sa.faces3,xa=sa.faces4,kb=qb.faces,qd=qb.faceVertexUvs[0],
|
|
|
+rd=qb.faceVertexUvs[1],vc=qb.skinIndices,pc=qb.skinWeights,qc=qb.morphTargets,Sc=qb.morphNormals;if(qb.verticesNeedUpdate){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],Q=uc[P.a],R=uc[P.b],S=uc[P.c],cb[Sa]=Q.x,cb[Sa+1]=Q.y,cb[Sa+2]=Q.z,cb[Sa+3]=R.x,cb[Sa+4]=R.y,cb[Sa+5]=R.z,cb[Sa+6]=S.x,cb[Sa+7]=S.y,cb[Sa+8]=S.z,Sa+=9;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],Q=uc[P.a],R=uc[P.b],S=uc[P.c],pa=uc[P.d],cb[Sa]=Q.x,cb[Sa+1]=Q.y,cb[Sa+2]=Q.z,cb[Sa+3]=R.x,cb[Sa+4]=R.y,cb[Sa+5]=R.z,cb[Sa+6]=S.x,cb[Sa+7]=S.y,cb[Sa+
|
|
|
+8]=S.z,cb[Sa+9]=pa.x,cb[Sa+10]=pa.y,cb[Sa+11]=pa.z,Sa+=12;j.bindBuffer(j.ARRAY_BUFFER,sa.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,cb,qa)}if(hd){bb=0;for(mc=qc.length;bb<mc;bb++){D=la=0;for(U=wa.length;D<U;D++)oc=wa[D],P=kb[oc],Q=qc[bb].vertices[P.a],R=qc[bb].vertices[P.b],S=qc[bb].vertices[P.c],Va=sc[bb],Va[la]=Q.x,Va[la+1]=Q.y,Va[la+2]=Q.z,Va[la+3]=R.x,Va[la+4]=R.y,Va[la+5]=R.z,Va[la+6]=S.x,Va[la+7]=S.y,Va[la+8]=S.z,Ea.morphNormals&&(ab?(hc=Sc[bb].vertexNormals[oc],Ob=hc.a,Pb=hc.b,Qb=hc.c):
|
|
|
+Qb=Pb=Ob=Sc[bb].faceNormals[oc],Wa=tc[bb],Wa[la]=Ob.x,Wa[la+1]=Ob.y,Wa[la+2]=Ob.z,Wa[la+3]=Pb.x,Wa[la+4]=Pb.y,Wa[la+5]=Pb.z,Wa[la+6]=Qb.x,Wa[la+7]=Qb.y,Wa[la+8]=Qb.z),la+=9;D=0;for(U=xa.length;D<U;D++)oc=xa[D],P=kb[oc],Q=qc[bb].vertices[P.a],R=qc[bb].vertices[P.b],S=qc[bb].vertices[P.c],pa=qc[bb].vertices[P.d],Va=sc[bb],Va[la]=Q.x,Va[la+1]=Q.y,Va[la+2]=Q.z,Va[la+3]=R.x,Va[la+4]=R.y,Va[la+5]=R.z,Va[la+6]=S.x,Va[la+7]=S.y,Va[la+8]=S.z,Va[la+9]=pa.x,Va[la+10]=pa.y,Va[la+11]=pa.z,Ea.morphNormals&&(ab?
|
|
|
+(hc=Sc[bb].vertexNormals[oc],Ob=hc.a,Pb=hc.b,Qb=hc.c,xb=hc.d):xb=Qb=Pb=Ob=Sc[bb].faceNormals[oc],Wa=tc[bb],Wa[la]=Ob.x,Wa[la+1]=Ob.y,Wa[la+2]=Ob.z,Wa[la+3]=Pb.x,Wa[la+4]=Pb.y,Wa[la+5]=Pb.z,Wa[la+6]=Qb.x,Wa[la+7]=Qb.y,Wa[la+8]=Qb.z,Wa[la+9]=xb.x,Wa[la+10]=xb.y,Wa[la+11]=xb.z),la+=12;j.bindBuffer(j.ARRAY_BUFFER,sa.__webglMorphTargetsBuffers[bb]);j.bufferData(j.ARRAY_BUFFER,sc[bb],qa);Ea.morphNormals&&(j.bindBuffer(j.ARRAY_BUFFER,sa.__webglMorphNormalsBuffers[bb]),j.bufferData(j.ARRAY_BUFFER,tc[bb],
|
|
|
+qa))}}if(pc.length){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],Ub=pc[P.a],Vb=pc[P.b],Wb=pc[P.c],Ka[$]=Ub.x,Ka[$+1]=Ub.y,Ka[$+2]=Ub.z,Ka[$+3]=Ub.w,Ka[$+4]=Vb.x,Ka[$+5]=Vb.y,Ka[$+6]=Vb.z,Ka[$+7]=Vb.w,Ka[$+8]=Wb.x,Ka[$+9]=Wb.y,Ka[$+10]=Wb.z,Ka[$+11]=Wb.w,Xb=vc[P.a],Yb=vc[P.b],Zb=vc[P.c],Ja[$]=Xb.x,Ja[$+1]=Xb.y,Ja[$+2]=Xb.z,Ja[$+3]=Xb.w,Ja[$+4]=Yb.x,Ja[$+5]=Yb.y,Ja[$+6]=Yb.z,Ja[$+7]=Yb.w,Ja[$+8]=Zb.x,Ja[$+9]=Zb.y,Ja[$+10]=Zb.z,Ja[$+11]=Zb.w,$+=12;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],Ub=pc[P.a],Vb=pc[P.b],
|
|
|
+Wb=pc[P.c],Hb=pc[P.d],Ka[$]=Ub.x,Ka[$+1]=Ub.y,Ka[$+2]=Ub.z,Ka[$+3]=Ub.w,Ka[$+4]=Vb.x,Ka[$+5]=Vb.y,Ka[$+6]=Vb.z,Ka[$+7]=Vb.w,Ka[$+8]=Wb.x,Ka[$+9]=Wb.y,Ka[$+10]=Wb.z,Ka[$+11]=Wb.w,Ka[$+12]=Hb.x,Ka[$+13]=Hb.y,Ka[$+14]=Hb.z,Ka[$+15]=Hb.w,Xb=vc[P.a],Yb=vc[P.b],Zb=vc[P.c],Ib=vc[P.d],Ja[$]=Xb.x,Ja[$+1]=Xb.y,Ja[$+2]=Xb.z,Ja[$+3]=Xb.w,Ja[$+4]=Yb.x,Ja[$+5]=Yb.y,Ja[$+6]=Yb.z,Ja[$+7]=Yb.w,Ja[$+8]=Zb.x,Ja[$+9]=Zb.y,Ja[$+10]=Zb.z,Ja[$+11]=Zb.w,Ja[$+12]=Ib.x,Ja[$+13]=Ib.y,Ja[$+14]=Ib.z,Ja[$+15]=Ib.w,$+=16;0<$&&
|
|
|
+(j.bindBuffer(j.ARRAY_BUFFER,sa.__webglSkinIndicesBuffer),j.bufferData(j.ARRAY_BUFFER,Ja,qa),j.bindBuffer(j.ARRAY_BUFFER,sa.__webglSkinWeightsBuffer),j.bufferData(j.ARRAY_BUFFER,Ka,qa))}if(Rc&&Ya){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],Ra=P.vertexColors,nb=P.color,3===Ra.length&&Ya===THREE.VertexColors?(Rb=Ra[0],Sb=Ra[1],Tb=Ra[2]):Tb=Sb=Rb=nb,db[Pa]=Rb.r,db[Pa+1]=Rb.g,db[Pa+2]=Rb.b,db[Pa+3]=Sb.r,db[Pa+4]=Sb.g,db[Pa+5]=Sb.b,db[Pa+6]=Tb.r,db[Pa+7]=Tb.g,db[Pa+8]=Tb.b,Pa+=9;D=0;for(U=xa.length;D<U;D++)P=
|
|
|
+kb[xa[D]],Ra=P.vertexColors,nb=P.color,4===Ra.length&&Ya===THREE.VertexColors?(Rb=Ra[0],Sb=Ra[1],Tb=Ra[2],yb=Ra[3]):yb=Tb=Sb=Rb=nb,db[Pa]=Rb.r,db[Pa+1]=Rb.g,db[Pa+2]=Rb.b,db[Pa+3]=Sb.r,db[Pa+4]=Sb.g,db[Pa+5]=Sb.b,db[Pa+6]=Tb.r,db[Pa+7]=Tb.g,db[Pa+8]=Tb.b,db[Pa+9]=yb.r,db[Pa+10]=yb.g,db[Pa+11]=yb.b,Pa+=12;0<Pa&&(j.bindBuffer(j.ARRAY_BUFFER,sa.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,db,qa))}if(Qc&&qb.hasTangents){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],eb=P.vertexTangents,Lb=eb[0],Mb=eb[1],
|
|
|
+Nb=eb[2],Ia[Ba]=Lb.x,Ia[Ba+1]=Lb.y,Ia[Ba+2]=Lb.z,Ia[Ba+3]=Lb.w,Ia[Ba+4]=Mb.x,Ia[Ba+5]=Mb.y,Ia[Ba+6]=Mb.z,Ia[Ba+7]=Mb.w,Ia[Ba+8]=Nb.x,Ia[Ba+9]=Nb.y,Ia[Ba+10]=Nb.z,Ia[Ba+11]=Nb.w,Ba+=12;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],eb=P.vertexTangents,Lb=eb[0],Mb=eb[1],Nb=eb[2],wb=eb[3],Ia[Ba]=Lb.x,Ia[Ba+1]=Lb.y,Ia[Ba+2]=Lb.z,Ia[Ba+3]=Lb.w,Ia[Ba+4]=Mb.x,Ia[Ba+5]=Mb.y,Ia[Ba+6]=Mb.z,Ia[Ba+7]=Mb.w,Ia[Ba+8]=Nb.x,Ia[Ba+9]=Nb.y,Ia[Ba+10]=Nb.z,Ia[Ba+11]=Nb.w,Ia[Ba+12]=wb.x,Ia[Ba+13]=wb.y,Ia[Ba+14]=wb.z,Ia[Ba+15]=
|
|
|
+wb.w,Ba+=16;j.bindBuffer(j.ARRAY_BUFFER,sa.__webglTangentBuffer);j.bufferData(j.ARRAY_BUFFER,Ia,qa)}if(Pc&&Ta){D=0;for(U=wa.length;D<U;D++)if(P=kb[wa[D]],Za=P.vertexNormals,Ua=P.normal,3===Za.length&&ab)for(ya=0;3>ya;ya++)nc=Za[ya],Db[jb]=nc.x,Db[jb+1]=nc.y,Db[jb+2]=nc.z,jb+=3;else for(ya=0;3>ya;ya++)Db[jb]=Ua.x,Db[jb+1]=Ua.y,Db[jb+2]=Ua.z,jb+=3;D=0;for(U=xa.length;D<U;D++)if(P=kb[xa[D]],Za=P.vertexNormals,Ua=P.normal,4===Za.length&&ab)for(ya=0;4>ya;ya++)nc=Za[ya],Db[jb]=nc.x,Db[jb+1]=nc.y,Db[jb+
|
|
|
+2]=nc.z,jb+=3;else for(ya=0;4>ya;ya++)Db[jb]=Ua.x,Db[jb+1]=Ua.y,Db[jb+2]=Ua.z,jb+=3;j.bindBuffer(j.ARRAY_BUFFER,sa.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Db,qa)}if(Ec&&qd&&$a){D=0;for(U=wa.length;D<U;D++)if(Qa=wa[D],ob=qd[Qa],void 0!==ob)for(ya=0;3>ya;ya++)zc=ob[ya],Fc[ic]=zc.x,Fc[ic+1]=zc.y,ic+=2;D=0;for(U=xa.length;D<U;D++)if(Qa=xa[D],ob=qd[Qa],void 0!==ob)for(ya=0;4>ya;ya++)zc=ob[ya],Fc[ic]=zc.x,Fc[ic+1]=zc.y,ic+=2;0<ic&&(j.bindBuffer(j.ARRAY_BUFFER,sa.__webglUVBuffer),j.bufferData(j.ARRAY_BUFFER,
|
|
|
+Fc,qa))}if(Ec&&rd&&$a){D=0;for(U=wa.length;D<U;D++)if(Qa=wa[D],pb=rd[Qa],void 0!==pb)for(ya=0;3>ya;ya++)Ac=pb[ya],Gc[jc]=Ac.x,Gc[jc+1]=Ac.y,jc+=2;D=0;for(U=xa.length;D<U;D++)if(Qa=xa[D],pb=rd[Qa],void 0!==pb)for(ya=0;4>ya;ya++)Ac=pb[ya],Gc[jc]=Ac.x,Gc[jc+1]=Ac.y,jc+=2;0<jc&&(j.bindBuffer(j.ARRAY_BUFFER,sa.__webglUV2Buffer),j.bufferData(j.ARRAY_BUFFER,Gc,qa))}if(Oc){D=0;for(U=wa.length;D<U;D++)$b[Cb]=Oa,$b[Cb+1]=Oa+1,$b[Cb+2]=Oa+2,Cb+=3,vb[mb]=Oa,vb[mb+1]=Oa+1,vb[mb+2]=Oa,vb[mb+3]=Oa+2,vb[mb+4]=Oa+
|
|
|
+1,vb[mb+5]=Oa+2,mb+=6,Oa+=3;D=0;for(U=xa.length;D<U;D++)$b[Cb]=Oa,$b[Cb+1]=Oa+1,$b[Cb+2]=Oa+3,$b[Cb+3]=Oa+1,$b[Cb+4]=Oa+2,$b[Cb+5]=Oa+3,Cb+=6,vb[mb]=Oa,vb[mb+1]=Oa+1,vb[mb+2]=Oa,vb[mb+3]=Oa+3,vb[mb+4]=Oa+1,vb[mb+5]=Oa+2,vb[mb+6]=Oa+2,vb[mb+7]=Oa+3,mb+=8,Oa+=4;j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,sa.__webglFaceBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,$b,qa);j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,sa.__webglLineBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,vb,qa)}if(pd){ya=0;for(ec=pd.length;ya<ec;ya++)if(u=
|
|
|
+pd[ya],u.__original.needsUpdate){y=0;if(1===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],u.array[y]=u.value[P.a],u.array[y+1]=u.value[P.b],u.array[y+2]=u.value[P.c],y+=3;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],u.array[y]=u.value[P.a],u.array[y+1]=u.value[P.b],u.array[y+2]=u.value[P.c],u.array[y+3]=u.value[P.d],y+=4}else{if("faces"===u.boundTo){D=0;for(U=wa.length;D<U;D++)za=u.value[wa[D]],u.array[y]=za,u.array[y+1]=za,u.array[y+2]=za,y+=3;D=0;for(U=
|
|
|
+xa.length;D<U;D++)za=u.value[xa[D]],u.array[y]=za,u.array[y+1]=za,u.array[y+2]=za,u.array[y+3]=za,y+=4}}else if(2===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],Q=u.value[P.a],R=u.value[P.b],S=u.value[P.c],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=R.x,u.array[y+3]=R.y,u.array[y+4]=S.x,u.array[y+5]=S.y,y+=6;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],Q=u.value[P.a],R=u.value[P.b],S=u.value[P.c],pa=u.value[P.d],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+
|
|
|
+2]=R.x,u.array[y+3]=R.y,u.array[y+4]=S.x,u.array[y+5]=S.y,u.array[y+6]=pa.x,u.array[y+7]=pa.y,y+=8}else{if("faces"===u.boundTo){D=0;for(U=wa.length;D<U;D++)S=R=Q=za=u.value[wa[D]],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=R.x,u.array[y+3]=R.y,u.array[y+4]=S.x,u.array[y+5]=S.y,y+=6;D=0;for(U=xa.length;D<U;D++)pa=S=R=Q=za=u.value[xa[D]],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=R.x,u.array[y+3]=R.y,u.array[y+4]=S.x,u.array[y+5]=S.y,u.array[y+6]=pa.x,u.array[y+7]=pa.y,y+=8}}else if(3===u.size){var Z;
|
|
|
+Z="c"===u.type?["r","g","b"]:["x","y","z"];if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(U=wa.length;D<U;D++)P=kb[wa[D]],Q=u.value[P.a],R=u.value[P.b],S=u.value[P.c],u.array[y]=Q[Z[0]],u.array[y+1]=Q[Z[1]],u.array[y+2]=Q[Z[2]],u.array[y+3]=R[Z[0]],u.array[y+4]=R[Z[1]],u.array[y+5]=R[Z[2]],u.array[y+6]=S[Z[0]],u.array[y+7]=S[Z[1]],u.array[y+8]=S[Z[2]],y+=9;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],Q=u.value[P.a],R=u.value[P.b],S=u.value[P.c],pa=u.value[P.d],u.array[y]=Q[Z[0]],u.array[y+1]=Q[Z[1]],
|
|
|
+u.array[y+2]=Q[Z[2]],u.array[y+3]=R[Z[0]],u.array[y+4]=R[Z[1]],u.array[y+5]=R[Z[2]],u.array[y+6]=S[Z[0]],u.array[y+7]=S[Z[1]],u.array[y+8]=S[Z[2]],u.array[y+9]=pa[Z[0]],u.array[y+10]=pa[Z[1]],u.array[y+11]=pa[Z[2]],y+=12}else if("faces"===u.boundTo){D=0;for(U=wa.length;D<U;D++)S=R=Q=za=u.value[wa[D]],u.array[y]=Q[Z[0]],u.array[y+1]=Q[Z[1]],u.array[y+2]=Q[Z[2]],u.array[y+3]=R[Z[0]],u.array[y+4]=R[Z[1]],u.array[y+5]=R[Z[2]],u.array[y+6]=S[Z[0]],u.array[y+7]=S[Z[1]],u.array[y+8]=S[Z[2]],y+=9;D=0;for(U=
|
|
|
+xa.length;D<U;D++)pa=S=R=Q=za=u.value[xa[D]],u.array[y]=Q[Z[0]],u.array[y+1]=Q[Z[1]],u.array[y+2]=Q[Z[2]],u.array[y+3]=R[Z[0]],u.array[y+4]=R[Z[1]],u.array[y+5]=R[Z[2]],u.array[y+6]=S[Z[0]],u.array[y+7]=S[Z[1]],u.array[y+8]=S[Z[2]],u.array[y+9]=pa[Z[0]],u.array[y+10]=pa[Z[1]],u.array[y+11]=pa[Z[2]],y+=12}else if("faceVertices"===u.boundTo){D=0;for(U=wa.length;D<U;D++)za=u.value[wa[D]],Q=za[0],R=za[1],S=za[2],u.array[y]=Q[Z[0]],u.array[y+1]=Q[Z[1]],u.array[y+2]=Q[Z[2]],u.array[y+3]=R[Z[0]],u.array[y+
|
|
|
+4]=R[Z[1]],u.array[y+5]=R[Z[2]],u.array[y+6]=S[Z[0]],u.array[y+7]=S[Z[1]],u.array[y+8]=S[Z[2]],y+=9;D=0;for(U=xa.length;D<U;D++)za=u.value[xa[D]],Q=za[0],R=za[1],S=za[2],pa=za[3],u.array[y]=Q[Z[0]],u.array[y+1]=Q[Z[1]],u.array[y+2]=Q[Z[2]],u.array[y+3]=R[Z[0]],u.array[y+4]=R[Z[1]],u.array[y+5]=R[Z[2]],u.array[y+6]=S[Z[0]],u.array[y+7]=S[Z[1]],u.array[y+8]=S[Z[2]],u.array[y+9]=pa[Z[0]],u.array[y+10]=pa[Z[1]],u.array[y+11]=pa[Z[2]],y+=12}}else if(4===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=
|
|
|
+0;for(U=wa.length;D<U;D++)P=kb[wa[D]],Q=u.value[P.a],R=u.value[P.b],S=u.value[P.c],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=Q.z,u.array[y+3]=Q.w,u.array[y+4]=R.x,u.array[y+5]=R.y,u.array[y+6]=R.z,u.array[y+7]=R.w,u.array[y+8]=S.x,u.array[y+9]=S.y,u.array[y+10]=S.z,u.array[y+11]=S.w,y+=12;D=0;for(U=xa.length;D<U;D++)P=kb[xa[D]],Q=u.value[P.a],R=u.value[P.b],S=u.value[P.c],pa=u.value[P.d],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=Q.z,u.array[y+3]=Q.w,u.array[y+4]=R.x,u.array[y+5]=R.y,u.array[y+
|
|
|
+6]=R.z,u.array[y+7]=R.w,u.array[y+8]=S.x,u.array[y+9]=S.y,u.array[y+10]=S.z,u.array[y+11]=S.w,u.array[y+12]=pa.x,u.array[y+13]=pa.y,u.array[y+14]=pa.z,u.array[y+15]=pa.w,y+=16}else if("faces"===u.boundTo){D=0;for(U=wa.length;D<U;D++)S=R=Q=za=u.value[wa[D]],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=Q.z,u.array[y+3]=Q.w,u.array[y+4]=R.x,u.array[y+5]=R.y,u.array[y+6]=R.z,u.array[y+7]=R.w,u.array[y+8]=S.x,u.array[y+9]=S.y,u.array[y+10]=S.z,u.array[y+11]=S.w,y+=12;D=0;for(U=xa.length;D<U;D++)pa=S=R=
|
|
|
+Q=za=u.value[xa[D]],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=Q.z,u.array[y+3]=Q.w,u.array[y+4]=R.x,u.array[y+5]=R.y,u.array[y+6]=R.z,u.array[y+7]=R.w,u.array[y+8]=S.x,u.array[y+9]=S.y,u.array[y+10]=S.z,u.array[y+11]=S.w,u.array[y+12]=pa.x,u.array[y+13]=pa.y,u.array[y+14]=pa.z,u.array[y+15]=pa.w,y+=16}else if("faceVertices"===u.boundTo){D=0;for(U=wa.length;D<U;D++)za=u.value[wa[D]],Q=za[0],R=za[1],S=za[2],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=Q.z,u.array[y+3]=Q.w,u.array[y+4]=R.x,u.array[y+
|
|
|
+5]=R.y,u.array[y+6]=R.z,u.array[y+7]=R.w,u.array[y+8]=S.x,u.array[y+9]=S.y,u.array[y+10]=S.z,u.array[y+11]=S.w,y+=12;D=0;for(U=xa.length;D<U;D++)za=u.value[xa[D]],Q=za[0],R=za[1],S=za[2],pa=za[3],u.array[y]=Q.x,u.array[y+1]=Q.y,u.array[y+2]=Q.z,u.array[y+3]=Q.w,u.array[y+4]=R.x,u.array[y+5]=R.y,u.array[y+6]=R.z,u.array[y+7]=R.w,u.array[y+8]=S.x,u.array[y+9]=S.y,u.array[y+10]=S.z,u.array[y+11]=S.w,u.array[y+12]=pa.x,u.array[y+13]=pa.y,u.array[y+14]=pa.z,u.array[y+15]=pa.w,y+=16}j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+u.buffer);j.bufferData(j.ARRAY_BUFFER,u.array,qa)}}Na&&(delete sa.__inittedArrays,delete sa.__colorArray,delete sa.__normalArray,delete sa.__tangentArray,delete sa.__uvArray,delete sa.__uv2Array,delete sa.__faceArray,delete sa.__vertexArray,delete sa.__lineArray,delete sa.__skinIndexArray,delete sa.__skinWeightArray)}}N.verticesNeedUpdate=!1;N.morphTargetsNeedUpdate=!1;N.elementsNeedUpdate=!1;N.uvsNeedUpdate=!1;N.normalsNeedUpdate=!1;N.colorsNeedUpdate=!1;N.tangentsNeedUpdate=!1;N.buffersNeedUpdate=
|
|
|
+!1;ta.attributes&&x(ta)}else if(ia instanceof THREE.Ribbon){ta=e(ia,N);oa=ta.attributes&&t(ta);if(N.verticesNeedUpdate||N.colorsNeedUpdate||N.normalsNeedUpdate||oa){var Eb=N,Tc=j.DYNAMIC_DRAW,Hc=void 0,Ic=void 0,Jc=void 0,Uc=void 0,Aa=void 0,Vc=void 0,Wc=void 0,Xc=void 0,yd=void 0,gb=void 0,Bc=void 0,Fa=void 0,rb=void 0,zd=Eb.vertices,Ad=Eb.colors,Bd=Eb.normals,id=zd.length,jd=Ad.length,kd=Bd.length,Yc=Eb.__vertexArray,Zc=Eb.__colorArray,$c=Eb.__normalArray,ld=Eb.colorsNeedUpdate,md=Eb.normalsNeedUpdate,
|
|
|
+sd=Eb.__webglCustomAttributesList;if(Eb.verticesNeedUpdate){for(Hc=0;Hc<id;Hc++)Uc=zd[Hc],Aa=3*Hc,Yc[Aa]=Uc.x,Yc[Aa+1]=Uc.y,Yc[Aa+2]=Uc.z;j.bindBuffer(j.ARRAY_BUFFER,Eb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Yc,Tc)}if(ld){for(Ic=0;Ic<jd;Ic++)Vc=Ad[Ic],Aa=3*Ic,Zc[Aa]=Vc.r,Zc[Aa+1]=Vc.g,Zc[Aa+2]=Vc.b;j.bindBuffer(j.ARRAY_BUFFER,Eb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Zc,Tc)}if(md){for(Jc=0;Jc<kd;Jc++)Wc=Bd[Jc],Aa=3*Jc,$c[Aa]=Wc.x,$c[Aa+1]=Wc.y,$c[Aa+2]=Wc.z;j.bindBuffer(j.ARRAY_BUFFER,
|
|
|
+Eb.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,$c,Tc)}if(sd){Xc=0;for(yd=sd.length;Xc<yd;Xc++)if(Fa=sd[Xc],Fa.needsUpdate&&(void 0===Fa.boundTo||"vertices"===Fa.boundTo)){Aa=0;Bc=Fa.value.length;if(1===Fa.size)for(gb=0;gb<Bc;gb++)Fa.array[gb]=Fa.value[gb];else if(2===Fa.size)for(gb=0;gb<Bc;gb++)rb=Fa.value[gb],Fa.array[Aa]=rb.x,Fa.array[Aa+1]=rb.y,Aa+=2;else if(3===Fa.size)if("c"===Fa.type)for(gb=0;gb<Bc;gb++)rb=Fa.value[gb],Fa.array[Aa]=rb.r,Fa.array[Aa+1]=rb.g,Fa.array[Aa+2]=rb.b,Aa+=3;else for(gb=
|
|
|
+0;gb<Bc;gb++)rb=Fa.value[gb],Fa.array[Aa]=rb.x,Fa.array[Aa+1]=rb.y,Fa.array[Aa+2]=rb.z,Aa+=3;else if(4===Fa.size)for(gb=0;gb<Bc;gb++)rb=Fa.value[gb],Fa.array[Aa]=rb.x,Fa.array[Aa+1]=rb.y,Fa.array[Aa+2]=rb.z,Fa.array[Aa+3]=rb.w,Aa+=4;j.bindBuffer(j.ARRAY_BUFFER,Fa.buffer);j.bufferData(j.ARRAY_BUFFER,Fa.array,Tc)}}}N.verticesNeedUpdate=!1;N.colorsNeedUpdate=!1;N.normalsNeedUpdate=!1;ta.attributes&&x(ta)}else if(ia instanceof THREE.Line)if(N instanceof THREE.BufferGeometry)(N.verticesNeedUpdate||N.colorsNeedUpdate)&&
|
|
|
+i(N,j.DYNAMIC_DRAW,!N.dynamic),N.verticesNeedUpdate=!1,N.colorsNeedUpdate=!1;else{ta=e(ia,N);oa=ta.attributes&&t(ta);if(N.verticesNeedUpdate||N.colorsNeedUpdate||N.lineDistancesNeedUpdate||oa){var Fb=N,ad=j.DYNAMIC_DRAW,Kc=void 0,Lc=void 0,Mc=void 0,bd=void 0,La=void 0,cd=void 0,Cd=Fb.vertices,Dd=Fb.colors,Ed=Fb.lineDistances,nd=Cd.length,Kd=Dd.length,Ld=Ed.length,dd=Fb.__vertexArray,ed=Fb.__colorArray,Fd=Fb.__lineDistanceArray,Md=Fb.colorsNeedUpdate,Nd=Fb.lineDistancesNeedUpdate,td=Fb.__webglCustomAttributesList,
|
|
|
+fd=void 0,Gd=void 0,hb=void 0,Cc=void 0,sb=void 0,Ga=void 0;if(Fb.verticesNeedUpdate){for(Kc=0;Kc<nd;Kc++)bd=Cd[Kc],La=3*Kc,dd[La]=bd.x,dd[La+1]=bd.y,dd[La+2]=bd.z;j.bindBuffer(j.ARRAY_BUFFER,Fb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,dd,ad)}if(Md){for(Lc=0;Lc<Kd;Lc++)cd=Dd[Lc],La=3*Lc,ed[La]=cd.r,ed[La+1]=cd.g,ed[La+2]=cd.b;j.bindBuffer(j.ARRAY_BUFFER,Fb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,ed,ad)}if(Nd){for(Mc=0;Mc<Ld;Mc++)Fd[Mc]=Ed[Mc];j.bindBuffer(j.ARRAY_BUFFER,Fb.__webglLineDistanceBuffer);
|
|
|
+j.bufferData(j.ARRAY_BUFFER,Fd,ad)}if(td){fd=0;for(Gd=td.length;fd<Gd;fd++)if(Ga=td[fd],Ga.needsUpdate&&(void 0===Ga.boundTo||"vertices"===Ga.boundTo)){La=0;Cc=Ga.value.length;if(1===Ga.size)for(hb=0;hb<Cc;hb++)Ga.array[hb]=Ga.value[hb];else if(2===Ga.size)for(hb=0;hb<Cc;hb++)sb=Ga.value[hb],Ga.array[La]=sb.x,Ga.array[La+1]=sb.y,La+=2;else if(3===Ga.size)if("c"===Ga.type)for(hb=0;hb<Cc;hb++)sb=Ga.value[hb],Ga.array[La]=sb.r,Ga.array[La+1]=sb.g,Ga.array[La+2]=sb.b,La+=3;else for(hb=0;hb<Cc;hb++)sb=
|
|
|
+Ga.value[hb],Ga.array[La]=sb.x,Ga.array[La+1]=sb.y,Ga.array[La+2]=sb.z,La+=3;else if(4===Ga.size)for(hb=0;hb<Cc;hb++)sb=Ga.value[hb],Ga.array[La]=sb.x,Ga.array[La+1]=sb.y,Ga.array[La+2]=sb.z,Ga.array[La+3]=sb.w,La+=4;j.bindBuffer(j.ARRAY_BUFFER,Ga.buffer);j.bufferData(j.ARRAY_BUFFER,Ga.array,ad)}}}N.verticesNeedUpdate=!1;N.colorsNeedUpdate=!1;N.lineDistancesNeedUpdate=!1;ta.attributes&&x(ta)}else if(ia instanceof THREE.ParticleSystem)if(N instanceof THREE.BufferGeometry)(N.verticesNeedUpdate||N.colorsNeedUpdate)&&
|
|
|
+i(N,j.DYNAMIC_DRAW,!N.dynamic),N.verticesNeedUpdate=!1,N.colorsNeedUpdate=!1;else{ta=e(ia,N);oa=ta.attributes&&t(ta);if(N.verticesNeedUpdate||N.colorsNeedUpdate||ia.sortParticles||oa){var ac=N,ud=j.DYNAMIC_DRAW,Nc=ia,tb=void 0,bc=void 0,cc=void 0,ca=void 0,dc=void 0,rc=void 0,gd=ac.vertices,vd=gd.length,wd=ac.colors,Hd=wd.length,wc=ac.__vertexArray,xc=ac.__colorArray,kc=ac.__sortArray,Id=ac.verticesNeedUpdate,Jd=ac.colorsNeedUpdate,lc=ac.__webglCustomAttributesList,Jb=void 0,Dc=void 0,na=void 0,Kb=
|
|
|
+void 0,Ca=void 0,ba=void 0;if(Nc.sortParticles){ub.copy(fc);ub.multiply(Nc.matrixWorld);for(tb=0;tb<vd;tb++)cc=gd[tb],gc.copy(cc),gc.applyProjection(ub),kc[tb]=[gc.z,tb];kc.sort(m);for(tb=0;tb<vd;tb++)cc=gd[kc[tb][1]],ca=3*tb,wc[ca]=cc.x,wc[ca+1]=cc.y,wc[ca+2]=cc.z;for(bc=0;bc<Hd;bc++)ca=3*bc,rc=wd[kc[bc][1]],xc[ca]=rc.r,xc[ca+1]=rc.g,xc[ca+2]=rc.b;if(lc){Jb=0;for(Dc=lc.length;Jb<Dc;Jb++)if(ba=lc[Jb],void 0===ba.boundTo||"vertices"===ba.boundTo)if(ca=0,Kb=ba.value.length,1===ba.size)for(na=0;na<Kb;na++)dc=
|
|
|
+kc[na][1],ba.array[na]=ba.value[dc];else if(2===ba.size)for(na=0;na<Kb;na++)dc=kc[na][1],Ca=ba.value[dc],ba.array[ca]=Ca.x,ba.array[ca+1]=Ca.y,ca+=2;else if(3===ba.size)if("c"===ba.type)for(na=0;na<Kb;na++)dc=kc[na][1],Ca=ba.value[dc],ba.array[ca]=Ca.r,ba.array[ca+1]=Ca.g,ba.array[ca+2]=Ca.b,ca+=3;else for(na=0;na<Kb;na++)dc=kc[na][1],Ca=ba.value[dc],ba.array[ca]=Ca.x,ba.array[ca+1]=Ca.y,ba.array[ca+2]=Ca.z,ca+=3;else if(4===ba.size)for(na=0;na<Kb;na++)dc=kc[na][1],Ca=ba.value[dc],ba.array[ca]=Ca.x,
|
|
|
+ba.array[ca+1]=Ca.y,ba.array[ca+2]=Ca.z,ba.array[ca+3]=Ca.w,ca+=4}}else{if(Id)for(tb=0;tb<vd;tb++)cc=gd[tb],ca=3*tb,wc[ca]=cc.x,wc[ca+1]=cc.y,wc[ca+2]=cc.z;if(Jd)for(bc=0;bc<Hd;bc++)rc=wd[bc],ca=3*bc,xc[ca]=rc.r,xc[ca+1]=rc.g,xc[ca+2]=rc.b;if(lc){Jb=0;for(Dc=lc.length;Jb<Dc;Jb++)if(ba=lc[Jb],ba.needsUpdate&&(void 0===ba.boundTo||"vertices"===ba.boundTo))if(Kb=ba.value.length,ca=0,1===ba.size)for(na=0;na<Kb;na++)ba.array[na]=ba.value[na];else if(2===ba.size)for(na=0;na<Kb;na++)Ca=ba.value[na],ba.array[ca]=
|
|
|
+Ca.x,ba.array[ca+1]=Ca.y,ca+=2;else if(3===ba.size)if("c"===ba.type)for(na=0;na<Kb;na++)Ca=ba.value[na],ba.array[ca]=Ca.r,ba.array[ca+1]=Ca.g,ba.array[ca+2]=Ca.b,ca+=3;else for(na=0;na<Kb;na++)Ca=ba.value[na],ba.array[ca]=Ca.x,ba.array[ca+1]=Ca.y,ba.array[ca+2]=Ca.z,ca+=3;else if(4===ba.size)for(na=0;na<Kb;na++)Ca=ba.value[na],ba.array[ca]=Ca.x,ba.array[ca+1]=Ca.y,ba.array[ca+2]=Ca.z,ba.array[ca+3]=Ca.w,ca+=4}}if(Id||Nc.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ac.__webglVertexBuffer),j.bufferData(j.ARRAY_BUFFER,
|
|
|
+wc,ud);if(Jd||Nc.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ac.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,xc,ud);if(lc){Jb=0;for(Dc=lc.length;Jb<Dc;Jb++)if(ba=lc[Jb],ba.needsUpdate||Nc.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ba.buffer),j.bufferData(j.ARRAY_BUFFER,ba.array,ud)}}N.verticesNeedUpdate=!1;N.colorsNeedUpdate=!1;ta.attributes&&x(ta)}}};this.initMaterial=function(a,b,c,d){var e,f,g,i;a.addEventListener("dispose",O);var h,k,m,n,l;a instanceof THREE.MeshDepthMaterial?l="depth":a instanceof
|
|
|
+THREE.MeshNormalMaterial?l="normal":a instanceof THREE.MeshBasicMaterial?l="basic":a instanceof THREE.MeshLambertMaterial?l="lambert":a instanceof THREE.MeshPhongMaterial?l="phong":a instanceof THREE.LineBasicMaterial?l="basic":a instanceof THREE.LineDashedMaterial?l="dashed":a instanceof THREE.ParticleBasicMaterial&&(l="particle_basic");if(l){var p=THREE.ShaderLib[l];a.uniforms=THREE.UniformsUtils.clone(p.uniforms);a.vertexShader=p.vertexShader;a.fragmentShader=p.fragmentShader}var q,s,r;e=g=s=r=
|
|
|
+p=0;for(f=b.length;e<f;e++)q=b[e],q.onlyShadow||(q instanceof THREE.DirectionalLight&&g++,q instanceof THREE.PointLight&&s++,q instanceof THREE.SpotLight&&r++,q instanceof THREE.HemisphereLight&&p++);e=g;f=s;g=r;i=p;p=q=0;for(r=b.length;p<r;p++)s=b[p],s.castShadow&&(s instanceof THREE.SpotLight&&q++,s instanceof THREE.DirectionalLight&&!s.shadowCascade&&q++);n=q;tc&&d&&d.useVertexTexture?m=1024:(b=j.getParameter(j.MAX_VERTEX_UNIFORM_VECTORS),b=Math.floor((b-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&
|
|
|
+(b=Math.min(d.bones.length,b),b<d.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.bones.length+", this GPU supports just "+b+" (try OpenGL instead of ANGLE)")),m=b);a:{s=a.fragmentShader;r=a.vertexShader;p=a.uniforms;b=a.attributes;q=a.defines;var c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,normalMap:!!a.normalMap,specularMap:!!a.specularMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:a.sizeAttenuation,
|
|
|
+skinning:a.skinning,maxBones:m,useVertexTexture:tc&&d&&d.useVertexTexture,boneTextureWidth:d&&d.boneTextureWidth,boneTextureHeight:d&&d.boneTextureHeight,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxHemiLights:i,maxShadows:n,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapType:this.shadowMapType,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,
|
|
|
+alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide,flipSided:a.side===THREE.BackSide},t,v,w,d=[];l?d.push(l):(d.push(s),d.push(r));for(v in q)d.push(v),d.push(q[v]);for(t in c)d.push(t),d.push(c[t]);l=d.join();t=0;for(v=va.length;t<v;t++)if(d=va[t],d.code===l){d.usedTimes++;k=d.program;break a}t="SHADOWMAP_TYPE_BASIC";c.shadowMapType===THREE.PCFShadowMap?t="SHADOWMAP_TYPE_PCF":c.shadowMapType===THREE.PCFSoftShadowMap&&(t="SHADOWMAP_TYPE_PCF_SOFT");
|
|
|
+v=[];for(w in q)d=q[w],!1!==d&&(d="#define "+w+" "+d,v.push(d));d=v.join("\n");w=j.createProgram();v=["precision "+W+" float;",d,sc?"#define VERTEX_TEXTURES":"",L.gammaInput?"#define GAMMA_INPUT":"",L.gammaOutput?"#define GAMMA_OUTPUT":"",L.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,
|
|
|
+"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.useVertexTexture?"#define BONE_TEXTURE":"",c.boneTextureWidth?"#define N_BONE_PIXEL_X "+c.boneTextureWidth.toFixed(1):"",c.boneTextureHeight?"#define N_BONE_PIXEL_Y "+c.boneTextureHeight.toFixed(1):
|
|
|
+"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.morphNormals?"#define USE_MORPHNORMALS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapEnabled?"#define "+t:"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\n#ifdef USE_MORPHNORMALS\nattribute vec3 morphNormal0;\nattribute vec3 morphNormal1;\nattribute vec3 morphNormal2;\nattribute vec3 morphNormal3;\n#else\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
t=["precision "+W+" float;",c.bumpMap||c.normalMap?"#extension GL_OES_standard_derivatives : enable":"",d,"#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",L.gammaInput?"#define GAMMA_INPUT":"",L.gammaOutput?"#define GAMMA_OUTPUT":"",L.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"",
|
|
|
c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&c.fogExp?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":
|
|
|
"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapEnabled?"#define "+t:"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");t=V("fragment",t+s);v=V("vertex",v+r);j.attachShader(w,v);j.attachShader(w,t);j.linkProgram(w);j.getProgramParameter(w,j.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+j.getProgramParameter(w,j.VALIDATE_STATUS)+", gl error ["+
|