super-three 0.169.1 → 0.170.1

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 (255) hide show
  1. package/build/three.cjs +24628 -24228
  2. package/build/three.core.js +37002 -0
  3. package/build/three.core.min.js +6 -0
  4. package/build/three.module.js +10519 -47108
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +533 -0
  7. package/build/three.tsl.min.js +6 -0
  8. package/build/three.webgpu.js +17071 -53583
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +17134 -53623
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/jsm/Addons.js +3 -3
  13. package/examples/jsm/animation/MMDAnimationHelper.js +2 -0
  14. package/examples/jsm/animation/MMDPhysics.js +2 -0
  15. package/examples/jsm/capabilities/WebGPU.js +1 -10
  16. package/examples/jsm/controls/ArcballControls.js +25 -21
  17. package/examples/jsm/controls/OrbitControls.js +41 -9
  18. package/examples/jsm/controls/PointerLockControls.js +2 -5
  19. package/examples/jsm/controls/TransformControls.js +22 -6
  20. package/examples/jsm/csm/CSM.js +2 -2
  21. package/examples/jsm/csm/CSMFrustum.js +7 -4
  22. package/examples/jsm/csm/CSMHelper.js +2 -0
  23. package/examples/jsm/csm/CSMShadowNode.js +437 -0
  24. package/examples/jsm/curves/NURBSCurve.js +34 -3
  25. package/examples/jsm/exporters/GLTFExporter.js +138 -71
  26. package/examples/jsm/exporters/KTX2Exporter.js +35 -12
  27. package/examples/jsm/exporters/MMDExporter.js +6 -0
  28. package/examples/jsm/exporters/USDZExporter.js +21 -3
  29. package/examples/jsm/geometries/DecalGeometry.js +70 -21
  30. package/examples/jsm/geometries/InstancedPointsGeometry.js +2 -0
  31. package/examples/jsm/helpers/TextureHelperGPU.js +175 -0
  32. package/examples/jsm/interactive/HTMLMesh.js +1 -0
  33. package/examples/jsm/lighting/TiledLighting.js +18 -0
  34. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  35. package/examples/jsm/lines/LineGeometry.js +25 -0
  36. package/examples/jsm/lines/LineMaterial.js +0 -1
  37. package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
  38. package/examples/jsm/lines/webgpu/Line2.js +2 -1
  39. package/examples/jsm/lines/webgpu/LineSegments2.js +2 -16
  40. package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
  41. package/examples/jsm/loaders/3DMLoader.js +1 -0
  42. package/examples/jsm/loaders/3MFLoader.js +91 -0
  43. package/examples/jsm/loaders/FBXLoader.js +12 -2
  44. package/examples/jsm/loaders/GLTFLoader.js +2 -0
  45. package/examples/jsm/loaders/KTX2Loader.js +143 -49
  46. package/examples/jsm/loaders/LDrawLoader.js +22 -136
  47. package/examples/jsm/loaders/LottieLoader.js +1 -0
  48. package/examples/jsm/loaders/MMDLoader.js +3 -0
  49. package/examples/jsm/loaders/MaterialXLoader.js +2 -2
  50. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
  51. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
  52. package/examples/jsm/math/ColorSpaces.js +76 -0
  53. package/examples/jsm/misc/ProgressiveLightMap.js +52 -40
  54. package/examples/jsm/misc/ProgressiveLightMapGPU.js +293 -0
  55. package/examples/jsm/misc/VolumeSlice.js +1 -0
  56. package/examples/jsm/objects/InstancedPoints.js +2 -4
  57. package/examples/jsm/objects/LensflareMesh.js +4 -2
  58. package/examples/jsm/objects/SkyMesh.js +5 -3
  59. package/examples/jsm/objects/Water2Mesh.js +7 -3
  60. package/examples/jsm/objects/WaterMesh.js +12 -10
  61. package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
  62. package/examples/jsm/postprocessing/SSRPass.js +6 -0
  63. package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
  64. package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
  65. package/examples/jsm/shaders/FXAAShader.js +225 -224
  66. package/examples/jsm/transpiler/AST.js +2 -2
  67. package/examples/jsm/transpiler/GLSLDecoder.js +57 -25
  68. package/examples/jsm/transpiler/ShaderToyDecoder.js +1 -1
  69. package/examples/jsm/transpiler/TSLEncoder.js +11 -6
  70. package/{src/nodes → examples/jsm/tsl}/display/AfterImageNode.js +18 -21
  71. package/{src/nodes → examples/jsm/tsl}/display/AnaglyphPassNode.js +2 -6
  72. package/{src/nodes → examples/jsm/tsl}/display/AnamorphicNode.js +12 -18
  73. package/{src/nodes → examples/jsm/tsl}/display/BleachBypass.js +1 -3
  74. package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +12 -41
  75. package/{src/nodes → examples/jsm/tsl}/display/DenoiseNode.js +60 -47
  76. package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +4 -9
  77. package/{src/nodes → examples/jsm/tsl}/display/DotScreenNode.js +2 -9
  78. package/examples/jsm/tsl/display/FXAANode.js +316 -0
  79. package/{src/nodes → examples/jsm/tsl}/display/FilmNode.js +4 -7
  80. package/{src/nodes → examples/jsm/tsl}/display/GTAONode.js +73 -78
  81. package/{src/nodes → examples/jsm/tsl}/display/GaussianBlurNode.js +78 -42
  82. package/examples/jsm/tsl/display/LensflareNode.js +161 -0
  83. package/{src/nodes → examples/jsm/tsl}/display/Lut3DNode.js +3 -5
  84. package/{src/nodes → examples/jsm/tsl}/display/MotionBlur.js +2 -3
  85. package/examples/jsm/tsl/display/OutlineNode.js +434 -0
  86. package/{src/nodes → examples/jsm/tsl}/display/ParallaxBarrierPassNode.js +2 -5
  87. package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +5 -17
  88. package/{src/nodes → examples/jsm/tsl}/display/RGBShiftNode.js +2 -6
  89. package/examples/jsm/tsl/display/SMAANode.js +620 -0
  90. package/{src/nodes → examples/jsm/tsl}/display/SSAAPassNode.js +10 -25
  91. package/examples/jsm/tsl/display/SSRNode.js +366 -0
  92. package/{src/nodes → examples/jsm/tsl}/display/Sepia.js +1 -2
  93. package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +4 -12
  94. package/{src/nodes → examples/jsm/tsl}/display/StereoCompositePassNode.js +9 -11
  95. package/{src/nodes → examples/jsm/tsl}/display/StereoPassNode.js +10 -11
  96. package/examples/jsm/tsl/display/TRAAPassNode.js +355 -0
  97. package/{src/nodes → examples/jsm/tsl}/display/TransitionNode.js +3 -7
  98. package/examples/jsm/tsl/display/hashBlur.js +24 -0
  99. package/examples/jsm/tsl/lighting/TiledLightsNode.js +389 -0
  100. package/examples/jsm/utils/SceneOptimizer.js +410 -0
  101. package/examples/jsm/utils/UVsDebug.js +1 -1
  102. package/examples/jsm/utils/{TextureUtilsGPU.js → WebGPUTextureUtils.js} +2 -1
  103. package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
  104. package/examples/jsm/webxr/Text2D.js +6 -6
  105. package/package.json +4 -4
  106. package/src/Three.Core.js +178 -0
  107. package/src/Three.TSL.js +526 -0
  108. package/src/Three.WebGPU.Nodes.js +9 -186
  109. package/src/Three.WebGPU.js +8 -186
  110. package/src/Three.js +1 -177
  111. package/src/animation/AnimationClip.js +2 -2
  112. package/src/animation/AnimationObjectGroup.js +2 -2
  113. package/src/audio/Audio.js +38 -0
  114. package/src/cameras/PerspectiveCamera.js +6 -6
  115. package/src/cameras/StereoCamera.js +2 -2
  116. package/src/constants.js +1 -6
  117. package/src/core/BufferGeometry.js +48 -8
  118. package/src/core/InterleavedBuffer.js +4 -4
  119. package/src/core/Object3D.js +2 -2
  120. package/src/extras/core/Curve.js +3 -3
  121. package/src/extras/core/Shape.js +2 -2
  122. package/src/geometries/CylinderGeometry.js +2 -2
  123. package/src/geometries/EdgesGeometry.js +2 -2
  124. package/src/geometries/LatheGeometry.js +2 -2
  125. package/src/lights/SpotLightShadow.js +2 -2
  126. package/src/materials/LineDashedMaterial.js +0 -1
  127. package/src/materials/Material.js +2 -2
  128. package/src/materials/MeshPhongMaterial.js +1 -1
  129. package/src/materials/MeshPhysicalMaterial.js +2 -2
  130. package/src/materials/MeshStandardMaterial.js +2 -2
  131. package/src/materials/nodes/Line2NodeMaterial.js +32 -13
  132. package/src/materials/nodes/LineDashedNodeMaterial.js +4 -2
  133. package/src/materials/nodes/NodeMaterial.js +93 -23
  134. package/src/materials/nodes/SpriteNodeMaterial.js +11 -2
  135. package/src/materials/nodes/manager/NodeMaterialObserver.js +119 -7
  136. package/src/math/ColorManagement.js +143 -102
  137. package/src/math/Line3.js +2 -2
  138. package/src/math/Quaternion.js +2 -2
  139. package/src/math/Spherical.js +3 -3
  140. package/src/math/Vector2.js +7 -7
  141. package/src/math/Vector3.js +9 -9
  142. package/src/math/Vector4.js +22 -9
  143. package/src/nodes/Nodes.js +2 -21
  144. package/src/nodes/TSL.js +9 -25
  145. package/src/nodes/accessors/Arrays.js +27 -0
  146. package/src/nodes/accessors/BuiltinNode.js +26 -0
  147. package/src/nodes/accessors/Camera.js +0 -1
  148. package/src/nodes/accessors/ClippingNode.js +76 -42
  149. package/src/nodes/accessors/InstanceNode.js +17 -20
  150. package/src/nodes/accessors/InstancedMeshNode.js +26 -0
  151. package/src/nodes/accessors/Lights.js +32 -0
  152. package/src/nodes/accessors/SceneNode.js +35 -1
  153. package/src/nodes/accessors/StorageBufferNode.js +61 -19
  154. package/src/nodes/accessors/StorageTextureNode.js +10 -4
  155. package/src/nodes/accessors/TextureNode.js +1 -1
  156. package/src/nodes/accessors/VelocityNode.js +13 -3
  157. package/src/nodes/code/FunctionCallNode.js +16 -5
  158. package/src/nodes/code/ScriptableNode.js +4 -4
  159. package/src/nodes/core/Node.js +1 -0
  160. package/src/nodes/core/NodeBuilder.js +31 -14
  161. package/src/nodes/core/NodeUtils.js +28 -0
  162. package/src/nodes/core/VarNode.js +15 -3
  163. package/src/nodes/core/constants.js +6 -0
  164. package/src/nodes/display/BlendModes.js +99 -0
  165. package/src/nodes/display/ColorAdjustment.js +53 -4
  166. package/src/nodes/display/ColorSpaceFunctions.js +5 -5
  167. package/src/nodes/display/ColorSpaceNode.js +27 -39
  168. package/src/nodes/display/PassNode.js +6 -4
  169. package/src/nodes/display/ToneMappingNode.js +1 -1
  170. package/src/nodes/display/ToonOutlinePassNode.js +3 -3
  171. package/src/nodes/display/ViewportDepthNode.js +48 -1
  172. package/src/nodes/functions/PhysicalLightingModel.js +21 -15
  173. package/src/nodes/functions/material/getAlphaHashThreshold.js +70 -0
  174. package/src/nodes/functions/material/getGeometryRoughness.js +8 -2
  175. package/src/nodes/functions/material/getParallaxCorrectNormal.js +22 -0
  176. package/src/nodes/gpgpu/ComputeNode.js +9 -1
  177. package/src/nodes/lighting/AnalyticLightNode.js +23 -419
  178. package/src/nodes/lighting/LightsNode.js +24 -12
  179. package/src/nodes/lighting/PointLightNode.js +41 -22
  180. package/src/nodes/lighting/PointShadowNode.js +254 -0
  181. package/src/nodes/lighting/RectAreaLightNode.js +3 -0
  182. package/src/nodes/lighting/ShadowNode.js +593 -0
  183. package/src/nodes/lighting/SpotLightNode.js +14 -2
  184. package/src/nodes/utils/LoopNode.js +2 -2
  185. package/src/nodes/utils/Oscillators.js +6 -0
  186. package/src/nodes/utils/PostProcessingUtils.js +89 -0
  187. package/src/nodes/utils/RTTNode.js +9 -1
  188. package/src/nodes/utils/ReflectorNode.js +101 -15
  189. package/src/nodes/utils/StorageArrayElementNode.js +2 -2
  190. package/src/nodes/utils/Timer.js +29 -0
  191. package/src/objects/BatchedMesh.js +472 -296
  192. package/src/objects/ClippingGroup.js +19 -0
  193. package/src/objects/Skeleton.js +2 -2
  194. package/src/renderers/WebGLRenderer.js +183 -109
  195. package/src/renderers/common/Animation.js +23 -11
  196. package/src/renderers/common/Attributes.js +4 -0
  197. package/src/renderers/common/Backend.js +2 -0
  198. package/src/renderers/common/Background.js +15 -5
  199. package/src/renderers/common/Bindings.js +23 -6
  200. package/src/renderers/common/ClippingContext.js +77 -85
  201. package/src/renderers/common/Constants.js +2 -1
  202. package/src/renderers/common/Geometries.js +20 -0
  203. package/src/renderers/common/IndirectStorageBufferAttribute.js +15 -0
  204. package/src/renderers/common/Lighting.js +45 -0
  205. package/src/renderers/common/PostProcessingUtils.js +86 -0
  206. package/src/renderers/common/RenderList.js +48 -17
  207. package/src/renderers/common/RenderLists.js +4 -2
  208. package/src/renderers/common/RenderObject.js +45 -28
  209. package/src/renderers/common/RenderObjects.js +12 -6
  210. package/src/renderers/common/Renderer.js +222 -77
  211. package/src/renderers/common/Textures.js +41 -17
  212. package/src/renderers/common/UniformsGroup.js +16 -4
  213. package/src/renderers/common/extras/PMREMGenerator.js +89 -13
  214. package/src/renderers/common/nodes/NodeLibrary.js +2 -15
  215. package/src/renderers/common/nodes/NodeStorageBuffer.js +2 -3
  216. package/src/renderers/common/nodes/NodeUniform.js +42 -0
  217. package/src/renderers/common/nodes/Nodes.js +2 -2
  218. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
  219. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
  220. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
  221. package/src/renderers/webgl/WebGLBackground.js +20 -1
  222. package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
  223. package/src/renderers/webgl/WebGLCapabilities.js +0 -7
  224. package/src/renderers/webgl/WebGLGeometries.js +0 -28
  225. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
  226. package/src/renderers/webgl/WebGLProgram.js +24 -28
  227. package/src/renderers/webgl/WebGLPrograms.js +5 -2
  228. package/src/renderers/webgl/WebGLState.js +37 -1
  229. package/src/renderers/webgl/WebGLTextures.js +29 -12
  230. package/src/renderers/webgl-fallback/WebGLBackend.js +111 -37
  231. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +2 -7
  232. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +43 -12
  233. package/src/renderers/webgl-fallback/utils/WebGLState.js +26 -1
  234. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +37 -9
  235. package/src/renderers/webgpu/WebGPUBackend.js +152 -56
  236. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -1
  237. package/src/renderers/webgpu/WebGPURenderer.js +1 -1
  238. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +0 -8
  239. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +13 -34
  240. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +192 -92
  241. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +12 -4
  242. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +15 -2
  243. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +72 -7
  244. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +29 -9
  245. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +29 -7
  246. package/src/renderers/webgpu/utils/WebGPUUtils.js +0 -1
  247. package/src/renderers/webxr/WebXRManager.js +4 -4
  248. package/src/textures/Source.js +2 -2
  249. package/src/textures/Texture.js +2 -2
  250. package/examples/jsm/cameras/CinematicCamera.js +0 -208
  251. package/src/nodes/display/BlendMode.js +0 -54
  252. package/src/nodes/display/FXAANode.js +0 -332
  253. package/src/nodes/utils/OscNode.js +0 -85
  254. package/src/nodes/utils/TimerNode.js +0 -97
  255. /package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +0 -0
