super-three 0.154.1 → 0.156.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 (172) hide show
  1. package/build/three.cjs +360 -160
  2. package/build/three.js +360 -160
  3. package/build/three.min.js +1 -1
  4. package/build/three.module.js +355 -161
  5. package/build/three.module.min.js +1 -1
  6. package/examples/jsm/controls/OrbitControls.js +155 -25
  7. package/examples/jsm/csm/CSMShader.js +35 -1
  8. package/examples/jsm/environments/RoomEnvironment.js +1 -1
  9. package/examples/jsm/exporters/USDZExporter.js +1 -0
  10. package/examples/jsm/interactive/SelectionHelper.js +7 -0
  11. package/examples/jsm/libs/tween.module.js +790 -735
  12. package/examples/jsm/libs/utif.module.js +1644 -1558
  13. package/examples/jsm/loaders/DDSLoader.js +46 -3
  14. package/examples/jsm/loaders/EXRLoader.js +4 -4
  15. package/examples/jsm/loaders/FBXLoader.js +3 -1
  16. package/examples/jsm/loaders/GLTFLoader.js +25 -10
  17. package/examples/jsm/loaders/KTX2Loader.js +128 -79
  18. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  19. package/examples/jsm/loaders/LogLuvLoader.js +2 -2
  20. package/examples/jsm/loaders/MMDLoader.js +10 -7
  21. package/examples/jsm/loaders/NRRDLoader.js +3 -3
  22. package/examples/jsm/loaders/PLYLoader.js +1 -1
  23. package/examples/jsm/loaders/RGBELoader.js +48 -66
  24. package/examples/jsm/loaders/STLLoader.js +7 -0
  25. package/examples/jsm/loaders/TGALoader.js +10 -10
  26. package/examples/jsm/loaders/VRMLLoader.js +1 -1
  27. package/examples/jsm/misc/GPUComputationRenderer.js +0 -9
  28. package/examples/jsm/misc/Volume.js +4 -6
  29. package/examples/jsm/nodes/Nodes.js +8 -6
  30. package/examples/jsm/nodes/accessors/BufferAttributeNode.js +29 -3
  31. package/examples/jsm/nodes/accessors/CubeTextureNode.js +20 -3
  32. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +15 -4
  33. package/examples/jsm/nodes/accessors/InstanceNode.js +8 -8
  34. package/examples/jsm/nodes/accessors/LineMaterialNode.js +31 -0
  35. package/examples/jsm/nodes/accessors/MaterialNode.js +73 -61
  36. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +3 -0
  37. package/examples/jsm/nodes/accessors/Object3DNode.js +2 -2
  38. package/examples/jsm/nodes/accessors/SceneNode.js +6 -0
  39. package/examples/jsm/nodes/accessors/TextureNode.js +54 -9
  40. package/examples/jsm/nodes/accessors/TextureStoreNode.js +29 -0
  41. package/examples/jsm/nodes/core/AttributeNode.js +2 -2
  42. package/examples/jsm/nodes/core/LightingModel.js +7 -9
  43. package/examples/jsm/nodes/core/Node.js +28 -3
  44. package/examples/jsm/nodes/core/NodeBuilder.js +94 -12
  45. package/examples/jsm/nodes/core/NodeUniform.js +1 -1
  46. package/examples/jsm/nodes/core/OutputStructNode.js +58 -0
  47. package/examples/jsm/nodes/core/PropertyNode.js +6 -0
  48. package/examples/jsm/nodes/core/StackNode.js +4 -4
  49. package/examples/jsm/nodes/core/StructTypeNode.js +24 -0
  50. package/examples/jsm/nodes/display/BumpMapNode.js +77 -0
  51. package/examples/jsm/nodes/display/NormalMapNode.js +2 -2
  52. package/examples/jsm/nodes/display/ViewportNode.js +19 -5
  53. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -2
  54. package/examples/jsm/nodes/functions/BSDF/Schlick_to_F0.js +13 -0
  55. package/examples/jsm/nodes/functions/PhongLightingModel.js +53 -14
  56. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +236 -97
  57. package/examples/jsm/nodes/geometry/RangeNode.js +2 -2
  58. package/examples/jsm/nodes/gpgpu/ComputeNode.js +13 -0
  59. package/examples/jsm/nodes/lighting/AONode.js +1 -1
  60. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +58 -20
  61. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +7 -10
  62. package/examples/jsm/nodes/lighting/EnvironmentNode.js +22 -12
  63. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +1 -1
  64. package/examples/jsm/nodes/lighting/LightingContextNode.js +12 -9
  65. package/examples/jsm/nodes/lighting/PointLightNode.js +7 -10
  66. package/examples/jsm/nodes/lighting/SpotLightNode.js +7 -10
  67. package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +54 -0
  68. package/examples/jsm/nodes/materials/Materials.js +2 -0
  69. package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +34 -0
  70. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +2 -0
  71. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +2 -2
  72. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +19 -2
  73. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +2 -2
  74. package/examples/jsm/nodes/materials/NodeMaterial.js +61 -26
  75. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +2 -2
  76. package/examples/jsm/nodes/math/HashNode.js +35 -0
  77. package/examples/jsm/nodes/shadernode/ShaderNode.js +6 -2
  78. package/examples/jsm/nodes/utils/SplitNode.js +1 -1
  79. package/examples/jsm/objects/Reflector.js +1 -9
  80. package/examples/jsm/objects/Refractor.js +0 -8
  81. package/examples/jsm/offscreen/scene.js +0 -1
  82. package/examples/jsm/postprocessing/FilmPass.js +3 -5
  83. package/examples/jsm/postprocessing/MaskPass.js +4 -1
  84. package/examples/jsm/postprocessing/OutputPass.js +33 -14
  85. package/examples/jsm/postprocessing/RenderPass.js +30 -12
  86. package/examples/jsm/postprocessing/SAOPass.js +23 -98
  87. package/examples/jsm/postprocessing/SSAOPass.js +10 -30
  88. package/examples/jsm/postprocessing/UnrealBloomPass.js +21 -17
  89. package/examples/jsm/renderers/common/Backend.js +11 -8
  90. package/examples/jsm/renderers/common/Background.js +22 -20
  91. package/examples/jsm/renderers/common/Binding.js +14 -0
  92. package/examples/jsm/renderers/common/Bindings.js +7 -10
  93. package/examples/jsm/renderers/common/Geometries.js +1 -1
  94. package/examples/jsm/renderers/common/Pipelines.js +96 -47
  95. package/examples/jsm/renderers/common/RenderContext.js +1 -0
  96. package/examples/jsm/renderers/common/RenderContexts.js +41 -5
  97. package/examples/jsm/renderers/common/RenderList.js +12 -4
  98. package/examples/jsm/renderers/common/RenderObject.js +26 -6
  99. package/examples/jsm/renderers/common/RenderObjects.js +10 -7
  100. package/examples/jsm/renderers/common/Renderer.js +82 -42
  101. package/examples/jsm/renderers/common/SampledTexture.js +2 -1
  102. package/examples/jsm/renderers/common/Sampler.js +1 -1
  103. package/examples/jsm/renderers/common/StorageBuffer.js +1 -1
  104. package/examples/jsm/renderers/common/Textures.js +172 -20
  105. package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +2 -2
  106. package/examples/jsm/renderers/common/nodes/NodeSampler.js +1 -1
  107. package/examples/jsm/renderers/common/nodes/Nodes.js +58 -13
  108. package/examples/jsm/renderers/webgl/WebGLBackend.js +607 -0
  109. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +118 -17
  110. package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +84 -0
  111. package/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +26 -0
  112. package/examples/jsm/renderers/webgl/utils/WebGLState.js +529 -0
  113. package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +199 -0
  114. package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +242 -0
  115. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +340 -0
  116. package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodeBuilder.js +1 -1
  117. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +320 -84
  118. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +18 -2
  119. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +120 -66
  120. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +2 -2
  121. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +55 -36
  122. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +96 -5
  123. package/examples/jsm/renderers/webgpu/utils/WebGPUConstants.js +24 -22
  124. package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +117 -139
  125. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +60 -142
  126. package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +7 -6
  127. package/examples/jsm/shaders/FilmShader.js +11 -54
  128. package/examples/jsm/shaders/OutputShader.js +19 -2
  129. package/examples/jsm/shaders/SAOShader.js +0 -13
  130. package/examples/jsm/shaders/SSAOShader.js +33 -26
  131. package/examples/jsm/utils/BufferGeometryUtils.js +13 -4
  132. package/examples/jsm/webxr/OculusHandPointerModel.js +2 -2
  133. package/package.json +2 -2
  134. package/src/Three.js +3 -0
  135. package/src/animation/PropertyBinding.js +1 -1
  136. package/src/audio/Audio.js +6 -0
  137. package/src/cameras/CubeCamera.js +1 -4
  138. package/src/constants.js +4 -1
  139. package/src/core/BufferAttribute.js +20 -0
  140. package/src/core/Object3D.js +2 -15
  141. package/src/core/RenderTarget.js +122 -0
  142. package/src/core/UniformsGroup.js +2 -2
  143. package/src/geometries/CapsuleGeometry.js +1 -1
  144. package/src/loaders/DataTextureLoader.js +19 -2
  145. package/src/materials/Material.js +2 -2
  146. package/src/math/Vector2.js +2 -2
  147. package/src/math/Vector3.js +3 -3
  148. package/src/math/Vector4.js +4 -4
  149. package/src/objects/Line.js +1 -1
  150. package/src/objects/Mesh.js +1 -1
  151. package/src/objects/Points.js +1 -1
  152. package/src/renderers/WebGLMultipleRenderTargets.js +0 -2
  153. package/src/renderers/WebGLRenderTarget.js +3 -110
  154. package/src/renderers/WebGLRenderer.js +83 -57
  155. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +1 -2
  156. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +11 -1
  157. package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
  158. package/src/renderers/webgl/WebGLBackground.js +5 -14
  159. package/src/renderers/webgl/WebGLGeometries.js +5 -1
  160. package/src/renderers/webgl/WebGLMaterials.js +1 -1
  161. package/src/renderers/webgl/WebGLProgram.js +2 -0
  162. package/src/renderers/webgl/WebGLPrograms.js +19 -3
  163. package/src/renderers/webgl/WebGLTextures.js +101 -16
  164. package/src/renderers/webgl/WebGLUtils.js +27 -20
  165. package/src/textures/CompressedCubeTexture.js +19 -0
  166. package/src/textures/Texture.js +2 -2
  167. package/src/utils.js +9 -1
  168. package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +0 -30
  169. package/examples/jsm/renderers/common/RenderTarget.js +0 -15
  170. package/examples/jsm/renderers/common/nodes/NodeRender.js +0 -302
  171. /package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/SlotNode.js +0 -0
  172. /package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodes.js +0 -0
