super-three 0.154.1 → 0.155.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/build/three.cjs +256 -38
  2. package/build/three.js +256 -38
  3. package/build/three.min.js +1 -1
  4. package/build/three.module.js +255 -39
  5. package/build/three.module.min.js +1 -1
  6. package/examples/jsm/controls/OrbitControls.js +143 -21
  7. package/examples/jsm/environments/RoomEnvironment.js +1 -1
  8. package/examples/jsm/exporters/USDZExporter.js +1 -0
  9. package/examples/jsm/interactive/SelectionHelper.js +7 -0
  10. package/examples/jsm/loaders/FBXLoader.js +1 -1
  11. package/examples/jsm/loaders/GLTFLoader.js +8 -3
  12. package/examples/jsm/loaders/KTX2Loader.js +4 -4
  13. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  14. package/examples/jsm/loaders/NRRDLoader.js +3 -3
  15. package/examples/jsm/loaders/PLYLoader.js +1 -1
  16. package/examples/jsm/loaders/TGALoader.js +10 -10
  17. package/examples/jsm/loaders/VRMLLoader.js +1 -1
  18. package/examples/jsm/misc/GPUComputationRenderer.js +0 -9
  19. package/examples/jsm/misc/Volume.js +4 -6
  20. package/examples/jsm/nodes/Nodes.js +5 -6
  21. package/examples/jsm/nodes/accessors/BufferAttributeNode.js +1 -1
  22. package/examples/jsm/nodes/accessors/CubeTextureNode.js +2 -0
  23. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +14 -1
  24. package/examples/jsm/nodes/accessors/InstanceNode.js +8 -8
  25. package/examples/jsm/nodes/accessors/MaterialNode.js +34 -44
  26. package/examples/jsm/nodes/accessors/SceneNode.js +6 -0
  27. package/examples/jsm/nodes/accessors/TextureNode.js +48 -7
  28. package/examples/jsm/nodes/core/LightingModel.js +7 -9
  29. package/examples/jsm/nodes/core/Node.js +11 -2
  30. package/examples/jsm/nodes/core/PropertyNode.js +4 -0
  31. package/examples/jsm/nodes/display/BumpMapNode.js +77 -0
  32. package/examples/jsm/nodes/display/NormalMapNode.js +2 -2
  33. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -2
  34. package/examples/jsm/nodes/functions/BSDF/Schlick_to_F0.js +13 -0
  35. package/examples/jsm/nodes/functions/PhongLightingModel.js +53 -14
  36. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +236 -97
  37. package/examples/jsm/nodes/geometry/RangeNode.js +2 -2
  38. package/examples/jsm/nodes/gpgpu/ComputeNode.js +13 -0
  39. package/examples/jsm/nodes/lighting/AONode.js +1 -1
  40. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +58 -20
  41. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +7 -10
  42. package/examples/jsm/nodes/lighting/EnvironmentNode.js +22 -12
  43. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +1 -1
  44. package/examples/jsm/nodes/lighting/LightingContextNode.js +12 -9
  45. package/examples/jsm/nodes/lighting/PointLightNode.js +7 -10
  46. package/examples/jsm/nodes/lighting/SpotLightNode.js +7 -10
  47. package/examples/jsm/nodes/materials/Materials.js +1 -0
  48. package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +34 -0
  49. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +2 -0
  50. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +2 -2
  51. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +19 -2
  52. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +2 -2
  53. package/examples/jsm/nodes/materials/NodeMaterial.js +50 -24
  54. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +2 -2
  55. package/examples/jsm/nodes/shadernode/ShaderNode.js +2 -2
  56. package/examples/jsm/objects/Reflector.js +1 -9
  57. package/examples/jsm/objects/Refractor.js +0 -8
  58. package/examples/jsm/offscreen/scene.js +0 -1
  59. package/examples/jsm/postprocessing/MaskPass.js +4 -1
  60. package/examples/jsm/postprocessing/OutputPass.js +33 -14
  61. package/examples/jsm/postprocessing/UnrealBloomPass.js +21 -17
  62. package/examples/jsm/renderers/common/Background.js +22 -20
  63. package/examples/jsm/renderers/common/Binding.js +8 -0
  64. package/examples/jsm/renderers/common/Bindings.js +2 -6
  65. package/examples/jsm/renderers/common/Geometries.js +1 -1
  66. package/examples/jsm/renderers/common/Pipelines.js +94 -45
  67. package/examples/jsm/renderers/common/RenderContext.js +1 -0
  68. package/examples/jsm/renderers/common/RenderContexts.js +16 -5
  69. package/examples/jsm/renderers/common/RenderObject.js +20 -4
  70. package/examples/jsm/renderers/common/RenderObjects.js +10 -7
  71. package/examples/jsm/renderers/common/Renderer.js +70 -39
  72. package/examples/jsm/renderers/common/Textures.js +20 -8
  73. package/examples/jsm/renderers/common/nodes/Nodes.js +15 -4
  74. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +51 -54
  75. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +33 -9
  76. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +55 -36
  77. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +83 -5
  78. package/examples/jsm/renderers/webgpu/utils/WebGPUConstants.js +24 -22
  79. package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +83 -130
  80. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +35 -8
  81. package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +1 -1
  82. package/examples/jsm/shaders/OutputShader.js +19 -2
  83. package/examples/jsm/utils/BufferGeometryUtils.js +13 -4
  84. package/examples/jsm/webxr/OculusHandPointerModel.js +2 -2
  85. package/package.json +2 -2
  86. package/src/Three.js +2 -0
  87. package/src/animation/PropertyBinding.js +1 -1
  88. package/src/cameras/CubeCamera.js +1 -4
  89. package/src/constants.js +1 -1
  90. package/src/core/BufferAttribute.js +20 -0
  91. package/src/core/Object3D.js +1 -1
  92. package/src/core/RenderTarget.js +122 -0
  93. package/src/geometries/CapsuleGeometry.js +1 -1
  94. package/src/loaders/DataTextureLoader.js +21 -2
  95. package/src/renderers/WebGLMultipleRenderTargets.js +0 -2
  96. package/src/renderers/WebGLRenderTarget.js +3 -110
  97. package/src/renderers/WebGLRenderer.js +62 -8
  98. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +1 -2
  99. package/src/renderers/webgl/WebGLGeometries.js +5 -1
  100. package/src/renderers/webgl/WebGLMaterials.js +1 -1
  101. package/src/renderers/webgl/WebGLPrograms.js +14 -2
  102. package/src/renderers/webgl/WebGLTextures.js +97 -12
  103. package/src/textures/CompressedCubeTexture.js +19 -0
  104. package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +0 -30
  105. package/examples/jsm/renderers/common/RenderTarget.js +0 -15
  106. package/examples/jsm/renderers/common/nodes/NodeRender.js +0 -302
