|
@@ -4775,9 +4775,6 @@ function WebGLRenderTargetCube( width, height, options ) {
|
|
|
|
|
|
WebGLRenderTarget.call( this, width, height, options );
|
|
WebGLRenderTarget.call( this, width, height, options );
|
|
|
|
|
|
- this.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5
|
|
|
|
- this.activeMipMapLevel = 0;
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
WebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );
|
|
WebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );
|
|
@@ -12156,17 +12153,15 @@ BufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototy
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- data.data = { attributes: {}, morphAttributes: {} };
|
|
|
|
|
|
+ data.data = { attributes: {} };
|
|
|
|
|
|
var index = this.index;
|
|
var index = this.index;
|
|
|
|
|
|
if ( index !== null ) {
|
|
if ( index !== null ) {
|
|
|
|
|
|
- var array = Array.prototype.slice.call( index.array );
|
|
|
|
-
|
|
|
|
data.data.index = {
|
|
data.data.index = {
|
|
type: index.array.constructor.name,
|
|
type: index.array.constructor.name,
|
|
- array: array
|
|
|
|
|
|
+ array: Array.prototype.slice.call( index.array )
|
|
};
|
|
};
|
|
|
|
|
|
}
|
|
}
|
|
@@ -12177,20 +12172,23 @@ BufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototy
|
|
|
|
|
|
var attribute = attributes[ key ];
|
|
var attribute = attributes[ key ];
|
|
|
|
|
|
- var array = Array.prototype.slice.call( attribute.array );
|
|
|
|
-
|
|
|
|
- data.data.attributes[ key ] = {
|
|
|
|
|
|
+ var attributeData = {
|
|
itemSize: attribute.itemSize,
|
|
itemSize: attribute.itemSize,
|
|
type: attribute.array.constructor.name,
|
|
type: attribute.array.constructor.name,
|
|
- array: array,
|
|
|
|
|
|
+ array: Array.prototype.slice.call( attribute.array ),
|
|
normalized: attribute.normalized
|
|
normalized: attribute.normalized
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ if ( attribute.name !== '' ) attributeData.name = attribute.name;
|
|
|
|
+
|
|
|
|
+ data.data.attributes[ key ] = attributeData;
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
- var morphAttributes = this.morphAttributes;
|
|
|
|
|
|
+ var morphAttributes = {};
|
|
|
|
+ var hasMorphAttributes = false;
|
|
|
|
|
|
- for ( var key in morphAttributes ) {
|
|
|
|
|
|
+ for ( var key in this.morphAttributes ) {
|
|
|
|
|
|
var attributeArray = this.morphAttributes[ key ];
|
|
var attributeArray = this.morphAttributes[ key ];
|
|
|
|
|
|
@@ -12200,20 +12198,31 @@ BufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototy
|
|
|
|
|
|
var attribute = attributeArray[ i ];
|
|
var attribute = attributeArray[ i ];
|
|
|
|
|
|
- array.push( {
|
|
|
|
- name: attribute.name,
|
|
|
|
|
|
+ var attributeData = {
|
|
itemSize: attribute.itemSize,
|
|
itemSize: attribute.itemSize,
|
|
type: attribute.array.constructor.name,
|
|
type: attribute.array.constructor.name,
|
|
array: Array.prototype.slice.call( attribute.array ),
|
|
array: Array.prototype.slice.call( attribute.array ),
|
|
normalized: attribute.normalized
|
|
normalized: attribute.normalized
|
|
- } );
|
|
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ if ( attribute.name !== '' ) attributeData.name = attribute.name;
|
|
|
|
+
|
|
|
|
+ array.push( attributeData );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- data.data.morphAttributes[ key ] = array;
|
|
|
|
|
|
+ if ( array.length > 0 ) {
|
|
|
|
+
|
|
|
|
+ morphAttributes[ key ] = array;
|
|
|
|
+
|
|
|
|
+ hasMorphAttributes = true;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if ( hasMorphAttributes ) data.data.morphAttributes = morphAttributes;
|
|
|
|
+
|
|
var groups = this.groups;
|
|
var groups = this.groups;
|
|
|
|
|
|
if ( groups.length > 0 ) {
|
|
if ( groups.length > 0 ) {
|
|
@@ -22843,7 +22852,16 @@ function WebGLRenderer( parameters ) {
|
|
|
|
|
|
this.setScissor = function ( x, y, width, height ) {
|
|
this.setScissor = function ( x, y, width, height ) {
|
|
|
|
|
|
- _scissor.set( x, y, width, height );
|
|
|
|
|
|
+ if ( x.isVector4 ) {
|
|
|
|
+
|
|
|
|
+ _scissor.set( x.x, x.y, x.z, x.w );
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ _scissor.set( x, y, width, height );
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );
|
|
state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );
|
|
|
|
|
|
};
|
|
};
|
|
@@ -24908,7 +24926,7 @@ function WebGLRenderer( parameters ) {
|
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
- this.setRenderTarget = function ( renderTarget ) {
|
|
|
|
|
|
+ this.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipMapLevel ) {
|
|
|
|
|
|
_currentRenderTarget = renderTarget;
|
|
_currentRenderTarget = renderTarget;
|
|
|
|
|
|
@@ -24927,7 +24945,7 @@ function WebGLRenderer( parameters ) {
|
|
|
|
|
|
if ( renderTarget.isWebGLRenderTargetCube ) {
|
|
if ( renderTarget.isWebGLRenderTargetCube ) {
|
|
|
|
|
|
- framebuffer = __webglFramebuffer[ renderTarget.activeCubeFace ];
|
|
|
|
|
|
+ framebuffer = __webglFramebuffer[ activeCubeFace || 0 ];
|
|
isCube = true;
|
|
isCube = true;
|
|
|
|
|
|
} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {
|
|
} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {
|
|
@@ -24966,7 +24984,7 @@ function WebGLRenderer( parameters ) {
|
|
if ( isCube ) {
|
|
if ( isCube ) {
|
|
|
|
|
|
var textureProperties = properties.get( renderTarget.texture );
|
|
var textureProperties = properties.get( renderTarget.texture );
|
|
- _gl.framebufferTexture2D( 36160, 36064, 34069 + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel );
|
|
|
|
|
|
+ _gl.framebufferTexture2D( 36160, 36064, 34069 + activeCubeFace || 0, textureProperties.__webglTexture, activeMipMapLevel || 0 );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -27996,6 +28014,16 @@ function TubeBufferGeometry( path, tubularSegments, radius, radialSegments, clos
|
|
TubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );
|
|
TubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );
|
|
TubeBufferGeometry.prototype.constructor = TubeBufferGeometry;
|
|
TubeBufferGeometry.prototype.constructor = TubeBufferGeometry;
|
|
|
|
|
|
|
|
+TubeBufferGeometry.prototype.toJSON = function () {
|
|
|
|
+
|
|
|
|
+ var data = BufferGeometry.prototype.toJSON.call( this );
|
|
|
|
+
|
|
|
|
+ data.path = this.parameters.path.toJSON();
|
|
|
|
+
|
|
|
|
+ return data;
|
|
|
|
+
|
|
|
|
+};
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* @author oosmoxiecode
|
|
* @author oosmoxiecode
|
|
* @author Mugen87 / https://github.com/Mugen87
|
|
* @author Mugen87 / https://github.com/Mugen87
|
|
@@ -37930,30 +37958,36 @@ Object.assign( BufferGeometryLoader.prototype, {
|
|
var attribute = attributes[ key ];
|
|
var attribute = attributes[ key ];
|
|
var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );
|
|
var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );
|
|
|
|
|
|
- geometry.addAttribute( key, new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ) );
|
|
|
|
|
|
+ var bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );
|
|
|
|
+ if ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;
|
|
|
|
+ geometry.addAttribute( key, bufferAttribute );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
var morphAttributes = json.data.morphAttributes;
|
|
var morphAttributes = json.data.morphAttributes;
|
|
|
|
|
|
- for ( var key in morphAttributes ) {
|
|
|
|
|
|
+ if ( morphAttributes ) {
|
|
|
|
|
|
- var attributeArray = morphAttributes[ key ];
|
|
|
|
|
|
+ for ( var key in morphAttributes ) {
|
|
|
|
|
|
- var array = [];
|
|
|
|
|
|
+ var attributeArray = morphAttributes[ key ];
|
|
|
|
|
|
- for ( var i = 0, il = attributeArray.length; i < il; i ++ ) {
|
|
|
|
|
|
+ var array = [];
|
|
|
|
|
|
- var attribute = attributeArray[ i ];
|
|
|
|
- var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );
|
|
|
|
|
|
+ for ( var i = 0, il = attributeArray.length; i < il; i ++ ) {
|
|
|
|
|
|
- var bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );
|
|
|
|
- if ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;
|
|
|
|
- array.push( bufferAttribute );
|
|
|
|
|
|
+ var attribute = attributeArray[ i ];
|
|
|
|
+ var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ var bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );
|
|
|
|
+ if ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;
|
|
|
|
+ array.push( bufferAttribute );
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
- geometry.morphAttributes[ key ] = array;
|
|
|
|
|
|
+ geometry.morphAttributes[ key ] = array;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -38303,6 +38337,21 @@ Object.assign( ObjectLoader.prototype, {
|
|
|
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
+ case 'TubeGeometry':
|
|
|
|
+ case 'TubeBufferGeometry':
|
|
|
|
+
|
|
|
|
+ // This only works for built-in curves (e.g. CatmullRomCurve3).
|
|
|
|
+ // User defined curves or instances of CurvePath will not be deserialized.
|
|
|
|
+ geometry = new Geometries[ data.type ](
|
|
|
|
+ new Curves[ data.path.type ]().fromJSON( data.path ),
|
|
|
|
+ data.tubularSegments,
|
|
|
|
+ data.radius,
|
|
|
|
+ data.radialSegments,
|
|
|
|
+ data.closed
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ break;
|
|
|
|
+
|
|
case 'LatheGeometry':
|
|
case 'LatheGeometry':
|
|
case 'LatheBufferGeometry':
|
|
case 'LatheBufferGeometry':
|
|
|
|
|
|
@@ -40094,26 +40143,24 @@ function CubeCamera( near, far, cubeResolution, options ) {
|
|
|
|
|
|
renderTarget.texture.generateMipmaps = false;
|
|
renderTarget.texture.generateMipmaps = false;
|
|
|
|
|
|
- renderTarget.activeCubeFace = 0;
|
|
|
|
- renderer.setRenderTarget( renderTarget );
|
|
|
|
-
|
|
|
|
|
|
+ renderer.setRenderTarget( renderTarget, 0 );
|
|
renderer.render( scene, cameraPX );
|
|
renderer.render( scene, cameraPX );
|
|
|
|
|
|
- renderTarget.activeCubeFace = 1;
|
|
|
|
|
|
+ renderer.setRenderTarget( renderTarget, 1 );
|
|
renderer.render( scene, cameraNX );
|
|
renderer.render( scene, cameraNX );
|
|
|
|
|
|
- renderTarget.activeCubeFace = 2;
|
|
|
|
|
|
+ renderer.setRenderTarget( renderTarget, 2 );
|
|
renderer.render( scene, cameraPY );
|
|
renderer.render( scene, cameraPY );
|
|
|
|
|
|
- renderTarget.activeCubeFace = 3;
|
|
|
|
|
|
+ renderer.setRenderTarget( renderTarget, 3 );
|
|
renderer.render( scene, cameraNY );
|
|
renderer.render( scene, cameraNY );
|
|
|
|
|
|
- renderTarget.activeCubeFace = 4;
|
|
|
|
|
|
+ renderer.setRenderTarget( renderTarget, 4 );
|
|
renderer.render( scene, cameraPZ );
|
|
renderer.render( scene, cameraPZ );
|
|
|
|
|
|
renderTarget.texture.generateMipmaps = generateMipmaps;
|
|
renderTarget.texture.generateMipmaps = generateMipmaps;
|
|
|
|
|
|
- renderTarget.activeCubeFace = 5;
|
|
|
|
|
|
+ renderer.setRenderTarget( renderTarget, 5 );
|
|
renderer.render( scene, cameraNZ );
|
|
renderer.render( scene, cameraNZ );
|
|
|
|
|
|
renderer.setRenderTarget( currentRenderTarget );
|
|
renderer.setRenderTarget( currentRenderTarget );
|