super-three 0.161.0 → 0.163.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 (206) hide show
  1. package/build/three.cjs +822 -1332
  2. package/build/three.module.js +820 -1328
  3. package/build/three.module.min.js +1 -1
  4. package/examples/jsm/controls/DragControls.js +91 -30
  5. package/examples/jsm/controls/OrbitControls.js +32 -6
  6. package/examples/jsm/controls/TransformControls.js +9 -9
  7. package/examples/jsm/exporters/GLTFExporter.js +30 -3
  8. package/examples/jsm/exporters/USDZExporter.js +15 -0
  9. package/examples/jsm/geometries/TextGeometry.js +10 -2
  10. package/examples/jsm/interactive/HTMLMesh.js +7 -9
  11. package/examples/jsm/interactive/InteractiveGroup.js +15 -25
  12. package/examples/jsm/libs/fflate.module.js +694 -496
  13. package/examples/jsm/libs/rhino3dm/rhino3dm.js +1 -8723
  14. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +1 -8734
  15. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  16. package/examples/jsm/libs/tween.module.js +32 -14
  17. package/examples/jsm/lines/LineMaterial.js +0 -2
  18. package/examples/jsm/loaders/3DMLoader.js +13 -21
  19. package/examples/jsm/loaders/3MFLoader.js +2 -0
  20. package/examples/jsm/loaders/EXRLoader.js +89 -19
  21. package/examples/jsm/loaders/FBXLoader.js +1 -1
  22. package/examples/jsm/loaders/GLTFLoader.js +6 -0
  23. package/examples/jsm/loaders/KTX2Loader.js +2 -6
  24. package/examples/jsm/loaders/LUT3dlLoader.js +0 -15
  25. package/examples/jsm/loaders/LUTCubeLoader.js +0 -14
  26. package/examples/jsm/loaders/LUTImageLoader.js +0 -14
  27. package/examples/jsm/loaders/RGBMLoader.js +16 -0
  28. package/examples/jsm/loaders/VOXLoader.js +9 -2
  29. package/examples/jsm/loaders/VRMLLoader.js +6 -2
  30. package/examples/jsm/misc/GPUComputationRenderer.js +0 -6
  31. package/examples/jsm/misc/ProgressiveLightMap.js +1 -0
  32. package/examples/jsm/nodes/Nodes.js +15 -8
  33. package/examples/jsm/nodes/accessors/AccessorsUtils.js +10 -0
  34. package/examples/jsm/nodes/accessors/BatchNode.js +78 -0
  35. package/examples/jsm/nodes/accessors/ClippingNode.js +144 -0
  36. package/examples/jsm/nodes/accessors/InstanceNode.js +25 -2
  37. package/examples/jsm/nodes/accessors/MaterialNode.js +2 -2
  38. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +2 -12
  39. package/examples/jsm/nodes/accessors/MorphNode.js +20 -10
  40. package/examples/jsm/nodes/accessors/NormalNode.js +12 -2
  41. package/examples/jsm/nodes/accessors/ReferenceNode.js +87 -29
  42. package/examples/jsm/nodes/accessors/RendererReferenceNode.js +29 -0
  43. package/examples/jsm/nodes/accessors/SkinningNode.js +31 -10
  44. package/examples/jsm/nodes/accessors/StorageBufferNode.js +18 -0
  45. package/examples/jsm/nodes/accessors/TangentNode.js +8 -2
  46. package/examples/jsm/nodes/accessors/TextureNode.js +30 -7
  47. package/examples/jsm/nodes/accessors/UniformsNode.js +140 -0
  48. package/examples/jsm/nodes/code/CodeNode.js +6 -0
  49. package/examples/jsm/nodes/core/AssignNode.js +68 -12
  50. package/examples/jsm/nodes/core/Node.js +67 -6
  51. package/examples/jsm/nodes/core/NodeBuilder.js +23 -24
  52. package/examples/jsm/nodes/core/NodeFrame.js +8 -8
  53. package/examples/jsm/nodes/core/NodeUtils.js +2 -2
  54. package/examples/jsm/nodes/core/TempNode.js +1 -1
  55. package/examples/jsm/nodes/core/UniformNode.js +20 -0
  56. package/examples/jsm/nodes/display/BlendModeNode.js +30 -1
  57. package/examples/jsm/nodes/display/NormalMapNode.js +3 -5
  58. package/examples/jsm/nodes/display/PassNode.js +17 -1
  59. package/examples/jsm/nodes/display/ToneMappingNode.js +8 -4
  60. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +6 -0
  61. package/examples/jsm/nodes/fog/FogExp2Node.js +4 -5
  62. package/examples/jsm/nodes/fog/FogNode.js +13 -3
  63. package/examples/jsm/nodes/fog/FogRangeNode.js +4 -3
  64. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  65. package/examples/jsm/nodes/lighting/EnvironmentNode.js +12 -69
  66. package/examples/jsm/nodes/materials/NodeMaterial.js +70 -17
  67. package/examples/jsm/nodes/math/CondNode.js +42 -7
  68. package/examples/jsm/nodes/math/MathNode.js +20 -0
  69. package/examples/jsm/nodes/pmrem/PMREMNode.js +193 -0
  70. package/examples/jsm/nodes/pmrem/PMREMUtils.js +288 -0
  71. package/examples/jsm/nodes/shadernode/ShaderNode.js +1 -1
  72. package/examples/jsm/nodes/utils/ArrayElementNode.js +0 -6
  73. package/examples/jsm/nodes/utils/EquirectUVNode.js +1 -1
  74. package/examples/jsm/nodes/utils/LoopNode.js +2 -0
  75. package/examples/jsm/nodes/utils/StorageArrayElementNode.js +91 -0
  76. package/examples/jsm/objects/QuadMesh.js +7 -23
  77. package/examples/jsm/physics/RapierPhysics.js +4 -4
  78. package/examples/jsm/postprocessing/GlitchPass.js +0 -3
  79. package/examples/jsm/postprocessing/LUTPass.js +5 -71
  80. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  81. package/examples/jsm/postprocessing/SAOPass.js +0 -1
  82. package/examples/jsm/postprocessing/SSAOPass.js +0 -3
  83. package/examples/jsm/renderers/common/Animation.js +3 -0
  84. package/examples/jsm/renderers/common/Background.js +3 -3
  85. package/examples/jsm/renderers/common/ClippingContext.js +165 -0
  86. package/examples/jsm/renderers/common/Info.js +11 -19
  87. package/examples/jsm/renderers/common/PostProcessing.js +12 -4
  88. package/examples/jsm/renderers/common/RenderContext.js +3 -1
  89. package/examples/jsm/renderers/common/RenderContexts.js +2 -13
  90. package/examples/jsm/renderers/common/RenderObject.js +46 -3
  91. package/examples/jsm/renderers/common/RenderObjects.js +2 -0
  92. package/examples/jsm/renderers/common/Renderer.js +113 -39
  93. package/examples/jsm/renderers/common/StorageBufferAttribute.js +2 -2
  94. package/examples/jsm/renderers/common/StorageInstancedBufferAttribute.js +17 -0
  95. package/examples/jsm/renderers/common/Textures.js +3 -13
  96. package/examples/jsm/renderers/common/UniformsGroup.js +6 -4
  97. package/examples/jsm/renderers/common/extras/PMREMGenerator.js +777 -0
  98. package/examples/jsm/renderers/common/nodes/NodeStorageBuffer.js +23 -0
  99. package/examples/jsm/renderers/common/nodes/NodeUniformBuffer.js +23 -0
  100. package/examples/jsm/renderers/common/nodes/Nodes.js +6 -18
  101. package/examples/jsm/renderers/webgl/WebGLBackend.js +174 -30
  102. package/examples/jsm/renderers/webgl/WebGLBufferRenderer.js +141 -0
  103. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +136 -11
  104. package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +8 -2
  105. package/examples/jsm/renderers/webgl/utils/WebGLConstants.js +1 -0
  106. package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +90 -0
  107. package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +3 -1
  108. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -2
  109. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -2
  110. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +67 -37
  111. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +20 -43
  112. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +32 -1
  113. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -4
  114. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +94 -20
  115. package/examples/jsm/shaders/OutputShader.js +4 -0
  116. package/examples/jsm/utils/GPUStatsPanel.js +10 -45
  117. package/examples/jsm/utils/SkeletonUtils.js +14 -3
  118. package/examples/jsm/utils/TextureUtils.js +1 -1
  119. package/examples/jsm/webxr/VRButton.js +13 -5
  120. package/examples/jsm/webxr/XRButton.js +0 -1
  121. package/examples/jsm/webxr/XRControllerModelFactory.js +8 -0
  122. package/package.json +4 -3
  123. package/src/Three.Legacy.js +20 -0
  124. package/src/Three.js +0 -2
  125. package/src/animation/AnimationClip.js +1 -1
  126. package/src/constants.js +4 -7
  127. package/src/core/BufferAttribute.js +0 -11
  128. package/src/core/BufferGeometry.js +23 -29
  129. package/src/core/Object3D.js +21 -7
  130. package/src/core/Raycaster.js +18 -4
  131. package/src/core/RenderTarget.js +44 -21
  132. package/src/extras/PMREMGenerator.js +11 -0
  133. package/src/extras/curves/EllipseCurve.js +2 -2
  134. package/src/helpers/SpotLightHelper.js +18 -1
  135. package/src/loaders/DataTextureLoader.js +0 -4
  136. package/src/loaders/MaterialLoader.js +1 -0
  137. package/src/loaders/ObjectLoader.js +4 -1
  138. package/src/materials/Material.js +2 -1
  139. package/src/materials/MeshBasicMaterial.js +3 -0
  140. package/src/materials/MeshLambertMaterial.js +3 -0
  141. package/src/materials/MeshPhongMaterial.js +3 -0
  142. package/src/materials/MeshStandardMaterial.js +3 -0
  143. package/src/materials/ShaderMaterial.js +0 -4
  144. package/src/math/Quaternion.js +13 -12
  145. package/src/math/Spherical.js +4 -5
  146. package/src/math/Vector3.js +7 -7
  147. package/src/objects/BatchedMesh.js +4 -3
  148. package/src/objects/InstancedMesh.js +63 -0
  149. package/src/objects/Mesh.js +0 -1
  150. package/src/renderers/WebGLCubeRenderTarget.js +1 -10
  151. package/src/renderers/WebGLRenderer.js +70 -136
  152. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -0
  153. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
  154. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
  155. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
  156. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  157. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +2 -10
  158. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +2 -16
  159. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +1 -1
  160. package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
  161. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +11 -2
  162. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +32 -22
  163. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +23 -0
  164. package/src/renderers/shaders/ShaderChunk.js +2 -0
  165. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +3 -2
  166. package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
  167. package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
  168. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
  169. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -0
  170. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
  171. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
  172. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -0
  173. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
  174. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
  175. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
  176. package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
  177. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -0
  178. package/src/renderers/shaders/ShaderLib.js +3 -2
  179. package/src/renderers/shaders/UniformsLib.js +1 -0
  180. package/src/renderers/shaders/UniformsUtils.js +10 -1
  181. package/src/renderers/webgl/WebGLAttributes.js +6 -33
  182. package/src/renderers/webgl/WebGLBackground.js +18 -0
  183. package/src/renderers/webgl/WebGLBindingStates.js +14 -51
  184. package/src/renderers/webgl/WebGLBufferRenderer.js +3 -25
  185. package/src/renderers/webgl/WebGLCapabilities.js +2 -12
  186. package/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
  187. package/src/renderers/webgl/WebGLExtensions.js +4 -19
  188. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +3 -25
  189. package/src/renderers/webgl/WebGLLights.js +6 -32
  190. package/src/renderers/webgl/WebGLMaterials.js +26 -4
  191. package/src/renderers/webgl/WebGLMorphtargets.js +79 -210
  192. package/src/renderers/webgl/WebGLProgram.js +30 -48
  193. package/src/renderers/webgl/WebGLPrograms.js +5 -14
  194. package/src/renderers/webgl/WebGLRenderStates.js +8 -6
  195. package/src/renderers/webgl/WebGLState.js +21 -75
  196. package/src/renderers/webgl/WebGLTextures.js +143 -275
  197. package/src/renderers/webgl/WebGLUniformsGroups.js +1 -1
  198. package/src/renderers/webgl/WebGLUtils.js +6 -57
  199. package/src/renderers/webxr/WebXRDepthSensing.js +2 -3
  200. package/src/renderers/webxr/WebXRManager.js +2 -2
  201. package/src/scenes/Scene.js +14 -0
  202. package/src/textures/Texture.js +6 -24
  203. package/examples/jsm/nodes/core/ArrayUniformNode.js +0 -26
  204. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
  205. package/src/renderers/WebGL1Renderer.js +0 -7
  206. package/src/renderers/WebGLMultipleRenderTargets.js +0 -82