package/build/three.js CHANGED
@@ -10,7 +10,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
10
10
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.THREE = {}));
11
11
  })(this, (function (exports) { 'use strict';
12
12
 
13
- const REVISION = '154';
13
+ const REVISION = '156';
14
14
 
15
15
  const MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };
16
16
  const TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };
@@ -134,6 +134,8 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
134
134
  const RGBA_ASTC_12x10_Format = 37820;
135
135
  const RGBA_ASTC_12x12_Format = 37821;
136
136
  const RGBA_BPTC_Format = 36492;
137
+ const RGB_BPTC_SIGNED_Format = 36494;
138
+ const RGB_BPTC_UNSIGNED_Format = 36495;
137
139
  const RED_RGTC1_Format = 36283;
138
140
  const SIGNED_RED_RGTC1_Format = 36284;
139
141
  const RED_GREEN_RGTC2_Format = 36285;
@@ -166,6 +168,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
166
168
  const SRGBColorSpace = 'srgb';
167
169
  const LinearSRGBColorSpace = 'srgb-linear';
168
170
  const DisplayP3ColorSpace = 'display-p3';
171
+ const LinearDisplayP3ColorSpace = 'display-p3-linear';
169
172
 
170
173
  const ZeroStencilOp = 0;
171
174
  const KeepStencilOp = 7680;
@@ -926,8 +929,8 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
926
929
 
927
930
  roundToZero() {
928
931
 
929
- this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );
930
- this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );
932
+ this.x = Math.trunc( this.x );
933
+ this.y = Math.trunc( this.y );
931
934
 
932
935
  return this;
933
936
 
@@ -1535,6 +1538,14 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
1535
1538
 
1536
1539
  }
1537
1540
 
1541
+ function createCanvasElement() {
1542
+
1543
+ const canvas = createElementNS( 'canvas' );
1544
+ canvas.style.display = 'block';
1545
+ return canvas;
1546
+
1547
+ }
1548
+
1538
1549
  const _cache = {};
