فهرست منبع

Updated builds.

Mr.doob 1 ماه پیش
والد
کامیت
6852e6830b
9فایلهای تغییر یافته به همراه478 افزوده شده و 61 حذف شده
  1. 241 31
      build/three.cjs
  2. 237 30
      build/three.core.js
  3. 0 0
      build/three.core.min.js
  4. 0 0
      build/three.module.js
  5. 0 0
      build/three.module.min.js
  6. 0 0
      build/three.webgpu.js
  7. 0 0
      build/three.webgpu.min.js
  8. 0 0
      build/three.webgpu.nodes.js
  9. 0 0
      build/three.webgpu.nodes.min.js

+ 241 - 31
build/three.cjs

@@ -1172,6 +1172,17 @@ const InterpolateLinear = 2301;
  */
  */
 const InterpolateSmooth = 2302;
 const InterpolateSmooth = 2302;
 
 
+/**
+ * Bezier interpolation mode for keyframe tracks.
+ *
+ * Uses cubic Bezier curves with explicit 2D control points.
+ * Requires tangent data to be set on the track.
+ *
+ * @type {number}
+ * @constant
+ */
+const InterpolateBezier = 2303;
+
 /**
 /**
  * Zero curvature ending for animations.
  * Zero curvature ending for animations.
  *
  *
@@ -2246,7 +2257,7 @@ function euclideanModulo( n, m ) {
 
 
 /**
 /**
  * Performs a linear mapping from range `<a1, a2>` to range `<b1, b2>`
  * Performs a linear mapping from range `<a1, a2>` to range `<b1, b2>`
- * for the given value.
+ * for the given value. `a2` must be greater than `a1`.
  *
  *
  * @param {number} x - The value to be mapped.
  * @param {number} x - The value to be mapped.
  * @param {number} a1 - Minimum value for range A.
  * @param {number} a1 - Minimum value for range A.
@@ -2341,9 +2352,9 @@ function pingpong( x, length = 1 ) {
  *
  *
  * See [Smoothstep](http://en.wikipedia.org/wiki/Smoothstep) for more details.
  * See [Smoothstep](http://en.wikipedia.org/wiki/Smoothstep) for more details.
  *
  *
- * @param {number} x - The value to evaluate based on its position between min and max.
- * @param {number} min - The min value. Any x value below min will be `0`.
- * @param {number} max - The max value. Any x value above max will be `1`.
+ * @param {number} x - The value to evaluate based on its position between `min` and `max`.
+ * @param {number} min - The min value. Any `x` value below `min` will be `0`. `min` must be lower than `max`.
+ * @param {number} max - The max value. Any `x` value above `max` will be `1`. `max` must be greater than `min`.
  * @return {number} The alternated value.
  * @return {number} The alternated value.
  */
  */
 function smoothstep( x, min, max ) {
 function smoothstep( x, min, max ) {
@@ -2359,11 +2370,11 @@ function smoothstep( x, min, max ) {
 
 
 /**
 /**
  * A [variation on smoothstep](https://en.wikipedia.org/wiki/Smoothstep#Variations)
  * A [variation on smoothstep](https://en.wikipedia.org/wiki/Smoothstep#Variations)
- * that has zero 1st and 2nd order derivatives at x=0 and x=1.
+ * that has zero 1st and 2nd order derivatives at `x=0` and `x=1`.
  *
  *
- * @param {number} x - The value to evaluate based on its position between min and max.
- * @param {number} min - The min value. Any x value below min will be `0`.
- * @param {number} max - The max value. Any x value above max will be `1`.
+ * @param {number} x - The value to evaluate based on its position between `min` and `max`.
+ * @param {number} min - The min value. Any `x` value below `min` will be `0`. `min` must be lower than `max`.
+ * @param {number} max - The max value. Any `x` value above `max` will be `1`. `max` must be greater than `min`.
  * @return {number} The alternated value.
  * @return {number} The alternated value.
  */
  */
 function smootherstep( x, min, max ) {
 function smootherstep( x, min, max ) {
@@ -2476,7 +2487,7 @@ function isPowerOfTwo( value ) {
 /**
 /**
  * Returns the smallest power of two that is greater than or equal to the given number.
  * Returns the smallest power of two that is greater than or equal to the given number.
  *
  *
- * @param {number} value - The value to find a POT for.
+ * @param {number} value - The value to find a POT for. Must be greater than `0`.
  * @return {number} The smallest power of two that is greater than or equal to the given number.
  * @return {number} The smallest power of two that is greater than or equal to the given number.
  */
  */
 function ceilPowerOfTwo( value ) {
 function ceilPowerOfTwo( value ) {
@@ -2488,7 +2499,7 @@ function ceilPowerOfTwo( value ) {
 /**
 /**
  * Returns the largest power of two that is less than or equal to the given number.
  * Returns the largest power of two that is less than or equal to the given number.
  *
  *
- * @param {number} value - The value to find a POT for.
+ * @param {number} value - The value to find a POT for. Must be greater than `0`.
  * @return {number} The largest power of two that is less than or equal to the given number.
  * @return {number} The largest power of two that is less than or equal to the given number.
  */
  */
 function floorPowerOfTwo( value ) {
 function floorPowerOfTwo( value ) {
@@ -5067,7 +5078,7 @@ class Vector3 {
 	 */
 	 */
 	applyEuler( euler ) {
 	applyEuler( euler ) {
 
 
-		return this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );
+		return this.applyQuaternion( _quaternion$5.setFromEuler( euler ) );
 
 
 	}
 	}
 
 
@@ -5080,7 +5091,7 @@ class Vector3 {
 	 */
 	 */
 	applyAxisAngle( axis, angle ) {
 	applyAxisAngle( axis, angle ) {
 
 
-		return this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );
+		return this.applyQuaternion( _quaternion$5.setFromAxisAngle( axis, angle ) );
 
 
 	}
 	}
 
 
@@ -5934,7 +5945,7 @@ class Vector3 {
 }
 }
 
 
 const _vector$c = /*@__PURE__*/ new Vector3();
 const _vector$c = /*@__PURE__*/ new Vector3();
-const _quaternion$4 = /*@__PURE__*/ new Quaternion();
+const _quaternion$5 = /*@__PURE__*/ new Quaternion();
 
 
 /**
 /**
  * Represents a 3x3 matrix.
  * Represents a 3x3 matrix.
@@ -12878,7 +12889,7 @@ const _y = /*@__PURE__*/ new Vector3();
 const _z = /*@__PURE__*/ new Vector3();
 const _z = /*@__PURE__*/ new Vector3();
 
 
 const _matrix$2 = /*@__PURE__*/ new Matrix4();
 const _matrix$2 = /*@__PURE__*/ new Matrix4();
-const _quaternion$3 = /*@__PURE__*/ new Quaternion();
+const _quaternion$4 = /*@__PURE__*/ new Quaternion();
 
 
 /**
 /**
  * A class representing Euler angles.
  * A class representing Euler angles.
@@ -13232,9 +13243,9 @@ class Euler {
 	 */
 	 */
 	reorder( newOrder ) {
 	reorder( newOrder ) {
 
 
-		_quaternion$3.setFromEuler( this );
+		_quaternion$4.setFromEuler( this );
 
 
-		return this.setFromQuaternion( _quaternion$3, newOrder );
+		return this.setFromQuaternion( _quaternion$4, newOrder );
 
 
 	}
 	}
 
 
@@ -13446,9 +13457,9 @@ const _q1 = /*@__PURE__*/ new Quaternion();
 const _m1$3 = /*@__PURE__*/ new Matrix4();
 const _m1$3 = /*@__PURE__*/ new Matrix4();
 const _target = /*@__PURE__*/ new Vector3();
 const _target = /*@__PURE__*/ new Vector3();
 
 
-const _position$3 = /*@__PURE__*/ new Vector3();
-const _scale$2 = /*@__PURE__*/ new Vector3();
-const _quaternion$2 = /*@__PURE__*/ new Quaternion();
+const _position$4 = /*@__PURE__*/ new Vector3();
+const _scale$3 = /*@__PURE__*/ new Vector3();
+const _quaternion$3 = /*@__PURE__*/ new Quaternion();
 
 
 const _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );
 const _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );
 const _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );
 const _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );
@@ -14138,15 +14149,15 @@ class Object3D extends EventDispatcher {
 
 
 		this.updateWorldMatrix( true, false );
 		this.updateWorldMatrix( true, false );
 
 
-		_position$3.setFromMatrixPosition( this.matrixWorld );
+		_position$4.setFromMatrixPosition( this.matrixWorld );
 
 
 		if ( this.isCamera || this.isLight ) {
 		if ( this.isCamera || this.isLight ) {
 
 
-			_m1$3.lookAt( _position$3, _target, this.up );
+			_m1$3.lookAt( _position$4, _target, this.up );
 
 
 		} else {
 		} else {
 
 
-			_m1$3.lookAt( _target, _position$3, this.up );
+			_m1$3.lookAt( _target, _position$4, this.up );
 
 
 		}
 		}
 
 
@@ -14440,7 +14451,7 @@ class Object3D extends EventDispatcher {
 
 
 		this.updateWorldMatrix( true, false );
 		this.updateWorldMatrix( true, false );
 
 
-		this.matrixWorld.decompose( _position$3, target, _scale$2 );
+		this.matrixWorld.decompose( _position$4, target, _scale$3 );
 
 
 		return target;
 		return target;
 
 
@@ -14456,7 +14467,7 @@ class Object3D extends EventDispatcher {
 
 
 		this.updateWorldMatrix( true, false );
 		this.updateWorldMatrix( true, false );
 
 
-		this.matrixWorld.decompose( _position$3, _quaternion$2, target );
+		this.matrixWorld.decompose( _position$4, _quaternion$3, target );
 
 
 		return target;
 		return target;
 
 
@@ -21747,6 +21758,10 @@ class ShaderMaterial extends Material {
 
 
 }
 }
 
 
+const _position$3 = /*@__PURE__*/ new Vector3();
+const _quaternion$2 = /*@__PURE__*/ new Quaternion();
+const _scale$2 = /*@__PURE__*/ new Vector3();
+
 /**
 /**
  * Abstract base class for cameras. This class should always be inherited
  * Abstract base class for cameras. This class should always be inherited
  * when you build a new camera.
  * when you build a new camera.
@@ -21852,7 +21867,19 @@ class Camera extends Object3D {
 
 
 		super.updateMatrixWorld( force );
 		super.updateMatrixWorld( force );
 
 
-		this.matrixWorldInverse.copy( this.matrixWorld ).invert();
+		// exclude scale from view matrix to be glTF conform
+
+		this.matrixWorld.decompose( _position$3, _quaternion$2, _scale$2 );
+
+		if ( _scale$2.x === 1 && _scale$2.y === 1 && _scale$2.z === 1 ) {
+
+			this.matrixWorldInverse.copy( this.matrixWorld ).invert();
+
+		} else {
+
+			this.matrixWorldInverse.compose( _position$3, _quaternion$2, _scale$2.set( 1, 1, 1 ) ).invert();
+
+		}
 
 
 	}
 	}
 
 
@@ -21860,7 +21887,19 @@ class Camera extends Object3D {
 
 
 		super.updateWorldMatrix( updateParents, updateChildren );
 		super.updateWorldMatrix( updateParents, updateChildren );
 
 
-		this.matrixWorldInverse.copy( this.matrixWorld ).invert();
+		// exclude scale from view matrix to be glTF conform
+
+		this.matrixWorld.decompose( _position$3, _quaternion$2, _scale$2 );
+
+		if ( _scale$2.x === 1 && _scale$2.y === 1 && _scale$2.z === 1 ) {
+
+			this.matrixWorldInverse.copy( this.matrixWorld ).invert();
+
+		} else {
+
+			this.matrixWorldInverse.compose( _position$3, _quaternion$2, _scale$2.set( 1, 1, 1 ) ).invert();
+
+		}
 
 
 	}
 	}
 
 
@@ -22474,19 +22513,27 @@ class CubeCamera extends Object3D {
 
 
 		renderTarget.texture.generateMipmaps = false;
 		renderTarget.texture.generateMipmaps = false;
 
 
+		// https://github.com/mrdoob/three.js/issues/31413#issuecomment-3095966812
+		const reversedDepthBuffer = !! ( renderer.isWebGLRenderer && renderer.state.buffers.depth.getReversed() );
+
 		renderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );
 		renderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );
+		if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
 		renderer.render( scene, cameraPX );
 		renderer.render( scene, cameraPX );
 
 
 		renderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );
 		renderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );
+		if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
 		renderer.render( scene, cameraNX );
 		renderer.render( scene, cameraNX );
 
 
 		renderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );
 		renderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );
+		if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
 		renderer.render( scene, cameraPY );
 		renderer.render( scene, cameraPY );
 
 
 		renderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );
 		renderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );
+		if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
 		renderer.render( scene, cameraNY );
 		renderer.render( scene, cameraNY );
 
 
 		renderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );
 		renderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );
+		if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
 		renderer.render( scene, cameraPZ );
 		renderer.render( scene, cameraPZ );
 
 
 		// mipmaps are generated during the last call of render()
 		// mipmaps are generated during the last call of render()
@@ -22495,6 +22542,7 @@ class CubeCamera extends Object3D {
 		renderTarget.texture.generateMipmaps = generateMipmaps;
 		renderTarget.texture.generateMipmaps = generateMipmaps;
 
 
 		renderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );
 		renderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );
+		if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
 		renderer.render( scene, cameraNZ );
 		renderer.render( scene, cameraNZ );
 
 
 		renderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );
 		renderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );
@@ -42360,6 +42408,111 @@ class DiscreteInterpolant extends Interpolant {
 
 
 }
 }
 
 
+/**
+ * A Bezier interpolant using cubic Bezier curves with 2D control points.
+ *
+ * This interpolant supports the COLLADA/Maya style of Bezier animation where
+ * each keyframe has explicit in/out tangent control points specified as
+ * 2D coordinates (time, value).
+ *
+ * The tangent data must be provided via the `settings` object:
+ * - `settings.inTangents`: Float32Array with [time, value] pairs per keyframe per component
+ * - `settings.outTangents`: Float32Array with [time, value] pairs per keyframe per component
+ *
+ * For a track with N keyframes and stride S:
+ * - Each tangent array has N * S * 2 values
+ * - Layout: [k0_c0_time, k0_c0_value, k0_c1_time, k0_c1_value, ..., k0_cS_time, k0_cS_value,
+ *            k1_c0_time, k1_c0_value, ...]
+ *
+ * @augments Interpolant
+ */
+class BezierInterpolant extends Interpolant {
+
+	interpolate_( i1, t0, t, t1 ) {
+
+		const result = this.resultBuffer;
+		const values = this.sampleValues;
+		const stride = this.valueSize;
+
+		const offset1 = i1 * stride;
+		const offset0 = offset1 - stride;
+
+		const settings = this.settings || this.DefaultSettings_;
+		const inTangents = settings.inTangents;
+		const outTangents = settings.outTangents;
+
+		// If no tangent data, fall back to linear interpolation
+		if ( ! inTangents || ! outTangents ) {
+
+			const weight1 = ( t - t0 ) / ( t1 - t0 );
+			const weight0 = 1 - weight1;
+
+			for ( let i = 0; i !== stride; ++ i ) {
+
+				result[ i ] = values[ offset0 + i ] * weight0 + values[ offset1 + i ] * weight1;
+
+			}
+
+			return result;
+
+		}
+
+		const tangentStride = stride * 2;
+		const i0 = i1 - 1;
+
+		for ( let i = 0; i !== stride; ++ i ) {
+
+			const v0 = values[ offset0 + i ];
+			const v1 = values[ offset1 + i ];
+
+			// outTangent of previous keyframe (C0)
+			const outTangentOffset = i0 * tangentStride + i * 2;
+			const c0x = outTangents[ outTangentOffset ];
+			const c0y = outTangents[ outTangentOffset + 1 ];
+
+			// inTangent of current keyframe (C1)
+			const inTangentOffset = i1 * tangentStride + i * 2;
+			const c1x = inTangents[ inTangentOffset ];
+			const c1y = inTangents[ inTangentOffset + 1 ];
+
+			// Solve for Bezier parameter s where Bx(s) = t using Newton-Raphson
+			let s = ( t - t0 ) / ( t1 - t0 );
+			let s2, s3, oneMinusS, oneMinusS2, oneMinusS3;
+
+			for ( let iter = 0; iter < 8; iter ++ ) {
+
+				s2 = s * s;
+				s3 = s2 * s;
+				oneMinusS = 1 - s;
+				oneMinusS2 = oneMinusS * oneMinusS;
+				oneMinusS3 = oneMinusS2 * oneMinusS;
+
+				// Bezier X(s) = (1-s)³·t0 + 3(1-s)²s·c0x + 3(1-s)s²·c1x + s³·t1
+				const bx = oneMinusS3 * t0 + 3 * oneMinusS2 * s * c0x + 3 * oneMinusS * s2 * c1x + s3 * t1;
+
+				const error = bx - t;
+				if ( Math.abs( error ) < 1e-10 ) break;
+
+				// Derivative dX/ds
+				const dbx = 3 * oneMinusS2 * ( c0x - t0 ) + 6 * oneMinusS * s * ( c1x - c0x ) + 3 * s2 * ( t1 - c1x );
+				if ( Math.abs( dbx ) < 1e-10 ) break;
+
+				s = s - error / dbx;
+				s = Math.max( 0, Math.min( 1, s ) );
+
+			}
+
+			// Evaluate Bezier Y(s)
+			result[ i ] = oneMinusS3 * v0 + 3 * oneMinusS2 * s * c0y + 3 * oneMinusS * s2 * c1y + s3 * v1;
+
+		}
+
+		return result;
+
+	}
+
+}
+
 /**
 /**
  * Represents a timed sequence of keyframes, which are composed of lists of
  * Represents a timed sequence of keyframes, which are composed of lists of
  * times and related values, and which are used to animate a specific property
  * times and related values, and which are used to animate a specific property
@@ -42373,7 +42526,7 @@ class KeyframeTrack {
 	 * @param {string} name - The keyframe track's name.
 	 * @param {string} name - The keyframe track's name.
 	 * @param {Array<number>} times - A list of keyframe times.
 	 * @param {Array<number>} times - A list of keyframe times.
 	 * @param {Array<number|string|boolean>} values - A list of keyframe values.
 	 * @param {Array<number|string|boolean>} values - A list of keyframe values.
-	 * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type.
+	 * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth|InterpolateBezier)} [interpolation] - The interpolation type.
 	 */
 	 */
 	constructor( name, times, values, interpolation ) {
 	constructor( name, times, values, interpolation ) {
 
 
@@ -42491,10 +42644,37 @@ class KeyframeTrack {
 
 
 	}
 	}
 
 
+	/**
+	 * Factory method for creating a new Bezier interpolant.
+	 *
+	 * The Bezier interpolant requires tangent data to be set via the `settings` property
+	 * on the track before creating the interpolant. The settings should contain:
+	 * - `inTangents`: Float32Array with [time, value] pairs per keyframe per component
+	 * - `outTangents`: Float32Array with [time, value] pairs per keyframe per component
+	 *
+	 * @static
+	 * @param {TypedArray} [result] - The result buffer.
+	 * @return {BezierInterpolant} The new interpolant.
+	 */
+	InterpolantFactoryMethodBezier( result ) {
+
+		const interpolant = new BezierInterpolant( this.times, this.values, this.getValueSize(), result );
+
+		// Pass tangent data from track settings to interpolant
+		if ( this.settings ) {
+
+			interpolant.settings = this.settings;
+
+		}
+
+		return interpolant;
+
+	}
+
 	/**
 	/**
 	 * Defines the interpolation factor method for this keyframe track.
 	 * Defines the interpolation factor method for this keyframe track.
 	 *
 	 *
-	 * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} interpolation - The interpolation type.
+	 * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth|InterpolateBezier)} interpolation - The interpolation type.
 	 * @return {KeyframeTrack} A reference to this keyframe track.
 	 * @return {KeyframeTrack} A reference to this keyframe track.
 	 */
 	 */
 	setInterpolation( interpolation ) {
 	setInterpolation( interpolation ) {
@@ -42521,6 +42701,12 @@ class KeyframeTrack {
 
 
 				break;
 				break;
 
 
+			case InterpolateBezier:
+
+				factoryMethod = this.InterpolantFactoryMethodBezier;
+
+				break;
+
 		}
 		}
 
 
 		if ( factoryMethod === undefined ) {
 		if ( factoryMethod === undefined ) {
@@ -42557,7 +42743,7 @@ class KeyframeTrack {
 	/**
 	/**
 	 * Returns the current interpolation type.
 	 * Returns the current interpolation type.
 	 *
 	 *
-	 * @return {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} The interpolation type.
+	 * @return {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth|InterpolateBezier)} The interpolation type.
 	 */
 	 */
 	getInterpolation() {
 	getInterpolation() {
 
 
@@ -42575,6 +42761,10 @@ class KeyframeTrack {
 
 
 				return InterpolateSmooth;
 				return InterpolateSmooth;
 
 
+			case this.InterpolantFactoryMethodBezier:
+
+				return InterpolateBezier;
+
 		}
 		}
 
 
 	}
 	}
@@ -42940,7 +43130,7 @@ KeyframeTrack.prototype.ValueBufferType = Float32Array;
 /**
 /**
  * The default interpolation type of this keyframe track.
  * The default interpolation type of this keyframe track.
  *
  *
- * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)}
+ * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth|InterpolateBezier)}
  * @default InterpolateLinear
  * @default InterpolateLinear
  */
  */
 KeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;
 KeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;
@@ -45748,6 +45938,16 @@ class LightShadow {
 		 */
 		 */
 		this.bias = 0;
 		this.bias = 0;
 
 
+		/**
+		 * A node version of `bias`. Only supported with `WebGPURenderer`.
+		 *
+		 * If a bias node is defined, `bias` has no effect.
+		 *
+		 * @type {?Node<float>}
+		 * @default null
+		 */
+		this.biasNode = null;
+
 		/**
 		/**
 		 * Defines how much the position used to query the shadow map is offset along
 		 * Defines how much the position used to query the shadow map is offset along
 		 * the object normal. The default is `0`. Increasing this value can be used to
 		 * the object normal. The default is `0`. Increasing this value can be used to
@@ -45988,6 +46188,8 @@ class LightShadow {
 
 
 		this.mapSize.copy( source.mapSize );
 		this.mapSize.copy( source.mapSize );
 
 
+		this.biasNode = source.biasNode;
+
 		return this;
 		return this;
 
 
 	}
 	}
@@ -49882,12 +50084,15 @@ class ArrayCamera extends PerspectiveCamera {
 
 
 /**
 /**
  * Class for keeping track of time.
  * Class for keeping track of time.
+ *
+ * @deprecated since r183.
  */
  */
 class Clock {
 class Clock {
 
 
 	/**
 	/**
 	 * Constructs a new clock.
 	 * Constructs a new clock.
 	 *
 	 *
+	 * @deprecated since 183.
 	 * @param {boolean} [autoStart=true] - Whether to automatically start the clock when
 	 * @param {boolean} [autoStart=true] - Whether to automatically start the clock when
 	 * `getDelta()` is called for the first time.
 	 * `getDelta()` is called for the first time.
 	 */
 	 */
@@ -49935,6 +50140,8 @@ class Clock {
 		 */
 		 */
 		this.running = false;
 		this.running = false;
 
 
+		warn( 'THREE.Clock: This module has been deprecated. Please use THREE.Timer instead.' ); // @deprecated, r183
+
 	}
 	}
 
 
 	/**
 	/**
@@ -68998,6 +69205,8 @@ function WebGLState( gl, extensions ) {
 
 
 				if ( currentDepthClear !== depth ) {
 				if ( currentDepthClear !== depth ) {
 
 
+					currentDepthClear = depth;
+
 					if ( currentReversed ) {
 					if ( currentReversed ) {
 
 
 						depth = 1 - depth;
 						depth = 1 - depth;
@@ -69005,7 +69214,6 @@ function WebGLState( gl, extensions ) {
 					}
 					}
 
 
 					gl.clearDepth( depth );
 					gl.clearDepth( depth );
-					currentDepthClear = depth;
 
 
 				}
 				}
 
 
@@ -78472,6 +78680,7 @@ exports.BackSide = BackSide;
 exports.BasicDepthPacking = BasicDepthPacking;
 exports.BasicDepthPacking = BasicDepthPacking;
 exports.BasicShadowMap = BasicShadowMap;
 exports.BasicShadowMap = BasicShadowMap;
 exports.BatchedMesh = BatchedMesh;
 exports.BatchedMesh = BatchedMesh;
+exports.BezierInterpolant = BezierInterpolant;
 exports.Bone = Bone;
 exports.Bone = Bone;
 exports.BooleanKeyframeTrack = BooleanKeyframeTrack;
 exports.BooleanKeyframeTrack = BooleanKeyframeTrack;
 exports.Box2 = Box2;
 exports.Box2 = Box2;
@@ -78599,6 +78808,7 @@ exports.IntType = IntType;
 exports.InterleavedBuffer = InterleavedBuffer;
 exports.InterleavedBuffer = InterleavedBuffer;
 exports.InterleavedBufferAttribute = InterleavedBufferAttribute;
 exports.InterleavedBufferAttribute = InterleavedBufferAttribute;
 exports.Interpolant = Interpolant;
 exports.Interpolant = Interpolant;
+exports.InterpolateBezier = InterpolateBezier;
 exports.InterpolateDiscrete = InterpolateDiscrete;
 exports.InterpolateDiscrete = InterpolateDiscrete;
 exports.InterpolateLinear = InterpolateLinear;
 exports.InterpolateLinear = InterpolateLinear;
 exports.InterpolateSmooth = InterpolateSmooth;
 exports.InterpolateSmooth = InterpolateSmooth;

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 237 - 30
build/three.core.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
build/three.core.min.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
build/three.module.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
build/three.module.min.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
build/three.webgpu.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
build/three.webgpu.min.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
build/three.webgpu.nodes.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
build/three.webgpu.nodes.min.js


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است

粤ICP备19079148号