@@ -3,8 +3,6 @@ export * from './animation/CCDIKSolver.js';
3
3
  export * from './animation/MMDAnimationHelper.js';
4
4
  export * from './animation/MMDPhysics.js';
5
5
 
6
- export * from './cameras/CinematicCamera.js';
7
-
8
6
  export { default as WebGL } from './capabilities/WebGL.js';
9
7
 
10
8
  export * from './controls/ArcballControls.js';
@@ -131,6 +129,8 @@ export * from './loaders/VTKLoader.js';
131
129
  export * from './loaders/XYZLoader.js';
132
130
 
133
131
  export * from './materials/MeshGouraudMaterial.js';
132
+ export * from './materials/LDrawConditionalLineMaterial.js';
133
+ export * from './materials/MeshPostProcessingMaterial.js';
134
134
 
135
135
  export * from './math/Capsule.js';
136
136
  export * from './math/ColorConverter.js';
@@ -274,7 +274,7 @@ export * as SceneUtils from './utils/SceneUtils.js';
274
274
  export * from './utils/ShadowMapViewer.js';
275
275
  export * as SkeletonUtils from './utils/SkeletonUtils.js';
276
276
  export * as SortUtils from './utils/SortUtils.js';
277
- export * from './utils/TextureUtils.js';
277
+ export * from './utils/WebGLTextureUtils.js';
278
278
  export * from './utils/UVsDebug.js';
