|
@@ -124,13 +124,7 @@
|
|
|
|
|
|
var listeners = this._listeners;
|
|
var listeners = this._listeners;
|
|
|
|
|
|
- if ( listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1 ) {
|
|
|
|
-
|
|
|
|
- return true;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return false;
|
|
|
|
|
|
+ return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
@@ -599,7 +593,7 @@
|
|
default: throw new Error( 'index is out of range: ' + index );
|
|
default: throw new Error( 'index is out of range: ' + index );
|
|
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
return this;
|
|
return this;
|
|
|
|
|
|
},
|
|
},
|
|
@@ -967,12 +961,14 @@
|
|
|
|
|
|
fromAttribute: function ( attribute, index, offset ) {
|
|
fromAttribute: function ( attribute, index, offset ) {
|
|
|
|
|
|
- if ( offset === undefined ) offset = 0;
|
|
|
|
|
|
+ if ( offset !== undefined ) {
|
|
|
|
+
|
|
|
|
+ console.warn( 'THREE.Vector2: offset has been removed from .fromAttribute().' );
|
|
|
|
|
|
- index = index * attribute.itemSize + offset;
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- this.x = attribute.array[ index ];
|
|
|
|
- this.y = attribute.array[ index + 1 ];
|
|
|
|
|
|
+ this.x = attribute.getX( index );
|
|
|
|
+ this.y = attribute.getY( index );
|
|
|
|
|
|
return this;
|
|
return this;
|
|
|
|
|
|
@@ -1365,7 +1361,7 @@
|
|
default: throw new Error( 'index is out of range: ' + index );
|
|
default: throw new Error( 'index is out of range: ' + index );
|
|
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
return this;
|
|
return this;
|
|
|
|
|
|
},
|
|
},
|
|
@@ -1892,14 +1888,16 @@
|
|
|
|
|
|
fromAttribute: function ( attribute, index, offset ) {
|
|
fromAttribute: function ( attribute, index, offset ) {
|
|
|
|
|
|
- if ( offset === undefined ) offset = 0;
|
|
|
|
|
|
+ if ( offset !== undefined ) {
|
|
|
|
+
|
|
|
|
+ console.warn( 'THREE.Vector4: offset has been removed from .fromAttribute().' );
|
|
|
|
|
|
- index = index * attribute.itemSize + offset;
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- this.x = attribute.array[ index ];
|
|
|
|
- this.y = attribute.array[ index + 1 ];
|
|
|
|
- this.z = attribute.array[ index + 2 ];
|
|
|
|
- this.w = attribute.array[ index + 3 ];
|
|
|
|
|
|
+ this.x = attribute.getX( index );
|
|
|
|
+ this.y = attribute.getY( index );
|
|
|
|
+ this.z = attribute.getZ( index );
|
|
|
|
+ this.w = attribute.getW( index );
|
|
|
|
|
|
return this;
|
|
return this;
|
|
|
|
|
|
@@ -3358,13 +3356,15 @@
|
|
|
|
|
|
fromAttribute: function ( attribute, index, offset ) {
|
|
fromAttribute: function ( attribute, index, offset ) {
|
|
|
|
|
|
- if ( offset === undefined ) offset = 0;
|
|
|
|
|
|
+ if ( offset !== undefined ) {
|
|
|
|
|
|
- index = index * attribute.itemSize + offset;
|
|
|
|
|
|
+ console.warn( 'THREE.Vector3: offset has been removed from .fromAttribute().' );
|
|
|
|
|
|
- this.x = attribute.array[ index ];
|
|
|
|
- this.y = attribute.array[ index + 1 ];
|
|
|
|
- this.z = attribute.array[ index + 2 ];
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.x = attribute.getX( index );
|
|
|
|
+ this.y = attribute.getY( index );
|
|
|
|
+ this.z = attribute.getZ( index );
|
|
|
|
|
|
return this;
|
|
return this;
|
|
|
|
|
|
@@ -4917,6 +4917,71 @@
|
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Uniform Utilities
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ var UniformsUtils = {
|
|
|
|
+
|
|
|
|
+ merge: function ( uniforms ) {
|
|
|
|
+
|
|
|
|
+ var merged = {};
|
|
|
|
+
|
|
|
|
+ for ( var u = 0; u < uniforms.length; u ++ ) {
|
|
|
|
+
|
|
|
|
+ var tmp = this.clone( uniforms[ u ] );
|
|
|
|
+
|
|
|
|
+ for ( var p in tmp ) {
|
|
|
|
+
|
|
|
|
+ merged[ p ] = tmp[ p ];
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return merged;
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ clone: function ( uniforms_src ) {
|
|
|
|
+
|
|
|
|
+ var uniforms_dst = {};
|
|
|
|
+
|
|
|
|
+ for ( var u in uniforms_src ) {
|
|
|
|
+
|
|
|
|
+ uniforms_dst[ u ] = {};
|
|
|
|
+
|
|
|
|
+ for ( var p in uniforms_src[ u ] ) {
|
|
|
|
+
|
|
|
|
+ var parameter_src = uniforms_src[ u ][ p ];
|
|
|
|
+
|
|
|
|
+ if ( parameter_src && ( parameter_src.isColor ||
|
|
|
|
+ parameter_src.isMatrix3 || parameter_src.isMatrix4 ||
|
|
|
|
+ parameter_src.isVector2 || parameter_src.isVector3 || parameter_src.isVector4 ||
|
|
|
|
+ parameter_src.isTexture ) ) {
|
|
|
|
+
|
|
|
|
+ uniforms_dst[ u ][ p ] = parameter_src.clone();
|
|
|
|
+
|
|
|
|
+ } else if ( Array.isArray( parameter_src ) ) {
|
|
|
|
+
|
|
|
|
+ uniforms_dst[ u ][ p ] = parameter_src.slice();
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ uniforms_dst[ u ][ p ] = parameter_src;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return uniforms_dst;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ };
|
|
|
|
+
|
|
var alphamap_fragment = "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif\n";
|
|
var alphamap_fragment = "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif\n";
|
|
|
|
|
|
var alphamap_pars_fragment = "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif\n";
|
|
var alphamap_pars_fragment = "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif\n";
|
|
@@ -5966,12 +6031,12 @@
|
|
|
|
|
|
basic: {
|
|
basic: {
|
|
|
|
|
|
- uniforms: Object.assign( {},
|
|
|
|
|
|
+ uniforms: UniformsUtils.merge( [
|
|
UniformsLib.common,
|
|
UniformsLib.common,
|
|
UniformsLib.aomap,
|
|
UniformsLib.aomap,
|
|
UniformsLib.lightmap,
|
|
UniformsLib.lightmap,
|
|
UniformsLib.fog
|
|
UniformsLib.fog
|
|
- ),
|
|
|
|
|
|
+ ] ),
|
|
|
|
|
|
vertexShader: ShaderChunk.meshbasic_vert,
|
|
vertexShader: ShaderChunk.meshbasic_vert,
|
|
fragmentShader: ShaderChunk.meshbasic_frag
|
|
fragmentShader: ShaderChunk.meshbasic_frag
|
|
@@ -5980,7 +6045,7 @@
|
|
|
|
|
|
lambert: {
|
|
lambert: {
|
|
|
|
|
|
- uniforms: Object.assign( {},
|
|
|
|
|
|
+ uniforms: UniformsUtils.merge( [
|
|
UniformsLib.common,
|
|
UniformsLib.common,
|
|
UniformsLib.aomap,
|
|
UniformsLib.aomap,
|
|
UniformsLib.lightmap,
|
|
UniformsLib.lightmap,
|
|
@@ -5988,9 +6053,9 @@
|
|
UniformsLib.fog,
|
|
UniformsLib.fog,
|
|
UniformsLib.lights,
|
|
UniformsLib.lights,
|
|
{
|
|
{
|
|
- emissive : { value: new Color( 0x000000 ) }
|
|
|
|
|
|
+ emissive: { value: new Color( 0x000000 ) }
|
|
}
|
|
}
|
|
- ),
|
|
|
|
|
|
+ ] ),
|
|
|
|
|
|
vertexShader: ShaderChunk.meshlambert_vert,
|
|
vertexShader: ShaderChunk.meshlambert_vert,
|
|
fragmentShader: ShaderChunk.meshlambert_frag
|
|
fragmentShader: ShaderChunk.meshlambert_frag
|
|
@@ -5999,7 +6064,7 @@
|
|
|
|
|
|
phong: {
|
|
phong: {
|
|
|
|
|
|
- uniforms: Object.assign( {},
|
|
|
|
|
|
+ uniforms: UniformsUtils.merge( [
|
|
UniformsLib.common,
|
|
UniformsLib.common,
|
|
UniformsLib.aomap,
|
|
UniformsLib.aomap,
|
|
UniformsLib.lightmap,
|
|
UniformsLib.lightmap,
|
|
@@ -6011,11 +6076,11 @@
|
|
UniformsLib.fog,
|
|
UniformsLib.fog,
|
|
UniformsLib.lights,
|
|
UniformsLib.lights,
|
|
{
|
|
{
|
|
- emissive : { value: new Color( 0x000000 ) },
|
|
|
|
- specular : { value: new Color( 0x111111 ) },
|
|
|
|
|
|
+ emissive: { value: new Color( 0x000000 ) },
|
|
|
|
+ specular: { value: new Color( 0x111111 ) },
|
|
shininess: { value: 30 }
|
|
shininess: { value: 30 }
|
|
}
|
|
}
|
|
- ),
|
|
|
|
|
|
+ ] ),
|
|
|
|
|
|
vertexShader: ShaderChunk.meshphong_vert,
|
|
vertexShader: ShaderChunk.meshphong_vert,
|
|
fragmentShader: ShaderChunk.meshphong_frag
|
|
fragmentShader: ShaderChunk.meshphong_frag
|
|
@@ -6024,7 +6089,7 @@
|
|
|
|
|
|
standard: {
|
|
standard: {
|
|
|
|
|
|
- uniforms: Object.assign( {},
|
|
|
|
|
|
+ uniforms: UniformsUtils.merge( [
|
|
UniformsLib.common,
|
|
UniformsLib.common,
|
|
UniformsLib.aomap,
|
|
UniformsLib.aomap,
|
|
UniformsLib.lightmap,
|
|
UniformsLib.lightmap,
|
|
@@ -6037,12 +6102,12 @@
|
|
UniformsLib.fog,
|
|
UniformsLib.fog,
|
|
UniformsLib.lights,
|
|
UniformsLib.lights,
|
|
{
|
|
{
|
|
- emissive : { value: new Color( 0x000000 ) },
|
|
|
|
|
|
+ emissive: { value: new Color( 0x000000 ) },
|
|
roughness: { value: 0.5 },
|
|
roughness: { value: 0.5 },
|
|
metalness: { value: 0 },
|
|
metalness: { value: 0 },
|
|
- envMapIntensity : { value: 1 }, // temporary
|
|
|
|
|
|
+ envMapIntensity: { value: 1 } // temporary
|
|
}
|
|
}
|
|
- ),
|
|
|
|
|
|
+ ] ),
|
|
|
|
|
|
vertexShader: ShaderChunk.meshphysical_vert,
|
|
vertexShader: ShaderChunk.meshphysical_vert,
|
|
fragmentShader: ShaderChunk.meshphysical_frag
|
|
fragmentShader: ShaderChunk.meshphysical_frag
|
|
@@ -6051,10 +6116,10 @@
|
|
|
|
|
|
points: {
|
|
points: {
|
|
|
|
|
|
- uniforms: Object.assign( {},
|
|
|
|
|
|
+ uniforms: UniformsUtils.merge( [
|
|
UniformsLib.points,
|
|
UniformsLib.points,
|
|
UniformsLib.fog
|
|
UniformsLib.fog
|
|
- ),
|
|
|
|
|
|
+ ] ),
|
|
|
|
|
|
vertexShader: ShaderChunk.points_vert,
|
|
vertexShader: ShaderChunk.points_vert,
|
|
fragmentShader: ShaderChunk.points_frag
|
|
fragmentShader: ShaderChunk.points_frag
|
|
@@ -6063,15 +6128,15 @@
|
|
|
|
|
|
dashed: {
|
|
dashed: {
|
|
|
|
|
|
- uniforms: Object.assign( {},
|
|
|
|
|
|
+ uniforms: UniformsUtils.merge( [
|
|
UniformsLib.common,
|
|
UniformsLib.common,
|
|
UniformsLib.fog,
|
|
UniformsLib.fog,
|
|
{
|
|
{
|
|
- scale : { value: 1 },
|
|
|
|
- dashSize : { value: 1 },
|
|
|
|
|
|
+ scale: { value: 1 },
|
|
|
|
+ dashSize: { value: 1 },
|
|
totalSize: { value: 2 }
|
|
totalSize: { value: 2 }
|
|
}
|
|
}
|
|
- ),
|
|
|
|
|
|
+ ] ),
|
|
|
|
|
|
vertexShader: ShaderChunk.linedashed_vert,
|
|
vertexShader: ShaderChunk.linedashed_vert,
|
|
fragmentShader: ShaderChunk.linedashed_frag
|
|
fragmentShader: ShaderChunk.linedashed_frag
|
|
@@ -6080,10 +6145,10 @@
|
|
|
|
|
|
depth: {
|
|
depth: {
|
|
|
|
|
|
- uniforms: Object.assign( {},
|
|
|
|
|
|
+ uniforms: UniformsUtils.merge( [
|
|
UniformsLib.common,
|
|
UniformsLib.common,
|
|
UniformsLib.displacementmap
|
|
UniformsLib.displacementmap
|
|
- ),
|
|
|
|
|
|
+ ] ),
|
|
|
|
|
|
vertexShader: ShaderChunk.depth_vert,
|
|
vertexShader: ShaderChunk.depth_vert,
|
|
fragmentShader: ShaderChunk.depth_frag
|
|
fragmentShader: ShaderChunk.depth_frag
|
|
@@ -6093,7 +6158,7 @@
|
|
normal: {
|
|
normal: {
|
|
|
|
|
|
uniforms: {
|
|
uniforms: {
|
|
- opacity : { value: 1.0 }
|
|
|
|
|
|
+ opacity: { value: 1.0 }
|
|
},
|
|
},
|
|
|
|
|
|
vertexShader: ShaderChunk.normal_vert,
|
|
vertexShader: ShaderChunk.normal_vert,
|
|
@@ -6149,13 +6214,13 @@
|
|
|
|
|
|
ShaderLib.physical = {
|
|
ShaderLib.physical = {
|
|
|
|
|
|
- uniforms: Object.assign( {},
|
|
|
|
|
|
+ uniforms: UniformsUtils.merge( [
|
|
ShaderLib.standard.uniforms,
|
|
ShaderLib.standard.uniforms,
|
|
{
|
|
{
|
|
clearCoat: { value: 0 },
|
|
clearCoat: { value: 0 },
|
|
clearCoatRoughness: { value: 0 }
|
|
clearCoatRoughness: { value: 0 }
|
|
}
|
|
}
|
|
- ),
|
|
|
|
|
|
+ ] ),
|
|
|
|
|
|
vertexShader: ShaderChunk.meshphysical_vert,
|
|
vertexShader: ShaderChunk.meshphysical_vert,
|
|
fragmentShader: ShaderChunk.meshphysical_frag
|
|
fragmentShader: ShaderChunk.meshphysical_frag
|
|
@@ -6291,27 +6356,15 @@
|
|
|
|
|
|
containsPoint: function ( point ) {
|
|
containsPoint: function ( point ) {
|
|
|
|
|
|
- if ( point.x < this.min.x || point.x > this.max.x ||
|
|
|
|
- point.y < this.min.y || point.y > this.max.y ) {
|
|
|
|
-
|
|
|
|
- return false;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return true;
|
|
|
|
|
|
+ return point.x < this.min.x || point.x > this.max.x ||
|
|
|
|
+ point.y < this.min.y || point.y > this.max.y ? false : true;
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
containsBox: function ( box ) {
|
|
containsBox: function ( box ) {
|
|
|
|
|
|
- if ( ( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&
|
|
|
|
- ( this.min.y <= box.min.y ) && ( box.max.y <= this.max.y ) ) {
|
|
|
|
-
|
|
|
|
- return true;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return false;
|
|
|
|
|
|
+ return this.min.x <= box.min.x && box.max.x <= this.max.x &&
|
|
|
|
+ this.min.y <= box.min.y && box.max.y <= this.max.y;
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
@@ -6332,15 +6385,8 @@
|
|
intersectsBox: function ( box ) {
|
|
intersectsBox: function ( box ) {
|
|
|
|
|
|
// using 6 splitting planes to rule out intersections.
|
|
// using 6 splitting planes to rule out intersections.
|
|
-
|
|
|
|
- if ( box.max.x < this.min.x || box.min.x > this.max.x ||
|
|
|
|
- box.max.y < this.min.y || box.min.y > this.max.y ) {
|
|
|
|
-
|
|
|
|
- return false;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return true;
|
|
|
|
|
|
+ return box.max.x < this.min.x || box.min.x > this.max.x ||
|
|
|
|
+ box.max.y < this.min.y || box.min.y > this.max.y ? false : true;
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
@@ -7593,7 +7639,7 @@
|
|
this.fragmentShader = source.fragmentShader;
|
|
this.fragmentShader = source.fragmentShader;
|
|
this.vertexShader = source.vertexShader;
|
|
this.vertexShader = source.vertexShader;
|
|
|
|
|
|
- this.uniforms = Object.assign( {}, source.uniforms );
|
|
|
|
|
|
+ this.uniforms = UniformsUtils.clone( source.uniforms );
|
|
|
|
|
|
this.defines = source.defines;
|
|
this.defines = source.defines;
|
|
|
|
|
|
@@ -7844,6 +7890,8 @@
|
|
|
|
|
|
object.traverse( function ( node ) {
|
|
object.traverse( function ( node ) {
|
|
|
|
|
|
|
|
+ var i, l;
|
|
|
|
+
|
|
var geometry = node.geometry;
|
|
var geometry = node.geometry;
|
|
|
|
|
|
if ( geometry !== undefined ) {
|
|
if ( geometry !== undefined ) {
|
|
@@ -7852,7 +7900,7 @@
|
|
|
|
|
|
var vertices = geometry.vertices;
|
|
var vertices = geometry.vertices;
|
|
|
|
|
|
- for ( var i = 0, il = vertices.length; i < il; i ++ ) {
|
|
|
|
|
|
+ for ( i = 0, l = vertices.length; i < l; i ++ ) {
|
|
|
|
|
|
v1.copy( vertices[ i ] );
|
|
v1.copy( vertices[ i ] );
|
|
v1.applyMatrix4( node.matrixWorld );
|
|
v1.applyMatrix4( node.matrixWorld );
|
|
@@ -7867,26 +7915,9 @@
|
|
|
|
|
|
if ( attribute !== undefined ) {
|
|
if ( attribute !== undefined ) {
|
|
|
|
|
|
- var array, offset, stride;
|
|
|
|
-
|
|
|
|
- if ( attribute.isInterleavedBufferAttribute ) {
|
|
|
|
|
|
+ for ( i = 0, l = attribute.count; i < l; i ++ ) {
|
|
|
|
|
|
- array = attribute.data.array;
|
|
|
|
- offset = attribute.offset;
|
|
|
|
- stride = attribute.data.stride;
|
|
|
|
-
|
|
|
|
- } else {
|
|
|
|
-
|
|
|
|
- array = attribute.array;
|
|
|
|
- offset = 0;
|
|
|
|
- stride = 3;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- for ( var i = offset, il = array.length; i < il; i += stride ) {
|
|
|
|
-
|
|
|
|
- v1.fromArray( array, i );
|
|
|
|
- v1.applyMatrix4( node.matrixWorld );
|
|
|
|
|
|
+ v1.fromAttribute( attribute, i ).applyMatrix4( node.matrixWorld );
|
|
|
|
|
|
scope.expandByPoint( v1 );
|
|
scope.expandByPoint( v1 );
|
|
|
|
|
|
@@ -7981,29 +8012,17 @@
|
|
|
|
|
|
containsPoint: function ( point ) {
|
|
containsPoint: function ( point ) {
|
|
|
|
|
|
- if ( point.x < this.min.x || point.x > this.max.x ||
|
|
|
|
- point.y < this.min.y || point.y > this.max.y ||
|
|
|
|
- point.z < this.min.z || point.z > this.max.z ) {
|
|
|
|
-
|
|
|
|
- return false;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return true;
|
|
|
|
|
|
+ return point.x < this.min.x || point.x > this.max.x ||
|
|
|
|
+ point.y < this.min.y || point.y > this.max.y ||
|
|
|
|
+ point.z < this.min.z || point.z > this.max.z ? false : true;
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
containsBox: function ( box ) {
|
|
containsBox: function ( box ) {
|
|
|
|
|
|
- if ( ( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&
|
|
|
|
- ( this.min.y <= box.min.y ) && ( box.max.y <= this.max.y ) &&
|
|
|
|
- ( this.min.z <= box.min.z ) && ( box.max.z <= this.max.z ) ) {
|
|
|
|
-
|
|
|
|
- return true;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return false;
|
|
|
|
|
|
+ return this.min.x <= box.min.x && box.max.x <= this.max.x &&
|
|
|
|
+ this.min.y <= box.min.y && box.max.y <= this.max.y &&
|
|
|
|
+ this.min.z <= box.min.z && box.max.z <= this.max.z;
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
@@ -8025,16 +8044,9 @@
|
|
intersectsBox: function ( box ) {
|
|
intersectsBox: function ( box ) {
|
|
|
|
|
|
// using 6 splitting planes to rule out intersections.
|
|
// using 6 splitting planes to rule out intersections.
|
|
-
|
|
|
|
- if ( box.max.x < this.min.x || box.min.x > this.max.x ||
|
|
|
|
- box.max.y < this.min.y || box.min.y > this.max.y ||
|
|
|
|
- box.max.z < this.min.z || box.min.z > this.max.z ) {
|
|
|
|
-
|
|
|
|
- return false;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return true;
|
|
|
|
|
|
+ return box.max.x < this.min.x || box.min.x > this.max.x ||
|
|
|
|
+ box.max.y < this.min.y || box.min.y > this.max.y ||
|
|
|
|
+ box.max.z < this.min.z || box.min.z > this.max.z ? false : true;
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
@@ -9177,7 +9189,7 @@
|
|
depthMaterialTemplate.clipping = true;
|
|
depthMaterialTemplate.clipping = true;
|
|
|
|
|
|
var distanceShader = ShaderLib[ "distanceRGBA" ];
|
|
var distanceShader = ShaderLib[ "distanceRGBA" ];
|
|
- var distanceUniforms = Object.assign( {}, distanceShader.uniforms );
|
|
|
|
|
|
+ var distanceUniforms = UniformsUtils.clone( distanceShader.uniforms );
|
|
|
|
|
|
for ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {
|
|
for ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {
|
|
|
|
|
|
@@ -12236,7 +12248,7 @@
|
|
|
|
|
|
var group;
|
|
var group;
|
|
var groups = [];
|
|
var groups = [];
|
|
- var materialIndex;
|
|
|
|
|
|
+ var materialIndex = undefined;
|
|
|
|
|
|
var faces = geometry.faces;
|
|
var faces = geometry.faces;
|
|
|
|
|
|
@@ -16158,7 +16170,7 @@
|
|
( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.normalMap || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',
|
|
( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.normalMap || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',
|
|
( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',
|
|
( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',
|
|
( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',
|
|
( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',
|
|
- ( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '',
|
|
|
|
|
|
+ ( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : ''
|
|
];
|
|
];
|
|
|
|
|
|
return chunks.filter( filterEmptyLine ).join( '\n' );
|
|
return chunks.filter( filterEmptyLine ).join( '\n' );
|
|
@@ -17502,10 +17514,8 @@
|
|
|
|
|
|
function textureNeedsPowerOfTwo( texture ) {
|
|
function textureNeedsPowerOfTwo( texture ) {
|
|
|
|
|
|
- if ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) return true;
|
|
|
|
- if ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) return true;
|
|
|
|
-
|
|
|
|
- return false;
|
|
|
|
|
|
+ return ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||
|
|
|
|
+ ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -17674,8 +17684,8 @@
|
|
|
|
|
|
_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );
|
|
_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );
|
|
|
|
|
|
- var isCompressed = (texture && texture.isCompressedTexture);
|
|
|
|
- var isDataTexture = (texture.image[ 0 ] && texture.image[ 0 ].isDataTexture);
|
|
|
|
|
|
+ var isCompressed = ( texture && texture.isCompressedTexture );
|
|
|
|
+ var isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );
|
|
|
|
|
|
var cubeImage = [];
|
|
var cubeImage = [];
|
|
|
|
|
|
@@ -19694,7 +19704,7 @@
|
|
_projScreenMatrix = new Matrix4(),
|
|
_projScreenMatrix = new Matrix4(),
|
|
|
|
|
|
_vector3 = new Vector3(),
|
|
_vector3 = new Vector3(),
|
|
- _matrix4 = new Matrix4(),
|
|
|
|
|
|
+ _matrix4 = new Matrix4(),
|
|
_matrix42 = new Matrix4(),
|
|
_matrix42 = new Matrix4(),
|
|
|
|
|
|
// light arrays cache
|
|
// light arrays cache
|
|
@@ -21068,7 +21078,7 @@
|
|
|
|
|
|
materialProperties.__webglShader = {
|
|
materialProperties.__webglShader = {
|
|
name: material.type,
|
|
name: material.type,
|
|
- uniforms: Object.assign( {}, shader.uniforms ),
|
|
|
|
|
|
+ uniforms: UniformsUtils.clone( shader.uniforms ),
|
|
vertexShader: shader.vertexShader,
|
|
vertexShader: shader.vertexShader,
|
|
fragmentShader: shader.fragmentShader
|
|
fragmentShader: shader.fragmentShader
|
|
};
|
|
};
|
|
@@ -27492,6 +27502,8 @@
|
|
|
|
|
|
var h = hash[ key ];
|
|
var h = hash[ key ];
|
|
|
|
|
|
|
|
+ // An edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.
|
|
|
|
+
|
|
if ( h.face2 === undefined || faces[ h.face1 ].normal.dot( faces[ h.face2 ].normal ) <= thresholdDot ) {
|
|
if ( h.face2 === undefined || faces[ h.face1 ].normal.dot( faces[ h.face2 ].normal ) <= thresholdDot ) {
|
|
|
|
|
|
var vertex = vertices[ h.vert1 ];
|
|
var vertex = vertices[ h.vert1 ];
|
|
@@ -27508,7 +27520,7 @@
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- this.addAttribute( 'position', new BufferAttribute( new Float32Array( coords ), 3 ) );
|
|
|
|
|
|
+ this.addAttribute( 'position', new Float32BufferAttribute( coords, 3 ) );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -28084,12 +28096,12 @@
|
|
function ShadowMaterial() {
|
|
function ShadowMaterial() {
|
|
|
|
|
|
ShaderMaterial.call( this, {
|
|
ShaderMaterial.call( this, {
|
|
- uniforms: Object.assign( {},
|
|
|
|
|
|
+ uniforms: UniformsUtils.merge( [
|
|
UniformsLib.lights,
|
|
UniformsLib.lights,
|
|
{
|
|
{
|
|
opacity: { value: 1.0 }
|
|
opacity: { value: 1.0 }
|
|
}
|
|
}
|
|
- ),
|
|
|
|
|
|
+ ] ),
|
|
vertexShader: ShaderChunk[ 'shadow_vert' ],
|
|
vertexShader: ShaderChunk[ 'shadow_vert' ],
|
|
fragmentShader: ShaderChunk[ 'shadow_frag' ]
|
|
fragmentShader: ShaderChunk[ 'shadow_frag' ]
|
|
} );
|
|
} );
|
|
@@ -29161,7 +29173,7 @@
|
|
if ( this.responseType !== undefined ) request.responseType = this.responseType;
|
|
if ( this.responseType !== undefined ) request.responseType = this.responseType;
|
|
if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;
|
|
if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;
|
|
|
|
|
|
- if ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );
|
|
|
|
|
|
+ if ( this.mimeType && request.overrideMimeType ) request.overrideMimeType( this.mimeType );
|
|
|
|
|
|
request.send( null );
|
|
request.send( null );
|
|
|
|
|
|
@@ -30020,7 +30032,7 @@
|
|
|
|
|
|
constructor: AmbientLight,
|
|
constructor: AmbientLight,
|
|
|
|
|
|
- isAmbientLight: true,
|
|
|
|
|
|
+ isAmbientLight: true
|
|
|
|
|
|
} );
|
|
} );
|
|
|
|
|
|
@@ -30676,28 +30688,28 @@
|
|
|
|
|
|
DefaultInterpolation: InterpolateLinear,
|
|
DefaultInterpolation: InterpolateLinear,
|
|
|
|
|
|
- InterpolantFactoryMethodDiscrete: function( result ) {
|
|
|
|
|
|
+ InterpolantFactoryMethodDiscrete: function ( result ) {
|
|
|
|
|
|
return new DiscreteInterpolant(
|
|
return new DiscreteInterpolant(
|
|
this.times, this.values, this.getValueSize(), result );
|
|
this.times, this.values, this.getValueSize(), result );
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
- InterpolantFactoryMethodLinear: function( result ) {
|
|
|
|
|
|
+ InterpolantFactoryMethodLinear: function ( result ) {
|
|
|
|
|
|
return new LinearInterpolant(
|
|
return new LinearInterpolant(
|
|
this.times, this.values, this.getValueSize(), result );
|
|
this.times, this.values, this.getValueSize(), result );
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
- InterpolantFactoryMethodSmooth: function( result ) {
|
|
|
|
|
|
+ InterpolantFactoryMethodSmooth: function ( result ) {
|
|
|
|
|
|
return new CubicInterpolant(
|
|
return new CubicInterpolant(
|
|
this.times, this.values, this.getValueSize(), result );
|
|
this.times, this.values, this.getValueSize(), result );
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
- setInterpolation: function( interpolation ) {
|
|
|
|
|
|
+ setInterpolation: function ( interpolation ) {
|
|
|
|
|
|
var factoryMethod;
|
|
var factoryMethod;
|
|
|
|
|
|
@@ -30752,7 +30764,7 @@
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
- getInterpolation: function() {
|
|
|
|
|
|
+ getInterpolation: function () {
|
|
|
|
|
|
switch ( this.createInterpolant ) {
|
|
switch ( this.createInterpolant ) {
|
|
|
|
|
|
@@ -30772,20 +30784,20 @@
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
- getValueSize: function() {
|
|
|
|
|
|
+ getValueSize: function () {
|
|
|
|
|
|
return this.values.length / this.times.length;
|
|
return this.values.length / this.times.length;
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
// move all keyframes either forwards or backwards in time
|
|
// move all keyframes either forwards or backwards in time
|
|
- shift: function( timeOffset ) {
|
|
|
|
|
|
+ shift: function ( timeOffset ) {
|
|
|
|
|
|
- if( timeOffset !== 0.0 ) {
|
|
|
|
|
|
+ if ( timeOffset !== 0.0 ) {
|
|
|
|
|
|
var times = this.times;
|
|
var times = this.times;
|
|
|
|
|
|
- for( var i = 0, n = times.length; i !== n; ++ i ) {
|
|
|
|
|
|
+ for ( var i = 0, n = times.length; i !== n; ++ i ) {
|
|
|
|
|
|
times[ i ] += timeOffset;
|
|
times[ i ] += timeOffset;
|
|
|
|
|
|
@@ -30798,13 +30810,13 @@
|
|
},
|
|
},
|
|
|
|
|
|
// scale all keyframe times by a factor (useful for frame <-> seconds conversions)
|
|
// scale all keyframe times by a factor (useful for frame <-> seconds conversions)
|
|
- scale: function( timeScale ) {
|
|
|
|
|
|
+ scale: function ( timeScale ) {
|
|
|
|
|
|
- if( timeScale !== 1.0 ) {
|
|
|
|
|
|
+ if ( timeScale !== 1.0 ) {
|
|
|
|
|
|
var times = this.times;
|
|
var times = this.times;
|
|
|
|
|
|
- for( var i = 0, n = times.length; i !== n; ++ i ) {
|
|
|
|
|
|
+ for ( var i = 0, n = times.length; i !== n; ++ i ) {
|
|
|
|
|
|
times[ i ] *= timeScale;
|
|
times[ i ] *= timeScale;
|
|
|
|
|
|
@@ -30818,7 +30830,7 @@
|
|
|
|
|
|
// removes keyframes before and after animation without changing any values within the range [startTime, endTime].
|
|
// removes keyframes before and after animation without changing any values within the range [startTime, endTime].
|
|
// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values
|
|
// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values
|
|
- trim: function( startTime, endTime ) {
|
|
|
|
|
|
+ trim: function ( startTime, endTime ) {
|
|
|
|
|
|
var times = this.times,
|
|
var times = this.times,
|
|
nKeys = times.length,
|
|
nKeys = times.length,
|
|
@@ -30826,14 +30838,14 @@
|
|
to = nKeys - 1;
|
|
to = nKeys - 1;
|
|
|
|
|
|
while ( from !== nKeys && times[ from ] < startTime ) ++ from;
|
|
while ( from !== nKeys && times[ from ] < startTime ) ++ from;
|
|
- while ( to !== -1 && times[ to ] > endTime ) -- to;
|
|
|
|
|
|
+ while ( to !== - 1 && times[ to ] > endTime ) -- to;
|
|
|
|
|
|
++ to; // inclusive -> exclusive bound
|
|
++ to; // inclusive -> exclusive bound
|
|
|
|
|
|
- if( from !== 0 || to !== nKeys ) {
|
|
|
|
|
|
+ if ( from !== 0 || to !== nKeys ) {
|
|
|
|
|
|
// empty tracks are forbidden, so keep at least one keyframe
|
|
// empty tracks are forbidden, so keep at least one keyframe
|
|
- if ( from >= to ) to = Math.max( to , 1 ), from = to - 1;
|
|
|
|
|
|
+ if ( from >= to ) to = Math.max( to, 1 ), from = to - 1;
|
|
|
|
|
|
var stride = this.getValueSize();
|
|
var stride = this.getValueSize();
|
|
this.times = AnimationUtils.arraySlice( times, from, to );
|
|
this.times = AnimationUtils.arraySlice( times, from, to );
|
|
@@ -30847,7 +30859,7 @@
|
|
},
|
|
},
|
|
|
|
|
|
// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable
|
|
// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable
|
|
- validate: function() {
|
|
|
|
|
|
+ validate: function () {
|
|
|
|
|
|
var valid = true;
|
|
var valid = true;
|
|
|
|
|
|
@@ -30864,7 +30876,7 @@
|
|
|
|
|
|
nKeys = times.length;
|
|
nKeys = times.length;
|
|
|
|
|
|
- if( nKeys === 0 ) {
|
|
|
|
|
|
+ if ( nKeys === 0 ) {
|
|
|
|
|
|
console.error( "track is empty", this );
|
|
console.error( "track is empty", this );
|
|
valid = false;
|
|
valid = false;
|
|
@@ -30873,7 +30885,7 @@
|
|
|
|
|
|
var prevTime = null;
|
|
var prevTime = null;
|
|
|
|
|
|
- for( var i = 0; i !== nKeys; i ++ ) {
|
|
|
|
|
|
+ for ( var i = 0; i !== nKeys; i ++ ) {
|
|
|
|
|
|
var currTime = times[ i ];
|
|
var currTime = times[ i ];
|
|
|
|
|
|
@@ -30885,7 +30897,7 @@
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- if( prevTime !== null && prevTime > currTime ) {
|
|
|
|
|
|
+ if ( prevTime !== null && prevTime > currTime ) {
|
|
|
|
|
|
console.error( "out of order keys", this, i, currTime, prevTime );
|
|
console.error( "out of order keys", this, i, currTime, prevTime );
|
|
valid = false;
|
|
valid = false;
|
|
@@ -30925,7 +30937,7 @@
|
|
|
|
|
|
// removes equivalent sequential keys as common in morph target sequences
|
|
// removes equivalent sequential keys as common in morph target sequences
|
|
// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)
|
|
// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)
|
|
- optimize: function() {
|
|
|
|
|
|
+ optimize: function () {
|
|
|
|
|
|
var times = this.times,
|
|
var times = this.times,
|
|
values = this.values,
|
|
values = this.values,
|
|
@@ -30936,7 +30948,7 @@
|
|
writeIndex = 1,
|
|
writeIndex = 1,
|
|
lastIndex = times.length - 1;
|
|
lastIndex = times.length - 1;
|
|
|
|
|
|
- for( var i = 1; i < lastIndex; ++ i ) {
|
|
|
|
|
|
+ for ( var i = 1; i < lastIndex; ++ i ) {
|
|
|
|
|
|
var keep = false;
|
|
var keep = false;
|
|
|
|
|
|
@@ -31173,7 +31185,7 @@
|
|
|
|
|
|
constructor: NumberKeyframeTrack,
|
|
constructor: NumberKeyframeTrack,
|
|
|
|
|
|
- ValueTypeName: 'number',
|
|
|
|
|
|
+ ValueTypeName: 'number'
|
|
|
|
|
|
// ValueBufferType is inherited
|
|
// ValueBufferType is inherited
|
|
|
|
|
|
@@ -31465,8 +31477,7 @@
|
|
|
|
|
|
var track = this.tracks[ i ];
|
|
var track = this.tracks[ i ];
|
|
|
|
|
|
- duration = Math.max(
|
|
|
|
- duration, track.times[ track.times.length - 1 ] );
|
|
|
|
|
|
+ duration = Math.max( duration, track.times[ track.times.length - 1 ] );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -31730,8 +31741,7 @@
|
|
var times = [];
|
|
var times = [];
|
|
var values = [];
|
|
var values = [];
|
|
|
|
|
|
- for ( var m = 0;
|
|
|
|
- m !== animationKeys[k].morphTargets.length; ++ m ) {
|
|
|
|
|
|
+ for ( var m = 0; m !== animationKeys[k].morphTargets.length; ++ m ) {
|
|
|
|
|
|
var animationKey = animationKeys[k];
|
|
var animationKey = animationKeys[k];
|
|
|
|
|
|
@@ -31740,8 +31750,7 @@
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- tracks.push( new NumberKeyframeTrack(
|
|
|
|
- '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );
|
|
|
|
|
|
+ tracks.push( new NumberKeyframeTrack('.morphTargetInfluence[' + morphTargetName + ']', times, values ) );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -36047,14 +36056,18 @@
|
|
|
|
|
|
switch ( typeName ) {
|
|
switch ( typeName ) {
|
|
|
|
|
|
- case 'quaternion': mixFunction = this._slerp; break;
|
|
|
|
|
|
+ case 'quaternion':
|
|
|
|
+ mixFunction = this._slerp;
|
|
|
|
+ break;
|
|
|
|
|
|
case 'string':
|
|
case 'string':
|
|
case 'bool':
|
|
case 'bool':
|
|
|
|
+ bufferType = Array;
|
|
|
|
+ mixFunction = this._select;
|
|
|
|
+ break;
|
|
|
|
|
|
- bufferType = Array, mixFunction = this._select; break;
|
|
|
|
-
|
|
|
|
- default: mixFunction = this._lerp;
|
|
|
|
|
|
+ default:
|
|
|
|
+ mixFunction = this._lerp;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -36972,7 +36985,8 @@
|
|
|
|
|
|
var object = arguments[ i ],
|
|
var object = arguments[ i ],
|
|
uuid = object.uuid,
|
|
uuid = object.uuid,
|
|
- index = indicesByUUID[ uuid ];
|
|
|
|
|
|
+ index = indicesByUUID[ uuid ],
|
|
|
|
+ knownObject = undefined;
|
|
|
|
|
|
if ( index === undefined ) {
|
|
if ( index === undefined ) {
|
|
|
|
|
|
@@ -36994,7 +37008,7 @@
|
|
|
|
|
|
} else if ( index < nCachedObjects ) {
|
|
} else if ( index < nCachedObjects ) {
|
|
|
|
|
|
- var knownObject = objects[ index ];
|
|
|
|
|
|
+ knownObject = objects[ index ];
|
|
|
|
|
|
// move existing object to the ACTIVE region
|
|
// move existing object to the ACTIVE region
|
|
|
|
|
|
@@ -37525,7 +37539,7 @@
|
|
|
|
|
|
if ( interpolant === null ) {
|
|
if ( interpolant === null ) {
|
|
|
|
|
|
- interpolant = mixer._lendControlInterpolant(),
|
|
|
|
|
|
+ interpolant = mixer._lendControlInterpolant();
|
|
this._timeScaleInterpolant = interpolant;
|
|
this._timeScaleInterpolant = interpolant;
|
|
|
|
|
|
}
|
|
}
|
|
@@ -37725,7 +37739,7 @@
|
|
if ( loopCount === -1 ) {
|
|
if ( loopCount === -1 ) {
|
|
// just started
|
|
// just started
|
|
|
|
|
|
- this.loopCount = 0;
|
|
|
|
|
|
+ this._loopCount = 0;
|
|
this._setEndings( true, true, false );
|
|
this._setEndings( true, true, false );
|
|
|
|
|
|
}
|
|
}
|
|
@@ -37888,7 +37902,7 @@
|
|
|
|
|
|
if ( interpolant === null ) {
|
|
if ( interpolant === null ) {
|
|
|
|
|
|
- interpolant = mixer._lendControlInterpolant(),
|
|
|
|
|
|
+ interpolant = mixer._lendControlInterpolant();
|
|
this._weightInterpolant = interpolant;
|
|
this._weightInterpolant = interpolant;
|
|
|
|
|
|
}
|
|
}
|
|
@@ -42808,71 +42822,6 @@
|
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
- var UniformsUtils = {
|
|
|
|
-
|
|
|
|
- merge: function ( uniforms ) {
|
|
|
|
-
|
|
|
|
- console.warn( 'THREE.UniformsUtils.merge() has been deprecated. Use Object.assign() instead.' );
|
|
|
|
-
|
|
|
|
- var merged = {};
|
|
|
|
-
|
|
|
|
- for ( var u = 0; u < uniforms.length; u ++ ) {
|
|
|
|
-
|
|
|
|
- var tmp = this.clone( uniforms[ u ] );
|
|
|
|
-
|
|
|
|
- for ( var p in tmp ) {
|
|
|
|
-
|
|
|
|
- merged[ p ] = tmp[ p ];
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return merged;
|
|
|
|
-
|
|
|
|
- },
|
|
|
|
-
|
|
|
|
- clone: function ( uniforms_src ) {
|
|
|
|
-
|
|
|
|
- console.warn( 'THREE.UniformsUtils.clone() has been deprecated.' );
|
|
|
|
-
|
|
|
|
- var uniforms_dst = {};
|
|
|
|
-
|
|
|
|
- for ( var u in uniforms_src ) {
|
|
|
|
-
|
|
|
|
- uniforms_dst[ u ] = {};
|
|
|
|
-
|
|
|
|
- for ( var p in uniforms_src[ u ] ) {
|
|
|
|
-
|
|
|
|
- var parameter_src = uniforms_src[ u ][ p ];
|
|
|
|
-
|
|
|
|
- if ( parameter_src && ( parameter_src.isColor ||
|
|
|
|
- parameter_src.isMatrix3 || parameter_src.isMatrix4 ||
|
|
|
|
- parameter_src.isVector2 || parameter_src.isVector3 || parameter_src.isVector4 ||
|
|
|
|
- parameter_src.isTexture ) ) {
|
|
|
|
-
|
|
|
|
- uniforms_dst[ u ][ p ] = parameter_src.clone();
|
|
|
|
-
|
|
|
|
- } else if ( Array.isArray( parameter_src ) ) {
|
|
|
|
-
|
|
|
|
- uniforms_dst[ u ][ p ] = parameter_src.slice();
|
|
|
|
-
|
|
|
|
- } else {
|
|
|
|
-
|
|
|
|
- uniforms_dst[ u ][ p ] = parameter_src;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return uniforms_dst;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
//
|
|
//
|
|
|
|
|
|
function Projector() {
|
|
function Projector() {
|
|
@@ -42920,6 +42869,7 @@
|
|
exports.WebGLRenderer = WebGLRenderer;
|
|
exports.WebGLRenderer = WebGLRenderer;
|
|
exports.ShaderLib = ShaderLib;
|
|
exports.ShaderLib = ShaderLib;
|
|
exports.UniformsLib = UniformsLib;
|
|
exports.UniformsLib = UniformsLib;
|
|
|
|
+ exports.UniformsUtils = UniformsUtils;
|
|
exports.ShaderChunk = ShaderChunk;
|
|
exports.ShaderChunk = ShaderChunk;
|
|
exports.FogExp2 = FogExp2;
|
|
exports.FogExp2 = FogExp2;
|
|
exports.Fog = Fog;
|
|
exports.Fog = Fog;
|
|
@@ -43293,7 +43243,6 @@
|
|
exports.XHRLoader = XHRLoader;
|
|
exports.XHRLoader = XHRLoader;
|
|
exports.GeometryUtils = GeometryUtils;
|
|
exports.GeometryUtils = GeometryUtils;
|
|
exports.ImageUtils = ImageUtils;
|
|
exports.ImageUtils = ImageUtils;
|
|
- exports.UniformsUtils = UniformsUtils;
|
|
|
|
exports.Projector = Projector;
|
|
exports.Projector = Projector;
|
|
exports.CanvasRenderer = CanvasRenderer;
|
|
exports.CanvasRenderer = CanvasRenderer;
|
|
|
|
|