1539
1550
 
1540
1551
  function warnOnce( message ) {
@@ -1926,7 +1937,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
1926
1937
 
1927
1938
  }
1928
1939
 
1929
- let textureId = 0;
1940
+ let _textureId = 0;
1930
1941
 
1931
1942
  class Texture extends EventDispatcher {
1932
1943
 
@@ -1936,7 +1947,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
1936
1947
 
1937
1948
  this.isTexture = true;
1938
1949
 
1939
- Object.defineProperty( this, 'id', { value: textureId ++ } );
1950
+ Object.defineProperty( this, 'id', { value: _textureId ++ } );
1940
1951
 
1941
1952
  this.uuid = generateUUID();
1942
1953
 
@@ -2746,10 +2757,10 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
2746
2757
 
2747
2758
  roundToZero() {
2748
2759
 
2749
- this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );
2750
- this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );
2751
- this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );
2752
- this.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );
2760
+ this.x = Math.trunc( this.x );
2761
+ this.y = Math.trunc( this.y );
2762
+ this.z = Math.trunc( this.z );
2763
+ this.w = Math.trunc( this.w );
2753
2764
 
2754
2765
  return this;
2755
2766
 
@@ -2890,13 +2901,13 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
2890
2901
  * Texture parameters for an auto-generated target texture
2891
2902
  * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers
2892
2903
  */
2893
- class WebGLRenderTarget extends EventDispatcher {
2904
+ class RenderTarget extends EventDispatcher {
2894
2905
 
2895
2906
  constructor( width = 1, height = 1, options = {} ) {
2896
2907
 
2897
2908
  super();
2898
2909
 
2899
- this.isWebGLRenderTarget = true;
2910
+ this.isRenderTarget = true;
2900
2911
 
2901
2912
  this.width = width;
2902
2913
  this.height = height;
@@ -2999,6 +3010,18 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
2999
3010
 
3000
3011
  }
3001
3012
 
3013
+ class WebGLRenderTarget extends RenderTarget {
3014
+
3015
+ constructor( width = 1, height = 1, options = {} ) {
3016
+
3017
+ super( width, height, options );
3018
+
3019
+ this.isWebGLRenderTarget = true;
3020
+
3021
+ }
3022
+
3023
+ }
3024
+
3002
3025
  class DataArrayTexture extends Texture {
3003
3026
 
3004
3027
  constructor( data = null, width = 1, height = 1, depth = 1 ) {
@@ -3133,8 +3156,6 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
3133
3156
  this.viewport.set( 0, 0, width, height );
3134
3157
  this.scissor.set( 0, 0, width, height );
3135
3158
 
3136
- return this;
3137
-
3138
3159
  }
3139
3160
 
3140
3161
  copy( source ) {
@@ -4247,9 +4268,9 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
4247
4268
 
4248
4269
  roundToZero() {
4249
4270
 
4250
- this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );
4251
- this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );
4252
- this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );
4271
+ this.x = Math.trunc( this.x );
4272
+ this.y = Math.trunc( this.y );
4273
+ this.z = Math.trunc( this.z );
4253
4274
 
4254
4275
  return this;
4255
4276
 
@@ -7479,20 +7500,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
7479
7500
 
7480
7501
  clear() {
7481
7502
 
7482
- for ( let i = 0; i < this.children.length; i ++ ) {
7483
-
7484
- const object = this.children[ i ];
7485
-
7486
- object.parent = null;
7487
-
7488
- object.dispatchEvent( _removedEvent );
7489
-
7490
- }
7491
-
7492
- this.children.length = 0;
7493
-
7494
- return this;
7495
-
7503
+ return this.remove( ... this.children );
7496
7504
 
7497
7505
  }
7498
7506
 
@@ -8032,7 +8040,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
8032
8040
  this.frustumCulled = source.frustumCulled;
8033
8041
  this.renderOrder = source.renderOrder;
8034
8042
 
8035
- this.animations = source.animations;
8043
+ this.animations = source.animations.slice();
8036
8044
 
8037
8045
  this.userData = JSON.parse( JSON.stringify( source.userData ) );
8038
8046
 
@@ -8383,7 +8391,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
8383
8391
 
8384
8392
  }
8385
8393
 
8386
- let materialId = 0;
8394
+ let _materialId = 0;
8387
8395
 
8388
8396
  class Material extends EventDispatcher {
8389
8397
 
@@ -8393,7 +8401,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
8393
8401
 
8394
8402
  this.isMaterial = true;
8395
8403
 
8396
- Object.defineProperty( this, 'id', { value: materialId ++ } );
8404
+ Object.defineProperty( this, 'id', { value: _materialId ++ } );
8397
8405
 
8398
8406
  this.uuid = generateUUID();
8399
8407
 
@@ -9924,6 +9932,26 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
9924
9932
 
9925
9933
  }
9926
9934
 
9935
+ getComponent( index, component ) {
9936
+
9937
+ let value = this.array[ index * this.itemSize + component ];
9938
+
9939
+ if ( this.normalized ) value = denormalize( value, this.array );
9940
+
9941
+ return value;
9942
+
9943
+ }
9944
+
9945
+ setComponent( index, component, value ) {
9946
+
9947
+ if ( this.normalized ) value = normalize( value, this.array );
9948
+
9949
+ this.array[ index * this.itemSize + component ] = value;
9950
+
9951
+ return this;
9952
+
9953
+ }
9954
+
9927
9955
  getX( index ) {
9928
9956
 
9929
9957
  let x = this.array[ index * this.itemSize ];
@@ -10342,7 +10370,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
10342
10370
 
10343
10371
  }
10344
10372
 
10345
- let _id$1 = 0;
10373
+ let _id$2 = 0;
10346
10374
 
10347
10375
  const _m1 = /*@__PURE__*/ new Matrix4();
10348
10376
  const _obj = /*@__PURE__*/ new Object3D();
@@ -10359,7 +10387,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
10359
10387
 
10360
10388
  this.isBufferGeometry = true;
10361
10389
 
10362
- Object.defineProperty( this, 'id', { value: _id$1 ++ } );
10390
+ Object.defineProperty( this, 'id', { value: _id$2 ++ } );
10363
10391
 
10364
10392
  this.uuid = generateUUID();
10365
10393
 
@@ -11464,7 +11492,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
11464
11492
 
11465
11493
  }
