super-three 0.179.0 → 0.184.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 (696) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -4
  3. package/build/three.cjs +14522 -12207
  4. package/build/three.core.js +12005 -10954
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +2270 -1005
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +63 -18
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +16573 -7890
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +16533 -7888
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  15. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  16. package/examples/jsm/Addons.js +12 -4
  17. package/examples/jsm/animation/CCDIKSolver.js +8 -4
  18. package/examples/jsm/controls/ArcballControls.js +15 -12
  19. package/examples/jsm/controls/DragControls.js +9 -59
  20. package/examples/jsm/controls/FirstPersonControls.js +61 -57
  21. package/examples/jsm/controls/FlyControls.js +5 -1
  22. package/examples/jsm/controls/MapControls.js +55 -1
  23. package/examples/jsm/controls/OrbitControls.js +113 -10
  24. package/examples/jsm/controls/PointerLockControls.js +2 -10
  25. package/examples/jsm/controls/TrackballControls.js +9 -9
  26. package/examples/jsm/controls/TransformControls.js +35 -3
  27. package/examples/jsm/csm/CSM.js +2 -1
  28. package/examples/jsm/csm/CSMShadowNode.js +6 -2
  29. package/examples/jsm/effects/AnaglyphEffect.js +102 -7
  30. package/examples/jsm/effects/AsciiEffect.js +8 -8
  31. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  32. package/examples/jsm/environments/RoomEnvironment.js +3 -0
  33. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  34. package/examples/jsm/exporters/EXRExporter.js +2 -2
  35. package/examples/jsm/exporters/GLTFExporter.js +185 -34
  36. package/examples/jsm/exporters/KTX2Exporter.js +4 -2
  37. package/examples/jsm/exporters/PLYExporter.js +1 -1
  38. package/examples/jsm/exporters/USDZExporter.js +31 -5
  39. package/examples/jsm/geometries/DecalGeometry.js +3 -3
  40. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  41. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  42. package/examples/jsm/geometries/TextGeometry.js +21 -2
  43. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  44. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  45. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  46. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
  47. package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
  48. package/examples/jsm/helpers/ViewHelper.js +110 -13
  49. package/examples/jsm/inspector/Extension.js +13 -0
  50. package/examples/jsm/inspector/Inspector.js +542 -0
  51. package/examples/jsm/inspector/RendererInspector.js +425 -0
  52. package/examples/jsm/inspector/extensions/extensions.json +6 -0
  53. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  54. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  55. package/examples/jsm/inspector/tabs/Console.js +238 -0
  56. package/examples/jsm/inspector/tabs/Memory.js +128 -0
  57. package/examples/jsm/inspector/tabs/Parameters.js +380 -0
  58. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  59. package/examples/jsm/inspector/tabs/Settings.js +264 -0
  60. package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
  61. package/examples/jsm/inspector/tabs/Viewer.js +268 -0
  62. package/examples/jsm/inspector/ui/Graph.js +95 -0
  63. package/examples/jsm/inspector/ui/Item.js +170 -0
  64. package/examples/jsm/inspector/ui/List.js +75 -0
  65. package/examples/jsm/inspector/ui/Profiler.js +2072 -0
  66. package/examples/jsm/inspector/ui/Style.js +1667 -0
  67. package/examples/jsm/inspector/ui/Tab.js +265 -0
  68. package/examples/jsm/inspector/ui/Values.js +476 -0
  69. package/examples/jsm/inspector/ui/utils.js +69 -0
  70. package/examples/jsm/interaction/InteractionManager.js +226 -0
  71. package/examples/jsm/interactive/HTMLMesh.js +6 -10
  72. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  73. package/examples/jsm/interactive/SelectionBox.js +30 -0
  74. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  75. package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
  76. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  77. package/examples/jsm/lighting/LightProbeGrid.js +651 -0
  78. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  79. package/examples/jsm/lines/Line2.js +3 -3
  80. package/examples/jsm/lines/LineGeometry.js +1 -1
  81. package/examples/jsm/lines/LineMaterial.js +7 -1
  82. package/examples/jsm/lines/LineSegments2.js +2 -2
  83. package/examples/jsm/lines/Wireframe.js +2 -2
  84. package/examples/jsm/lines/WireframeGeometry2.js +1 -1
  85. package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
  86. package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
  87. package/examples/jsm/loaders/3DMLoader.js +5 -4
  88. package/examples/jsm/loaders/3MFLoader.js +3 -3
  89. package/examples/jsm/loaders/AMFLoader.js +2 -2
  90. package/examples/jsm/loaders/ColladaLoader.js +27 -4029
  91. package/examples/jsm/loaders/DDSLoader.js +1 -1
  92. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  93. package/examples/jsm/loaders/EXRLoader.js +692 -53
  94. package/examples/jsm/loaders/FBXLoader.js +237 -39
  95. package/examples/jsm/loaders/FontLoader.js +23 -5
  96. package/examples/jsm/loaders/GCodeLoader.js +34 -8
  97. package/examples/jsm/loaders/GLTFLoader.js +159 -185
  98. package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
  99. package/examples/jsm/loaders/HDRLoader.js +485 -0
  100. package/examples/jsm/loaders/KMZLoader.js +5 -5
  101. package/examples/jsm/loaders/KTX2Loader.js +162 -53
  102. package/examples/jsm/loaders/KTXLoader.js +2 -2
  103. package/examples/jsm/loaders/LDrawLoader.js +41 -50
  104. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  105. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  106. package/examples/jsm/loaders/LWOLoader.js +9 -41
  107. package/examples/jsm/loaders/MaterialXLoader.js +22 -5
  108. package/examples/jsm/loaders/NRRDLoader.js +2 -2
  109. package/examples/jsm/loaders/OBJLoader.js +1 -1
  110. package/examples/jsm/loaders/PCDLoader.js +4 -2
  111. package/examples/jsm/loaders/PDBLoader.js +1 -1
  112. package/examples/jsm/loaders/RGBELoader.js +7 -473
  113. package/examples/jsm/loaders/SVGLoader.js +4 -4
  114. package/examples/jsm/loaders/TDSLoader.js +0 -2
  115. package/examples/jsm/loaders/TGALoader.js +0 -2
  116. package/examples/jsm/loaders/TTFLoader.js +4 -4
  117. package/examples/jsm/loaders/USDLoader.js +100 -40
  118. package/examples/jsm/loaders/UltraHDRLoader.js +287 -162
  119. package/examples/jsm/loaders/VOXLoader.js +660 -117
  120. package/examples/jsm/loaders/VRMLLoader.js +79 -2
  121. package/examples/jsm/loaders/VTKLoader.js +42 -25
  122. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  123. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  124. package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
  125. package/examples/jsm/loaders/usd/USDAParser.js +450 -363
  126. package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
  127. package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
  128. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
  129. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  130. package/examples/jsm/math/ColorSpaces.js +19 -1
  131. package/examples/jsm/math/ConvexHull.js +3 -3
  132. package/examples/jsm/math/ImprovedNoise.js +1 -1
  133. package/examples/jsm/math/Lut.js +2 -2
  134. package/examples/jsm/math/Octree.js +131 -1
  135. package/examples/jsm/math/SimplexNoise.js +1 -1
  136. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  137. package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
  138. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  139. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  140. package/examples/jsm/misc/RollerCoaster.js +42 -4
  141. package/examples/jsm/misc/TubePainter.js +383 -40
  142. package/examples/jsm/misc/Volume.js +1 -2
  143. package/examples/jsm/misc/VolumeSlice.js +0 -1
  144. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  145. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  146. package/examples/jsm/objects/LensflareMesh.js +1 -1
  147. package/examples/jsm/objects/Reflector.js +73 -25
  148. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  149. package/examples/jsm/objects/Sky.js +91 -7
  150. package/examples/jsm/objects/SkyMesh.js +151 -17
  151. package/examples/jsm/objects/Water.js +7 -6
  152. package/examples/jsm/objects/Water2.js +5 -3
  153. package/examples/jsm/objects/WaterMesh.js +11 -13
  154. package/examples/jsm/physics/AmmoPhysics.js +12 -7
  155. package/examples/jsm/physics/JoltPhysics.js +10 -6
  156. package/examples/jsm/physics/RapierPhysics.js +9 -5
  157. package/examples/jsm/postprocessing/EffectComposer.js +7 -5
  158. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  159. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  160. package/examples/jsm/postprocessing/OutputPass.js +9 -0
  161. package/examples/jsm/postprocessing/RenderPass.js +10 -0
  162. package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
  163. package/examples/jsm/postprocessing/SSRPass.js +37 -8
  164. package/examples/jsm/postprocessing/UnrealBloomPass.js +56 -24
  165. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  166. package/examples/jsm/renderers/CSS3DRenderer.js +8 -7
  167. package/examples/jsm/renderers/Projector.js +246 -28
  168. package/examples/jsm/renderers/SVGRenderer.js +175 -61
  169. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  170. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  171. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  172. package/examples/jsm/shaders/BokehShader.js +1 -1
  173. package/examples/jsm/shaders/BokehShader2.js +1 -1
  174. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  175. package/examples/jsm/shaders/FocusShader.js +1 -1
  176. package/examples/jsm/shaders/GTAOShader.js +21 -8
  177. package/examples/jsm/shaders/HalftoneShader.js +12 -1
  178. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  179. package/examples/jsm/shaders/PoissonDenoiseShader.js +8 -4
  180. package/examples/jsm/shaders/SAOShader.js +17 -4
  181. package/examples/jsm/shaders/SSAOShader.js +11 -1
  182. package/examples/jsm/shaders/SSRShader.js +7 -6
  183. package/examples/jsm/shaders/SepiaShader.js +1 -1
  184. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  185. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  186. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +3 -5
  187. package/examples/jsm/shaders/VignetteShader.js +1 -1
  188. package/examples/jsm/transpiler/AST.js +44 -0
  189. package/examples/jsm/transpiler/GLSLDecoder.js +85 -25
  190. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
  191. package/examples/jsm/transpiler/TSLEncoder.js +52 -10
  192. package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
  193. package/examples/jsm/transpiler/WGSLEncoder.js +51 -0
  194. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  195. package/examples/jsm/tsl/display/AfterImageNode.js +36 -24
  196. package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
  197. package/examples/jsm/tsl/display/AnamorphicNode.js +40 -5
  198. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  199. package/examples/jsm/tsl/display/BloomNode.js +23 -9
  200. package/examples/jsm/tsl/display/CRT.js +150 -0
  201. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +5 -37
  202. package/examples/jsm/tsl/display/DenoiseNode.js +3 -1
  203. package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
  204. package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
  205. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  206. package/examples/jsm/tsl/display/FXAANode.js +2 -2
  207. package/examples/jsm/tsl/display/GTAONode.js +59 -9
  208. package/examples/jsm/tsl/display/GaussianBlurNode.js +68 -35
  209. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  210. package/examples/jsm/tsl/display/LensflareNode.js +1 -1
  211. package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
  212. package/examples/jsm/tsl/display/OutlineNode.js +81 -20
  213. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
  214. package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
  215. package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
  216. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  217. package/examples/jsm/tsl/display/SMAANode.js +2 -2
  218. package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
  219. package/examples/jsm/tsl/display/SSGINode.js +638 -0
  220. package/examples/jsm/tsl/display/SSRNode.js +186 -69
  221. package/examples/jsm/tsl/display/SSSNode.js +490 -0
  222. package/examples/jsm/tsl/display/Shape.js +29 -0
  223. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  224. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
  225. package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
  226. package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
  227. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  228. package/examples/jsm/tsl/display/TRAANode.js +381 -75
  229. package/examples/jsm/tsl/display/TransitionNode.js +1 -1
  230. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  231. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  232. package/examples/jsm/tsl/display/hashBlur.js +16 -18
  233. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  234. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  235. package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
  236. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  237. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  238. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  239. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  240. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  241. package/examples/jsm/tsl/math/Bayer.js +53 -3
  242. package/examples/jsm/utils/BufferGeometryUtils.js +3 -4
  243. package/examples/jsm/utils/ColorUtils.js +76 -0
  244. package/examples/jsm/utils/LDrawUtils.js +1 -1
  245. package/examples/jsm/utils/ShadowMapViewer.js +24 -10
  246. package/examples/jsm/utils/ShadowMapViewerGPU.js +13 -6
  247. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  248. package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
  249. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  250. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  251. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  252. package/examples/jsm/webxr/XRHandModelFactory.js +4 -7
  253. package/package.json +27 -38
  254. package/src/Three.Core.js +7 -3
  255. package/src/Three.TSL.js +61 -16
  256. package/src/Three.WebGPU.Nodes.js +7 -0
  257. package/src/Three.WebGPU.js +11 -0
  258. package/src/Three.js +1 -0
  259. package/src/animation/AnimationAction.js +12 -2
  260. package/src/animation/AnimationClip.js +21 -5
  261. package/src/animation/AnimationMixer.js +9 -3
  262. package/src/animation/AnimationObjectGroup.js +2 -1
  263. package/src/animation/AnimationUtils.js +1 -12
  264. package/src/animation/KeyframeTrack.js +54 -14
  265. package/src/animation/PropertyBinding.js +12 -11
  266. package/src/animation/PropertyMixer.js +4 -4
  267. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  268. package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
  269. package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
  270. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
  271. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  272. package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
  273. package/src/audio/Audio.js +11 -10
  274. package/src/audio/AudioContext.js +2 -2
  275. package/src/audio/AudioListener.js +5 -3
  276. package/src/audio/PositionalAudio.js +1 -1
  277. package/src/cameras/Camera.js +32 -2
  278. package/src/cameras/CubeCamera.js +20 -0
  279. package/src/cameras/OrthographicCamera.js +1 -1
  280. package/src/cameras/PerspectiveCamera.js +1 -1
  281. package/src/cameras/StereoCamera.js +2 -2
  282. package/src/constants.js +100 -7
  283. package/src/core/BufferAttribute.js +13 -1
  284. package/src/core/BufferGeometry.js +24 -12
  285. package/src/core/Clock.js +7 -0
  286. package/src/core/EventDispatcher.js +1 -1
  287. package/src/core/InterleavedBuffer.js +1 -1
  288. package/src/core/InterleavedBufferAttribute.js +3 -2
  289. package/src/core/Object3D.js +55 -6
  290. package/src/core/Raycaster.js +4 -3
  291. package/src/core/RenderTarget.js +14 -5
  292. package/src/extras/Controls.js +5 -4
  293. package/src/extras/DataUtils.js +2 -1
  294. package/src/extras/Earcut.js +6 -0
  295. package/src/extras/ImageUtils.js +2 -2
  296. package/src/extras/PMREMGenerator.js +259 -57
  297. package/src/extras/TextureUtils.js +6 -1
  298. package/src/extras/core/Curve.js +2 -1
  299. package/src/extras/core/Interpolations.js +7 -1
  300. package/src/extras/core/ShapePath.js +4 -4
  301. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  302. package/src/extras/lib/earcut.js +8 -8
  303. package/src/geometries/BoxGeometry.js +1 -0
  304. package/src/geometries/CapsuleGeometry.js +1 -0
  305. package/src/geometries/CircleGeometry.js +1 -0
  306. package/src/geometries/ConeGeometry.js +1 -0
  307. package/src/geometries/CylinderGeometry.js +1 -0
  308. package/src/geometries/DodecahedronGeometry.js +1 -0
  309. package/src/geometries/ExtrudeGeometry.js +10 -8
  310. package/src/geometries/IcosahedronGeometry.js +1 -0
  311. package/src/geometries/LatheGeometry.js +1 -0
  312. package/src/geometries/OctahedronGeometry.js +1 -0
  313. package/src/geometries/PlaneGeometry.js +1 -0
  314. package/src/geometries/PolyhedronGeometry.js +1 -1
  315. package/src/geometries/RingGeometry.js +1 -0
  316. package/src/geometries/ShapeGeometry.js +1 -0
  317. package/src/geometries/SphereGeometry.js +1 -0
  318. package/src/geometries/TetrahedronGeometry.js +1 -0
  319. package/src/geometries/TorusGeometry.js +9 -3
  320. package/src/geometries/TorusKnotGeometry.js +1 -0
  321. package/src/geometries/TubeGeometry.js +1 -0
  322. package/src/helpers/CameraHelper.js +4 -1
  323. package/src/helpers/DirectionalLightHelper.js +4 -1
  324. package/src/helpers/HemisphereLightHelper.js +3 -0
  325. package/src/helpers/PointLightHelper.js +1 -25
  326. package/src/helpers/SpotLightHelper.js +3 -0
  327. package/src/lights/DirectionalLight.js +13 -0
  328. package/src/lights/HemisphereLight.js +10 -0
  329. package/src/lights/Light.js +1 -11
  330. package/src/lights/LightProbe.js +0 -15
  331. package/src/lights/LightShadow.js +15 -6
  332. package/src/lights/PointLight.js +15 -0
  333. package/src/lights/PointLightShadow.js +0 -86
  334. package/src/lights/SpotLight.js +22 -1
  335. package/src/lights/webgpu/IESSpotLight.js +2 -1
  336. package/src/lights/webgpu/ProjectorLight.js +1 -1
  337. package/src/loaders/AnimationLoader.js +2 -1
  338. package/src/loaders/AudioLoader.js +13 -2
  339. package/src/loaders/BufferGeometryLoader.js +2 -2
  340. package/src/loaders/Cache.js +30 -2
  341. package/src/loaders/DataTextureLoader.js +6 -4
  342. package/src/loaders/FileLoader.js +4 -4
  343. package/src/loaders/ImageBitmapLoader.js +17 -13
  344. package/src/loaders/ImageLoader.js +1 -1
  345. package/src/loaders/Loader.js +9 -3
  346. package/src/loaders/LoadingManager.js +25 -3
  347. package/src/loaders/MaterialLoader.js +6 -4
  348. package/src/loaders/ObjectLoader.js +57 -17
  349. package/src/loaders/TextureLoader.js +1 -1
  350. package/src/loaders/nodes/NodeLoader.js +5 -4
  351. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  352. package/src/materials/Material.js +18 -3
  353. package/src/materials/MeshBasicMaterial.js +1 -0
  354. package/src/materials/MeshDepthMaterial.js +1 -0
  355. package/src/materials/MeshDistanceMaterial.js +1 -1
  356. package/src/materials/MeshLambertMaterial.js +11 -1
  357. package/src/materials/MeshMatcapMaterial.js +22 -0
  358. package/src/materials/MeshNormalMaterial.js +1 -0
  359. package/src/materials/MeshPhongMaterial.js +11 -1
  360. package/src/materials/MeshPhysicalMaterial.js +2 -1
  361. package/src/materials/MeshStandardMaterial.js +8 -7
  362. package/src/materials/MeshToonMaterial.js +2 -1
  363. package/src/materials/PointsMaterial.js +1 -1
  364. package/src/materials/ShaderMaterial.js +22 -3
  365. package/src/materials/nodes/Line2NodeMaterial.js +36 -9
  366. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
  367. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  368. package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
  369. package/src/materials/nodes/NodeMaterial.js +95 -35
  370. package/src/materials/nodes/PointsNodeMaterial.js +81 -28
  371. package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
  372. package/src/materials/nodes/manager/NodeMaterialObserver.js +194 -88
  373. package/src/math/Color.js +6 -5
  374. package/src/math/ColorManagement.js +9 -3
  375. package/src/math/Cylindrical.js +1 -1
  376. package/src/math/Euler.js +2 -1
  377. package/src/math/Line3.js +6 -5
  378. package/src/math/MathUtils.js +23 -21
  379. package/src/math/Matrix2.js +14 -10
  380. package/src/math/Matrix3.js +15 -11
  381. package/src/math/Matrix4.js +94 -81
  382. package/src/math/Plane.js +5 -4
  383. package/src/math/Quaternion.js +60 -84
  384. package/src/math/Sphere.js +1 -1
  385. package/src/math/Spherical.js +1 -1
  386. package/src/math/Triangle.js +1 -1
  387. package/src/math/Vector2.js +11 -7
  388. package/src/math/Vector3.js +15 -13
  389. package/src/math/Vector4.js +13 -9
  390. package/src/math/interpolants/BezierInterpolant.js +108 -0
  391. package/src/nodes/Nodes.js +86 -65
  392. package/src/nodes/TSL.js +11 -8
  393. package/src/nodes/accessors/Arrays.js +1 -1
  394. package/src/nodes/accessors/BatchNode.js +10 -10
  395. package/src/nodes/accessors/Bitangent.js +5 -5
  396. package/src/nodes/accessors/BufferAttributeNode.js +107 -15
  397. package/src/nodes/accessors/BufferNode.js +30 -3
  398. package/src/nodes/accessors/Camera.js +260 -13
  399. package/src/nodes/accessors/ClippingNode.js +10 -9
  400. package/src/nodes/accessors/CubeTextureNode.js +32 -6
  401. package/src/nodes/accessors/InstanceNode.js +164 -39
  402. package/src/nodes/accessors/Lights.js +10 -0
  403. package/src/nodes/accessors/MaterialNode.js +9 -1
  404. package/src/nodes/accessors/MaterialProperties.js +2 -5
  405. package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
  406. package/src/nodes/accessors/ModelNode.js +1 -1
  407. package/src/nodes/accessors/Normal.js +16 -15
  408. package/src/nodes/accessors/Object3DNode.js +2 -2
  409. package/src/nodes/accessors/Position.js +51 -3
  410. package/src/nodes/accessors/ReferenceBaseNode.js +7 -7
  411. package/src/nodes/accessors/ReferenceNode.js +11 -10
  412. package/src/nodes/accessors/RendererReferenceNode.js +1 -2
  413. package/src/nodes/accessors/SceneProperties.js +47 -0
  414. package/src/nodes/accessors/SkinningNode.js +27 -26
  415. package/src/nodes/accessors/StorageBufferNode.js +14 -24
  416. package/src/nodes/accessors/StorageTextureNode.js +62 -9
  417. package/src/nodes/accessors/Tangent.js +4 -14
  418. package/src/nodes/accessors/Texture3DNode.js +41 -31
  419. package/src/nodes/accessors/TextureNode.js +193 -63
  420. package/src/nodes/accessors/UniformArrayNode.js +6 -4
  421. package/src/nodes/accessors/UserDataNode.js +1 -2
  422. package/src/nodes/accessors/VertexColorNode.js +1 -2
  423. package/src/nodes/code/FunctionCallNode.js +25 -5
  424. package/src/nodes/code/FunctionNode.js +25 -3
  425. package/src/nodes/core/ArrayNode.js +22 -2
  426. package/src/nodes/core/AssignNode.js +6 -5
  427. package/src/nodes/core/AttributeNode.js +5 -4
  428. package/src/nodes/core/BypassNode.js +1 -1
  429. package/src/nodes/core/ContextNode.js +133 -15
  430. package/src/nodes/core/IndexNode.js +4 -3
  431. package/src/nodes/core/InputNode.js +3 -2
  432. package/src/nodes/core/InspectorNode.js +128 -0
  433. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +41 -8
  434. package/src/nodes/core/MRTNode.js +48 -2
  435. package/src/nodes/core/Node.js +264 -46
  436. package/src/nodes/core/NodeBuilder.js +453 -87
  437. package/src/nodes/core/NodeError.js +28 -0
  438. package/src/nodes/core/NodeFrame.js +31 -23
  439. package/src/nodes/core/NodeFunction.js +2 -1
  440. package/src/nodes/core/NodeParser.js +2 -1
  441. package/src/nodes/core/NodeUniform.js +1 -1
  442. package/src/nodes/core/NodeUtils.js +25 -97
  443. package/src/nodes/core/OutputStructNode.js +12 -10
  444. package/src/nodes/core/ParameterNode.js +34 -3
  445. package/src/nodes/core/PropertyNode.js +26 -3
  446. package/src/nodes/core/StackNode.js +99 -23
  447. package/src/nodes/core/StackTrace.js +139 -0
  448. package/src/nodes/core/StructNode.js +22 -8
  449. package/src/nodes/core/StructTypeNode.js +13 -18
  450. package/src/nodes/core/SubBuildNode.js +4 -4
  451. package/src/nodes/core/UniformGroupNode.js +36 -6
  452. package/src/nodes/core/UniformNode.js +37 -13
  453. package/src/nodes/core/VarNode.js +96 -34
  454. package/src/nodes/core/VaryingNode.js +2 -18
  455. package/src/nodes/display/BlendModes.js +0 -63
  456. package/src/nodes/display/BumpMapNode.js +1 -1
  457. package/src/nodes/display/ColorAdjustment.js +18 -1
  458. package/src/nodes/display/ColorSpaceNode.js +3 -3
  459. package/src/nodes/display/FrontFacingNode.js +4 -8
  460. package/src/nodes/display/NormalMapNode.js +41 -5
  461. package/src/nodes/display/PassNode.js +175 -25
  462. package/src/nodes/display/RenderOutputNode.js +35 -9
  463. package/src/nodes/display/ScreenNode.js +47 -15
  464. package/src/nodes/display/ToneMappingNode.js +32 -5
  465. package/src/nodes/display/ToonOutlinePassNode.js +10 -2
  466. package/src/nodes/display/ViewportDepthNode.js +52 -4
  467. package/src/nodes/display/ViewportDepthTextureNode.js +14 -6
  468. package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
  469. package/src/nodes/display/ViewportTextureNode.js +72 -14
  470. package/src/nodes/fog/Fog.js +18 -34
  471. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  472. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  473. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  474. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  475. package/src/nodes/functions/BasicLightingModel.js +2 -1
  476. package/src/nodes/functions/PhysicalLightingModel.js +128 -46
  477. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  478. package/src/nodes/geometry/RangeNode.js +44 -6
  479. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  480. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  481. package/src/nodes/gpgpu/ComputeBuiltinNode.js +4 -4
  482. package/src/nodes/gpgpu/ComputeNode.js +76 -38
  483. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  484. package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -4
  485. package/src/nodes/lighting/AnalyticLightNode.js +53 -0
  486. package/src/nodes/lighting/EnvironmentNode.js +34 -9
  487. package/src/nodes/lighting/LightsNode.js +10 -32
  488. package/src/nodes/lighting/PointShadowNode.js +167 -148
  489. package/src/nodes/lighting/ShadowFilterNode.js +55 -65
  490. package/src/nodes/lighting/ShadowNode.js +189 -44
  491. package/src/nodes/math/BitcastNode.js +156 -0
  492. package/src/nodes/math/BitcountNode.js +433 -0
  493. package/src/nodes/math/ConditionalNode.js +25 -8
  494. package/src/nodes/math/MathNode.js +98 -57
  495. package/src/nodes/math/OperatorNode.js +8 -5
  496. package/src/nodes/math/PackFloatNode.js +98 -0
  497. package/src/nodes/math/UnpackFloatNode.js +96 -0
  498. package/src/nodes/pmrem/PMREMNode.js +1 -1
  499. package/src/nodes/pmrem/PMREMUtils.js +111 -2
  500. package/src/nodes/shapes/Shapes.js +1 -1
  501. package/src/nodes/tsl/TSLBase.js +6 -3
  502. package/src/nodes/tsl/TSLCore.js +488 -166
  503. package/src/nodes/utils/ArrayElementNode.js +14 -1
  504. package/src/nodes/utils/ConvertNode.js +1 -1
  505. package/src/nodes/utils/DebugNode.js +14 -13
  506. package/src/nodes/utils/EventNode.js +67 -2
  507. package/src/nodes/utils/FlipNode.js +1 -1
  508. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  509. package/src/nodes/utils/JoinNode.js +7 -4
  510. package/src/nodes/utils/LoopNode.js +20 -24
  511. package/src/nodes/utils/MemberNode.js +60 -8
  512. package/src/nodes/utils/Packing.js +13 -1
  513. package/src/nodes/utils/PostProcessingUtils.js +60 -1
  514. package/src/nodes/utils/RTTNode.js +14 -4
  515. package/src/nodes/utils/ReflectorNode.js +61 -11
  516. package/src/nodes/utils/Remap.js +48 -0
  517. package/src/nodes/utils/RotateNode.js +1 -1
  518. package/src/nodes/utils/SampleNode.js +12 -2
  519. package/src/nodes/utils/SetNode.js +1 -1
  520. package/src/nodes/utils/SplitNode.js +12 -1
  521. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  522. package/src/nodes/utils/Timer.js +0 -47
  523. package/src/nodes/utils/UVUtils.js +28 -0
  524. package/src/objects/BatchedMesh.js +46 -18
  525. package/src/objects/InstancedMesh.js +30 -3
  526. package/src/objects/LOD.js +1 -1
  527. package/src/objects/Line.js +3 -2
  528. package/src/objects/LineSegments.js +2 -1
  529. package/src/objects/Mesh.js +1 -1
  530. package/src/objects/Points.js +1 -1
  531. package/src/objects/Skeleton.js +12 -2
  532. package/src/objects/SkinnedMesh.js +29 -10
  533. package/src/objects/Sprite.js +4 -3
  534. package/src/renderers/WebGLRenderer.js +372 -179
  535. package/src/renderers/common/Animation.js +16 -4
  536. package/src/renderers/common/Attributes.js +16 -2
  537. package/src/renderers/common/Backend.js +137 -35
  538. package/src/renderers/common/Background.js +28 -14
  539. package/src/renderers/common/BindGroup.js +1 -16
  540. package/src/renderers/common/Binding.js +11 -0
  541. package/src/renderers/common/Bindings.js +83 -12
  542. package/src/renderers/common/BlendMode.js +143 -0
  543. package/src/renderers/common/Buffer.js +40 -0
  544. package/src/renderers/common/BundleGroup.js +1 -1
  545. package/src/renderers/common/CanvasTarget.js +341 -0
  546. package/src/renderers/common/ChainMap.js +30 -6
  547. package/src/renderers/common/ComputePipeline.js +1 -1
  548. package/src/renderers/common/CubeRenderTarget.js +51 -7
  549. package/src/renderers/common/DataMap.js +1 -1
  550. package/src/renderers/common/Geometries.js +55 -3
  551. package/src/renderers/common/Info.js +337 -6
  552. package/src/renderers/common/InspectorBase.js +151 -0
  553. package/src/renderers/common/Lighting.js +5 -21
  554. package/src/renderers/common/Pipelines.js +41 -8
  555. package/src/renderers/common/PostProcessing.js +9 -226
  556. package/src/renderers/common/QuadMesh.js +7 -1
  557. package/src/renderers/common/ReadbackBuffer.js +78 -0
  558. package/src/renderers/common/RenderBundle.js +3 -1
  559. package/src/renderers/common/RenderBundles.js +7 -3
  560. package/src/renderers/common/RenderContext.js +18 -2
  561. package/src/renderers/common/RenderContexts.js +33 -49
  562. package/src/renderers/common/RenderList.js +7 -3
  563. package/src/renderers/common/RenderLists.js +2 -1
  564. package/src/renderers/common/RenderObject.js +32 -6
  565. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  566. package/src/renderers/common/RenderObjects.js +22 -6
  567. package/src/renderers/common/RenderPipeline.js +232 -17
  568. package/src/renderers/common/Renderer.js +927 -335
  569. package/src/renderers/common/RendererUtils.js +9 -0
  570. package/src/renderers/common/SampledTexture.js +9 -1
  571. package/src/renderers/common/Sampler.js +52 -14
  572. package/src/renderers/common/StorageBuffer.js +13 -1
  573. package/src/renderers/common/StorageTexture.js +9 -1
  574. package/src/renderers/common/Textures.js +208 -47
  575. package/src/renderers/common/TimestampQueryPool.js +70 -6
  576. package/src/renderers/common/Uniform.js +8 -0
  577. package/src/renderers/common/UniformsGroup.js +64 -2
  578. package/src/renderers/common/XRManager.js +79 -51
  579. package/src/renderers/common/extras/PMREMGenerator.js +176 -79
  580. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  581. package/src/renderers/common/nodes/NodeLibrary.js +9 -7
  582. package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +260 -95
  583. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  584. package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
  585. package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
  586. package/src/renderers/shaders/DFGLUTData.js +49 -0
  587. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  588. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  589. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  590. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  591. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  592. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  593. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -2
  594. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
  595. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  596. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  597. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
  598. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  599. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  600. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
  601. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  602. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +152 -59
  603. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
  604. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  605. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
  606. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
  607. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  608. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  609. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  610. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +221 -190
  611. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  612. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  613. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  614. package/src/renderers/shaders/ShaderChunk.js +5 -3
  615. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  616. package/src/renderers/shaders/ShaderLib/depth.glsl.js +4 -1
  617. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
  618. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  619. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  620. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  621. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  622. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  623. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  624. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  625. package/src/renderers/shaders/ShaderLib.js +7 -6
  626. package/src/renderers/shaders/UniformsLib.js +8 -5
  627. package/src/renderers/shaders/UniformsUtils.js +52 -9
  628. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  629. package/src/renderers/webgl/WebGLBackground.js +15 -15
  630. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  631. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  632. package/src/renderers/webgl/WebGLCapabilities.js +11 -5
  633. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  634. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  635. package/src/renderers/webgl/WebGLGeometries.js +10 -7
  636. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  637. package/src/renderers/webgl/WebGLInfo.js +3 -1
  638. package/src/renderers/webgl/WebGLLights.js +18 -1
  639. package/src/renderers/webgl/WebGLMaterials.js +24 -13
  640. package/src/renderers/webgl/WebGLObjects.js +3 -1
  641. package/src/renderers/webgl/WebGLOutput.js +270 -0
  642. package/src/renderers/webgl/WebGLProgram.js +63 -122
  643. package/src/renderers/webgl/WebGLPrograms.js +65 -52
  644. package/src/renderers/webgl/WebGLRenderLists.js +15 -0
  645. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  646. package/src/renderers/webgl/WebGLShadowMap.js +191 -26
  647. package/src/renderers/webgl/WebGLState.js +79 -40
  648. package/src/renderers/webgl/WebGLTextures.js +234 -68
  649. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  650. package/src/renderers/webgl/WebGLUniformsGroups.js +24 -3
  651. package/src/renderers/webgl/WebGLUtils.js +8 -3
  652. package/src/renderers/webgl-fallback/WebGLBackend.js +438 -235
  653. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  654. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +339 -84
  655. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  656. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  657. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  658. package/src/renderers/webgl-fallback/utils/WebGLState.js +229 -11
  659. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +237 -72
  660. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +56 -27
  661. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +8 -3
  662. package/src/renderers/webgpu/WebGPUBackend.js +403 -253
  663. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  664. package/src/renderers/webgpu/WebGPURenderer.js +5 -3
  665. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +491 -123
  666. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +108 -34
  667. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +360 -201
  668. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  669. package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -2
  670. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +111 -54
  671. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +155 -205
  672. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +407 -149
  673. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +36 -13
  674. package/src/renderers/webgpu/utils/WebGPUUtils.js +55 -13
  675. package/src/renderers/webxr/WebXRController.js +12 -0
  676. package/src/renderers/webxr/WebXRManager.js +45 -29
  677. package/src/textures/CubeDepthTexture.js +76 -0
  678. package/src/textures/ExternalTexture.js +15 -4
  679. package/src/textures/HTMLTexture.js +74 -0
  680. package/src/textures/Source.js +5 -4
  681. package/src/textures/Texture.js +19 -7
  682. package/src/textures/VideoTexture.js +2 -3
  683. package/src/utils.js +344 -3
  684. package/examples/jsm/loaders/RGBMLoader.js +0 -1148
  685. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
  686. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
  687. package/examples/jsm/shaders/GodRaysShader.js +0 -333
  688. package/src/nodes/accessors/SceneNode.js +0 -144
  689. package/src/nodes/code/ScriptableNode.js +0 -726
  690. package/src/nodes/code/ScriptableValueNode.js +0 -253
  691. package/src/nodes/display/PosterizeNode.js +0 -65
  692. package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
  693. package/src/nodes/utils/RemapNode.js +0 -125
  694. package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
  695. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  696. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