package/build/three.cjs CHANGED
@@ -5,7 +5,7 @@
5
5
  */
6
6
  'use strict';
7
7
 
8
- const REVISION = '154';
8
+ const REVISION = '155';
9
9
 
10
10
  const MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };
11
11
  const TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };
@@ -2885,13 +2885,13 @@ class Vector4 {
2885
2885
  * Texture parameters for an auto-generated target texture
2886
2886
  * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers
2887
2887
  */
2888
- class WebGLRenderTarget extends EventDispatcher {
2888
+ class RenderTarget extends EventDispatcher {
2889
2889
 
2890
2890
  constructor( width = 1, height = 1, options = {} ) {
2891
2891
 
2892
2892
  super();
2893
2893
 
2894
- this.isWebGLRenderTarget = true;
2894
+ this.isRenderTarget = true;
2895
2895
 
2896
2896
  this.width = width;
2897
2897
  this.height = height;
@@ -2994,6 +2994,18 @@ class WebGLRenderTarget extends EventDispatcher {
2994
2994
 
2995
2995
  }
2996
2996
 
2997
+ class WebGLRenderTarget extends RenderTarget {
2998
+
2999
+ constructor( width = 1, height = 1, options = {} ) {
3000
+
3001
+ super( width, height, options );
3002
+
3003
+ this.isWebGLRenderTarget = true;
3004
+
3005
+ }
3006
+
3007
+ }
3008
+
2997
3009
  class DataArrayTexture extends Texture {
2998
3010
 
2999
3011
  constructor( data = null, width = 1, height = 1, depth = 1 ) {
@@ -3128,8 +3140,6 @@ class WebGLMultipleRenderTargets extends WebGLRenderTarget {
3128
3140
  this.viewport.set( 0, 0, width, height );
3129
3141
  this.scissor.set( 0, 0, width, height );
3130
3142
 
3131
- return this;
3132
-
3133
3143
  }
3134
3144
 
3135
3145
  copy( source ) {
@@ -8027,7 +8037,7 @@ class Object3D extends EventDispatcher {
8027
8037
  this.frustumCulled = source.frustumCulled;
8028
8038
  this.renderOrder = source.renderOrder;
8029
8039
 
8030
- this.animations = source.animations;
8040
+ this.animations = source.animations.slice();
8031
8041
 
8032
8042
  this.userData = JSON.parse( JSON.stringify( source.userData ) );
8033
8043
 
@@ -9919,6 +9929,26 @@ class BufferAttribute {
9919
9929
 
9920
9930
  }
9921
9931
 
9932
+ getComponent( index, component ) {
9933
+
9934
+ let value = this.array[ index * this.itemSize + component ];
9935
+
9936
+ if ( this.normalized ) value = denormalize( value, this.array );
9937
+
9938
+ return value;
9939
+
9940
+ }
9941
+
9942
+ setComponent( index, component, value ) {
9943
+
9944
+ if ( this.normalized ) value = normalize( value, this.array );
9945
+
9946
+ this.array[ index * this.itemSize + component ] = value;
9947
+
9948
+ return this;
9949
+
9950
+ }
9951
+
9922
9952
  getX( index ) {
9923
9953
 
9924
9954
  let x = this.array[ index * this.itemSize ];
@@ -12701,10 +12731,8 @@ class CubeCamera extends Object3D {
12701
12731
 
12702
12732
  const currentRenderTarget = renderer.getRenderTarget();
12703
12733
 
12704
- const currentToneMapping = renderer.toneMapping;
12705
12734
  const currentXrEnabled = renderer.xr.enabled;
12706
12735
 
12707
- renderer.toneMapping = NoToneMapping;
12708
12736
  renderer.xr.enabled = false;
12709
12737
 
12710
12738
  const generateMipmaps = renderTarget.texture.generateMipmaps;
@@ -12733,7 +12761,6 @@ class CubeCamera extends Object3D {
12733
12761
 
12734
12762
  renderer.setRenderTarget( currentRenderTarget );
12735
12763
 
12736
- renderer.toneMapping = currentToneMapping;
12737
12764
  renderer.xr.enabled = currentXrEnabled;
12738
12765
 
12739
12766
  renderTarget.texture.needsPMREMUpdate = true;
@@ -13656,7 +13683,7 @@ var beginnormal_vertex = "vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGEN
13656
13683
 
13657
13684
  var bsdfs = "float G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n} // validated";
13658
13685
 
13659
- var iridescence_fragment = "#ifdef USE_IRIDESCENCE\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t 3.2404542, -0.9692660, 0.0556434,\n\t\t-1.5371385, 1.8760108, -0.2040259,\n\t\t-0.4985314, 0.0415560, 1.0572252\n\t);\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n\t}\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n\t}\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n\t}\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n\t\txyz /= 1.0685e-7;\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\n\t\treturn rgb;\n\t}\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n\t\tvec3 I;\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\t\tif ( cosTheta2Sq < 0.0 ) {\n\t\t\t return vec3( 1.0 );\n\t\t}\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\n\t\tfloat R21 = R12;\n\t\tfloat T121 = 1.0 - R12;\n\t\tfloat phi12 = 0.0;\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\n\t\tfloat phi21 = PI - phi12;\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n\t\tvec3 phi23 = vec3( 0.0 );\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n\t\tvec3 phi = vec3( phi21 ) + phi23;\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n\t\tvec3 r123 = sqrt( R123 );\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n\t\tvec3 C0 = R12 + Rs;\n\t\tI = C0;\n\t\tvec3 Cm = Rs - T121;\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\n\t\t\tCm *= r123;\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n\t\t\tI += Cm * Sm;\n\t\t}\n\t\treturn max( I, vec3( 0.0 ) );\n\t}\n#endif";
13686
+ var iridescence_fragment = "#ifdef USE_IRIDESCENCE\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t 3.2404542, -0.9692660, 0.0556434,\n\t\t-1.5371385, 1.8760108, -0.2040259,\n\t\t-0.4985314, 0.0415560, 1.0572252\n\t);\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n\t}\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n\t}\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n\t}\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n\t\txyz /= 1.0685e-7;\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\n\t\treturn rgb;\n\t}\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n\t\tvec3 I;\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\t\tif ( cosTheta2Sq < 0.0 ) {\n\t\t\treturn vec3( 1.0 );\n\t\t}\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\n\t\tfloat T121 = 1.0 - R12;\n\t\tfloat phi12 = 0.0;\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\n\t\tfloat phi21 = PI - phi12;\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n\t\tvec3 phi23 = vec3( 0.0 );\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n\t\tvec3 phi = vec3( phi21 ) + phi23;\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n\t\tvec3 r123 = sqrt( R123 );\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n\t\tvec3 C0 = R12 + Rs;\n\t\tI = C0;\n\t\tvec3 Cm = Rs - T121;\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\n\t\t\tCm *= r123;\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n\t\t\tI += Cm * Sm;\n\t\t}\n\t\treturn max( I, vec3( 0.0 ) );\n\t}\n#endif";
13660
13687
 
13661
13688
  var bumpmap_pars_fragment = "#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vBumpMapUv );\n\t\tvec2 dSTdy = dFdy( vBumpMapUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = dFdx( surf_pos.xyz );\n\t\tvec3 vSigmaY = dFdy( surf_pos.xyz );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif";
13662
13689
 
@@ -17284,7 +17311,7 @@ function WebGLGeometries( gl, attributes, info, bindingStates ) {
17284
17311
 
17285
17312
  }
17286
17313
 
17287
- } else {
17314
+ } else if ( geometryPosition !== undefined ) {
17288
17315
 
17289
17316
  const array = geometryPosition.array;
17290
17317
  version = geometryPosition.version;
@@ -17299,6 +17326,10 @@ function WebGLGeometries( gl, attributes, info, bindingStates ) {
17299
17326
 
17300
17327
  }
17301
17328
 
17329
+ } else {
17330
+
17331
+ return;
17332
+
17302
17333
  }
17303
17334
 
17304
17335
  const attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );
@@ -20306,6 +20337,18 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
20306
20337
  const HAS_ATTRIBUTE_UV2 = !! geometry.attributes.uv2;
20307
20338
  const HAS_ATTRIBUTE_UV3 = !! geometry.attributes.uv3;
20308
20339
 
20340
+ let toneMapping = NoToneMapping;
20341
+
20342
+ if ( material.toneMapped ) {
20343
+
20344
+ if ( currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true ) {
20345
+
20346
+ toneMapping = renderer.toneMapping;
20347
+
20348
+ }
20349
+
20350
+ }
20351
+
20309
20352
  const parameters = {
20310
20353
 
20311
20354
  isWebGL2: IS_WEBGL2,
@@ -20466,8 +20509,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
20466
20509
  shadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,
20467
20510
  shadowMapType: renderer.shadowMap.type,
20468
20511
 
20469
- toneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,
20470
- useLegacyLights: renderer.useLegacyLights,
20512
+ toneMapping: toneMapping,
20513
+ useLegacyLights: renderer._useLegacyLights,
20471
20514
 
20472
20515
  premultipliedAlpha: material.premultipliedAlpha,
20473
20516
 
@@ -23639,6 +23682,17 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
23639
23682
 
23640
23683
  }
23641
23684
 
23685
+ if ( glFormat === _gl.RED_INTEGER ) {
23686
+
23687
+ if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8UI;
23688
+ if ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.R16UI;
23689
+ if ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.R32UI;
23690
+ if ( glType === _gl.BYTE ) internalFormat = _gl.R8I;
23691
+ if ( glType === _gl.SHORT ) internalFormat = _gl.R16I;
23692
+ if ( glType === _gl.INT ) internalFormat = _gl.R32I;
23693
+
23694
+ }
23695
+
23642
23696
  if ( glFormat === _gl.RG ) {
23643
23697
 
23644
23698
  if ( glType === _gl.FLOAT ) internalFormat = _gl.RG32F;
@@ -23815,14 +23869,32 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
23815
23869
 
23816
23870
  for ( let i = 0; i < 6; i ++ ) {
23817
23871
 
23818
- _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );
23872
+ if ( Array.isArray( renderTargetProperties.__webglFramebuffer[ i ] ) ) {
23873
+
23874
+ for ( let level = 0; level < renderTargetProperties.__webglFramebuffer[ i ].length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ][ level ] );
23875
+
23876
+ } else {
23877
+
23878
+ _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );
23879
+
23880
+ }
23881
+
23819
23882
  if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );
23820
23883
 
23821
23884
  }
23822
23885
 
23823
23886
  } else {
23824
23887
 
23825
- _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );
23888
+ if ( Array.isArray( renderTargetProperties.__webglFramebuffer ) ) {
23889
+
23890
+ for ( let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ level ] );
23891
+
23892
+ } else {
23893
+
23894
+ _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );
23895
+
23896
+ }
23897
+
23826
23898
  if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );
23827
23899
  if ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );
23828
23900
 
@@ -24797,7 +24869,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
24797
24869
  // Render targets
24798
24870
 
24799
24871
  // Setup storage for target texture and bind it to correct framebuffer
24800
- function setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget ) {
24872
+ function setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget, level ) {
24801
24873
 
24802
24874
  const glFormat = utils.convert( texture.format, texture.colorSpace );
24803
24875
  const glType = utils.convert( texture.type );
@@ -24806,13 +24878,16 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
24806
24878
 
24807
24879
  if ( ! renderTargetProperties.__hasExternalTextures ) {
24808
24880
 
24881
+ const width = Math.max( 1, renderTarget.width >> level );
24882
+ const height = Math.max( 1, renderTarget.height >> level );
24883
+
24809
24884
  if ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) {
24810
24885
 
24811
- state.texImage3D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null );
24886
+ state.texImage3D( textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null );
24812
24887
 
24813
24888
  } else {
24814
24889
 
24815
- state.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );
24890
+ state.texImage2D( textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null );
24816
24891
 