11466
11494
 
11467
- this.material = source.material;
11495
+ this.material = Array.isArray( source.material ) ? source.material.slice() : source.material;
11468
11496
  this.geometry = source.geometry;
11469
11497
 
11470
11498
  return this;
@@ -12706,10 +12734,8 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
12706
12734
 
12707
12735
  const currentRenderTarget = renderer.getRenderTarget();
12708
12736
 
12709
- const currentToneMapping = renderer.toneMapping;
12710
12737
  const currentXrEnabled = renderer.xr.enabled;
12711
12738
 
12712
- renderer.toneMapping = NoToneMapping;
12713
12739
  renderer.xr.enabled = false;
12714
12740
 
12715
12741
  const generateMipmaps = renderTarget.texture.generateMipmaps;
@@ -12738,7 +12764,6 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
12738
12764
 
12739
12765
  renderer.setRenderTarget( currentRenderTarget );
12740
12766
 
12741
- renderer.toneMapping = currentToneMapping;
12742
12767
  renderer.xr.enabled = currentXrEnabled;
12743
12768
 
12744
12769
  renderTarget.texture.needsPMREMUpdate = true;
@@ -13661,7 +13686,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
13661
13686
 
13662
13687
  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";
13663
13688
 
13664
- 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";
13689
+ 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";
13665
13690
 
13666
13691
  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";
13667
13692
 
@@ -13757,7 +13782,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
13757
13782
 
13758
13783
  var logdepthbuf_vertex = "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif";
13759
13784
 
13760
- var map_fragment = "#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, vMapUv );\n#endif";
13785
+ var map_fragment = "#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n\t\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif";
13761
13786
 
13762
13787
  var map_pars_fragment = "#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif";
13763
13788
 
@@ -13851,7 +13876,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
13851
13876
 
13852
13877
  const vertex$h = "varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}";
13853
13878
 
13854
- const fragment$h = "uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}";
13879
+ const fragment$h = "uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}";
13855
13880
 
13856
13881
  const vertex$g = "varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}";
13857
13882
 
@@ -14671,24 +14696,15 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
14671
14696
 
14672
14697
  }
14673
14698
 
14674
- const xr = renderer.xr;
14675
- const environmentBlendMode = xr.getEnvironmentBlendMode();
14699
+ const environmentBlendMode = renderer.xr.getEnvironmentBlendMode();
14676
14700
 
14677
- switch ( environmentBlendMode ) {
14701
+ if ( environmentBlendMode === 'additive' ) {
14678
14702
 
14679
- case 'opaque':
14680
- forceClear = true;
14681
- break;
14703
+ state.buffers.color.setClear( 0, 0, 0, 1, premultipliedAlpha );
14682
14704
 
14683
- case 'additive':
14684
- state.buffers.color.setClear( 0, 0, 0, 1, premultipliedAlpha );
14685
- forceClear = true;
14686
- break;
14705
+ } else if ( environmentBlendMode === 'alpha-blend' ) {
14687
14706
 
14688
- case 'alpha-blend':
14689
- state.buffers.color.setClear( 0, 0, 0, 0, premultipliedAlpha );
14690
- forceClear = true;
14691
- break;
14707
+ state.buffers.color.setClear( 0, 0, 0, 0, premultipliedAlpha );
14692
14708
 
14693
14709
  }
14694
14710
 
@@ -17289,7 +17305,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
17289
17305
 
17290
17306
  }
17291
17307
 
17292
- } else {
17308
+ } else if ( geometryPosition !== undefined ) {
17293
17309
 
17294
17310
  const array = geometryPosition.array;
17295
17311
  version = geometryPosition.version;
@@ -17304,6 +17320,10 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
17304
17320
 
17305
17321
  }
17306
17322
 
17323
+ } else {
17324
+
17325
+ return;
17326
+
17307
17327
  }
17308
17328
 
17309
17329
  const attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );
@@ -19799,6 +19819,8 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
19799
19819
 
19800
19820
  parameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',
19801
19821
 
19822
+ parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',
19823
+
19802
19824
  parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
19803
19825
  ( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',
19804
19826
 
@@ -20033,7 +20055,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
20033
20055
 
20034
20056
  }
20035
20057
 
20036
- let _id = 0;
20058
+ let _id$1 = 0;
20037
20059
 
20038
20060
  class WebGLShaderCache {
20039
20061
 
@@ -20147,7 +20169,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
20147
20169
 
20148
20170
  constructor( code ) {
20149
20171
 
20150
- this.id = _id ++;
20172
+ this.id = _id$1 ++;
20151
20173
 
20152
20174
  this.code = code;
20153
20175
  this.usedTimes = 0;
@@ -20311,6 +20333,18 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
20311
20333
  const HAS_ATTRIBUTE_UV2 = !! geometry.attributes.uv2;
20312
20334
  const HAS_ATTRIBUTE_UV3 = !! geometry.attributes.uv3;
20313
20335
 
20336
+ let toneMapping = NoToneMapping;
20337
+
20338
+ if ( material.toneMapped ) {
20339
+
20340
+ if ( currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true ) {
20341
+
20342
+ toneMapping = renderer.toneMapping;
20343
+
20344
+ }
20345
+
20346
+ }
20347
+
20314
20348
  const parameters = {
20315
20349
 
20316
20350
  isWebGL2: IS_WEBGL2,
@@ -20471,8 +20505,10 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
20471
20505
  shadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,
20472
20506
  shadowMapType: renderer.shadowMap.type,
20473
20507
 
20474
- toneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,
20475
- useLegacyLights: renderer.useLegacyLights,
20508
+ toneMapping: toneMapping,
20509
+ useLegacyLights: renderer._useLegacyLights,
20510
+
20511
+ decodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( material.map.colorSpace === SRGBColorSpace ),
20476
20512
 
20477
20513
  premultipliedAlpha: material.premultipliedAlpha,
20478
20514
 
@@ -20675,6 +20711,8 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
20675
20711
  _programLayers.enable( 17 );
20676
20712
  if ( parameters.pointsUvs )
20677
20713
  _programLayers.enable( 18 );
20714
+ if ( parameters.decodeVideoTexture )
20715
+ _programLayers.enable( 19 );
20678
20716
 
20679
20717
  array.push( _programLayers.mask );
20680
20718
 
@@ -23644,6 +23682,17 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
23644
23682
 
23645
23683
  }
23646
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
+
23647
23696
  if ( glFormat === _gl.RG ) {
23648
23697
 
23649
23698
  if ( glType === _gl.FLOAT ) internalFormat = _gl.RG32F;
@@ -23820,14 +23869,32 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
23820
23869
 
23821
23870
  for ( let i = 0; i < 6; i ++ ) {
23822
23871
 
23823
- _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
+
23824
23882
  if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );
23825
23883
 
23826
23884
  }
23827
23885
 
23828
23886
  } else {
23829
23887
 
23830
- _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
+
23831
23898
  if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );
23832
23899
  if ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );
23833
23900
 
@@ -24206,7 +24273,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
24206
24273
  glFormat = utils.convert( texture.format, texture.colorSpace );
24207
24274
 
24208
24275
  let glType = utils.convert( texture.type ),
24209
- glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );
24276
+ glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture );
24210
24277
 
24211
24278
  setTextureParameters( textureType, texture, supportsMips );
24212
24279
 
@@ -24802,7 +24869,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
24802
24869
  // Render targets
24803
24870
 
24804
24871
  // Setup storage for target texture and bind it to correct framebuffer
24805
- function setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget ) {
24872
+ function setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget, level ) {
24806
24873
 
24807
24874
  const glFormat = utils.convert( texture.format, texture.colorSpace );
24808
24875
  const glType = utils.convert( texture.type );
@@ -24811,13 +24878,16 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
24811
24878
 
24812
24879
  if ( ! renderTargetProperties.__hasExternalTextures ) {
24813
24880
 
24881
+ const width = Math.max( 1, renderTarget.width >> level );
24882
+ const height = Math.max( 1, renderTarget.height >> level );
24883
+
24814
24884
  if ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) {
24815
24885
 
24816
- 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 );
24817
24887
 
24818
24888
  } else {
24819
24889
 
24820
- 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 );
24821
24891
 
24822
24892
  }
24823
24893
 
@@ -24831,7 +24901,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
24831
24901
 
24832
24902
  } else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753
24833
24903
 
24834
- _gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 );
24904
+ _gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, level );
24835
24905
 
24836
24906
  }
24837
24907
 
@@ -25052,7 +25122,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
25052
25122
 
25053
25123
  if ( colorTexture !== undefined ) {
25054
25124
 
25055
- 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 );
25056
25126
 
25057
25127
  }
25058
25128
 
@@ -25099,13 +25169,41 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
25099
25169
 
25100
25170
  for ( let i = 0; i < 6; i ++ ) {
25101
25171
 
25102
- 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
+ }
25103
25187
 
25104
25188
  }
25105
25189
 
25106
25190
  } else {
25107
25191
 
25108
- 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
+ }
25109
25207
 
25110
25208
  if ( isMultipleRenderTargets ) {
25111
25209
 
@@ -25185,7 +25283,19 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
25185
25283
 
25186
25284
  for ( let i = 0; i < 6; i ++ ) {
25187
25285
 
25188
- 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
+ }
25189
25299
 
25190
25300
  }
25191
25301
 
@@ -25208,7 +25318,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
25208
25318
 
25209
25319
  state.bindTexture( _gl.TEXTURE_2D, attachmentProperties.__webglTexture );
25210
25320
  setTextureParameters( _gl.TEXTURE_2D, attachment, supportsMips );
25211
- 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 );
25212
25322
 
25213
25323
  if ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {
25214
25324
 
@@ -25240,7 +25350,20 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
25240
25350
 
25241
25351
  state.bindTexture( glTextureType, textureProperties.__webglTexture );
25242
25352
  setTextureParameters( glTextureType, texture, supportsMips );
25243
- 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
+ }
25244
25367
 