@@ -2,6 +2,7 @@ import { MultiplyOperation, TangentSpaceNormalMap } from '../constants.js';
2
2
  import { Material } from './Material.js';
3
3
  import { Vector2 } from '../math/Vector2.js';
4
4
  import { Color } from '../math/Color.js';
5
+ import { Euler } from '../math/Euler.js';
5
6
 
6
7
  class MeshPhongMaterial extends Material {
7
8
 
@@ -45,6 +46,7 @@ class MeshPhongMaterial extends Material {
45
46
  this.alphaMap = null;
46
47
 
47
48
  this.envMap = null;
49
+ this.envMapRotation = new Euler();
48
50
  this.combine = MultiplyOperation;
49
51
  this.reflectivity = 1;
50
52
  this.refractionRatio = 0.98;
@@ -98,6 +100,7 @@ class MeshPhongMaterial extends Material {
98
100
  this.alphaMap = source.alphaMap;
99
101
 
100
102
  this.envMap = source.envMap;
103
+ this.envMapRotation.copy( source.envMapRotation );
101
104
  this.combine = source.combine;
102
105
  this.reflectivity = source.reflectivity;
103
106
  this.refractionRatio = source.refractionRatio;
@@ -2,6 +2,7 @@ import { TangentSpaceNormalMap } from '../constants.js';
2
2
  import { Material } from './Material.js';
3
3
  import { Vector2 } from '../math/Vector2.js';
4
4
  import { Color } from '../math/Color.js';
5
+ import { Euler } from '../math/Euler.js';
5
6
 
6
7
  class MeshStandardMaterial extends Material {
7
8
 
@@ -49,6 +50,7 @@ class MeshStandardMaterial extends Material {
49
50
  this.alphaMap = null;
50
51
 
51
52
  this.envMap = null;
53
+ this.envMapRotation = new Euler();
52
54
  this.envMapIntensity = 1.0;
53
55
 
54
56
  this.wireframe = false;
@@ -104,6 +106,7 @@ class MeshStandardMaterial extends Material {
104
106
  this.alphaMap = source.alphaMap;
105
107
 
106
108
  this.envMap = source.envMap;
109
+ this.envMapRotation.copy( source.envMapRotation );
107
110
  this.envMapIntensity = source.envMapIntensity;
108
111
 
109
112
  this.wireframe = source.wireframe;
@@ -33,10 +33,6 @@ class ShaderMaterial extends Material {
33
33
  this.forceSinglePass = true;
34
34
 
35
35
  this.extensions = {
36
- derivatives: false, // set to use derivatives
37
- fragDepth: false, // set to use fragment depth values
38
- drawBuffers: false, // set to use draw buffers
39
- shaderTextureLOD: false, // set to use shader texture LOD
40
36
  clipCullDistance: false, // set to use vertex shader clipping
41
37
  multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID
42
38
  };
@@ -591,23 +591,24 @@ class Quaternion {
591
591
 
592
592
  random() {
593
593
 
594
- // Derived from http://planning.cs.uiuc.edu/node198.html
595
- // Note, this source uses w, x, y, z ordering,
596
- // so we swap the order below.
594
+ // sets this quaternion to a uniform random unit quaternnion
597
595
 
598
- const u1 = Math.random();
599
- const sqrt1u1 = Math.sqrt( 1 - u1 );
600
- const sqrtu1 = Math.sqrt( u1 );
596
+ // Ken Shoemake
597
+ // Uniform random rotations
598
+ // D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992.
601
599
 
602
- const u2 = 2 * Math.PI * Math.random();
600
+ const theta1 = 2 * Math.PI * Math.random();
601
+ const theta2 = 2 * Math.PI * Math.random();
603
602
 
604
- const u3 = 2 * Math.PI * Math.random();
603
+ const x0 = Math.random();
604
+ const r1 = Math.sqrt( 1 - x0 );
605
+ const r2 = Math.sqrt( x0 );
605
606
 
606
607
  return this.set(
607
- sqrt1u1 * Math.cos( u2 ),
608
- sqrtu1 * Math.sin( u3 ),
609
- sqrtu1 * Math.cos( u3 ),
610
- sqrt1u1 * Math.sin( u2 ),
608
+ r1 * Math.sin( theta1 ),
609
+ r1 * Math.cos( theta1 ),
610
+ r2 * Math.sin( theta2 ),
611
+ r2 * Math.cos( theta2 ),
611
612
  );
612
613
 
613
614
  }
@@ -1,12 +1,11 @@
1
+ import * as MathUtils from './MathUtils.js';
2
+
1
3
  /**
2
4
  * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system
3
5
  *
4
- * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.
5
- * The azimuthal angle (theta) is measured from the positive z-axis.
6
+ * phi (the polar angle) is measured from the positive y-axis. The positive y-axis is up.
7
+ * theta (the azimuthal angle) is measured from the positive z-axis.
6
8
  */
7
-
8
- import * as MathUtils from './MathUtils.js';
9
-
10
9
  class Spherical {
11
10
 
12
11
  constructor( radius = 1, phi = 0, theta = 0 ) {
@@ -694,15 +694,15 @@ class Vector3 {
694
694
 
695
695
  randomDirection() {
696
696
 
697
- // Derived from https://mathworld.wolfram.com/SpherePointPicking.html
697
+ // https://mathworld.wolfram.com/SpherePointPicking.html
698
698
 
699
- const u = ( Math.random() - 0.5 ) * 2;
700
- const t = Math.random() * Math.PI * 2;
701
- const f = Math.sqrt( 1 - u ** 2 );
699
+ const theta = Math.random() * Math.PI * 2;
700
+ const u = Math.random() * 2 - 1;
701
+ const c = Math.sqrt( 1 - u * u );
702
702
 
703
- this.x = f * Math.cos( t );
704
- this.y = f * Math.sin( t );
705
- this.z = u;
703
+ this.x = c * Math.cos( theta );
704
+ this.y = u;
705
+ this.z = c * Math.sin( theta );
706
706
 
707
707
  return this;
708
708
 
@@ -195,8 +195,7 @@ class BatchedMesh extends Mesh {
195
195
  const { array, itemSize, normalized } = srcAttribute;
196
196
 
197
197
  const dstArray = new array.constructor( maxVertexCount * itemSize );
198
- const dstAttribute = new srcAttribute.constructor( dstArray, itemSize, normalized );
199
- dstAttribute.setUsage( srcAttribute.usage );
198
+ const dstAttribute = new BufferAttribute( dstArray, itemSize, normalized );
200
199
 
201
200
  geometry.setAttribute( attributeName, dstAttribute );
202
201
 
@@ -223,7 +222,7 @@ class BatchedMesh extends Mesh {
223
222
 
224
223
  }
225
224
 
226
- // Make sure the geometry is compatible with the existing combined geometry atributes
225
+ // Make sure the geometry is compatible with the existing combined geometry attributes
227
226
  _validateGeometry( geometry ) {
228
227
 
229
228
  // check that the geometry doesn't have a version of our reserved id attribute
@@ -514,6 +513,7 @@ class BatchedMesh extends Mesh {
514
513
  }
515
514
 
516
515
  dstAttribute.needsUpdate = true;
516
+ dstAttribute.addUpdateRange( vertexStart * itemSize, vertexCount * itemSize );
517
517
 
518
518
  }
519
519
 
@@ -537,6 +537,7 @@ class BatchedMesh extends Mesh {
537
537
  }
538
538
 
539
539
  dstIndex.needsUpdate = true;
540
+ dstIndex.addUpdateRange( indexStart, reservedRange.indexCount );
540
541
 
541
542
  }
542
543
 
@@ -3,6 +3,8 @@ import { Mesh } from './Mesh.js';
3
3
  import { Box3 } from '../math/Box3.js';
4
4
  import { Matrix4 } from '../math/Matrix4.js';
5
5
  import { Sphere } from '../math/Sphere.js';
6
+ import { DataTexture } from '../textures/DataTexture.js';
7
+ import { FloatType, RedFormat } from '../constants.js';
6
8
 
7
9
  const _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();
8
10
  const _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();
@@ -24,6 +26,7 @@ class InstancedMesh extends Mesh {
24
26
 
25
27
  this.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );
26
28
  this.instanceColor = null;
29
+ this.morphTexture = null;
27
30
 
28
31
  this.count = count;
29
32
 
@@ -106,6 +109,7 @@ class InstancedMesh extends Mesh {
106
109
 
107
110
  this.instanceMatrix.copy( source.instanceMatrix );
108
111
 
112
+ if ( source.morphTexture !== null ) this.morphTexture = source.morphTexture.clone();
109
113
  if ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();
110
114
 
111
115
  this.count = source.count;
@@ -129,6 +133,24 @@ class InstancedMesh extends Mesh {
129
133
 
130
134
  }
131
135
 
136
+ getMorphAt( index, object ) {
137
+
138
+ const objectInfluences = object.morphTargetInfluences;
139
+
140
+ const array = this.morphTexture.source.data.data;
141
+
142
+ const len = objectInfluences.length + 1; // All influences + the baseInfluenceSum
143
+
144
+ const dataIndex = index * len + 1; // Skip the baseInfluenceSum at the beginning
145
+
146
+ for ( let i = 0; i < objectInfluences.length; i ++ ) {
147
+
148
+ objectInfluences[ i ] = array[ dataIndex + i ];
149
+
150
+ }
151
+
152
+ }
153
+
132
154
  raycast( raycaster, intersects ) {
133
155
 
134
156
  const matrixWorld = this.matrixWorld;
@@ -199,6 +221,38 @@ class InstancedMesh extends Mesh {
199
221
 
200
222
  }
201
223
 
224
+ setMorphAt( index, object ) {
225
+
226
+ const objectInfluences = object.morphTargetInfluences;
227
+
228
+ const len = objectInfluences.length + 1; // morphBaseInfluence + all influences
229
+
230
+ if ( this.morphTexture === null ) {
231
+
232
+ this.morphTexture = new DataTexture( new Float32Array( len * this.count ), len, this.count, RedFormat, FloatType );
233
+
234
+ }
235
+
236
+ const array = this.morphTexture.source.data.data;
237
+
238
+ let morphInfluencesSum = 0;
239
+
240
+ for ( let i = 0; i < objectInfluences.length; i ++ ) {
241
+
242
+ morphInfluencesSum += objectInfluences[ i ];
243
+
244
+ }
245
+
246
+ const morphBaseInfluence = this.geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;
247
+
248
+ const dataIndex = len * index;
249
+
250
+ array[ dataIndex ] = morphBaseInfluence;
251
+
252
+ array.set( objectInfluences, dataIndex + 1 );
253
+
254
+ }
255
+
202
256
  updateMorphTargets() {
203
257
 
204
258
  }
@@ -207,6 +261,15 @@ class InstancedMesh extends Mesh {
207
261
 
208
262
  this.dispatchEvent( { type: 'dispose' } );
209
263
 
264
+ if ( this.morphTexture !== null ) {
265
+
266
+ this.morphTexture.dispose();
267
+ this.morphTexture = null;
268
+
269
+ }
270
+
271
+ return this;
272
+
210
273
  }
211
274
 
212
275
  }
@@ -388,7 +388,6 @@ function checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, n
388
388
  _uvC.fromBufferAttribute( uv1, c );
389
389
 
390
390
  intersection.uv1 = Triangle.getInterpolation( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );
391
- intersection.uv2 = intersection.uv1; // @deprecated, r152
392
391
 
393
392
  }
394
393
 
@@ -1,4 +1,4 @@
1
- import { BackSide, LinearFilter, LinearMipmapLinearFilter, NoBlending, NoColorSpace, SRGBColorSpace, sRGBEncoding } from '../constants.js';
1
+ import { BackSide, LinearFilter, LinearMipmapLinearFilter, NoBlending } from '../constants.js';
2
2
  import { Mesh } from '../objects/Mesh.js';
3
3
  import { BoxGeometry } from '../geometries/BoxGeometry.js';
4
4
  import { ShaderMaterial } from '../materials/ShaderMaterial.js';
@@ -6,7 +6,6 @@ import { cloneUniforms } from './shaders/UniformsUtils.js';
6
6
  import { WebGLRenderTarget } from './WebGLRenderTarget.js';
7
7
  import { CubeCamera } from '../cameras/CubeCamera.js';
8
8
  import { CubeTexture } from '../textures/CubeTexture.js';
9
- import { warnOnce } from '../utils.js';
10
9
 
11
10
  class WebGLCubeRenderTarget extends WebGLRenderTarget {
12
11
 
@@ -19,14 +18,6 @@ class WebGLCubeRenderTarget extends WebGLRenderTarget {
19
18
  const image = { width: size, height: size, depth: 1 };
20
19
  const images = [ image, image, image, image, image, image ];
21
20
 
22
- if ( options.encoding !== undefined ) {
23
-
24
- // @deprecated, r152
25
- warnOnce( 'THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace.' );
26
- options.colorSpace = options.encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;
27
-
28
- }
29
-
30
21
  this.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );
31
22
 
32
23
  // By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)