24817
24892
  }
24818
24893
 
@@ -24826,7 +24901,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
24826
24901
 
24827
24902
  } else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753
24828
24903
 
24829
- _gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 );
24904
+ _gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, level );
24830
24905
 
24831
24906
  }
24832
24907
 
@@ -25047,7 +25122,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
25047
25122
 
25048
25123
  if ( colorTexture !== undefined ) {
25049
25124
 
25050
- setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D );
25125
+ setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0 );
25051
25126
 
25052
25127
  }
25053
25128
 
@@ -25094,13 +25169,41 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
25094
25169
 
25095
25170
  for ( let i = 0; i < 6; i ++ ) {
25096
25171
 
25097
- renderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();
25172
+ if ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {
25173
+
25174
+ renderTargetProperties.__webglFramebuffer[ i ] = [];
25175
+
25176
+ for ( let level = 0; level < texture.mipmaps.length; level ++ ) {
25177
+
25178
+ renderTargetProperties.__webglFramebuffer[ i ][ level ] = _gl.createFramebuffer();
25179
+
25180
+ }
25181
+
25182
+ } else {
25183
+
25184
+ renderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();
25185
+
25186
+ }
25098
25187
 
25099
25188
  }
25100
25189
 
25101
25190
  } else {
25102
25191
 
25103
- renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();
25192
+ if ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {
25193
+
25194
+ renderTargetProperties.__webglFramebuffer = [];
25195
+
25196
+ for ( let level = 0; level < texture.mipmaps.length; level ++ ) {
25197
+
25198
+ renderTargetProperties.__webglFramebuffer[ level ] = _gl.createFramebuffer();
25199
+
25200
+ }
25201
+
25202
+ } else {
25203
+
25204
+ renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();
25205
+
25206
+ }
25104
25207
 
25105
25208
  if ( isMultipleRenderTargets ) {
25106
25209
 
@@ -25180,7 +25283,19 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
25180
25283
 
25181
25284
  for ( let i = 0; i < 6; i ++ ) {
25182
25285
 
25183
- setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i );
25286
+ if ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {
25287
+
25288
+ for ( let level = 0; level < texture.mipmaps.length; level ++ ) {
25289
+
25290
+ setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ][ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, level );
25291
+
25292
+ }
25293
+
25294
+ } else {
25295
+
25296
+ setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0 );
25297
+
25298
+ }
25184
25299
 