25245
25368
  if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {
25246
25369
 
@@ -25429,13 +25552,13 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
25429
25552
  const format = texture.format;
25430
25553
  const type = texture.type;
25431
25554
 
25432
- if ( texture.isCompressedTexture === true || texture.format === _SRGBAFormat ) return image;
25555
+ if ( texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat ) return image;
25433
25556
 
25434
25557
  if ( colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace ) {
25435
25558
 
25436
25559
  // sRGB
25437
25560
 
25438
- if ( colorSpace === SRGBColorSpace ) {
25561
+ if ( colorSpace === SRGBColorSpace || colorSpace === DisplayP3ColorSpace ) {
25439
25562
 
25440
25563
  if ( isWebGL2 === false ) {
25441
25564
 
@@ -25501,6 +25624,9 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
25501
25624
 
25502
25625
  }
25503
25626
 
25627
+ const LinearTransferFunction = 0;
25628
+ const SRGBTransferFunction = 1;
25629
+
25504
25630
  function WebGLUtils( gl, extensions, capabilities ) {
25505
25631
 
25506
25632
  const isWebGL2 = capabilities.isWebGL2;
@@ -25509,6 +25635,8 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
25509
25635
 
25510
25636
  let extension;
25511
25637
 
25638
+ const transferFunction = ( colorSpace === SRGBColorSpace || colorSpace === DisplayP3ColorSpace ) ? SRGBTransferFunction : LinearTransferFunction;
25639
+
25512
25640
  if ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;
25513
25641
  if ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;
25514
25642
  if ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;
@@ -25575,7 +25703,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
25575
25703
 
25576
25704
  if ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {
25577
25705
 
25578
- if ( colorSpace === SRGBColorSpace ) {
25706
+ if ( transferFunction === SRGBTransferFunction ) {
25579
25707
 
25580
25708
  extension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );
25581
25709
 
@@ -25660,8 +25788,8 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
25660
25788
 
25661
25789
  if ( extension !== null ) {
25662
25790
 
25663
- if ( p === RGB_ETC2_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;
25664
- if ( p === RGBA_ETC2_EAC_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;
25791
+ if ( p === RGB_ETC2_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;
25792
+ if ( p === RGBA_ETC2_EAC_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;
25665
25793
 
25666
25794
  } else {
25667
25795
 
@@ -25683,20 +25811,20 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
25683
25811
 
25684
25812
  if ( extension !== null ) {
25685
25813
 
25686
- if ( p === RGBA_ASTC_4x4_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;
25687
- if ( p === RGBA_ASTC_5x4_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;
25688
- if ( p === RGBA_ASTC_5x5_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;
25689
- if ( p === RGBA_ASTC_6x5_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;
25690
- if ( p === RGBA_ASTC_6x6_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;
25691
- if ( p === RGBA_ASTC_8x5_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;
25692
- if ( p === RGBA_ASTC_8x6_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;
25693
- if ( p === RGBA_ASTC_8x8_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;
25694
- if ( p === RGBA_ASTC_10x5_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;
25695
- if ( p === RGBA_ASTC_10x6_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;
25696
- if ( p === RGBA_ASTC_10x8_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;
25697
- if ( p === RGBA_ASTC_10x10_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;
25698
- if ( p === RGBA_ASTC_12x10_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;
25699
- if ( p === RGBA_ASTC_12x12_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;
25814
+ if ( p === RGBA_ASTC_4x4_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;
25815
+ if ( p === RGBA_ASTC_5x4_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;
25816
+ if ( p === RGBA_ASTC_5x5_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;
25817
+ if ( p === RGBA_ASTC_6x5_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;
25818
+ if ( p === RGBA_ASTC_6x6_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;
25819
+ if ( p === RGBA_ASTC_8x5_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;
25820
+ if ( p === RGBA_ASTC_8x6_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;
25821
+ if ( p === RGBA_ASTC_8x8_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;
25822
+ if ( p === RGBA_ASTC_10x5_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;
25823
+ if ( p === RGBA_ASTC_10x6_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;
25824
+ if ( p === RGBA_ASTC_10x8_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;
25825
+ if ( p === RGBA_ASTC_10x10_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;
25826
+ if ( p === RGBA_ASTC_12x10_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;
25827
+ if ( p === RGBA_ASTC_12x12_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;
25700
25828
 
25701
25829
  } else {
25702
25830
 
@@ -25708,13 +25836,15 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
25708
25836
 
25709
25837
  // BPTC
25710
25838
 
25711
- if ( p === RGBA_BPTC_Format ) {
25839
+ if ( p === RGBA_BPTC_Format || p === RGB_BPTC_SIGNED_Format || p === RGB_BPTC_UNSIGNED_Format ) {
25712
25840
 
25713
25841
  extension = extensions.get( 'EXT_texture_compression_bptc' );
25714
25842
 
25715
25843
  if ( extension !== null ) {
25716
25844
 
25717
- if ( p === RGBA_BPTC_Format ) return ( colorSpace === SRGBColorSpace ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;
25845
+ if ( p === RGBA_BPTC_Format ) return ( transferFunction === SRGBTransferFunction ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;
25846
+ if ( p === RGB_BPTC_SIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;
25847
+ if ( p === RGB_BPTC_UNSIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;
25718
25848
 
25719
25849
  } else {
25720
25850
 
@@ -27755,7 +27885,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
27755
27885
  uniforms.lightMap.value = material.lightMap;
27756
27886
 
27757
27887
  // artist-friendly light intensity scaling factor
27758
- const scaleFactor = ( renderer.useLegacyLights === true ) ? Math.PI : 1;
27888
+ const scaleFactor = ( renderer._useLegacyLights === true ) ? Math.PI : 1;
27759
27889
 
27760
27890
  uniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;
27761
27891
 
@@ -28502,14 +28632,6 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
28502
28632
 
28503
28633
  }
28504
28634
 
28505
- function createCanvasElement() {
28506
-
28507
- const canvas = createElementNS( 'canvas' );
28508
- canvas.style.display = 'block';
28509
- return canvas;
28510
-
28511
- }
28512
-
28513
28635
  class WebGLRenderer {
28514
28636
 
28515
28637
  constructor( parameters = {} ) {
@@ -28594,7 +28716,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
28594
28716
 
28595
28717
  // physical lights
28596
28718
 
28597
- this.useLegacyLights = true;
28719
+ this._useLegacyLights = false;
28598
28720
 
28599
28721
  // tone mapping
28600
28722
 
@@ -29237,6 +29359,9 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
29237
29359
  if ( material.wireframe === true ) {
29238
29360
 
29239
29361
  index = geometries.getWireframeAttribute( geometry );
29362
+
29363
+ if ( index === undefined ) return;
29364
+
29240
29365
  rangeFactor = 2;
29241
29366
 
29242
29367
  }
@@ -29401,7 +29526,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
29401
29526
 
29402
29527
  } );
29403
29528
 
29404
- currentRenderState.setupLights( _this.useLegacyLights );
29529
+ currentRenderState.setupLights( _this._useLegacyLights );
29405
29530
 
29406
29531
  scene.traverse( function ( object ) {
29407
29532
 
@@ -29554,7 +29679,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
29554
29679
 
29555
29680
  // render scene
29556
29681
 
29557
- currentRenderState.setupLights( _this.useLegacyLights );
29682
+ currentRenderState.setupLights( _this._useLegacyLights );
29558
29683
 
29559
29684
  if ( camera.isArrayCamera ) {
29560
29685
 
@@ -30048,6 +30173,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
30048
30173
 
30049
30174
  materialProperties.outputColorSpace = parameters.outputColorSpace;
30050
30175
  materialProperties.instancing = parameters.instancing;
30176
+ materialProperties.instancingColor = parameters.instancingColor;
30051
30177
  materialProperties.skinning = parameters.skinning;
30052
30178
  materialProperties.morphTargets = parameters.morphTargets;
30053
30179
  materialProperties.morphNormals = parameters.morphNormals;
@@ -30076,7 +30202,18 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
30076
30202
  const morphTargets = !! geometry.morphAttributes.position;
30077
30203
  const morphNormals = !! geometry.morphAttributes.normal;
30078
30204
  const morphColors = !! geometry.morphAttributes.color;
30079
- const toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;
30205
+
30206
+ let toneMapping = NoToneMapping;
30207
+
30208
+ if ( material.toneMapped ) {
30209
+
30210
+ if ( _currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true ) {
30211
+
30212
+ toneMapping = _this.toneMapping;
30213
+
30214
+ }
30215
+
30216
+ }
30080
30217
 
30081
30218
  const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;
30082
30219
  const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;
@@ -30131,6 +30268,14 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
30131
30268
 
30132
30269
  needsProgramChange = true;
30133
30270
 
30271
+ } else if ( object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null ) {
30272
+
30273
+ needsProgramChange = true;
30274
+
30275
+ } else if ( object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null ) {
30276
+
30277
+ needsProgramChange = true;
30278
+
30134
30279
  } else if ( materialProperties.envMap !== envMap ) {
30135
30280
 
30136
30281
  needsProgramChange = true;
@@ -30217,48 +30362,28 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
30217
30362
 
30218
30363
  if ( refreshProgram || _currentCamera !== camera ) {
30219
30364
 
30220
- p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );
30221
-
30222
- if ( capabilities.logarithmicDepthBuffer ) {
30223
-
30224
- p_uniforms.setValue( _gl, 'logDepthBufFC',
30225
- 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );
30226
-
30227
- }
30365
+ // common camera uniforms
30228
30366
 
30229
- if ( _currentCamera !== camera ) {
30367
+ p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );
30368
+ p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );
30230
30369
 
30231
- _currentCamera = camera;
30370
+ const uCamPos = p_uniforms.map.cameraPosition;
30232
30371
 
30233
- // lighting uniforms depend on the camera so enforce an update
30234
- // now, in case this material supports lights - or later, when
30235
- // the next material that does gets activated:
30372
+ if ( uCamPos !== undefined ) {
30236
30373
 
30237
- refreshMaterial = true; // set to true on material change
30238
- refreshLights = true; // remains set until update done
30374
+ uCamPos.setValue( _gl, _vector3.setFromMatrixPosition( camera.matrixWorld ) );
30239
30375
 
30240
30376
  }
30241
30377
 
30242
- // load material specific uniforms
30243
- // (shader material also gets them for the sake of genericity)
30244
-
30245
- if ( material.isShaderMaterial ||
30246
- material.isMeshPhongMaterial ||
30247
- material.isMeshToonMaterial ||
30248
- material.isMeshStandardMaterial ||
30249
- material.envMap ) {
30250
-
30251
- const uCamPos = p_uniforms.map.cameraPosition;
30252
-
30253
- if ( uCamPos !== undefined ) {
30254
-
30255
- uCamPos.setValue( _gl,
30256
- _vector3.setFromMatrixPosition( camera.matrixWorld ) );
30378
+ if ( capabilities.logarithmicDepthBuffer ) {
30257
30379
 
30258
- }
30380
+ p_uniforms.setValue( _gl, 'logDepthBufFC',
30381
+ 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );
30259
30382
 
30260
30383
  }
30261
30384
 
30385
+ // consider moving isOrthographic to UniformLib and WebGLMaterials, see https://github.com/mrdoob/three.js/pull/26467#issuecomment-1645185067
30386
+
30262
30387
  if ( material.isMeshPhongMaterial ||
30263
30388
  material.isMeshToonMaterial ||
30264
30389
  material.isMeshLambertMaterial ||
@@ -30270,16 +30395,16 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
30270
30395
 
30271
30396
  }
30272
30397
 
30273
- if ( material.isMeshPhongMaterial ||
30274
- material.isMeshToonMaterial ||
30275
- material.isMeshLambertMaterial ||
30276
- material.isMeshBasicMaterial ||
30277
- material.isMeshStandardMaterial ||
30278
- material.isShaderMaterial ||
30279
- material.isShadowMaterial ||
30280
- object.isSkinnedMesh ) {
30398
+ if ( _currentCamera !== camera ) {
30399
+
30400
+ _currentCamera = camera;
30401
+
30402
+ // lighting uniforms depend on the camera so enforce an update
30403
+ // now, in case this material supports lights - or later, when
30404
+ // the next material that does gets activated:
30281
30405
 
30282
- p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );
30406
+ refreshMaterial = true; // set to true on material change
30407
+ refreshLights = true; // remains set until update done
30283
30408
 
30284
30409
  }
30285
30410
 
@@ -30572,7 +30697,16 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
30572
30697
 
30573
30698
  if ( renderTarget.isWebGLCubeRenderTarget ) {
30574
30699
 
30575
- framebuffer = __webglFramebuffer[ activeCubeFace ];
30700
+ if ( Array.isArray( __webglFramebuffer[ activeCubeFace ] ) ) {
30701
+
30702
+ framebuffer = __webglFramebuffer[ activeCubeFace ][ activeMipmapLevel ];
30703
+
30704
+ } else {
30705
+
30706
+ framebuffer = __webglFramebuffer[ activeCubeFace ];
30707
+
30708
+ }
30709
+
30576
30710
  isCube = true;
30577
30711
 
30578
30712
  } else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {
@@ -30581,7 +30715,15 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
30581
30715
 
30582
30716
  } else {
30583
30717
 
30584
- framebuffer = __webglFramebuffer;
30718
+ if ( Array.isArray( __webglFramebuffer ) ) {
30719
+
30720
+ framebuffer = __webglFramebuffer[ activeMipmapLevel ];
30721
+
30722
+ } else {
30723
+
30724
+ framebuffer = __webglFramebuffer;
30725
+
30726
+ }
30585
30727
 
30586
30728
  }
30587
30729
 
@@ -30880,14 +31022,14 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
30880
31022
 
30881
31023
  get physicallyCorrectLights() { // @deprecated, r150
30882
31024
 
30883
- console.warn( 'THREE.WebGLRenderer: the property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead.' );
31025
+ console.warn( 'THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead.' );
30884
31026
  return ! this.useLegacyLights;
30885
31027
 
30886
31028
  }
30887
31029
 
30888
31030
  set physicallyCorrectLights( value ) { // @deprecated, r150
30889
31031
 
30890
- console.warn( 'THREE.WebGLRenderer: the property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead.' );
31032
+ console.warn( 'THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead.' );
30891
31033
  this.useLegacyLights = ! value;
30892
31034
 
30893
31035
  }
@@ -30906,6 +31048,20 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
30906
31048
 
30907
31049
  }
30908
31050
 
31051
+ get useLegacyLights() { // @deprecated, r155
31052
+
31053
+ 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.' );
31054
+ return this._useLegacyLights;
31055
+
31056
+ }
31057
+
31058
+ set useLegacyLights( value ) { // @deprecated, r155
31059
+
31060
+ 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.' );
31061
+ this._useLegacyLights = value;
31062
+
31063
+ }
31064
+
30909
31065
  }
30910
31066
 
30911
31067
  class WebGL1Renderer extends WebGLRenderer {}
@@ -32805,7 +32961,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
32805
32961
 
32806
32962
  super.copy( source, recursive );
32807
32963
 
32808
- this.material = source.material;
32964
+ this.material = Array.isArray( source.material ) ? source.material.slice() : source.material;
32809
32965
  this.geometry = source.geometry;
32810
32966
 
32811
32967
  return this;
@@ -33126,7 +33282,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
33126
33282
 
33127
33283
  super.copy( source, recursive );
33128
33284
 
33129
- this.material = source.material;
33285
+ this.material = Array.isArray( source.material ) ? source.material.slice() : source.material;
33130
33286
  this.geometry = source.geometry;
33131
33287
 
33132
33288
  return this;
@@ -33366,6 +33522,21 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
33366
33522
 
33367
33523
  }
33368
33524
 
33525
+ class CompressedCubeTexture extends CompressedTexture {
33526
+
33527
+ constructor( images, format, type ) {
33528
+
33529
+ super( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );
33530
+
33531
+ this.isCompressedCubeTexture = true;
33532
+ this.isCubeTexture = true;
33533
+
33534
+ this.image = images;
33535
+
33536
+ }
33537
+
33538
+ }
33539
+
33369
33540
  class CanvasTexture extends Texture {
33370
33541
 
33371
33542
  constructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {
@@ -35476,7 +35647,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
35476
35647
 
35477
35648
  this.parameters = {
35478
35649
  radius: radius,
35479
- height: length,
35650
+ length: length,
35480
35651
  capSegments: capSegments,
35481
35652
  radialSegments: radialSegments,
35482
35653
  };
@@ -42926,9 +43097,26 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
42926
43097
  loader.setWithCredentials( scope.withCredentials );
42927
43098
  loader.load( url, function ( buffer ) {
42928
43099
 
42929
- const texData = scope.parse( buffer );
43100
+ let texData;
43101
+
43102
+ try {
43103
+
43104
+ texData = scope.parse( buffer );
43105
+
43106
+ } catch ( error ) {
42930
43107
 
42931
- if ( ! texData ) return;
43108
+ if ( onError !== undefined ) {
43109
+
43110
+ onError( error );
43111
+
43112
+ } else {
43113
+
43114
+ console.error( error );
43115
+ return;
43116
+
43117
+ }
43118
+
43119
+ }
42932
43120
 
42933
43121
  if ( texData.image !== undefined ) {
42934
43122
 
@@ -46350,6 +46538,12 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
46350
46538
 
46351
46539
  disconnect() {
46352
46540
 
46541
+ if ( this._connected === false ) {
46542
+
46543
+ return;
46544
+
46545
+ }
46546
+
46353
46547
  if ( this.filters.length > 0 ) {
46354
46548
 
46355
46549
  this.source.disconnect( this.filters[ 0 ] );
@@ -47465,7 +47659,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
47465
47659
  // ensure there is a value node
47466
47660
  if ( ! targetObject ) {
47467
47661
 
47468
- console.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\'t found.' );
47662
+ console.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );
47469
47663
  return;
47470
47664
 
47471
47665
  }
@@ -49598,7 +49792,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
49598
49792
 
49599
49793
  }
49600
49794
 
49601
- let id = 0;
49795
+ let _id = 0;
49602
49796
 
49603
49797
  class UniformsGroup extends EventDispatcher {
49604
49798
 
@@ -49608,7 +49802,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
49608
49802
 
49609
49803
  this.isUniformsGroup = true;
49610
49804
 
49611
- Object.defineProperty( this, 'id', { value: id ++ } );
49805
+ Object.defineProperty( this, 'id', { value: _id ++ } );
49612
49806
 
49613
49807
  this.name = '';
49614
49808
 
@@ -51930,6 +52124,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
51930
52124
  exports.ColorKeyframeTrack = ColorKeyframeTrack;
51931
52125
  exports.ColorManagement = ColorManagement;
51932
52126
  exports.CompressedArrayTexture = CompressedArrayTexture;
52127
+ exports.CompressedCubeTexture = CompressedCubeTexture;
51933
52128
  exports.CompressedTexture = CompressedTexture;
51934
52129
  exports.CompressedTextureLoader = CompressedTextureLoader;
51935
52130
  exports.ConeGeometry = ConeGeometry;
@@ -52051,6 +52246,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
52051
52246
  exports.LineDashedMaterial = LineDashedMaterial;
52052
52247
  exports.LineLoop = LineLoop;
52053
52248
  exports.LineSegments = LineSegments;
52249
+ exports.LinearDisplayP3ColorSpace = LinearDisplayP3ColorSpace;
52054
52250
  exports.LinearEncoding = LinearEncoding;
52055
52251
  exports.LinearFilter = LinearFilter;
52056
52252
  exports.LinearInterpolant = LinearInterpolant;
@@ -52167,6 +52363,8 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
52167
52363
  exports.RGBA_S3TC_DXT1_Format = RGBA_S3TC_DXT1_Format;
52168
52364
  exports.RGBA_S3TC_DXT3_Format = RGBA_S3TC_DXT3_Format;
52169
52365
  exports.RGBA_S3TC_DXT5_Format = RGBA_S3TC_DXT5_Format;
52366
+ exports.RGB_BPTC_SIGNED_Format = RGB_BPTC_SIGNED_Format;
52367
+ exports.RGB_BPTC_UNSIGNED_Format = RGB_BPTC_UNSIGNED_Format;
52170
52368
  exports.RGB_ETC1_Format = RGB_ETC1_Format;
52171
52369
  exports.RGB_ETC2_Format = RGB_ETC2_Format;
52172
52370
  exports.RGB_PVRTC_2BPPV1_Format = RGB_PVRTC_2BPPV1_Format;
@@ -52181,6 +52379,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
52181
52379
  exports.RedFormat = RedFormat;
52182
52380
  exports.RedIntegerFormat = RedIntegerFormat;
52183
52381
  exports.ReinhardToneMapping = ReinhardToneMapping;
52382
+ exports.RenderTarget = RenderTarget;
52184
52383
  exports.RepeatWrapping = RepeatWrapping;
52185
52384
  exports.ReplaceStencilOp = ReplaceStencilOp;
52186
52385
  exports.ReverseSubtractEquation = ReverseSubtractEquation;
@@ -52275,6 +52474,7 @@ console.warn( 'Scripts "build/three.js" and "build/three.min.js" are deprecated
52275
52474
  exports.ZeroSlopeEnding = ZeroSlopeEnding;
52276
52475
  exports.ZeroStencilOp = ZeroStencilOp;
52277
52476
  exports._SRGBAFormat = _SRGBAFormat;
52477
+ exports.createCanvasElement = createCanvasElement;
52278
52478
  exports.sRGBEncoding = sRGBEncoding;
52279
52479
 
52280
52480
  }));