279
279
  export * from './utils/WorkerPool.js';
280
280
 
@@ -61,6 +61,8 @@ class MMDAnimationHelper {
61
61
  this.sharedPhysics = false;
62
62
  this.masterPhysics = null;
63
63
 
64
+ console.warn( 'THREE.MMDAnimationHelper: The module has been deprecated and will be removed with r172. Please migrate to https://github.com/takahirox/three-mmd-loader instead.' );
65
+
64
66
  }
65
67
 
66
68
  /**
@@ -68,6 +68,8 @@ class MMDPhysics {
68
68
 
69
69
  this._init( mesh, rigidBodyParams, constraintParams );
70
70
 
71
+ console.warn( 'THREE.MMDPhysics: The module has been deprecated and will be removed with r172. Please migrate to https://github.com/takahirox/three-mmd-loader instead.' );
72
+
71
73
  }
72
74
 
73
75
  /**
@@ -1,13 +1,4 @@
1
- if ( self.GPUShaderStage === undefined ) {
2
-
3
- self.GPUShaderStage = { VERTEX: 1, FRAGMENT: 2, COMPUTE: 4 };
4
-
5
- }
6
-
7
- // statics
8
-
9
- let isAvailable = navigator.gpu !== undefined;
10
-
1
+ let isAvailable = ( typeof navigator !== 'undefined' && navigator.gpu !== undefined );
11
2
 
12
3
  if ( typeof window !== 'undefined' && isAvailable ) {
13
4
 
@@ -204,6 +204,7 @@ class ArcballControls extends Controls {
204
204
  this.enableRotate = true;
205
205
  this.enableZoom = true;
206
206
  this.enableGizmos = true;
207
+ this.enableFocus = true;
207
208
 
208
209
  this.minDistance = 0;
209
210
  this.maxDistance = Infinity;
@@ -697,7 +698,7 @@ class ArcballControls extends Controls {
697
698
 
698
699
  onDoubleTap( event ) {
699
700
 
700
- if ( this.enabled && this.enablePan && this.scene != null ) {
701
+ if ( this.enabled && this.enablePan && this.enableFocus && this.scene != null ) {
701
702
 
702
703
  this.dispatchEvent( _startEvent );
703
704
 
@@ -2036,29 +2037,32 @@ class ArcballControls extends Controls {
2036
2037
  let state;
2037
2038
  if ( this.object.isOrthographicCamera ) {
2038
2039
 
2039
- state = JSON.stringify( { arcballState: {
2040
+ state = JSON.stringify( {
2041
+ arcballState: {
2042
+ cameraFar: this.object.far,
2043
+ cameraMatrix: this.object.matrix,
2044
+ cameraNear: this.object.near,
2045
+ cameraUp: this.object.up,
2046
+ cameraZoom: this.object.zoom,
2047
+ gizmoMatrix: this._gizmos.matrix
2040
2048
 
2041
- cameraFar: this.object.far,
2042
- cameraMatrix: this.object.matrix,
2043
- cameraNear: this.object.near,
2044
- cameraUp: this.object.up,
2045
- cameraZoom: this.object.zoom,
2046
- gizmoMatrix: this._gizmos.matrix
2047
-
2048
- } } );
2049
+ }
2050
+ } );
2049
2051
 
2050
2052
  } else if ( this.object.isPerspectiveCamera ) {
2051
2053
 
2052
- state = JSON.stringify( { arcballState: {
2053
- cameraFar: this.object.far,
2054
- cameraFov: this.object.fov,
2055
- cameraMatrix: this.object.matrix,
2056
- cameraNear: this.object.near,
2057
- cameraUp: this.object.up,
2058
- cameraZoom: this.object.zoom,
2059
- gizmoMatrix: this._gizmos.matrix
2054
+ state = JSON.stringify( {
2055
+ arcballState: {
2056
+ cameraFar: this.object.far,
2057
+ cameraFov: this.object.fov,
2058
+ cameraMatrix: this.object.matrix,
2059
+ cameraNear: this.object.near,
2060
+ cameraUp: this.object.up,
2061
+ cameraZoom: this.object.zoom,
2062
+ gizmoMatrix: this._gizmos.matrix
2060
2063
 
2061
- } } );
2064
+ }
2065
+ } );
2062
2066
 
2063
2067
  }
2064
2068
 
@@ -2233,7 +2237,7 @@ class ArcballControls extends Controls {
2233
2237
  * @param {Matrix4} camera Transformation to be applied to the camera
2234
2238
  * @param {Matrix4} gizmos Transformation to be applied to gizmos
2235
2239
  */