@@ -22,7 +22,7 @@ class FirstPersonControls extends Controls {
22
22
  * Constructs a new controls instance.
23
23
  *
24
24
  * @param {Object3D} object - The object that is managed by the controls.
25
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
25
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
26
26
  */
27
27
  constructor( object, domElement = null ) {
28
28
 
@@ -60,14 +60,6 @@ class FirstPersonControls extends Controls {
60
60
  */
61
61
  this.autoForward = false;
62
62
 
63
- /**
64
- * Whether it's possible to look around or not.
65
- *
66
- * @type {boolean}
67
- * @default true
68
- */
69
- this.activeLook = true;
70
-
71
63
  /**
72
64
  * Whether or not the camera's height influences the forward movement speed.
73
65
  * Use the properties `heightCoef`, `heightMin` and `heightMax` for configuration.
@@ -141,14 +133,16 @@ class FirstPersonControls extends Controls {
141
133
  this._pointerX = 0;
142
134
  this._pointerY = 0;
143
135
 
136
+ this._pointerDownX = 0;
137
+ this._pointerDownY = 0;
138
+
139
+ this._pointerCount = 0;
140
+
144
141
  this._moveForward = false;
145
142
  this._moveBackward = false;
146
143
  this._moveLeft = false;
147
144
  this._moveRight = false;
148
145
 
149
- this._viewHalfX = 0;
150
- this._viewHalfY = 0;
151
-
152
146
  this._lat = 0;
153
147
  this._lon = 0;
154
148
 
@@ -167,8 +161,6 @@ class FirstPersonControls extends Controls {
167
161
 
168
162
  this.connect( domElement );
169
163
 
170
- this.handleResize();
171
-
172
164
  }
173
165
 
174
166
  this._setOrientation();
@@ -187,6 +179,8 @@ class FirstPersonControls extends Controls {
187
179
  this.domElement.addEventListener( 'pointerup', this._onPointerUp );
188
180
  this.domElement.addEventListener( 'contextmenu', this._onContextMenu );
189
181
 
182
+ this.domElement.style.touchAction = 'none'; // Disable touch scroll
183
+
190
184
  }
191
185
 
192
186
  disconnect() {
@@ -194,11 +188,13 @@ class FirstPersonControls extends Controls {
194
188
  window.removeEventListener( 'keydown', this._onKeyDown );
195
189
  window.removeEventListener( 'keyup', this._onKeyUp );
196
190
 
197
- this.domElement.removeEventListener( 'pointerdown', this._onPointerMove );
198
- this.domElement.removeEventListener( 'pointermove', this._onPointerDown );
191
+ this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
192
+ this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
199
193
  this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
200
194
  this.domElement.removeEventListener( 'contextmenu', this._onContextMenu );
201
195
 
196
+ this.domElement.style.touchAction = ''; // Restore touch scroll
197
+
202
198
  }
203
199
 
204
200
  dispose() {
@@ -207,25 +203,6 @@ class FirstPersonControls extends Controls {
207
203
 
208
204
  }
209
205
 
210
- /**
211
- * Must be called if the application window is resized.
212
- */
213
- handleResize() {
214
-
215
- if ( this.domElement === document ) {
216
-
217
- this._viewHalfX = window.innerWidth / 2;
218
- this._viewHalfY = window.innerHeight / 2;
219
-
220
- } else {
221
-
222
- this._viewHalfX = this.domElement.offsetWidth / 2;
223
- this._viewHalfY = this.domElement.offsetHeight / 2;
224
-
225
- }
226
-
227
- }
228
-
229
206
  /**
230
207
  * Rotates the camera towards the defined target position.
231
208
  *
@@ -282,13 +259,7 @@ class FirstPersonControls extends Controls {
282
259
  if ( this._moveUp ) this.object.translateY( actualMoveSpeed );
283
260
  if ( this._moveDown ) this.object.translateY( - actualMoveSpeed );
284
261
 
285
- let actualLookSpeed = delta * this.lookSpeed;
286
-
287
- if ( ! this.activeLook ) {
288
-
289
- actualLookSpeed = 0;
290
-
291
- }
262
+ const actualLookSpeed = delta * this.lookSpeed;
292
263
 
293
264
  let verticalLookRatio = 1;
294
265
 
@@ -298,8 +269,12 @@ class FirstPersonControls extends Controls {
298
269
 
299
270
  }
300
271
 
301
- this._lon -= this._pointerX * actualLookSpeed;
302
- if ( this.lookVertical ) this._lat -= this._pointerY * actualLookSpeed * verticalLookRatio;
272
+ if ( this.mouseDragOn ) {
273
+
274
+ this._lon -= this._pointerX * actualLookSpeed;
275
+ if ( this.lookVertical ) this._lat -= this._pointerY * actualLookSpeed * verticalLookRatio;
276
+
277
+ }
303
278
 
304
279
  this._lat = Math.max( - 85, Math.min( 85, this._lat ) );
305
280
 
@@ -332,6 +307,15 @@ class FirstPersonControls extends Controls {
332
307
 
333
308
  }
334
309
 
310
+ /**
311
+ * @deprecated, r184. This method is no longer needed.
312
+ */
313
+ handleResize() {
314
+
315
+ console.warn( 'THREE.FirstPersonControls: handleResize() has been removed.' );
316
+
317
+ }
318
+
335
319
  }
336
320
 
337
321
  function onPointerDown( event ) {
@@ -342,7 +326,16 @@ function onPointerDown( event ) {
342
326
 
343
327
  }
344
328
 
345
- if ( this.activeLook ) {
329
+ this.domElement.setPointerCapture( event.pointerId );
330
+
331
+ this._pointerCount ++;
332
+
333
+ if ( event.pointerType === 'touch' ) {
334
+
335
+ this._moveForward = this._pointerCount === 1;
336
+ this._moveBackward = this._pointerCount >= 2;
337
+
338
+ } else {
346
339
 
347
340
  switch ( event.button ) {
348
341
 
@@ -353,13 +346,28 @@ function onPointerDown( event ) {
353
346
 
354
347
  }
355
348
 
349
+ this._pointerDownX = event.pageX;
350
+ this._pointerDownY = event.pageY;
351
+
352
+ this._pointerX = 0;
353
+ this._pointerY = 0;
354
+
356
355
  this.mouseDragOn = true;
357
356
 
358
357
  }
359
358
 
360
359
  function onPointerUp( event ) {
361
360
 
362
- if ( this.activeLook ) {
361
+ this.domElement.releasePointerCapture( event.pointerId );
362
+
363
+ this._pointerCount --;
364
+
365
+ if ( event.pointerType === 'touch' ) {
366
+
367
+ this._moveForward = this._pointerCount === 1;
368
+ this._moveBackward = false;
369
+
370
+ } else {
363
371
 
364
372
  switch ( event.button ) {
365
373
 
@@ -370,23 +378,19 @@ function onPointerUp( event ) {
370
378
 
371
379
  }
372
380
 
373
- this.mouseDragOn = false;
381
+ this._pointerX = 0;
382
+ this._pointerY = 0;
383
+
384
+ if ( this._pointerCount === 0 ) this.mouseDragOn = false;
374
385
 
375
386
  }
376
387
 
377
388
  function onPointerMove( event ) {
378
389
 
379
- if ( this.domElement === document ) {
390
+ if ( this.mouseDragOn === false ) return;
380
391
 
381
- this._pointerX = event.pageX - this._viewHalfX;
382
- this._pointerY = event.pageY - this._viewHalfY;
383
-
384
- } else {
385
-
386
- this._pointerX = event.pageX - this.domElement.offsetLeft - this._viewHalfX;
387
- this._pointerY = event.pageY - this.domElement.offsetTop - this._viewHalfY;
388
-
389
- }
392
+ this._pointerX = event.pageX - this._pointerDownX;
393
+ this._pointerY = event.pageY - this._pointerDownY;
390
394
 
391
395
  }
392
396
 
@@ -29,7 +29,7 @@ class FlyControls extends Controls {
29
29
  * Constructs a new controls instance.
30
30
  *
31
31
  * @param {Object3D} object - The object that is managed by the controls.
32
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
32
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
33
33
  */
34
34
  constructor( object, domElement = null ) {
35
35
 
@@ -109,6 +109,8 @@ class FlyControls extends Controls {
109
109
  this.domElement.addEventListener( 'pointercancel', this._onPointerCancel );
110
110
  this.domElement.addEventListener( 'contextmenu', this._onContextMenu );
111
111
 
112
+ this.domElement.style.touchAction = 'none'; // Disable touch scroll
113
+
112
114
  }
113
115
 
114
116
  disconnect() {
@@ -122,6 +124,8 @@ class FlyControls extends Controls {
122
124
  this.domElement.removeEventListener( 'pointercancel', this._onPointerCancel );
123
125
  this.domElement.removeEventListener( 'contextmenu', this._onContextMenu );
124
126
 
127
+ this.domElement.style.touchAction = ''; // Restore touch scroll
128
+
125
129
  }
126
130
 
127
131
  dispose() {
@@ -1,7 +1,12 @@
1
- import { MOUSE, TOUCH } from 'three';
1
+ import { MOUSE, TOUCH, Plane, Raycaster, Vector2, Vector3 } from 'three';
2
2
 
3
3
  import { OrbitControls } from './OrbitControls.js';
4
4
 
5
+ const _plane = new Plane();
6
+ const _raycaster = new Raycaster();
7
+ const _mouse = new Vector2();
8
+ const _panCurrent = new Vector3();
9
+
5
10
  /**
6
11
  * This class is intended for transforming a camera over a map from bird's eye perspective.
7
12
  * The class shares its implementation with {@link OrbitControls} but uses a specific preset
@@ -55,6 +60,55 @@ class MapControls extends OrbitControls {
55
60
  */
56
61
  this.touches = { ONE: TOUCH.PAN, TWO: TOUCH.DOLLY_ROTATE };
57
62
 
63
+ this._panWorldStart = new Vector3();
64
+
65
+ }
66
+
67
+ _handleMouseDownPan( event ) {
68
+
69
+ super._handleMouseDownPan( event );
70
+
71
+ this._panOffset.set( 0, 0, 0 );
72
+
73
+ if ( this.screenSpacePanning === true ) return;
74
+
75
+ _plane.setFromNormalAndCoplanarPoint( this.object.up, this.target );
76
+
77
+ const element = this.domElement;
78
+ const rect = element.getBoundingClientRect();
79
+ _mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;
80
+ _mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;
81
+
82
+ _raycaster.setFromCamera( _mouse, this.object );
83
+ _raycaster.ray.intersectPlane( _plane, this._panWorldStart );
84
+
85
+ }
86
+
87
+ _handleMouseMovePan( event ) {
88
+
89
+ if ( this.screenSpacePanning === true ) {
90
+
91
+ super._handleMouseMovePan( event );
92
+ return;
93
+
94
+ }
95
+
96
+ const element = this.domElement;
97
+ const rect = element.getBoundingClientRect();
98
+ _mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;
99
+ _mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;
100
+
101
+ _raycaster.setFromCamera( _mouse, this.object );
102
+
103
+ if ( _raycaster.ray.intersectPlane( _plane, _panCurrent ) ) {
104
+
105
+ _panCurrent.sub( this._panWorldStart );
106
+ this._panOffset.copy( _panCurrent ).negate();
107
+
108
+ this.update();
109
+
110
+ }
111
+
58
112
  }
59
113
 
60
114
  }
@@ -91,7 +91,7 @@ class OrbitControls extends Controls {
91
91
  * Constructs a new controls instance.
92
92
  *
93
93
  * @param {Object3D} object - The object that is managed by the controls.
94
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
94
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
95
95
  */
96
96
  constructor( object, domElement = null ) {
97
97
 
@@ -391,6 +391,8 @@ class OrbitControls extends Controls {
391
391
  */
392
392
  this.zoom0 = this.object.zoom;
393
393
 
394
+ this._cursorStyle = 'auto';
395
+
394
396
  // the target DOM element for key events
395
397
  this._domElementKeyEvents = null;
396
398
 
@@ -462,6 +464,34 @@ class OrbitControls extends Controls {
462
464
 
463
465
  }
464
466
 
467
+ /**
468
+ * Defines the visual representation of the cursor.
469
+ *
470
+ * @type {('auto'|'grab')}
471
+ * @default 'auto'
472
+ */
473
+ set cursorStyle( type ) {
474
+
475
+ this._cursorStyle = type;
476
+
477
+ if ( type === 'grab' ) {
478
+
479
+ this.domElement.style.cursor = 'grab';
480
+
481
+ } else {
482
+
483
+ this.domElement.style.cursor = 'auto';
484
+
485
+ }
486
+
487
+ }
488
+
489
+ get cursorStyle() {
490
+
491
+ return this._cursorStyle;
492
+
493
+ }
494
+
465
495
  connect( element ) {
466
496
 
467
497
  super.connect( element );
@@ -475,15 +505,15 @@ class OrbitControls extends Controls {
475
505
  const document = this.domElement.getRootNode(); // offscreen canvas compatibility
476
506
  document.addEventListener( 'keydown', this._interceptControlDown, { passive: true, capture: true } );
477
507
 
478
- this.domElement.style.touchAction = 'none'; // disable touch scroll
508
+ this.domElement.style.touchAction = 'none'; // Disable touch scroll
479
509
 
480
510
  }
481
511
 
482
512
  disconnect() {
483
513
 
484
514
  this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
485
- this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
486
- this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
515
+ this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
516
+ this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
487
517
  this.domElement.removeEventListener( 'pointercancel', this._onPointerUp );
488
518
 
489
519
  this.domElement.removeEventListener( 'wheel', this._onMouseWheel );
@@ -494,7 +524,7 @@ class OrbitControls extends Controls {
494
524
  const document = this.domElement.getRootNode(); // offscreen canvas compatibility
495
525
  document.removeEventListener( 'keydown', this._interceptControlDown, { capture: true } );
496
526
 
497
- this.domElement.style.touchAction = 'auto';
527
+ this.domElement.style.touchAction = ''; // Restore touch scroll
498
528
 
499
529
  }
500
530
 
@@ -541,7 +571,7 @@ class OrbitControls extends Controls {
541
571
  * Adds key event listeners to the given DOM element.
542
572
  * `window` is a recommended argument for using this method.
543
573
  *
544
- * @param {HTMLDOMElement} domElement - The DOM element
574
+ * @param {HTMLElement} domElement - The DOM element
545
575
  */
546
576
  listenToKeyEvents( domElement ) {
547
577
 
@@ -594,6 +624,67 @@ class OrbitControls extends Controls {
594
624
 
595
625
  }
596
626
 
627
+ /**
628
+ * Programmatically pan the camera.
629
+ *
630
+ * @param {number} deltaX - The horizontal pan amount in pixels.
631
+ * @param {number} deltaY - The vertical pan amount in pixels.
632
+ */
633
+ pan( deltaX, deltaY ) {
634
+
635
+ this._pan( deltaX, deltaY );
636
+ this.update();
637
+
638
+ }
639
+
640
+ /**
641
+ * Programmatically dolly in (zoom in for perspective camera).
642
+ *
643
+ * @param {number} dollyScale - The dolly scale factor.
644
+ */
645
+ dollyIn( dollyScale ) {
646
+
647
+ this._dollyIn( dollyScale );
648
+ this.update();
649
+
650
+ }
651
+
652
+ /**
653
+ * Programmatically dolly out (zoom out for perspective camera).
654
+ *
655
+ * @param {number} dollyScale - The dolly scale factor.
656
+ */
657
+ dollyOut( dollyScale ) {
658
+
659
+ this._dollyOut( dollyScale );
660
+ this.update();
661
+
662
+ }
663
+
664
+ /**
665
+ * Programmatically rotate the camera left (around the vertical axis).
666
+ *
667
+ * @param {number} angle - The rotation angle in radians.
668
+ */
669
+ rotateLeft( angle ) {
670
+
671
+ this._rotateLeft( angle );
672
+ this.update();
673
+
674
+ }
675
+
676
+ /**
677
+ * Programmatically rotate the camera up (around the horizontal axis).
678
+ *
679
+ * @param {number} angle - The rotation angle in radians.
680
+ */
681
+ rotateUp( angle ) {
682
+
683
+ this._rotateUp( angle );
684
+ this.update();
685
+
686
+ }
687
+
597
688
  update( deltaTime = null ) {
598
689
 
599
690
  const position = this.object.position;
@@ -1458,8 +1549,8 @@ function onPointerDown( event ) {
1458
1549
 
1459
1550
  this.domElement.setPointerCapture( event.pointerId );
1460
1551
 
1461
- this.domElement.addEventListener( 'pointermove', this._onPointerMove );
1462
- this.domElement.addEventListener( 'pointerup', this._onPointerUp );
1552
+ this.domElement.ownerDocument.addEventListener( 'pointermove', this._onPointerMove );
1553
+ this.domElement.ownerDocument.addEventListener( 'pointerup', this._onPointerUp );
1463
1554
 
1464
1555
  }
1465
1556
 
@@ -1481,6 +1572,12 @@ function onPointerDown( event ) {
1481
1572
 
1482
1573
  }
1483
1574
 
1575
+ if ( this._cursorStyle === 'grab' ) {
1576
+
1577
+ this.domElement.style.cursor = 'grabbing';
1578
+
1579
+ }
1580
+
1484
1581
  }
1485
1582
 
1486
1583
  function onPointerMove( event ) {
@@ -1509,13 +1606,19 @@ function onPointerUp( event ) {
1509
1606
 
1510
1607
  this.domElement.releasePointerCapture( event.pointerId );
1511
1608
 
1512
- this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
1513
- this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
1609
+ this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
1610
+ this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
1514
1611
 
1515
1612
  this.dispatchEvent( _endEvent );
1516
1613
 
1517
1614
  this.state = _STATE.NONE;
1518
1615
 
1616
+ if ( this._cursorStyle === 'grab' ) {
1617
+
1618
+ this.domElement.style.cursor = 'grab';
1619
+
1620
+ }
1621
+
1519
1622
  break;
1520
1623
 
1521
1624
  case 1:
@@ -35,7 +35,7 @@ const _MOUSE_SENSITIVITY = 0.002;
35
35
  const _PI_2 = Math.PI / 2;
36
36
 
37
37
  /**
38
- * The implementation of this class is based on the [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.
38
+ * The implementation of this class is based on the [Pointer Lock API](https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API).
39
39
  * `PointerLockControls` is a perfect choice for first person 3D games.
40
40
  *
41
41
  * ```js
@@ -64,7 +64,7 @@ class PointerLockControls extends Controls {
64
64
  * Constructs a new controls instance.
65
65
  *
66
66
  * @param {Camera} camera - The camera that is managed by the controls.
67
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
67
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
68
68
  */
69
69
  constructor( camera, domElement = null ) {
70
70
 
@@ -141,14 +141,6 @@ class PointerLockControls extends Controls {
141
141
 
142
142
  }
143
143
 
144
- getObject() {
145
-
146
- console.warn( 'THREE.PointerLockControls: getObject() has been deprecated. Use controls.object instead.' ); // @deprecated r169
147
-
148
- return this.object;
149
-
150
- }
151
-
152
144
  /**
153
145
  * Returns the look direction of the camera.
154
146
  *
@@ -59,7 +59,7 @@ class TrackballControls extends Controls {
59
59
  * Constructs a new controls instance.
60
60
  *
61
61
  * @param {Object3D} object - The object that is managed by the controls.
62
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
62
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
63
63
  */
64
64
  constructor( object, domElement = null ) {
65
65
 
@@ -281,7 +281,7 @@ class TrackballControls extends Controls {
281
281
  this.domElement.addEventListener( 'wheel', this._onMouseWheel, { passive: false } );
282
282
  this.domElement.addEventListener( 'contextmenu', this._onContextMenu );
283
283
 
284
- this.domElement.style.touchAction = 'none'; // disable touch scroll
284
+ this.domElement.style.touchAction = 'none'; // Disable touch scroll
285
285
 
286
286
  }
287
287
 
@@ -291,13 +291,13 @@ class TrackballControls extends Controls {
291
291
  window.removeEventListener( 'keyup', this._onKeyUp );
292
292
 
293
293
  this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
294
- this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
295
- this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
294
+ this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
295
+ this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
296
296
  this.domElement.removeEventListener( 'pointercancel', this._onPointerCancel );
297
297
  this.domElement.removeEventListener( 'wheel', this._onMouseWheel );
298
298
  this.domElement.removeEventListener( 'contextmenu', this._onContextMenu );
299
299
 
300
- this.domElement.style.touchAction = 'auto'; // disable touch scroll
300
+ this.domElement.style.touchAction = ''; // Restore touch scroll
301
301
 
302
302
  }
303
303
 
@@ -660,8 +660,8 @@ function onPointerDown( event ) {
660
660
 
661
661
  this.domElement.setPointerCapture( event.pointerId );
662
662
 
663
- this.domElement.addEventListener( 'pointermove', this._onPointerMove );
664
- this.domElement.addEventListener( 'pointerup', this._onPointerUp );
663
+ this.domElement.ownerDocument.addEventListener( 'pointermove', this._onPointerMove );
664
+ this.domElement.ownerDocument.addEventListener( 'pointerup', this._onPointerUp );
665
665
 
666
666
  }
667
667
 
@@ -719,8 +719,8 @@ function onPointerUp( event ) {
719
719
 
720
720
  this.domElement.releasePointerCapture( event.pointerId );
721
721
 
722
- this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
723
- this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
722
+ this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
723
+ this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
724
724
 
725
725
  }
726
726
 
@@ -80,7 +80,7 @@ class TransformControls extends Controls {
80
80
  * Constructs a new controls instance.
81
81
  *
82
82
  * @param {Camera} camera - The camera of the rendered scene.
83
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
83
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
84
84
  */
85
85
  constructor( camera, domElement = null ) {
86
86
 
@@ -251,6 +251,33 @@ class TransformControls extends Controls {
251
251
  */
252
252
  defineProperty( 'showZ', true );
253
253
 
254
+ /**
255
+ * Whether the xy-plane helper should be visible or not.
256
+ *
257
+ * @name TransformControls#showXY
258
+ * @type {boolean}
259
+ * @default true
260
+ */
261
+ defineProperty( 'showXY', true );
262
+
263
+ /**
264
+ * Whether the yz-plane helper should be visible or not.
265
+ *
266
+ * @name TransformControls#showYZ
267
+ * @type {boolean}
268
+ * @default true
269
+ */
270
+ defineProperty( 'showYZ', true );
271
+
272
+ /**
273
+ * Whether the xz-axis helper should be visible or not.
274
+ *
275
+ * @name TransformControls#showXZ
276
+ * @type {boolean}
277
+ * @default true
278
+ */
279
+ defineProperty( 'showXZ', true );
280
+
254
281
  /**
255
282
  * The minimum allowed X position during translation.
256
283
  *
@@ -373,7 +400,7 @@ class TransformControls extends Controls {
373
400
  this.domElement.addEventListener( 'pointermove', this._onPointerHover );
374
401
  this.domElement.addEventListener( 'pointerup', this._onPointerUp );
375
402
 
376
- this.domElement.style.touchAction = 'none'; // disable touch scroll
403
+ this.domElement.style.touchAction = 'none'; // Disable touch scroll
377
404
 
378
405
  }
379
406
 
@@ -384,7 +411,7 @@ class TransformControls extends Controls {
384
411
  this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
385
412
  this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
386
413
 
387
- this.domElement.style.touchAction = 'auto';
414
+ this.domElement.style.touchAction = ''; // Restore touch scroll
388
415
 
389
416
  }
390
417
 
@@ -1784,6 +1811,11 @@ class TransformControlsGizmo extends Object3D {
1784
1811
  handle.visible = handle.visible && ( handle.name.indexOf( 'Z' ) === - 1 || this.showZ );
1785
1812
  handle.visible = handle.visible && ( handle.name.indexOf( 'E' ) === - 1 || ( this.showX && this.showY && this.showZ ) );
1786
1813
 
1814
+ // Hide disabled plane helpers
1815
+ handle.visible = handle.visible && ( handle.name.indexOf( 'XY' ) === - 1 || this.showXY );
1816
+ handle.visible = handle.visible && ( handle.name.indexOf( 'YZ' ) === - 1 || this.showYZ );
1817
+ handle.visible = handle.visible && ( handle.name.indexOf( 'XZ' ) === - 1 || this.showXZ );
1818
+
1787
1819
  // highlight selected axis
1788
1820
 
1789
1821
  handle.material._color = handle.material._color || handle.material.color.clone();
@@ -13,6 +13,7 @@ import { CSMShader } from './CSMShader.js';
13
13
  const _cameraToLightMatrix = new Matrix4();
14
14
  const _lightSpaceFrustum = new CSMFrustum( { webGL: true } );
15
15
  const _center = new Vector3();
16
+ const _origin = new Vector3();
16
17
  const _bbox = new Box3();
17
18
  const _uniformArray = [];
18
19
  const _logArray = [];
@@ -367,7 +368,7 @@ export class CSM {
367
368
 
368
369
  // for each frustum we need to find its min-max box aligned with the light orientation
369
370
  // the position in _lightOrientationMatrix does not matter, as we transform there and back
370
- _lightOrientationMatrix.lookAt( new Vector3(), this.lightDirection, _up );
371
+ _lightOrientationMatrix.lookAt( _origin, this.lightDirection, _up );
371
372
  _lightOrientationMatrixInverse.copy( _lightOrientationMatrix ).invert();
372
373
 
373
374
  for ( let i = 0; i < frustums.length; i ++ ) {