|
|
@@ -1172,6 +1172,17 @@ const InterpolateLinear = 2301;
|
|
|
*/
|
|
|
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.
|
|
|
*
|
|
|
@@ -2246,7 +2257,7 @@ function euclideanModulo( n, m ) {
|
|
|
|
|
|
/**
|
|
|
* 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} 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.
|
|
|
*
|
|
|
- * @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.
|
|
|
*/
|
|
|
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)
|
|
|
- * 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.
|
|
|
*/
|
|
|
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.
|
|
|
*
|
|
|
- * @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.
|
|
|
*/
|
|
|
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.
|
|
|
*
|
|
|
- * @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.
|
|
|
*/
|
|
|
function floorPowerOfTwo( value ) {
|
|
|
@@ -5067,7 +5078,7 @@ class Vector3 {
|
|
|
*/
|
|
|
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 ) {
|
|
|
|
|
|
- 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 _quaternion$4 = /*@__PURE__*/ new Quaternion();
|
|
|
+const _quaternion$5 = /*@__PURE__*/ new Quaternion();
|
|
|
|
|
|
/**
|
|
|
* Represents a 3x3 matrix.
|
|
|
@@ -12878,7 +12889,7 @@ const _y = /*@__PURE__*/ new Vector3();
|
|
|
const _z = /*@__PURE__*/ new Vector3();
|
|
|
|
|
|
const _matrix$2 = /*@__PURE__*/ new Matrix4();
|
|
|
-const _quaternion$3 = /*@__PURE__*/ new Quaternion();
|
|
|
+const _quaternion$4 = /*@__PURE__*/ new Quaternion();
|
|
|
|
|
|
/**
|
|
|
* A class representing Euler angles.
|
|
|
@@ -13232,9 +13243,9 @@ class Euler {
|
|
|
*/
|
|
|
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 _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 _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );
|
|
|
@@ -14138,15 +14149,15 @@ class Object3D extends EventDispatcher {
|
|
|
|
|
|
this.updateWorldMatrix( true, false );
|
|
|
|
|
|
- _position$3.setFromMatrixPosition( this.matrixWorld );
|
|
|
+ _position$4.setFromMatrixPosition( this.matrixWorld );
|
|
|
|
|
|
if ( this.isCamera || this.isLight ) {
|
|
|
|
|
|
- _m1$3.lookAt( _position$3, _target, this.up );
|
|
|
+ _m1$3.lookAt( _position$4, _target, this.up );
|
|
|
|
|
|
} 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.matrixWorld.decompose( _position$3, target, _scale$2 );
|
|
|
+ this.matrixWorld.decompose( _position$4, target, _scale$3 );
|
|
|
|
|
|
return target;
|
|
|
|
|
|
@@ -14456,7 +14467,7 @@ class Object3D extends EventDispatcher {
|
|
|
|
|
|
this.updateWorldMatrix( true, false );
|
|
|
|
|
|
- this.matrixWorld.decompose( _position$3, _quaternion$2, target );
|
|
|
+ this.matrixWorld.decompose( _position$4, _quaternion$3, 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
|
|
|
* when you build a new camera.
|
|
|
@@ -21852,7 +21867,19 @@ class Camera extends Object3D {
|
|
|
|
|
|
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 );
|
|
|
|
|
|
- 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;
|
|
|
|
|
|
+ // https://github.com/mrdoob/three.js/issues/31413#issuecomment-3095966812
|
|
|
+ const reversedDepthBuffer = !! ( renderer.isWebGLRenderer && renderer.state.buffers.depth.getReversed() );
|
|
|
+
|
|
|
renderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );
|
|
|
+ if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
|
|
|
renderer.render( scene, cameraPX );
|
|
|
|
|
|
renderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );
|
|
|
+ if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
|
|
|
renderer.render( scene, cameraNX );
|
|
|
|
|
|
renderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );
|
|
|
+ if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
|
|
|
renderer.render( scene, cameraPY );
|
|
|
|
|
|
renderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );
|
|
|
+ if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
|
|
|
renderer.render( scene, cameraNY );
|
|
|
|
|
|
renderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );
|
|
|
+ if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
|
|
|
renderer.render( scene, cameraPZ );
|
|
|
|
|
|
// mipmaps are generated during the last call of render()
|
|
|
@@ -22495,6 +22542,7 @@ class CubeCamera extends Object3D {
|
|
|
renderTarget.texture.generateMipmaps = generateMipmaps;
|
|
|
|
|
|
renderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );
|
|
|
+ if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
|
|
|
renderer.render( scene, cameraNZ );
|
|
|
|
|
|
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
|
|
|
* 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 {Array<number>} times - A list of keyframe times.
|
|
|
* @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 ) {
|
|
|
|
|
|
@@ -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.
|
|
|
*
|
|
|
- * @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.
|
|
|
*/
|
|
|
setInterpolation( interpolation ) {
|
|
|
@@ -42521,6 +42701,12 @@ class KeyframeTrack {
|
|
|
|
|
|
break;
|
|
|
|
|
|
+ case InterpolateBezier:
|
|
|
+
|
|
|
+ factoryMethod = this.InterpolantFactoryMethodBezier;
|
|
|
+
|
|
|
+ break;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
if ( factoryMethod === undefined ) {
|
|
|
@@ -42557,7 +42743,7 @@ class KeyframeTrack {
|
|
|
/**
|
|
|
* Returns the current interpolation type.
|
|
|
*
|
|
|
- * @return {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} The interpolation type.
|
|
|
+ * @return {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth|InterpolateBezier)} The interpolation type.
|
|
|
*/
|
|
|
getInterpolation() {
|
|
|
|
|
|
@@ -42575,6 +42761,10 @@ class KeyframeTrack {
|
|
|
|
|
|
return InterpolateSmooth;
|
|
|
|
|
|
+ case this.InterpolantFactoryMethodBezier:
|
|
|
+
|
|
|
+ return InterpolateBezier;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -42940,7 +43130,7 @@ KeyframeTrack.prototype.ValueBufferType = Float32Array;
|
|
|
/**
|
|
|
* The default interpolation type of this keyframe track.
|
|
|
*
|
|
|
- * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)}
|
|
|
+ * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth|InterpolateBezier)}
|
|
|
* @default InterpolateLinear
|
|
|
*/
|
|
|
KeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;
|
|
|
@@ -45748,6 +45938,16 @@ class LightShadow {
|
|
|
*/
|
|
|
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
|
|
|
* 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.biasNode = source.biasNode;
|
|
|
+
|
|
|
return this;
|
|
|
|
|
|
}
|
|
|
@@ -49882,12 +50084,15 @@ class ArrayCamera extends PerspectiveCamera {
|
|
|
|
|
|
/**
|
|
|
* Class for keeping track of time.
|
|
|
+ *
|
|
|
+ * @deprecated since r183.
|
|
|
*/
|
|
|
class Clock {
|
|
|
|
|
|
/**
|
|
|
* Constructs a new clock.
|
|
|
*
|
|
|
+ * @deprecated since 183.
|
|
|
* @param {boolean} [autoStart=true] - Whether to automatically start the clock when
|
|
|
* `getDelta()` is called for the first time.
|
|
|
*/
|
|
|
@@ -49935,6 +50140,8 @@ class Clock {
|
|
|
*/
|
|
|
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 ) {
|
|
|
|
|
|
+ currentDepthClear = depth;
|
|
|
+
|
|
|
if ( currentReversed ) {
|
|
|
|
|
|
depth = 1 - depth;
|
|
|
@@ -69005,7 +69214,6 @@ function WebGLState( gl, extensions ) {
|
|
|
}
|
|
|
|
|
|
gl.clearDepth( depth );
|
|
|
- currentDepthClear = depth;
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -78472,6 +78680,7 @@ exports.BackSide = BackSide;
|
|
|
exports.BasicDepthPacking = BasicDepthPacking;
|
|
|
exports.BasicShadowMap = BasicShadowMap;
|
|
|
exports.BatchedMesh = BatchedMesh;
|
|
|
+exports.BezierInterpolant = BezierInterpolant;
|
|
|
exports.Bone = Bone;
|
|
|
exports.BooleanKeyframeTrack = BooleanKeyframeTrack;
|
|
|
exports.Box2 = Box2;
|
|
|
@@ -78599,6 +78808,7 @@ exports.IntType = IntType;
|
|
|
exports.InterleavedBuffer = InterleavedBuffer;
|
|
|
exports.InterleavedBufferAttribute = InterleavedBufferAttribute;
|
|
|
exports.Interpolant = Interpolant;
|
|
|
+exports.InterpolateBezier = InterpolateBezier;
|
|
|
exports.InterpolateDiscrete = InterpolateDiscrete;
|
|
|
exports.InterpolateLinear = InterpolateLinear;
|
|
|
exports.InterpolateSmooth = InterpolateSmooth;
|