2236
- setTransformationMatrices( camera = null, gizmos = null ) {
2240
+ setTransformationMatrices( camera = null, gizmos = null ) {
2237
2241
 
2238
2242
  if ( camera != null ) {
2239
2243
 
@@ -2620,7 +2624,7 @@ class ArcballControls extends Controls {
2620
2624
  this.applyTransformMatrix( this.scale( newDistance / distance, this._gizmos.position ) );
2621
2625
  this.updateMatrixState();
2622
2626
 
2623
- }
2627
+ }
2624
2628
 
2625
2629
  //check fov
2626
2630
  if ( this.object.fov < this.minFov || this.object.fov > this.maxFov ) {
@@ -784,11 +784,19 @@ class OrbitControls extends Controls {
784
784
 
785
785
  if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
786
786
 
787
- this._rotateUp( _twoPI * this.rotateSpeed / this.domElement.clientHeight );
787
+ if ( this.enableRotate ) {
788
+
789
+ this._rotateUp( _twoPI * this.rotateSpeed / this.domElement.clientHeight );
790
+
791
+ }
788
792
 
789
793
  } else {
790
794
 
791
- this._pan( 0, this.keyPanSpeed );
795
+ if ( this.enablePan ) {
796
+
797
+ this._pan( 0, this.keyPanSpeed );
798
+
799
+ }
792
800
 
793
801
  }
794
802
 
@@ -799,11 +807,19 @@ class OrbitControls extends Controls {
799
807
 
800
808
  if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
801
809
 
802
- this._rotateUp( - _twoPI * this.rotateSpeed / this.domElement.clientHeight );
810
+ if ( this.enableRotate ) {
811
+
812
+ this._rotateUp( - _twoPI * this.rotateSpeed / this.domElement.clientHeight );
813
+
814
+ }
803
815
 
804
816
  } else {
805
817
 
806
- this._pan( 0, - this.keyPanSpeed );
818
+ if ( this.enablePan ) {
819
+
820
+ this._pan( 0, - this.keyPanSpeed );
821
+
822
+ }
807
823
 
808
824
  }
809
825
 
@@ -814,11 +830,19 @@ class OrbitControls extends Controls {
814
830
 
815
831
  if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
816
832
 
817
- this._rotateLeft( _twoPI * this.rotateSpeed / this.domElement.clientHeight );
833
+ if ( this.enableRotate ) {
834
+
835
+ this._rotateLeft( _twoPI * this.rotateSpeed / this.domElement.clientHeight );
836
+
837
+ }
818
838
 
819
839
  } else {
820
840
 
821
- this._pan( this.keyPanSpeed, 0 );
841
+ if ( this.enablePan ) {
842
+
843
+ this._pan( this.keyPanSpeed, 0 );
844
+
845
+ }
822
846
 
823
847
  }
824
848
 
@@ -829,11 +853,19 @@ class OrbitControls extends Controls {
829
853
 
830
854
  if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
831
855
 
832
- this._rotateLeft( - _twoPI * this.rotateSpeed / this.domElement.clientHeight );
856
+ if ( this.enableRotate ) {
857
+
858
+ this._rotateLeft( - _twoPI * this.rotateSpeed / this.domElement.clientHeight );
859
+
860
+ }
833
861
 
834
862
  } else {
835
863
 
836
- this._pan( - this.keyPanSpeed, 0 );
864
+ if ( this.enablePan ) {
865
+
866
+ this._pan( - this.keyPanSpeed, 0 );
867
+
868
+ }
837
869
 
838
870
  }
839
871
 
@@ -1340,7 +1372,7 @@ function onMouseWheel( event ) {
1340
1372
 
1341
1373
  function onKeyDown( event ) {
1342
1374
 
1343
- if ( this.enabled === false || this.enablePan === false ) return;
1375
+ if ( this.enabled === false ) return;
1344
1376
 
1345
1377
  this._handleKeyDown( event );
1346
1378
 
@@ -127,14 +127,11 @@ function onMouseMove( event ) {
127
127
 
128
128
  if ( this.enabled === false || this.isLocked === false ) return;
129
129
 
130
- const movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
131
- const movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
132
-
133
130
  const camera = this.object;
134
131
  _euler.setFromQuaternion( camera.quaternion );
135
132
 
136
- _euler.y -= movementX * 0.002 * this.pointerSpeed;
137
- _euler.x -= movementY * 0.002 * this.pointerSpeed;
133
+ _euler.y -= event.movementX * 0.002 * this.pointerSpeed;
134
+ _euler.x -= event.movementY * 0.002 * this.pointerSpeed;
138
135
 
139
136
  _euler.x = Math.max( _PI_2 - this.maxPolarAngle, Math.min( _PI_2 - this.minPolarAngle, _euler.x ) );
140
137
 
@@ -110,6 +110,12 @@ class TransformControls extends Controls {
110
110
  defineProperty( 'showX', true );
111
111
  defineProperty( 'showY', true );
112
112
  defineProperty( 'showZ', true );
113
+ defineProperty( 'minX', - Infinity );
114
+ defineProperty( 'maxX', Infinity );
115
+ defineProperty( 'minY', - Infinity );
116
+ defineProperty( 'maxY', Infinity );
117
+ defineProperty( 'minZ', - Infinity );
118
+ defineProperty( 'maxZ', Infinity );
113
119
 
114
120
  // Reusable utility variables
115
121
 
@@ -372,6 +378,10 @@ class TransformControls extends Controls {
372
378
 
373
379
  }
374
380
 
381
+ object.position.x = Math.max( this.minX, Math.min( this.maxX, object.position.x ) );
382
+ object.position.y = Math.max( this.minY, Math.min( this.maxY, object.position.y ) );
383
+ object.position.z = Math.max( this.minZ, Math.min( this.maxZ, object.position.z ) );
384
+
375
385
  } else if ( mode === 'scale' ) {
376
386
 
377
387
  if ( axis.search( 'XYZ' ) !== - 1 ) {
@@ -536,12 +546,7 @@ class TransformControls extends Controls {
536
546
 
537
547
  this.disconnect();
538
548
 
539
- this.traverse( function ( child ) {
540
-
541
- if ( child.geometry ) child.geometry.dispose();
542
- if ( child.material ) child.material.dispose();
543
-
544
- } );
549
+ this._root.dispose();
545
550
 
546
551
  }
547
552
 
@@ -811,6 +816,17 @@ class TransformControlsRoot extends Object3D {
811
816
 
812
817
  }
813
818
 
819
+ dispose() {
820
+
821
+ this.traverse( function ( child ) {
822
+
823
+ if ( child.geometry ) child.geometry.dispose();
824
+ if ( child.material ) child.material.dispose();
825
+
826
+ } );
827
+
828
+ }
829
+
814
830
  }
815
831
 
816
832
  class TransformControlsGizmo extends Object3D {
@@ -11,7 +11,7 @@ import { CSMFrustum } from './CSMFrustum.js';
11
11
  import { CSMShader } from './CSMShader.js';
12
12
 
13
13
  const _cameraToLightMatrix = new Matrix4();
14
- const _lightSpaceFrustum = new CSMFrustum();
14
+ const _lightSpaceFrustum = new CSMFrustum( { webGL: true } );
15
15
  const _center = new Vector3();
16
16
  const _bbox = new Box3();
17
17
  const _uniformArray = [];
@@ -38,7 +38,7 @@ export class CSM {
38
38
  this.lightMargin = data.lightMargin || 200;
39
39
  this.customSplitsCallback = data.customSplitsCallback;
40
40
  this.fade = false;
41
- this.mainFrustum = new CSMFrustum();
41
+ this.mainFrustum = new CSMFrustum( { webGL: true } );
42
42
  this.frustums = [];
43
43
  this.breaks = [];
44
44
 
@@ -8,6 +8,8 @@ class CSMFrustum {
8
8
 
9
9
  data = data || {};
10
10
 
11
+ this.zNear = data.webGL === true ? - 1 : 0;
12
+
11
13
  this.vertices = {
12
14
  near: [
13
15
  new Vector3(),
@@ -33,6 +35,7 @@ class CSMFrustum {
33
35
 
34
36
  setFromProjectionMatrix( projectionMatrix, maxFar ) {
35
37
 
38
+ const zNear = this.zNear;
36
39
  const isOrthographic = projectionMatrix.elements[ 2 * 4 + 3 ] === 0;
37
40
 
38
41
  inverseProjectionMatrix.copy( projectionMatrix ).invert();
@@ -42,10 +45,10 @@ class CSMFrustum {
42
45
  // 2 --- 1
43
46
  // clip space spans from [-1, 1]
44
47
 
45
- this.vertices.near[ 0 ].set( 1, 1, - 1 );
46
- this.vertices.near[ 1 ].set( 1, - 1, - 1 );
47
- this.vertices.near[ 2 ].set( - 1, - 1, - 1 );
48
- this.vertices.near[ 3 ].set( - 1, 1, - 1 );
48
+ this.vertices.near[ 0 ].set( 1, 1, zNear );
49
+ this.vertices.near[ 1 ].set( 1, - 1, zNear );
50
+ this.vertices.near[ 2 ].set( - 1, - 1, zNear );
51
+ this.vertices.near[ 3 ].set( - 1, 1, zNear );
49
52
  this.vertices.near.forEach( function ( v ) {
50
53
 
51
54
  v.applyMatrix4( inverseProjectionMatrix );
@@ -78,6 +78,8 @@ class CSMHelper extends Group {
78
78
  const cascadePlanes = this.cascadePlanes;
79
79
  const shadowLines = this.shadowLines;
80
80
 
81
+ if ( camera === null ) return;
82
+
81
83
  this.position.copy( camera.position );
82
84
  this.quaternion.copy( camera.quaternion );
83
85
  this.scale.copy( camera.scale );