提交 575c0fa8 编写于 作者: M Mr.doob

Updated builds.

上级 fad3d369
...@@ -16665,6 +16665,8 @@ THREE.CanvasRenderer = function ( parameters ) { ...@@ -16665,6 +16665,8 @@ THREE.CanvasRenderer = function ( parameters ) {
function textureToPattern( texture ) { function textureToPattern( texture ) {
if ( texture instanceof THREE.CompressedTexture ) return;
var repeatX = texture.wrapS === THREE.RepeatWrapping; var repeatX = texture.wrapS === THREE.RepeatWrapping;
var repeatY = texture.wrapT === THREE.RepeatWrapping; var repeatY = texture.wrapT === THREE.RepeatWrapping;
...@@ -20388,16 +20390,6 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -20388,16 +20390,6 @@ THREE.WebGLRenderer = function ( parameters ) {
var _fragmentShaderPrecisionMediumpFloat = _gl.getShaderPrecisionFormat( _gl.FRAGMENT_SHADER, _gl.MEDIUM_FLOAT ); var _fragmentShaderPrecisionMediumpFloat = _gl.getShaderPrecisionFormat( _gl.FRAGMENT_SHADER, _gl.MEDIUM_FLOAT );
var _fragmentShaderPrecisionLowpFloat = _gl.getShaderPrecisionFormat( _gl.FRAGMENT_SHADER, _gl.LOW_FLOAT ); var _fragmentShaderPrecisionLowpFloat = _gl.getShaderPrecisionFormat( _gl.FRAGMENT_SHADER, _gl.LOW_FLOAT );
/*
var _vertexShaderPrecisionHighpInt = _gl.getShaderPrecisionFormat( _gl.VERTEX_SHADER, _gl.HIGH_INT );
var _vertexShaderPrecisionMediumpInt = _gl.getShaderPrecisionFormat( _gl.VERTEX_SHADER, _gl.MEDIUM_INT );
var _vertexShaderPrecisionLowpInt = _gl.getShaderPrecisionFormat( _gl.VERTEX_SHADER, _gl.LOW_INT );
var _fragmentShaderPrecisionHighpInt = _gl.getShaderPrecisionFormat( _gl.FRAGMENT_SHADER, _gl.HIGH_INT );
var _fragmentShaderPrecisionMediumpInt = _gl.getShaderPrecisionFormat( _gl.FRAGMENT_SHADER, _gl.MEDIUM_INT );
var _fragmentShaderPrecisionLowpInt = _gl.getShaderPrecisionFormat( _gl.FRAGMENT_SHADER, _gl.LOW_INT );
*/
// clamp precision to maximum available // clamp precision to maximum available
var highpAvailable = _vertexShaderPrecisionHighpFloat.precision > 0 && _fragmentShaderPrecisionHighpFloat.precision > 0; var highpAvailable = _vertexShaderPrecisionHighpFloat.precision > 0 && _fragmentShaderPrecisionHighpFloat.precision > 0;
...@@ -23445,11 +23437,24 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -23445,11 +23437,24 @@ THREE.WebGLRenderer = function ( parameters ) {
_frustum.setFromMatrix( _projScreenMatrix ); _frustum.setFromMatrix( _projScreenMatrix );
// update WebGL objects // update WebGL objects
if ( this.autoUpdateObjects ) this.initWebGLObjects( scene ); if ( this.autoUpdateObjects ) this.initWebGLObjects( scene );
// custom render plugins (pre pass)
opaqueObjects.length = 0;
transparentObjects.length = 0;
_sortObjects = this.sortObjects;
projectObject(scene,scene,camera);
if ( this.sortObjects ) {
opaqueObjects.sort( painterSortStable );
transparentObjects.sort( reversePainterSortStable );
}
// custom render plugins (pre pass)
renderPlugins( this.renderPluginsPre, scene, camera ); renderPlugins( this.renderPluginsPre, scene, camera );
// //
...@@ -23470,18 +23475,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -23470,18 +23475,7 @@ THREE.WebGLRenderer = function ( parameters ) {
// set matrices for regular objects (frustum culled) // set matrices for regular objects (frustum culled)
opaqueObjects.length = 0;
transparentObjects.length = 0;
_sortObjects = this.sortObjects;
projectObject(scene,scene,camera);
if ( this.sortObjects ) {
opaqueObjects.sort( painterSortStable );
transparentObjects.sort( reversePainterSortStable );
}
// set matrices for immediate objects // set matrices for immediate objects
...@@ -23565,14 +23559,11 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -23565,14 +23559,11 @@ THREE.WebGLRenderer = function ( parameters ) {
updateObject(scene, object); updateObject(scene, object);
setupMatrices( object, camera );
for (var i = 0, l = webglObjects.length; i < l; i++){ for (var i = 0, l = webglObjects.length; i < l; i++){
var webglObject = webglObjects[i]; var webglObject = webglObjects[i];
unrollBufferMaterial( webglObject ); unrollBufferMaterial( webglObject );
webglObject.render = true; webglObject.render = true;
...@@ -23655,6 +23646,8 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -23655,6 +23646,8 @@ THREE.WebGLRenderer = function ( parameters ) {
object = webglObject.object; object = webglObject.object;
buffer = webglObject.buffer; buffer = webglObject.buffer;
setupMatrices( object, camera );
if ( overrideMaterial ) { if ( overrideMaterial ) {
...@@ -24196,7 +24189,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -24196,7 +24189,7 @@ THREE.WebGLRenderer = function ( parameters ) {
function removeInstancesWebglObjects( objlist, object ) { function removeInstancesWebglObjects( objlist, object ) {
delete objlist[object]; delete objlist[object.id];
}; };
...@@ -36752,36 +36745,12 @@ THREE.DepthPassPlugin = function () { ...@@ -36752,36 +36745,12 @@ THREE.DepthPassPlugin = function () {
_renderList.length = 0; _renderList.length = 0;
projectObject(scene,scene,camera); projectObject(scene,scene,camera);
/*_renderList = scene.__webglObjects;
for ( j = 0, jl = renderList.length; j < jl; j ++ ) {
webglObject = renderList[ j ];
object = webglObject.object;
webglObject.render = false;
if ( object.visible ) {
if ( object.frustumCulled === false || _frustum.intersectsObject( object ) === true ) {
object._modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );
webglObject.render = true;
}
}
}*/
// render regular objects // render regular objects
var objectMaterial, useMorphing, useSkinning; var objectMaterial, useMorphing, useSkinning;
for ( j = 0, jl = renderList.length; j < jl; j ++ ) { for ( j = 0, jl = _renderList.length; j < jl; j ++ ) {
webglObject = _renderList[ j ]; webglObject = _renderList[ j ];
......
...@@ -311,20 +311,20 @@ THREE.Sprite.prototype.raycast=function(){var a=new THREE.Vector3;return functio ...@@ -311,20 +311,20 @@ THREE.Sprite.prototype.raycast=function(){var a=new THREE.Vector3;return functio
THREE.Sprite.prototype.clone=function(a){void 0===a&&(a=new THREE.Sprite(this.material));THREE.Object3D.prototype.clone.call(this,a);return a};THREE.Particle=THREE.Sprite;THREE.Scene=function(){THREE.Object3D.call(this);this.overrideMaterial=this.fog=null;this.autoUpdate=!0;this.matrixAutoUpdate=!1;this.__lights=[];this.__objectsAdded=[];this.__objectsRemoved=[]};THREE.Scene.prototype=Object.create(THREE.Object3D.prototype); THREE.Sprite.prototype.clone=function(a){void 0===a&&(a=new THREE.Sprite(this.material));THREE.Object3D.prototype.clone.call(this,a);return a};THREE.Particle=THREE.Sprite;THREE.Scene=function(){THREE.Object3D.call(this);this.overrideMaterial=this.fog=null;this.autoUpdate=!0;this.matrixAutoUpdate=!1;this.__lights=[];this.__objectsAdded=[];this.__objectsRemoved=[]};THREE.Scene.prototype=Object.create(THREE.Object3D.prototype);
THREE.Scene.prototype.__addObject=function(a){if(a instanceof THREE.Light)-1===this.__lights.indexOf(a)&&this.__lights.push(a),a.target&&void 0===a.target.parent&&this.add(a.target);else if(!(a instanceof THREE.Camera||a instanceof THREE.Bone)){this.__objectsAdded.push(a);var b=this.__objectsRemoved.indexOf(a);-1!==b&&this.__objectsRemoved.splice(b,1)}this.dispatchEvent({type:"objectAdded",object:a});a.dispatchEvent({type:"addedToScene",scene:this});for(b=0;b<a.children.length;b++)this.__addObject(a.children[b])}; THREE.Scene.prototype.__addObject=function(a){if(a instanceof THREE.Light)-1===this.__lights.indexOf(a)&&this.__lights.push(a),a.target&&void 0===a.target.parent&&this.add(a.target);else if(!(a instanceof THREE.Camera||a instanceof THREE.Bone)){this.__objectsAdded.push(a);var b=this.__objectsRemoved.indexOf(a);-1!==b&&this.__objectsRemoved.splice(b,1)}this.dispatchEvent({type:"objectAdded",object:a});a.dispatchEvent({type:"addedToScene",scene:this});for(b=0;b<a.children.length;b++)this.__addObject(a.children[b])};
THREE.Scene.prototype.__removeObject=function(a){if(a instanceof THREE.Light){var b=this.__lights.indexOf(a);-1!==b&&this.__lights.splice(b,1);if(a.shadowCascadeArray)for(b=0;b<a.shadowCascadeArray.length;b++)this.__removeObject(a.shadowCascadeArray[b])}else a instanceof THREE.Camera||(this.__objectsRemoved.push(a),b=this.__objectsAdded.indexOf(a),-1!==b&&this.__objectsAdded.splice(b,1));this.dispatchEvent({type:"objectRemoved",object:a});a.dispatchEvent({type:"removedFromScene",scene:this});for(b= THREE.Scene.prototype.__removeObject=function(a){if(a instanceof THREE.Light){var b=this.__lights.indexOf(a);-1!==b&&this.__lights.splice(b,1);if(a.shadowCascadeArray)for(b=0;b<a.shadowCascadeArray.length;b++)this.__removeObject(a.shadowCascadeArray[b])}else a instanceof THREE.Camera||(this.__objectsRemoved.push(a),b=this.__objectsAdded.indexOf(a),-1!==b&&this.__objectsAdded.splice(b,1));this.dispatchEvent({type:"objectRemoved",object:a});a.dispatchEvent({type:"removedFromScene",scene:this});for(b=
0;b<a.children.length;b++)this.__removeObject(a.children[b])};THREE.Scene.prototype.clone=function(a){void 0===a&&(a=new THREE.Scene);THREE.Object3D.prototype.clone.call(this,a);null!==this.fog&&(a.fog=this.fog.clone());null!==this.overrideMaterial&&(a.overrideMaterial=this.overrideMaterial.clone());a.autoUpdate=this.autoUpdate;a.matrixAutoUpdate=this.matrixAutoUpdate;return a};THREE.Fog=function(a,b,c){this.name="";this.color=new THREE.Color(a);this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3};THREE.Fog.prototype.clone=function(){return new THREE.Fog(this.color.getHex(),this.near,this.far)};THREE.FogExp2=function(a,b){this.name="";this.color=new THREE.Color(a);this.density=void 0!==b?b:2.5E-4};THREE.FogExp2.prototype.clone=function(){return new THREE.FogExp2(this.color.getHex(),this.density)};THREE.CanvasRenderer=function(a){function b(a,b,c,d){l(b);n(c);r(d);p(a.getStyle());z.stroke();ka.expandByScalar(2*b)}function c(a){t(a.getStyle());z.fill()}function d(a){e(a.target)}function e(a){var b=a.wrapS===THREE.RepeatWrapping,c=a.wrapT===THREE.RepeatWrapping,d=a.image,e=document.createElement("canvas");e.width=d.width;e.height=d.height;var f=e.getContext("2d");f.setTransform(1,0,0,-1,0,d.height);f.drawImage(d,0,0);Da[a.id]=z.createPattern(e,!0===b&&!0===c?"repeat":!0===b&&!1===c?"repeat-x": 0;b<a.children.length;b++)this.__removeObject(a.children[b])};THREE.Scene.prototype.clone=function(a){void 0===a&&(a=new THREE.Scene);THREE.Object3D.prototype.clone.call(this,a);null!==this.fog&&(a.fog=this.fog.clone());null!==this.overrideMaterial&&(a.overrideMaterial=this.overrideMaterial.clone());a.autoUpdate=this.autoUpdate;a.matrixAutoUpdate=this.matrixAutoUpdate;return a};THREE.Fog=function(a,b,c){this.name="";this.color=new THREE.Color(a);this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3};THREE.Fog.prototype.clone=function(){return new THREE.Fog(this.color.getHex(),this.near,this.far)};THREE.FogExp2=function(a,b){this.name="";this.color=new THREE.Color(a);this.density=void 0!==b?b:2.5E-4};THREE.FogExp2.prototype.clone=function(){return new THREE.FogExp2(this.color.getHex(),this.density)};THREE.CanvasRenderer=function(a){function b(a,b,c,d){l(b);n(c);r(d);p(a.getStyle());z.stroke();ka.expandByScalar(2*b)}function c(a){t(a.getStyle());z.fill()}function d(a){e(a.target)}function e(a){if(!(a instanceof THREE.CompressedTexture)){var b=a.wrapS===THREE.RepeatWrapping,c=a.wrapT===THREE.RepeatWrapping,d=a.image,e=document.createElement("canvas");e.width=d.width;e.height=d.height;var f=e.getContext("2d");f.setTransform(1,0,0,-1,0,d.height);f.drawImage(d,0,0);Da[a.id]=z.createPattern(e,!0===
!1===b&&!0===c?"repeat-y":"no-repeat")}function f(a,b,c,f,g,h,k,l,n,p,q,r,s){if(!(s instanceof THREE.DataTexture)){!1===s.hasEventListener("update",d)&&(void 0!==s.image&&0<s.image.width&&e(s),s.addEventListener("update",d));var u=Da[s.id];if(void 0!==u){t(u);var u=s.offset.x/s.repeat.x,v=s.offset.y/s.repeat.y,m=s.image.width*s.repeat.x;s=s.image.height*s.repeat.y;k=(k+u)*m;l=(l+v)*s;c-=a;f-=b;g-=a;h-=b;n=(n+u)*m-k;p=(p+v)*s-l;q=(q+u)*m-k;r=(r+v)*s-l;s=n*r-q*p;0!==s&&(u=1/s,s=(r*c-p*g)*u,p=(r*f-p* b&&!0===c?"repeat":!0===b&&!1===c?"repeat-x":!1===b&&!0===c?"repeat-y":"no-repeat")}}function f(a,b,c,f,g,h,k,l,n,p,q,r,s){if(!(s instanceof THREE.DataTexture)){!1===s.hasEventListener("update",d)&&(void 0!==s.image&&0<s.image.width&&e(s),s.addEventListener("update",d));var u=Da[s.id];if(void 0!==u){t(u);var u=s.offset.x/s.repeat.x,v=s.offset.y/s.repeat.y,m=s.image.width*s.repeat.x;s=s.image.height*s.repeat.y;k=(k+u)*m;l=(l+v)*s;c-=a;f-=b;g-=a;h-=b;n=(n+u)*m-k;p=(p+v)*s-l;q=(q+u)*m-k;r=(r+v)*s-l;
h)*u,c=(n*g-q*c)*u,f=(n*h-q*f)*u,a=a-s*k-c*l,b=b-p*k-f*l,z.save(),z.transform(s,p,c,f,a,b),z.fill(),z.restore())}else t("rgba(0,0,0,1)"),z.fill()}}function g(a,b,c){var d=b.x-a.x,e=b.y-a.y,f=d*d+e*e;0!==f&&(c/=Math.sqrt(f),d*=c,e*=c,b.x+=d,b.y+=e,a.x-=d,a.y-=e)}function h(a){L!==a&&(L=z.globalAlpha=a)}function k(a){R!==a&&(a===THREE.NormalBlending?z.globalCompositeOperation="source-over":a===THREE.AdditiveBlending?z.globalCompositeOperation="lighter":a===THREE.SubtractiveBlending&&(z.globalCompositeOperation= s=n*r-q*p;0!==s&&(u=1/s,s=(r*c-p*g)*u,p=(r*f-p*h)*u,c=(n*g-q*c)*u,f=(n*h-q*f)*u,a=a-s*k-c*l,b=b-p*k-f*l,z.save(),z.transform(s,p,c,f,a,b),z.fill(),z.restore())}else t("rgba(0,0,0,1)"),z.fill()}}function g(a,b,c){var d=b.x-a.x,e=b.y-a.y,f=d*d+e*e;0!==f&&(c/=Math.sqrt(f),d*=c,e*=c,b.x+=d,b.y+=e,a.x-=d,a.y-=e)}function h(a){L!==a&&(L=z.globalAlpha=a)}function k(a){R!==a&&(a===THREE.NormalBlending?z.globalCompositeOperation="source-over":a===THREE.AdditiveBlending?z.globalCompositeOperation="lighter":
"darker"),R=a)}function l(a){A!==a&&(A=z.lineWidth=a)}function n(a){Q!==a&&(Q=z.lineCap=a)}function r(a){Y!==a&&(Y=z.lineJoin=a)}function p(a){H!==a&&(H=z.strokeStyle=a)}function t(a){D!==a&&(D=z.fillStyle=a)}function s(a){J.length!==a.length&&(z.setLineDash(a),J=a)}console.log("THREE.CanvasRenderer",THREE.REVISION);var q=THREE.Math.smoothstep;a=a||{};var v=this,u,w,x,E=new THREE.Projector,y=void 0!==a.canvas?a.canvas:document.createElement("canvas"),F=y.width,N=y.height,G=Math.floor(F/2),C=Math.floor(N/ a===THREE.SubtractiveBlending&&(z.globalCompositeOperation="darker"),R=a)}function l(a){A!==a&&(A=z.lineWidth=a)}function n(a){Q!==a&&(Q=z.lineCap=a)}function r(a){Y!==a&&(Y=z.lineJoin=a)}function p(a){H!==a&&(H=z.strokeStyle=a)}function t(a){D!==a&&(D=z.fillStyle=a)}function s(a){J.length!==a.length&&(z.setLineDash(a),J=a)}console.log("THREE.CanvasRenderer",THREE.REVISION);var q=THREE.Math.smoothstep;a=a||{};var v=this,u,w,x,E=new THREE.Projector,y=void 0!==a.canvas?a.canvas:document.createElement("canvas"),
2),z=y.getContext("2d",{alpha:!0===a.alpha}),K=new THREE.Color(0),B=0,L=1,R=0,H=null,D=null,A=null,Q=null,Y=null,J=[],la,S,W,O;new THREE.RenderableVertex;new THREE.RenderableVertex;var ha,ma,$,ga,sa,xa,Z=new THREE.Color;new THREE.Color;new THREE.Color;new THREE.Color;new THREE.Color;var Ua=new THREE.Color,P=new THREE.Color,da=new THREE.Color,Da={},Fa,Ja,La,Aa,Sa,ya,ia,za=new THREE.Box2,X=new THREE.Box2,ka=new THREE.Box2,Ea=new THREE.Color,Ga=new THREE.Color,va=new THREE.Color,Ka=new THREE.Vector3, F=y.width,N=y.height,G=Math.floor(F/2),C=Math.floor(N/2),z=y.getContext("2d",{alpha:!0===a.alpha}),K=new THREE.Color(0),B=0,L=1,R=0,H=null,D=null,A=null,Q=null,Y=null,J=[],la,S,W,O;new THREE.RenderableVertex;new THREE.RenderableVertex;var ha,ma,$,ga,sa,xa,Z=new THREE.Color;new THREE.Color;new THREE.Color;new THREE.Color;new THREE.Color;var Ua=new THREE.Color,P=new THREE.Color,da=new THREE.Color,Da={},Fa,Ja,La,Aa,Sa,ya,ia,za=new THREE.Box2,X=new THREE.Box2,ka=new THREE.Box2,Ea=new THREE.Color,Ga=new THREE.Color,
Ma=new THREE.Vector3,fa=new THREE.Vector3,ua=new THREE.Matrix3;void 0===z.setLineDash&&(z.setLineDash=function(){});this.domElement=y;this.devicePixelRatio=void 0!==a.devicePixelRatio?a.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1;this.sortElements=this.sortObjects=this.autoClear=!0;this.info={render:{vertices:0,faces:0}};this.supportsVertexTextures=function(){};this.setFaceCulling=function(){};this.setSize=function(a,b,c){F=a*this.devicePixelRatio;N=b*this.devicePixelRatio; va=new THREE.Color,Ka=new THREE.Vector3,Ma=new THREE.Vector3,fa=new THREE.Vector3,ua=new THREE.Matrix3;void 0===z.setLineDash&&(z.setLineDash=function(){});this.domElement=y;this.devicePixelRatio=void 0!==a.devicePixelRatio?a.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1;this.sortElements=this.sortObjects=this.autoClear=!0;this.info={render:{vertices:0,faces:0}};this.supportsVertexTextures=function(){};this.setFaceCulling=function(){};this.setSize=function(a,b,c){F=a*this.devicePixelRatio;
y.width=F;y.height=N;G=Math.floor(F/2);C=Math.floor(N/2);!1!==c&&(y.style.width=a+"px",y.style.height=b+"px");za.min.set(-G,-C);za.max.set(G,C);X.min.set(-G,-C);X.max.set(G,C);L=1;R=0;Y=Q=A=D=H=null;this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){z.setTransform(c*this.devicePixelRatio/F,0,0,-(d*this.devicePixelRatio)/N,a*this.devicePixelRatio,N-b*this.devicePixelRatio);z.translate(G,C)};this.setScissor=function(){};this.enableScissorTest=function(){};this.setClearColor=function(a,b){K.set(a); N=b*this.devicePixelRatio;y.width=F;y.height=N;G=Math.floor(F/2);C=Math.floor(N/2);!1!==c&&(y.style.width=a+"px",y.style.height=b+"px");za.min.set(-G,-C);za.max.set(G,C);X.min.set(-G,-C);X.max.set(G,C);L=1;R=0;Y=Q=A=D=H=null;this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){z.setTransform(c*this.devicePixelRatio/F,0,0,-(d*this.devicePixelRatio)/N,a*this.devicePixelRatio,N-b*this.devicePixelRatio);z.translate(G,C)};this.setScissor=function(){};this.enableScissorTest=function(){};this.setClearColor=
B=void 0!==b?b:1;X.min.set(-G,-C);X.max.set(G,C)};this.setClearColorHex=function(a,b){console.warn("THREE.CanvasRenderer: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,b)};this.getMaxAnisotropy=function(){return 0};this.clear=function(){!1===X.empty()&&(X.intersect(za),X.expandByScalar(2),1>B&&z.clearRect(X.min.x|0,X.min.y|0,X.max.x-X.min.x|0,X.max.y-X.min.y|0),0<B&&(k(THREE.NormalBlending),h(1),t("rgba("+Math.floor(255*K.r)+","+Math.floor(255*K.g)+","+ function(a,b){K.set(a);B=void 0!==b?b:1;X.min.set(-G,-C);X.max.set(G,C)};this.setClearColorHex=function(a,b){console.warn("THREE.CanvasRenderer: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,b)};this.getMaxAnisotropy=function(){return 0};this.clear=function(){!1===X.empty()&&(X.intersect(za),X.expandByScalar(2),1>B&&z.clearRect(X.min.x|0,X.min.y|0,X.max.x-X.min.x|0,X.max.y-X.min.y|0),0<B&&(k(THREE.NormalBlending),h(1),t("rgba("+Math.floor(255*K.r)+","+
Math.floor(255*K.b)+","+B+")"),z.fillRect(X.min.x|0,X.min.y|0,X.max.x-X.min.x|0,X.max.y-X.min.y|0)),X.makeEmpty())};this.clearColor=function(){};this.clearDepth=function(){};this.clearStencil=function(){};this.render=function(a,y){if(!1===y instanceof THREE.Camera)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");else{!0===this.autoClear&&this.clear();v.info.render.vertices=0;v.info.render.faces=0;u=E.projectScene(a,y,this.sortObjects,this.sortElements);w=u.elements; Math.floor(255*K.g)+","+Math.floor(255*K.b)+","+B+")"),z.fillRect(X.min.x|0,X.min.y|0,X.max.x-X.min.x|0,X.max.y-X.min.y|0)),X.makeEmpty())};this.clearColor=function(){};this.clearDepth=function(){};this.clearStencil=function(){};this.render=function(a,y){if(!1===y instanceof THREE.Camera)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");else{!0===this.autoClear&&this.clear();v.info.render.vertices=0;v.info.render.faces=0;u=E.projectScene(a,y,this.sortObjects,
x=u.lights;la=y;ua.getNormalMatrix(y.matrixWorldInverse);Ea.setRGB(0,0,0);Ga.setRGB(0,0,0);va.setRGB(0,0,0);for(var F=0,N=x.length;F<N;F++){var A=x[F],K=A.color;A instanceof THREE.AmbientLight?Ea.add(K):A instanceof THREE.DirectionalLight?Ga.add(K):A instanceof THREE.PointLight&&va.add(K)}F=0;for(N=w.length;F<N;F++){var D=w[F],Q=D.material;if(void 0!==Q&&0!==Q.opacity){ka.makeEmpty();if(D instanceof THREE.RenderableSprite){S=D;S.x*=G;S.y*=C;var A=S,L=D,K=Q;h(K.opacity);k(K.blending);var H=L.scale.x* this.sortElements);w=u.elements;x=u.lights;la=y;ua.getNormalMatrix(y.matrixWorldInverse);Ea.setRGB(0,0,0);Ga.setRGB(0,0,0);va.setRGB(0,0,0);for(var F=0,N=x.length;F<N;F++){var A=x[F],K=A.color;A instanceof THREE.AmbientLight?Ea.add(K):A instanceof THREE.DirectionalLight?Ga.add(K):A instanceof THREE.PointLight&&va.add(K)}F=0;for(N=w.length;F<N;F++){var D=w[F],Q=D.material;if(void 0!==Q&&0!==Q.opacity){ka.makeEmpty();if(D instanceof THREE.RenderableSprite){S=D;S.x*=G;S.y*=C;var A=S,L=D,K=Q;h(K.opacity);
G,L=L.scale.y*C,D=0.5*Math.sqrt(H*H+L*L);ka.min.set(A.x-D,A.y-D);ka.max.set(A.x+D,A.y+D);if(K instanceof THREE.SpriteMaterial){var B=K.map;if(null!==B&&void 0!==B.image){!1===B.hasEventListener("update",d)&&(0<B.image.width&&e(B),B.addEventListener("update",d));D=Da[B.id];void 0!==D?t(D):t("rgba( 0, 0, 0, 1 )");var J=B.image,D=J.width*B.offset.x,Q=J.height*B.offset.y,R=J.width*B.repeat.x,B=J.height*B.repeat.y,J=H/R,Y=L/B;z.save();z.translate(A.x,A.y);0!==K.rotation&&z.rotate(K.rotation);z.translate(-H/ k(K.blending);var H=L.scale.x*G,L=L.scale.y*C,D=0.5*Math.sqrt(H*H+L*L);ka.min.set(A.x-D,A.y-D);ka.max.set(A.x+D,A.y+D);if(K instanceof THREE.SpriteMaterial){var B=K.map;if(null!==B&&void 0!==B.image){!1===B.hasEventListener("update",d)&&(0<B.image.width&&e(B),B.addEventListener("update",d));D=Da[B.id];void 0!==D?t(D):t("rgba( 0, 0, 0, 1 )");var J=B.image,D=J.width*B.offset.x,Q=J.height*B.offset.y,R=J.width*B.repeat.x,B=J.height*B.repeat.y,J=H/R,Y=L/B;z.save();z.translate(A.x,A.y);0!==K.rotation&&
2,-L/2);z.scale(J,Y);z.translate(-D,-Q);z.fillRect(D,Q,R,B)}else t(K.color.getStyle()),z.save(),z.translate(A.x,A.y),0!==K.rotation&&z.rotate(K.rotation),z.scale(H,-L),z.fillRect(-0.5,-0.5,1,1);z.restore()}else K instanceof THREE.SpriteCanvasMaterial&&(p(K.color.getStyle()),t(K.color.getStyle()),z.save(),z.translate(A.x,A.y),0!==K.rotation&&z.rotate(K.rotation),z.scale(H,L),K.program(z),z.restore())}else if(D instanceof THREE.RenderableLine){if(S=D.v1,W=D.v2,S.positionScreen.x*=G,S.positionScreen.y*= z.rotate(K.rotation);z.translate(-H/2,-L/2);z.scale(J,Y);z.translate(-D,-Q);z.fillRect(D,Q,R,B)}else t(K.color.getStyle()),z.save(),z.translate(A.x,A.y),0!==K.rotation&&z.rotate(K.rotation),z.scale(H,-L),z.fillRect(-0.5,-0.5,1,1);z.restore()}else K instanceof THREE.SpriteCanvasMaterial&&(p(K.color.getStyle()),t(K.color.getStyle()),z.save(),z.translate(A.x,A.y),0!==K.rotation&&z.rotate(K.rotation),z.scale(H,L),K.program(z),z.restore())}else if(D instanceof THREE.RenderableLine){if(S=D.v1,W=D.v2,S.positionScreen.x*=
C,W.positionScreen.x*=G,W.positionScreen.y*=C,ka.setFromPoints([S.positionScreen,W.positionScreen]),!0===za.isIntersectionBox(ka))if(A=S,K=W,H=D,L=Q,h(L.opacity),k(L.blending),z.beginPath(),z.moveTo(A.positionScreen.x,A.positionScreen.y),z.lineTo(K.positionScreen.x,K.positionScreen.y),L instanceof THREE.LineBasicMaterial){l(L.linewidth);n(L.linecap);r(L.linejoin);if(L.vertexColors!==THREE.VertexColors)p(L.color.getStyle());else if(D=H.vertexColors[0].getStyle(),H=H.vertexColors[1].getStyle(),D=== G,S.positionScreen.y*=C,W.positionScreen.x*=G,W.positionScreen.y*=C,ka.setFromPoints([S.positionScreen,W.positionScreen]),!0===za.isIntersectionBox(ka))if(A=S,K=W,H=D,L=Q,h(L.opacity),k(L.blending),z.beginPath(),z.moveTo(A.positionScreen.x,A.positionScreen.y),z.lineTo(K.positionScreen.x,K.positionScreen.y),L instanceof THREE.LineBasicMaterial){l(L.linewidth);n(L.linecap);r(L.linejoin);if(L.vertexColors!==THREE.VertexColors)p(L.color.getStyle());else if(D=H.vertexColors[0].getStyle(),H=H.vertexColors[1].getStyle(),
H)p(D);else{try{var Va=z.createLinearGradient(A.positionScreen.x,A.positionScreen.y,K.positionScreen.x,K.positionScreen.y);Va.addColorStop(0,D);Va.addColorStop(1,H)}catch(m){Va=D}p(Va)}z.stroke();ka.expandByScalar(2*L.linewidth)}else L instanceof THREE.LineDashedMaterial&&(l(L.linewidth),n(L.linecap),r(L.linejoin),p(L.color.getStyle()),s([L.dashSize,L.gapSize]),z.stroke(),ka.expandByScalar(2*L.linewidth),s([]))}else if(D instanceof THREE.RenderableFace){S=D.v1;W=D.v2;O=D.v3;if(-1>S.positionScreen.z|| D===H)p(D);else{try{var Va=z.createLinearGradient(A.positionScreen.x,A.positionScreen.y,K.positionScreen.x,K.positionScreen.y);Va.addColorStop(0,D);Va.addColorStop(1,H)}catch(m){Va=D}p(Va)}z.stroke();ka.expandByScalar(2*L.linewidth)}else L instanceof THREE.LineDashedMaterial&&(l(L.linewidth),n(L.linecap),r(L.linejoin),p(L.color.getStyle()),s([L.dashSize,L.gapSize]),z.stroke(),ka.expandByScalar(2*L.linewidth),s([]))}else if(D instanceof THREE.RenderableFace){S=D.v1;W=D.v2;O=D.v3;if(-1>S.positionScreen.z||
1<S.positionScreen.z)continue;if(-1>W.positionScreen.z||1<W.positionScreen.z)continue;if(-1>O.positionScreen.z||1<O.positionScreen.z)continue;S.positionScreen.x*=G;S.positionScreen.y*=C;W.positionScreen.x*=G;W.positionScreen.y*=C;O.positionScreen.x*=G;O.positionScreen.y*=C;0<Q.overdraw&&(g(S.positionScreen,W.positionScreen,Q.overdraw),g(W.positionScreen,O.positionScreen,Q.overdraw),g(O.positionScreen,S.positionScreen,Q.overdraw));ka.setFromPoints([S.positionScreen,W.positionScreen,O.positionScreen]); 1<S.positionScreen.z)continue;if(-1>W.positionScreen.z||1<W.positionScreen.z)continue;if(-1>O.positionScreen.z||1<O.positionScreen.z)continue;S.positionScreen.x*=G;S.positionScreen.y*=C;W.positionScreen.x*=G;W.positionScreen.y*=C;O.positionScreen.x*=G;O.positionScreen.y*=C;0<Q.overdraw&&(g(S.positionScreen,W.positionScreen,Q.overdraw),g(W.positionScreen,O.positionScreen,Q.overdraw),g(O.positionScreen,S.positionScreen,Q.overdraw));ka.setFromPoints([S.positionScreen,W.positionScreen,O.positionScreen]);
if(!0===za.isIntersectionBox(ka)){K=S;H=W;L=O;A=Q;v.info.render.vertices+=3;v.info.render.faces++;h(A.opacity);k(A.blending);ha=K.positionScreen.x;ma=K.positionScreen.y;$=H.positionScreen.x;ga=H.positionScreen.y;sa=L.positionScreen.x;xa=L.positionScreen.y;var Q=ha,R=ma,B=$,J=ga,Y=sa,eb=xa;z.beginPath();z.moveTo(Q,R);z.lineTo(B,J);z.lineTo(Y,eb);z.closePath();if((A instanceof THREE.MeshLambertMaterial||A instanceof THREE.MeshPhongMaterial)&&null===A.map){Ua.copy(A.color);P.copy(A.emissive);A.vertexColors=== if(!0===za.isIntersectionBox(ka)){K=S;H=W;L=O;A=Q;v.info.render.vertices+=3;v.info.render.faces++;h(A.opacity);k(A.blending);ha=K.positionScreen.x;ma=K.positionScreen.y;$=H.positionScreen.x;ga=H.positionScreen.y;sa=L.positionScreen.x;xa=L.positionScreen.y;var Q=ha,R=ma,B=$,J=ga,Y=sa,eb=xa;z.beginPath();z.moveTo(Q,R);z.lineTo(B,J);z.lineTo(Y,eb);z.closePath();if((A instanceof THREE.MeshLambertMaterial||A instanceof THREE.MeshPhongMaterial)&&null===A.map){Ua.copy(A.color);P.copy(A.emissive);A.vertexColors===
THREE.FaceColors&&Ua.multiply(D.color);Z.copy(Ea);Ma.copy(K.positionWorld).add(H.positionWorld).add(L.positionWorld).divideScalar(3);K=Ma;H=D.normalModel;L=Z;D=0;for(Q=x.length;D<Q;D++)R=x[D],da.copy(R.color),R instanceof THREE.DirectionalLight?(B=Ka.setFromMatrixPosition(R.matrixWorld).normalize(),J=H.dot(B),0>=J||(J*=R.intensity,L.add(da.multiplyScalar(J)))):R instanceof THREE.PointLight&&(B=Ka.setFromMatrixPosition(R.matrixWorld),J=H.dot(Ka.subVectors(B,K).normalize()),0>=J||(J*=0==R.distance? THREE.FaceColors&&Ua.multiply(D.color);Z.copy(Ea);Ma.copy(K.positionWorld).add(H.positionWorld).add(L.positionWorld).divideScalar(3);K=Ma;H=D.normalModel;L=Z;D=0;for(Q=x.length;D<Q;D++)R=x[D],da.copy(R.color),R instanceof THREE.DirectionalLight?(B=Ka.setFromMatrixPosition(R.matrixWorld).normalize(),J=H.dot(B),0>=J||(J*=R.intensity,L.add(da.multiplyScalar(J)))):R instanceof THREE.PointLight&&(B=Ka.setFromMatrixPosition(R.matrixWorld),J=H.dot(Ka.subVectors(B,K).normalize()),0>=J||(J*=0==R.distance?
...@@ -416,13 +416,13 @@ qb[Pa]=[wa.z,Pa];qb.sort(t);for(Pa=0;Pa<mc;Pa++)kb=bc[qb[Pa][1]],U=3*Pa,zb[U]=kb ...@@ -416,13 +416,13 @@ qb[Pa]=[wa.z,Pa];qb.sort(t);for(Pa=0;Pa<mc;Pa++)kb=bc[qb[Pa][1]],U=3*Pa,zb[U]=kb
T.type)for(aa=0;aa<bb;aa++)lb=qb[aa][1],ja=T.value[lb],T.array[U]=ja.r,T.array[U+1]=ja.g,T.array[U+2]=ja.b,U+=3;else for(aa=0;aa<bb;aa++)lb=qb[aa][1],ja=T.value[lb],T.array[U]=ja.x,T.array[U+1]=ja.y,T.array[U+2]=ja.z,U+=3;else if(4===T.size)for(aa=0;aa<bb;aa++)lb=qb[aa][1],ja=T.value[lb],T.array[U]=ja.x,T.array[U+1]=ja.y,T.array[U+2]=ja.z,T.array[U+3]=ja.w,U+=4}else{if(wc)for(Pa=0;Pa<mc;Pa++)kb=bc[Pa],U=3*Pa,zb[U]=kb.x,zb[U+1]=kb.y,zb[U+2]=kb.z;if(xc)for(jb=0;jb<vc;jb++)vb=nc[jb],U=3*jb,Ab[U]=vb.r, T.type)for(aa=0;aa<bb;aa++)lb=qb[aa][1],ja=T.value[lb],T.array[U]=ja.r,T.array[U+1]=ja.g,T.array[U+2]=ja.b,U+=3;else for(aa=0;aa<bb;aa++)lb=qb[aa][1],ja=T.value[lb],T.array[U]=ja.x,T.array[U+1]=ja.y,T.array[U+2]=ja.z,U+=3;else if(4===T.size)for(aa=0;aa<bb;aa++)lb=qb[aa][1],ja=T.value[lb],T.array[U]=ja.x,T.array[U+1]=ja.y,T.array[U+2]=ja.z,T.array[U+3]=ja.w,U+=4}else{if(wc)for(Pa=0;Pa<mc;Pa++)kb=bc[Pa],U=3*Pa,zb[U]=kb.x,zb[U+1]=kb.y,zb[U+2]=kb.z;if(xc)for(jb=0;jb<vc;jb++)vb=nc[jb],U=3*jb,Ab[U]=vb.r,
Ab[U+1]=vb.g,Ab[U+2]=vb.b;if(rb)for(ab=0,Eb=rb.length;ab<Eb;ab++)if(T=rb[ab],T.needsUpdate&&(void 0===T.boundTo||"vertices"===T.boundTo))if(bb=T.value.length,U=0,1===T.size)for(aa=0;aa<bb;aa++)T.array[aa]=T.value[aa];else if(2===T.size)for(aa=0;aa<bb;aa++)ja=T.value[aa],T.array[U]=ja.x,T.array[U+1]=ja.y,U+=2;else if(3===T.size)if("c"===T.type)for(aa=0;aa<bb;aa++)ja=T.value[aa],T.array[U]=ja.r,T.array[U+1]=ja.g,T.array[U+2]=ja.b,U+=3;else for(aa=0;aa<bb;aa++)ja=T.value[aa],T.array[U]=ja.x,T.array[U+ Ab[U+1]=vb.g,Ab[U+2]=vb.b;if(rb)for(ab=0,Eb=rb.length;ab<Eb;ab++)if(T=rb[ab],T.needsUpdate&&(void 0===T.boundTo||"vertices"===T.boundTo))if(bb=T.value.length,U=0,1===T.size)for(aa=0;aa<bb;aa++)T.array[aa]=T.value[aa];else if(2===T.size)for(aa=0;aa<bb;aa++)ja=T.value[aa],T.array[U]=ja.x,T.array[U+1]=ja.y,U+=2;else if(3===T.size)if("c"===T.type)for(aa=0;aa<bb;aa++)ja=T.value[aa],T.array[U]=ja.r,T.array[U+1]=ja.g,T.array[U+2]=ja.b,U+=3;else for(aa=0;aa<bb;aa++)ja=T.value[aa],T.array[U]=ja.x,T.array[U+
1]=ja.y,T.array[U+2]=ja.z,U+=3;else if(4===T.size)for(aa=0;aa<bb;aa++)ja=T.value[aa],T.array[U]=ja.x,T.array[U+1]=ja.y,T.array[U+2]=ja.z,T.array[U+3]=ja.w,U+=4}if(wc||b.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,l.__webglVertexBuffer),m.bufferData(m.ARRAY_BUFFER,zb,lc);if(xc||b.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,l.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,Ab,lc);if(rb)for(ab=0,Eb=rb.length;ab<Eb;ab++)if(T=rb[ab],T.needsUpdate||b.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,T.buffer),m.bufferData(m.ARRAY_BUFFER, 1]=ja.y,T.array[U+2]=ja.z,U+=3;else if(4===T.size)for(aa=0;aa<bb;aa++)ja=T.value[aa],T.array[U]=ja.x,T.array[U+1]=ja.y,T.array[U+2]=ja.z,T.array[U+3]=ja.w,U+=4}if(wc||b.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,l.__webglVertexBuffer),m.bufferData(m.ARRAY_BUFFER,zb,lc);if(xc||b.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,l.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,Ab,lc);if(rb)for(ab=0,Eb=rb.length;ab<Eb;ab++)if(T=rb[ab],T.needsUpdate||b.sortParticles)m.bindBuffer(m.ARRAY_BUFFER,T.buffer),m.bufferData(m.ARRAY_BUFFER,
T.array,lc)}l.verticesNeedUpdate=!1;l.colorsNeedUpdate=!1;q.attributes&&y(q)}b._modelViewMatrix.multiplyMatrices(h.matrixWorldInverse,b.matrixWorld);b._normalMatrix.getNormalMatrix(b._modelViewMatrix);for(var Bb=0,oc=k.length;Bb<oc;Bb++){var cc=k[Bb],mb=cc,yc=mb.object,rc=mb.buffer,sc=yc.geometry,nb=yc.material;nb instanceof THREE.MeshFaceMaterial?(nb=nb.materials[sc instanceof THREE.BufferGeometry?0:rc.materialIndex],nb.transparent?(mb.material=nb,Z.push(mb)):(mb.material=nb,xa.push(mb))):nb&&(nb.transparent? T.array,lc)}l.verticesNeedUpdate=!1;l.colorsNeedUpdate=!1;q.attributes&&y(q)}for(var Bb=0,oc=k.length;Bb<oc;Bb++){var cc=k[Bb],mb=cc,yc=mb.object,rc=mb.buffer,sc=yc.geometry,nb=yc.material;nb instanceof THREE.MeshFaceMaterial?(nb=nb.materials[sc instanceof THREE.BufferGeometry?0:rc.materialIndex],nb.transparent?(mb.material=nb,Z.push(mb)):(mb.material=nb,xa.push(mb))):nb&&(nb.transparent?(mb.material=nb,Z.push(mb)):(mb.material=nb,xa.push(mb)));cc.render=!0;!0===Ua&&(null!==b.renderDepth?cc.z=b.renderDepth:
(mb.material=nb,Z.push(mb)):(mb.material=nb,xa.push(mb)));cc.render=!0;!0===Ua&&(null!==b.renderDepth?cc.z=b.renderDepth:(wa.setFromMatrixPosition(b.matrixWorld),wa.applyProjection(Tb),cc.z=wa.z))}}Bb=0;for(oc=b.children.length;Bb<oc;Bb++)s(a,b.children[Bb],h)}}function q(a,b,c){if(a.length)for(var d=0,e=a.length;d<e;d++)Aa=Da=null,Ja=La=ia=ya=va=Ga=za=-1,Za=!0,a[d].render(b,c,Sb,Gb),Aa=Da=null,Ja=La=ia=ya=va=Ga=za=-1,Za=!0}function v(a,b,c,d,e,f){for(var g,h,k,m=a.length-1;-1!==m;m--){g=a[m];h=g.object; (wa.setFromMatrixPosition(b.matrixWorld),wa.applyProjection(Tb),cc.z=wa.z))}}Bb=0;for(oc=b.children.length;Bb<oc;Bb++)s(a,b.children[Bb],h)}}function q(a,b,c){if(a.length)for(var d=0,e=a.length;d<e;d++)Aa=Da=null,Ja=La=ia=ya=va=Ga=za=-1,Za=!0,a[d].render(b,c,Sb,Gb),Aa=Da=null,Ja=La=ia=ya=va=Ga=za=-1,Za=!0}function v(a,b,c,d,e,f){for(var g,h,k,l=a.length-1;-1!==l;l--){g=a[l];h=g.object;k=g.buffer;var m=h;m._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,m.matrixWorld);m._normalMatrix.getNormalMatrix(m._modelViewMatrix);
k=g.buffer;if(f)g=f;else{g=g.material;if(!g)continue;e&&P.setBlending(g.blending,g.blendEquation,g.blendSrc,g.blendDst);P.setDepthTest(g.depthTest);P.setDepthWrite(g.depthWrite);L(g.polygonOffset,g.polygonOffsetFactor,g.polygonOffsetUnits)}P.setMaterialFaces(g);k instanceof THREE.BufferGeometry?P.renderBufferDirect(b,c,d,g,k,h):P.renderBuffer(b,c,d,g,k,h)}}function u(a,b,c,d,e,f,g){for(var h,k,m=0,l=a.length;m<l;m++)if(h=a[m],k=h.object,k.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&P.setBlending(h.blending, if(f)g=f;else{g=g.material;if(!g)continue;e&&P.setBlending(g.blending,g.blendEquation,g.blendSrc,g.blendDst);P.setDepthTest(g.depthTest);P.setDepthWrite(g.depthWrite);L(g.polygonOffset,g.polygonOffsetFactor,g.polygonOffsetUnits)}P.setMaterialFaces(g);k instanceof THREE.BufferGeometry?P.renderBufferDirect(b,c,d,g,k,h):P.renderBuffer(b,c,d,g,k,h)}}function u(a,b,c,d,e,f,g){for(var h,k,m=0,l=a.length;m<l;m++)if(h=a[m],k=h.object,k.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&P.setBlending(h.blending,
h.blendEquation,h.blendSrc,h.blendDst);P.setDepthTest(h.depthTest);P.setDepthWrite(h.depthWrite);L(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}P.renderImmediateObject(c,d,e,h,k)}}function w(a,b,d){var e,f=!1;e=b.material;void 0===d.geometryGroups&&(delete a.__webglObjects[b.id],d.makeGroups(e instanceof THREE.MeshFaceMaterial,Cb?4294967296:65535));for(var g=0,h=d.geometryGroupsList.length;g<h;g++){e=d.geometryGroupsList[g];if(e.__webglVertexBuffer)f=!1;else{f=e;f.__webglVertexBuffer= h.blendEquation,h.blendSrc,h.blendDst);P.setDepthTest(h.depthTest);P.setDepthWrite(h.depthWrite);L(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}P.renderImmediateObject(c,d,e,h,k)}}function w(a,b,d){var e,f=!1;e=b.material;void 0===d.geometryGroups&&(delete a.__webglObjects[b.id],d.makeGroups(e instanceof THREE.MeshFaceMaterial,Cb?4294967296:65535));for(var g=0,h=d.geometryGroupsList.length;g<h;g++){e=d.geometryGroupsList[g];if(e.__webglVertexBuffer)f=!1;else{f=e;f.__webglVertexBuffer=
m.createBuffer();f.__webglNormalBuffer=m.createBuffer();f.__webglTangentBuffer=m.createBuffer();f.__webglColorBuffer=m.createBuffer();f.__webglUVBuffer=m.createBuffer();f.__webglUV2Buffer=m.createBuffer();f.__webglSkinIndicesBuffer=m.createBuffer();f.__webglSkinWeightsBuffer=m.createBuffer();f.__webglFaceBuffer=m.createBuffer();f.__webglLineBuffer=m.createBuffer();var k=void 0,l=void 0;if(f.numMorphTargets)for(f.__webglMorphTargetsBuffers=[],k=0,l=f.numMorphTargets;k<l;k++)f.__webglMorphTargetsBuffers.push(m.createBuffer()); m.createBuffer();f.__webglNormalBuffer=m.createBuffer();f.__webglTangentBuffer=m.createBuffer();f.__webglColorBuffer=m.createBuffer();f.__webglUVBuffer=m.createBuffer();f.__webglUV2Buffer=m.createBuffer();f.__webglSkinIndicesBuffer=m.createBuffer();f.__webglSkinWeightsBuffer=m.createBuffer();f.__webglFaceBuffer=m.createBuffer();f.__webglLineBuffer=m.createBuffer();var k=void 0,l=void 0;if(f.numMorphTargets)for(f.__webglMorphTargetsBuffers=[],k=0,l=f.numMorphTargets;k<l;k++)f.__webglMorphTargetsBuffers.push(m.createBuffer());
if(f.numMorphNormals)for(f.__webglMorphNormalsBuffers=[],k=0,l=f.numMorphNormals;k<l;k++)f.__webglMorphNormalsBuffers.push(m.createBuffer());P.info.memory.geometries++;c(e,b);d.verticesNeedUpdate=!0;d.morphTargetsNeedUpdate=!0;d.elementsNeedUpdate=!0;d.uvsNeedUpdate=!0;d.normalsNeedUpdate=!0;d.tangentsNeedUpdate=!0;f=d.colorsNeedUpdate=!0}(f||void 0===b.__webglActive)&&x(a.__webglObjects,e,b)}b.__webglActive=!0}function x(a,b,c){var d=c.id;a[d]=a[d]||[];a[d].push({id:null,buffer:b,object:c,material:null, if(f.numMorphNormals)for(f.__webglMorphNormalsBuffers=[],k=0,l=f.numMorphNormals;k<l;k++)f.__webglMorphNormalsBuffers.push(m.createBuffer());P.info.memory.geometries++;c(e,b);d.verticesNeedUpdate=!0;d.morphTargetsNeedUpdate=!0;d.elementsNeedUpdate=!0;d.uvsNeedUpdate=!0;d.normalsNeedUpdate=!0;d.tangentsNeedUpdate=!0;f=d.colorsNeedUpdate=!0}(f||void 0===b.__webglActive)&&x(a.__webglObjects,e,b)}b.__webglActive=!0}function x(a,b,c){var d=c.id;a[d]=a[d]||[];a[d].push({id:null,buffer:b,object:c,material:null,
z:0})}function E(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function y(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function F(a,b){if(a instanceof THREE.Mesh||a instanceof THREE.PointCloud||a instanceof THREE.Line)delete b.__webglObjects[a];else if(a instanceof THREE.Sprite)N(b.__webglSprites,a);else if(a instanceof THREE.LensFlare)N(b.__webglFlares,a);else if(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)for(var c=b.__webglObjectsImmediate, z:0})}function E(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function y(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function F(a,b){if(a instanceof THREE.Mesh||a instanceof THREE.PointCloud||a instanceof THREE.Line)delete b.__webglObjects[a.id];else if(a instanceof THREE.Sprite)N(b.__webglSprites,a);else if(a instanceof THREE.LensFlare)N(b.__webglFlares,a);else if(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)for(var c=b.__webglObjectsImmediate,
d=c.length-1;0<=d;d--)c[d].object===a&&c.splice(d,1);delete a.__webglActive}function N(a,b){for(var c=a.length-1;0<=c;c--)a[c]===b&&a.splice(c,1)}function G(a,b,c,d,e){Sa=0;d.needsUpdate&&(d.program&&Kb(d),P.initMaterial(d,b,c,e),d.needsUpdate=!1);d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(P.maxMorphTargets));var f=!1,g=d.program,h=g.uniforms,k=d.uniforms;g.id!==Da&&(m.useProgram(g.program),Da=g.id,f=!0);d.id!==Ja&&(Ja=d.id,f=!0);if(f||a!==Aa)m.uniformMatrix4fv(h.projectionMatrix, d=c.length-1;0<=d;d--)c[d].object===a&&c.splice(d,1);delete a.__webglActive}function N(a,b){for(var c=a.length-1;0<=c;c--)a[c]===b&&a.splice(c,1)}function G(a,b,c,d,e){Sa=0;d.needsUpdate&&(d.program&&Kb(d),P.initMaterial(d,b,c,e),d.needsUpdate=!1);d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(P.maxMorphTargets));var f=!1,g=d.program,h=g.uniforms,k=d.uniforms;g.id!==Da&&(m.useProgram(g.program),Da=g.id,f=!0);d.id!==Ja&&(Ja=d.id,f=!0);if(f||a!==Aa)m.uniformMatrix4fv(h.projectionMatrix,
!1,a.projectionMatrix.elements),$&&m.uniform1f(h.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Aa&&(Aa=a);if(d.skinning)if(Fb&&e.skeleton.useVertexTexture){if(null!==h.boneTexture){var l=C();m.uniform1i(h.boneTexture,l);P.setTexture(e.skeleton.boneTexture,l)}null!==h.boneTextureWidth&&m.uniform1i(h.boneTextureWidth,e.skeleton.boneTextureWidth);null!==h.boneTextureHeight&&m.uniform1i(h.boneTextureHeight,e.skeleton.boneTextureHeight)}else null!==h.boneGlobalMatrices&&m.uniformMatrix4fv(h.boneGlobalMatrices, !1,a.projectionMatrix.elements),$&&m.uniform1f(h.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Aa&&(Aa=a);if(d.skinning)if(Fb&&e.skeleton.useVertexTexture){if(null!==h.boneTexture){var l=C();m.uniform1i(h.boneTexture,l);P.setTexture(e.skeleton.boneTexture,l)}null!==h.boneTextureWidth&&m.uniform1i(h.boneTextureWidth,e.skeleton.boneTextureWidth);null!==h.boneTextureHeight&&m.uniform1i(h.boneTextureHeight,e.skeleton.boneTextureHeight)}else null!==h.boneGlobalMatrices&&m.uniformMatrix4fv(h.boneGlobalMatrices,
!1,e.skeleton.boneMatrices);if(f){c&&d.fog&&(k.fogColor.value=c.color,c instanceof THREE.Fog?(k.fogNear.value=c.near,k.fogFar.value=c.far):c instanceof THREE.FogExp2&&(k.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(Za){var n,p=l=0,q=0,s,r,t,u=Va,v=u.directional.colors,w=u.directional.positions,x=u.point.colors,E=u.point.positions,y=u.point.distances,B=u.spot.colors,D=u.spot.positions,G=u.spot.distances,F=u.spot.directions, !1,e.skeleton.boneMatrices);if(f){c&&d.fog&&(k.fogColor.value=c.color,c instanceof THREE.Fog?(k.fogNear.value=c.near,k.fogFar.value=c.far):c instanceof THREE.FogExp2&&(k.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(Za){var n,p=l=0,q=0,s,r,t,u=Va,v=u.directional.colors,w=u.directional.positions,x=u.point.colors,E=u.point.positions,y=u.point.distances,B=u.spot.colors,D=u.spot.positions,G=u.spot.distances,F=u.spot.directions,
...@@ -486,7 +486,7 @@ e.__webglTangentBuffer),l(b.tangent),m.vertexAttribPointer(b.tangent,4,m.FLOAT,! ...@@ -486,7 +486,7 @@ e.__webglTangentBuffer),l(b.tangent),m.vertexAttribPointer(b.tangent,4,m.FLOAT,!
d.defaultAttributeValues.uv2));d.skinning&&0<=b.skinIndex&&0<=b.skinWeight&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),l(b.skinIndex),m.vertexAttribPointer(b.skinIndex,4,m.FLOAT,!1,0,0),m.bindBuffer(m.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),l(b.skinWeight),m.vertexAttribPointer(b.skinWeight,4,m.FLOAT,!1,0,0));0<=b.lineDistance&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglLineDistanceBuffer),l(b.lineDistance),m.vertexAttribPointer(b.lineDistance,1,m.FLOAT,!1,0,0))}n();f instanceof THREE.Mesh? d.defaultAttributeValues.uv2));d.skinning&&0<=b.skinIndex&&0<=b.skinWeight&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),l(b.skinIndex),m.vertexAttribPointer(b.skinIndex,4,m.FLOAT,!1,0,0),m.bindBuffer(m.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),l(b.skinWeight),m.vertexAttribPointer(b.skinWeight,4,m.FLOAT,!1,0,0));0<=b.lineDistance&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglLineDistanceBuffer),l(b.lineDistance),m.vertexAttribPointer(b.lineDistance,1,m.FLOAT,!1,0,0))}n();f instanceof THREE.Mesh?
(f=e.__typeArray===Uint32Array?m.UNSIGNED_INT:m.UNSIGNED_SHORT,d.wireframe?(B(d.wireframeLinewidth),a&&m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),m.drawElements(m.LINES,e.__webglLineCount,f,0)):(a&&m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),m.drawElements(m.TRIANGLES,e.__webglFaceCount,f,0)),P.info.render.calls++,P.info.render.vertices+=e.__webglFaceCount,P.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?m.LINE_STRIP:m.LINES, (f=e.__typeArray===Uint32Array?m.UNSIGNED_INT:m.UNSIGNED_SHORT,d.wireframe?(B(d.wireframeLinewidth),a&&m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),m.drawElements(m.LINES,e.__webglLineCount,f,0)):(a&&m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),m.drawElements(m.TRIANGLES,e.__webglFaceCount,f,0)),P.info.render.calls++,P.info.render.vertices+=e.__webglFaceCount,P.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?m.LINE_STRIP:m.LINES,
B(d.linewidth),m.drawArrays(f,0,e.__webglLineCount),P.info.render.calls++):f instanceof THREE.PointCloud&&(m.drawArrays(m.POINTS,0,e.__webglParticleCount),P.info.render.calls++,P.info.render.points+=e.__webglParticleCount)}};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,h,k=a.__lights,l=a.fog;Ja=-1;Za=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld(); B(d.linewidth),m.drawArrays(f,0,e.__webglLineCount),P.info.render.calls++):f instanceof THREE.PointCloud&&(m.drawArrays(m.POINTS,0,e.__webglParticleCount),P.info.render.calls++,P.info.render.points+=e.__webglParticleCount)}};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,h,k=a.__lights,l=a.fog;Ja=-1;Za=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();
b.matrixWorldInverse.getInverse(b.matrixWorld);Tb.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);gc.setFromMatrix(Tb);this.autoUpdateObjects&&this.initWebGLObjects(a);q(this.renderPluginsPre,a,b);P.info.render.calls=0;P.info.render.vertices=0;P.info.render.faces=0;P.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);xa.length=0;Z.length=0;Ua=this.sortObjects;s(a,a,b);this.sortObjects&&(xa.sort(r),Z.sort(p)); b.matrixWorldInverse.getInverse(b.matrixWorld);Tb.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);gc.setFromMatrix(Tb);this.autoUpdateObjects&&this.initWebGLObjects(a);xa.length=0;Z.length=0;Ua=this.sortObjects;s(a,a,b);this.sortObjects&&(xa.sort(r),Z.sort(p));q(this.renderPluginsPre,a,b);P.info.render.calls=0;P.info.render.vertices=0;P.info.render.faces=0;P.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);
h=a.__webglObjectsImmediate;d=0;for(e=h.length;d<e;d++)f=h[d],g=f.object,g.visible&&(g._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,g.matrixWorld),g._normalMatrix.getNormalMatrix(g._modelViewMatrix),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),L(d.polygonOffset,d.polygonOffsetFactor, h=a.__webglObjectsImmediate;d=0;for(e=h.length;d<e;d++)f=h[d],g=f.object,g.visible&&(g._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,g.matrixWorld),g._normalMatrix.getNormalMatrix(g._modelViewMatrix),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),L(d.polygonOffset,d.polygonOffsetFactor,
d.polygonOffsetUnits),v(xa,b,k,l,!0,d),v(Z,b,k,l,!0,d),u(a.__webglObjectsImmediate,"",b,k,l,!1,d)):(d=null,this.setBlending(THREE.NoBlending),v(xa,b,k,l,!1,d),u(a.__webglObjectsImmediate,"opaque",b,k,l,!1,d),v(Z,b,k,l,!0,d),u(a.__webglObjectsImmediate,"transparent",b,k,l,!0,d));q(this.renderPluginsPost,a,b);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(m.bindTexture(m.TEXTURE_CUBE_MAP,c.__webglTexture),m.generateMipmap(m.TEXTURE_CUBE_MAP), d.polygonOffsetUnits),v(xa,b,k,l,!0,d),v(Z,b,k,l,!0,d),u(a.__webglObjectsImmediate,"",b,k,l,!1,d)):(d=null,this.setBlending(THREE.NoBlending),v(xa,b,k,l,!1,d),u(a.__webglObjectsImmediate,"opaque",b,k,l,!1,d),v(Z,b,k,l,!0,d),u(a.__webglObjectsImmediate,"transparent",b,k,l,!0,d));q(this.renderPluginsPost,a,b);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(m.bindTexture(m.TEXTURE_CUBE_MAP,c.__webglTexture),m.generateMipmap(m.TEXTURE_CUBE_MAP),
m.bindTexture(m.TEXTURE_CUBE_MAP,null)):(m.bindTexture(m.TEXTURE_2D,c.__webglTexture),m.generateMipmap(m.TEXTURE_2D),m.bindTexture(m.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=G(a,b,c,d,e);La=-1;P.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,m,gc):e.render(function(a){P.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){a.__webglObjects||(a.__webglObjects={},a.__webglObjectsImmediate= m.bindTexture(m.TEXTURE_CUBE_MAP,null)):(m.bindTexture(m.TEXTURE_2D,c.__webglTexture),m.generateMipmap(m.TEXTURE_2D),m.bindTexture(m.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=G(a,b,c,d,e);La=-1;P.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,m,gc):e.render(function(a){P.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){a.__webglObjects||(a.__webglObjects={},a.__webglObjectsImmediate=
...@@ -696,7 +696,7 @@ w.disable(w.CULL_FACE);w.enable(w.BLEND);w.bindBuffer(w.ARRAY_BUFFER,N);w.vertex ...@@ -696,7 +696,7 @@ w.disable(w.CULL_FACE);w.enable(w.BLEND);w.bindBuffer(w.ARRAY_BUFFER,N);w.vertex
w.uniform1i(l,2),H=R=2)):(w.uniform1i(l,0),H=R=0);for(var A,Q=[],D=0;D<F;D++)A=B[D],!1!==A.visible&&(A._modelViewMatrix.multiplyMatrices(y.matrixWorldInverse,A.matrixWorld),A.z=-A._modelViewMatrix.elements[14]);B.sort(u);for(D=0;D<F;D++)A=B[D],!1!==A.visible&&(y=A.material,w.uniform1f(s,y.alphaTest),w.uniformMatrix4fv(h,!1,A._modelViewMatrix.elements),Q[0]=A.scale.x,Q[1]=A.scale.y,A=z.fog&&y.fog?H:0,R!==A&&(w.uniform1i(l,A),R=A),null!==y.map?(w.uniform2f(a,y.map.offset.x,y.map.offset.y),w.uniform2f(b, w.uniform1i(l,2),H=R=2)):(w.uniform1i(l,0),H=R=0);for(var A,Q=[],D=0;D<F;D++)A=B[D],!1!==A.visible&&(A._modelViewMatrix.multiplyMatrices(y.matrixWorldInverse,A.matrixWorld),A.z=-A._modelViewMatrix.elements[14]);B.sort(u);for(D=0;D<F;D++)A=B[D],!1!==A.visible&&(y=A.material,w.uniform1f(s,y.alphaTest),w.uniformMatrix4fv(h,!1,A._modelViewMatrix.elements),Q[0]=A.scale.x,Q[1]=A.scale.y,A=z.fog&&y.fog?H:0,R!==A&&(w.uniform1i(l,A),R=A),null!==y.map?(w.uniform2f(a,y.map.offset.x,y.map.offset.y),w.uniform2f(b,
y.map.repeat.x,y.map.repeat.y)):(w.uniform2f(a,0,0),w.uniform2f(b,1,1)),w.uniform1f(g,y.opacity),w.uniform3f(e,y.color.r,y.color.g,y.color.b),w.uniform1f(c,y.rotation),w.uniform2fv(d,Q),x.setBlending(y.blending,y.blendEquation,y.blendSrc,y.blendDst),x.setDepthTest(y.depthTest),x.setDepthWrite(y.depthWrite),y.map&&y.map.image&&y.map.image.width?x.setTexture(y.map,0):x.setTexture(E,0),w.drawElements(w.TRIANGLES,6,w.UNSIGNED_SHORT,0));w.enable(w.CULL_FACE)}}};THREE.DepthPassPlugin=function(){function a(b,c,d){if(c.visible){var e=b.__webglObjects[c.id];if(e&&(!1===c.frustumCulled||!0===h.intersectsObject(c)))for(var f=0,g=e.length;f<g;f++){var k=e[f];c._modelViewMatrix.multiplyMatrices(d.matrixWorldInverse,c.matrixWorld);l.push(k)}f=0;for(g=c.children.length;f<g;f++)a(b,c.children[f],d)}}this.enabled=!1;this.renderTarget=null;var b,c,d,e,f,g,h=new THREE.Frustum,k=new THREE.Matrix4,l=[];this.init=function(a){b=a.context;c=a;a=THREE.ShaderLib.depthRGBA;var h= y.map.repeat.x,y.map.repeat.y)):(w.uniform2f(a,0,0),w.uniform2f(b,1,1)),w.uniform1f(g,y.opacity),w.uniform3f(e,y.color.r,y.color.g,y.color.b),w.uniform1f(c,y.rotation),w.uniform2fv(d,Q),x.setBlending(y.blending,y.blendEquation,y.blendSrc,y.blendDst),x.setDepthTest(y.depthTest),x.setDepthWrite(y.depthWrite),y.map&&y.map.image&&y.map.image.width?x.setTexture(y.map,0):x.setTexture(E,0),w.drawElements(w.TRIANGLES,6,w.UNSIGNED_SHORT,0));w.enable(w.CULL_FACE)}}};THREE.DepthPassPlugin=function(){function a(b,c,d){if(c.visible){var e=b.__webglObjects[c.id];if(e&&(!1===c.frustumCulled||!0===h.intersectsObject(c)))for(var f=0,g=e.length;f<g;f++){var k=e[f];c._modelViewMatrix.multiplyMatrices(d.matrixWorldInverse,c.matrixWorld);l.push(k)}f=0;for(g=c.children.length;f<g;f++)a(b,c.children[f],d)}}this.enabled=!1;this.renderTarget=null;var b,c,d,e,f,g,h=new THREE.Frustum,k=new THREE.Matrix4,l=[];this.init=function(a){b=a.context;c=a;a=THREE.ShaderLib.depthRGBA;var h=
THREE.UniformsUtils.clone(a.uniforms);d=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:h});e=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:h,morphTargets:!0});f=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:h,skinning:!0});g=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:h,morphTargets:!0,skinning:!0});d._shadowPass= THREE.UniformsUtils.clone(a.uniforms);d=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:h});e=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:h,morphTargets:!0});f=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:h,skinning:!0});g=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:h,morphTargets:!0,skinning:!0});d._shadowPass=
!0;e._shadowPass=!0;f._shadowPass=!0;g._shadowPass=!0};this.render=function(a,b){this.enabled&&this.update(a,b)};this.update=function(n,r){var p,t,s,q,v;b.clearColor(1,1,1,1);b.disable(b.BLEND);c.setDepthTest(!0);!0===n.autoUpdate&&n.updateMatrixWorld();r.matrixWorldInverse.getInverse(r.matrixWorld);k.multiplyMatrices(r.projectionMatrix,r.matrixWorldInverse);h.setFromMatrix(k);c.setRenderTarget(this.renderTarget);c.clear();l.length=0;a(n,n,r);var u;p=0;for(t=q.length;p<t;p++)s=l[p],v=s.object,s=s.buffer, !0;e._shadowPass=!0;f._shadowPass=!0;g._shadowPass=!0};this.render=function(a,b){this.enabled&&this.update(a,b)};this.update=function(n,r){var p,t,s,q,v;b.clearColor(1,1,1,1);b.disable(b.BLEND);c.setDepthTest(!0);!0===n.autoUpdate&&n.updateMatrixWorld();r.matrixWorldInverse.getInverse(r.matrixWorld);k.multiplyMatrices(r.projectionMatrix,r.matrixWorldInverse);h.setFromMatrix(k);c.setRenderTarget(this.renderTarget);c.clear();l.length=0;a(n,n,r);var u;p=0;for(t=l.length;p<t;p++)s=l[p],v=s.object,s=s.buffer,
v instanceof THREE.PointCloud&&!v.customDepthMaterial||((u=v.material instanceof THREE.MeshFaceMaterial?v.material.materials[0]:v.material)&&c.setMaterialFaces(v.material),q=void 0!==v.geometry.morphTargets&&0<v.geometry.morphTargets.length&&u.morphTargets,u=v instanceof THREE.SkinnedMesh&&u.skinning,q=v.customDepthMaterial?v.customDepthMaterial:u?q?g:f:q?e:d,s instanceof THREE.BufferGeometry?c.renderBufferDirect(r,n.__lights,null,q,s,v):c.renderBuffer(r,n.__lights,null,q,s,v));q=n.__webglObjectsImmediate; v instanceof THREE.PointCloud&&!v.customDepthMaterial||((u=v.material instanceof THREE.MeshFaceMaterial?v.material.materials[0]:v.material)&&c.setMaterialFaces(v.material),q=void 0!==v.geometry.morphTargets&&0<v.geometry.morphTargets.length&&u.morphTargets,u=v instanceof THREE.SkinnedMesh&&u.skinning,q=v.customDepthMaterial?v.customDepthMaterial:u?q?g:f:q?e:d,s instanceof THREE.BufferGeometry?c.renderBufferDirect(r,n.__lights,null,q,s,v):c.renderBuffer(r,n.__lights,null,q,s,v));q=n.__webglObjectsImmediate;
p=0;for(t=q.length;p<t;p++)s=q[p],v=s.object,v.visible&&(v._modelViewMatrix.multiplyMatrices(r.matrixWorldInverse,v.matrixWorld),c.renderImmediateObject(r,n.__lights,null,d,v));p=c.getClearColor();t=c.getClearAlpha();b.clearColor(p.r,p.g,p.b,t);b.enable(b.BLEND)}};THREE.ShaderFlares={lensFlareVertexTexture:{vertexShader:"uniform lowp int renderType;\nuniform vec3 screenPosition;\nuniform vec2 scale;\nuniform float rotation;\nuniform sampler2D occlusionMap;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvarying float vVisibility;\nvoid main() {\nvUV = uv;\nvec2 pos = position;\nif( renderType == 2 ) {\nvec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\nvVisibility = visibility.r / 9.0;\nvVisibility *= 1.0 - visibility.g / 9.0;\nvVisibility *= visibility.b / 9.0;\nvVisibility *= 1.0 - visibility.a / 9.0;\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}", p=0;for(t=q.length;p<t;p++)s=q[p],v=s.object,v.visible&&(v._modelViewMatrix.multiplyMatrices(r.matrixWorldInverse,v.matrixWorld),c.renderImmediateObject(r,n.__lights,null,d,v));p=c.getClearColor();t=c.getClearAlpha();b.clearColor(p.r,p.g,p.b,t);b.enable(b.BLEND)}};THREE.ShaderFlares={lensFlareVertexTexture:{vertexShader:"uniform lowp int renderType;\nuniform vec3 screenPosition;\nuniform vec2 scale;\nuniform float rotation;\nuniform sampler2D occlusionMap;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvarying float vVisibility;\nvoid main() {\nvUV = uv;\nvec2 pos = position;\nif( renderType == 2 ) {\nvec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\nvVisibility = visibility.r / 9.0;\nvVisibility *= 1.0 - visibility.g / 9.0;\nvVisibility *= visibility.b / 9.0;\nvVisibility *= 1.0 - visibility.a / 9.0;\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}",
fragmentShader:"uniform lowp int renderType;\nuniform sampler2D map;\nuniform float opacity;\nuniform vec3 color;\nvarying vec2 vUV;\nvarying float vVisibility;\nvoid main() {\nif( renderType == 0 ) {\ngl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );\n} else if( renderType == 1 ) {\ngl_FragColor = texture2D( map, vUV );\n} else {\nvec4 texture = texture2D( map, vUV );\ntexture.a *= opacity * vVisibility;\ngl_FragColor = texture;\ngl_FragColor.rgb *= color;\n}\n}"},lensFlare:{vertexShader:"uniform lowp int renderType;\nuniform vec3 screenPosition;\nuniform vec2 scale;\nuniform float rotation;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvoid main() {\nvUV = uv;\nvec2 pos = position;\nif( renderType == 2 ) {\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}", fragmentShader:"uniform lowp int renderType;\nuniform sampler2D map;\nuniform float opacity;\nuniform vec3 color;\nvarying vec2 vUV;\nvarying float vVisibility;\nvoid main() {\nif( renderType == 0 ) {\ngl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );\n} else if( renderType == 1 ) {\ngl_FragColor = texture2D( map, vUV );\n} else {\nvec4 texture = texture2D( map, vUV );\ntexture.a *= opacity * vVisibility;\ngl_FragColor = texture;\ngl_FragColor.rgb *= color;\n}\n}"},lensFlare:{vertexShader:"uniform lowp int renderType;\nuniform vec3 screenPosition;\nuniform vec2 scale;\nuniform float rotation;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvoid main() {\nvUV = uv;\nvec2 pos = position;\nif( renderType == 2 ) {\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册