25185
25300
  }
25186
25301
 
@@ -25203,7 +25318,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
25203
25318
 
25204
25319
  state.bindTexture( _gl.TEXTURE_2D, attachmentProperties.__webglTexture );
25205
25320
  setTextureParameters( _gl.TEXTURE_2D, attachment, supportsMips );
25206
- setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D );
25321
+ setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, 0 );
25207
25322
 
25208
25323
  if ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {
25209
25324
 
@@ -25235,7 +25350,20 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
25235
25350
 
25236
25351
  state.bindTexture( glTextureType, textureProperties.__webglTexture );
25237
25352
  setTextureParameters( glTextureType, texture, supportsMips );
25238
- setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType );
25353
+
25354
+ if ( isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0 ) {
25355
+
25356
+ for ( let level = 0; level < texture.mipmaps.length; level ++ ) {
25357
+
25358
+ setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level );
25359
+
25360
+ }
25361
+
25362
+ } else {
25363
+
25364
+ setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0 );
25365
+
25366
+ }
25239
25367
 
25240
25368
  if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {
25241
25369
 
@@ -27750,7 +27878,7 @@ function WebGLMaterials( renderer, properties ) {
27750
27878
  uniforms.lightMap.value = material.lightMap;
27751
27879
 
27752
27880
  // artist-friendly light intensity scaling factor
27753
- const scaleFactor = ( renderer.useLegacyLights === true ) ? Math.PI : 1;
27881
+ const scaleFactor = ( renderer._useLegacyLights === true ) ? Math.PI : 1;
27754
27882
 
27755
27883
  uniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;
27756
27884
 
@@ -28589,7 +28717,7 @@ class WebGLRenderer {
28589
28717
 
28590
28718
  // physical lights
28591
28719
 
28592
- this.useLegacyLights = true;
28720
+ this._useLegacyLights = false;
28593
28721
 
28594
28722
  // tone mapping
28595
28723
 
@@ -29232,6 +29360,9 @@ class WebGLRenderer {
29232
29360
  if ( material.wireframe === true ) {
29233
29361
 
29234
29362
  index = geometries.getWireframeAttribute( geometry );
29363
+
29364
+ if ( index === undefined ) return;
29365
+
29235
29366
  rangeFactor = 2;
29236
29367
 
29237
29368
  }
@@ -29396,7 +29527,7 @@ class WebGLRenderer {
29396
29527
 
29397
29528
  } );
29398
29529
 
29399
- currentRenderState.setupLights( _this.useLegacyLights );
29530
+ currentRenderState.setupLights( _this._useLegacyLights );
29400
29531
 
29401
29532
  scene.traverse( function ( object ) {
29402
29533
 
@@ -29549,7 +29680,7 @@ class WebGLRenderer {
29549
29680
 
29550
29681
  // render scene
29551
29682
 
29552
- currentRenderState.setupLights( _this.useLegacyLights );
29683
+ currentRenderState.setupLights( _this._useLegacyLights );
29553
29684
 
29554
29685
  if ( camera.isArrayCamera ) {
29555
29686
 
@@ -30043,6 +30174,7 @@ class WebGLRenderer {
30043
30174
 
30044
30175
  materialProperties.outputColorSpace = parameters.outputColorSpace;
30045
30176
  materialProperties.instancing = parameters.instancing;
30177
+ materialProperties.instancingColor = parameters.instancingColor;
30046
30178
  materialProperties.skinning = parameters.skinning;
30047
30179
  materialProperties.morphTargets = parameters.morphTargets;
30048
30180
  materialProperties.morphNormals = parameters.morphNormals;
@@ -30071,7 +30203,18 @@ class WebGLRenderer {
30071
30203
  const morphTargets = !! geometry.morphAttributes.position;
30072
30204
  const morphNormals = !! geometry.morphAttributes.normal;
30073
30205
  const morphColors = !! geometry.morphAttributes.color;
30074
- const toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;
30206
+
30207
+ let toneMapping = NoToneMapping;
30208
+
30209
+ if ( material.toneMapped ) {
30210
+
30211
+ if ( _currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true ) {
30212
+
30213
+ toneMapping = _this.toneMapping;
30214
+
30215
+ }
30216
+
30217
+ }
30075
30218
 
30076
30219
  const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;
30077
30220
  const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;
@@ -30126,6 +30269,14 @@ class WebGLRenderer {
30126
30269
 
30127
30270
  needsProgramChange = true;
30128
30271
 
30272
+ } else if ( object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null ) {
30273
+
30274
+ needsProgramChange = true;
30275
+
30276
+ } else if ( object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null ) {
30277
+
30278
+ needsProgramChange = true;
30279
+
30129
30280
  } else if ( materialProperties.envMap !== envMap ) {
30130
30281
 
30131
30282
  needsProgramChange = true;
@@ -30567,7 +30718,16 @@ class WebGLRenderer {
30567
30718
 
30568
30719
  if ( renderTarget.isWebGLCubeRenderTarget ) {
30569
30720
 
30570
- framebuffer = __webglFramebuffer[ activeCubeFace ];
30721
+ if ( Array.isArray( __webglFramebuffer[ activeCubeFace ] ) ) {
30722
+
30723
+ framebuffer = __webglFramebuffer[ activeCubeFace ][ activeMipmapLevel ];
30724
+
30725
+ } else {
30726
+
30727
+ framebuffer = __webglFramebuffer[ activeCubeFace ];
30728
+
30729
+ }
30730
+
30571
30731
  isCube = true;
30572
30732
 
30573
30733
  } else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {
@@ -30576,7 +30736,15 @@ class WebGLRenderer {
30576
30736
 
30577
30737
  } else {
30578
30738
 
30579
- framebuffer = __webglFramebuffer;
30739
+ if ( Array.isArray( __webglFramebuffer ) ) {
30740
+
30741
+ framebuffer = __webglFramebuffer[ activeMipmapLevel ];
30742
+
30743
+ } else {
30744
+
30745
+ framebuffer = __webglFramebuffer;
30746
+
30747
+ }
30580
30748
 
30581
30749
  }
30582
30750
 
@@ -30875,14 +31043,14 @@ class WebGLRenderer {
30875
31043
 
30876
31044
  get physicallyCorrectLights() { // @deprecated, r150
30877
31045
 
30878
- console.warn( 'THREE.WebGLRenderer: the property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead.' );
31046
+ console.warn( 'THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead.' );
30879
31047
  return ! this.useLegacyLights;
30880
31048
 
30881
31049
  }
30882
31050
 
30883
31051
  set physicallyCorrectLights( value ) { // @deprecated, r150
30884
31052
 
30885
- console.warn( 'THREE.WebGLRenderer: the property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead.' );
31053
+ console.warn( 'THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead.' );
30886
31054
  this.useLegacyLights = ! value;
30887
31055
 
30888
31056
  }
@@ -30901,6 +31069,20 @@ class WebGLRenderer {
30901
31069
 
30902
31070
  }
30903
31071
 
31072
+ get useLegacyLights() { // @deprecated, r155
31073
+
31074
+ console.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );
31075
+ return this._useLegacyLights;
31076
+
31077
+ }
31078
+
31079
+ set useLegacyLights( value ) { // @deprecated, r155
31080
+
31081
+ console.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );
31082
+ this._useLegacyLights = value;
31083
+
31084
+ }
31085
+
30904
31086
  }
30905
31087
 
30906
31088
  class WebGL1Renderer extends WebGLRenderer {}
@@ -33361,6 +33543,21 @@ class CompressedArrayTexture extends CompressedTexture {
33361
33543
 
33362
33544
  }
33363
33545
 
33546
+ class CompressedCubeTexture extends CompressedTexture {
33547
+
33548
+ constructor( images, format, type ) {
33549
+
33550
+ super( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );
33551
+
33552
+ this.isCompressedCubeTexture = true;
33553
+ this.isCubeTexture = true;
33554
+
33555
+ this.image = images;
33556
+
33557
+ }
33558
+
33559
+ }
33560
+
33364
33561
  class CanvasTexture extends Texture {
33365
33562
 
33366
33563
  constructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {
@@ -35471,7 +35668,7 @@ class CapsuleGeometry extends LatheGeometry {
35471
35668
 
35472
35669
  this.parameters = {
35473
35670
  radius: radius,
35474
- height: length,
35671
+ length: length,
35475
35672
  capSegments: capSegments,
35476
35673
  radialSegments: radialSegments,
35477
35674
  };
@@ -42921,9 +43118,28 @@ class DataTextureLoader extends Loader {
42921
43118
  loader.setWithCredentials( scope.withCredentials );
42922
43119
  loader.load( url, function ( buffer ) {
42923
43120
 
42924
- const texData = scope.parse( buffer );
43121
+ let texData;
43122
+
43123
+ try {
43124
+
43125
+ texData = scope.parse( buffer );
43126
+
43127
+ } catch ( error ) {
43128
+
43129
+ if ( onError !== undefined ) {
43130
+
43131
+ onError( error );
43132
+
43133
+ } else {
43134
+
43135
+ console.error( error );
43136
+ return;
43137
+
43138
+ }
43139
+
43140
+ }
42925
43141
 
42926
- if ( ! texData ) return;
43142
+ if ( ! texData ) return onError(); // TODO: Remove this when all loaders properly throw errors
42927
43143
 
42928
43144
  if ( texData.image !== undefined ) {
42929
43145
 
@@ -47460,7 +47676,7 @@ class PropertyBinding {
47460
47676
  // ensure there is a value node
47461
47677
  if ( ! targetObject ) {
47462
47678
 
47463
- console.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\'t found.' );
47679
+ console.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );
47464
47680
  return;
47465
47681
 
47466
47682
  }
@@ -51925,6 +52141,7 @@ exports.Color = Color;
51925
52141
  exports.ColorKeyframeTrack = ColorKeyframeTrack;
51926
52142
  exports.ColorManagement = ColorManagement;
51927
52143
  exports.CompressedArrayTexture = CompressedArrayTexture;
52144
+ exports.CompressedCubeTexture = CompressedCubeTexture;
51928
52145
  exports.CompressedTexture = CompressedTexture;
51929
52146
  exports.CompressedTextureLoader = CompressedTextureLoader;
51930
52147
  exports.ConeGeometry = ConeGeometry;
@@ -52176,6 +52393,7 @@ exports.RectAreaLight = RectAreaLight;
52176
52393
  exports.RedFormat = RedFormat;
52177
52394
  exports.RedIntegerFormat = RedIntegerFormat;
52178
52395
  exports.ReinhardToneMapping = ReinhardToneMapping;
52396
+ exports.RenderTarget = RenderTarget;
52179
52397
  exports.RepeatWrapping = RepeatWrapping;
52180
52398
  exports.ReplaceStencilOp = ReplaceStencilOp;
52181
52399
  exports.ReverseSubtractEquation = ReverseSubtractEquation;