super-three 0.181.0 → 0.185.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 (693) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -4
  3. package/build/three.cjs +21332 -19201
  4. package/build/three.core.js +20908 -19853
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +1947 -862
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +37 -16
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +33628 -25197
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +33394 -25000
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/jsm/Addons.js +14 -3
  15. package/examples/jsm/animation/CCDIKSolver.js +7 -3
  16. package/examples/jsm/controls/ArcballControls.js +13 -6
  17. package/examples/jsm/controls/DragControls.js +2 -2
  18. package/examples/jsm/controls/FirstPersonControls.js +127 -86
  19. package/examples/jsm/controls/FlyControls.js +4 -0
  20. package/examples/jsm/controls/MapControls.js +55 -1
  21. package/examples/jsm/controls/OrbitControls.js +111 -8
  22. package/examples/jsm/controls/TrackballControls.js +8 -8
  23. package/examples/jsm/controls/TransformControls.js +102 -17
  24. package/examples/jsm/csm/CSM.js +2 -1
  25. package/examples/jsm/csm/CSMFrustum.js +31 -6
  26. package/examples/jsm/csm/CSMShadowNode.js +10 -3
  27. package/examples/jsm/effects/AnaglyphEffect.js +102 -7
  28. package/examples/jsm/effects/AsciiEffect.js +14 -1
  29. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  30. package/examples/jsm/environments/RoomEnvironment.js +3 -0
  31. package/examples/jsm/exporters/DRACOExporter.js +27 -6
  32. package/examples/jsm/exporters/EXRExporter.js +1 -1
  33. package/examples/jsm/exporters/GLTFExporter.js +266 -21
  34. package/examples/jsm/exporters/PLYExporter.js +286 -73
  35. package/examples/jsm/exporters/USDZExporter.js +353 -99
  36. package/examples/jsm/generators/CityGenerator.js +346 -0
  37. package/examples/jsm/generators/ForestGenerator.js +347 -0
  38. package/examples/jsm/generators/TerrainGenerator.js +504 -0
  39. package/examples/jsm/generators/TreeGenerator.js +377 -0
  40. package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
  41. package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
  42. package/examples/jsm/geometries/DecalGeometry.js +1 -1
  43. package/examples/jsm/geometries/LoftGeometry.js +355 -0
  44. package/examples/jsm/geometries/TextGeometry.js +18 -0
  45. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  46. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  47. package/examples/jsm/helpers/LightProbeHelper.js +5 -4
  48. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
  49. package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
  50. package/examples/jsm/helpers/ViewHelper.js +83 -14
  51. package/examples/jsm/inspector/Extension.js +13 -0
  52. package/examples/jsm/inspector/Inspector.js +244 -91
  53. package/examples/jsm/inspector/RendererInspector.js +165 -39
  54. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  55. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  56. package/examples/jsm/inspector/tabs/Console.js +241 -25
  57. package/examples/jsm/inspector/tabs/Memory.js +136 -0
  58. package/examples/jsm/inspector/tabs/Parameters.js +115 -7
  59. package/examples/jsm/inspector/tabs/Performance.js +24 -9
  60. package/examples/jsm/inspector/tabs/Settings.js +306 -0
  61. package/examples/jsm/inspector/tabs/Timeline.js +1696 -0
  62. package/examples/jsm/inspector/tabs/Viewer.js +723 -9
  63. package/examples/jsm/inspector/ui/Graph.js +162 -25
  64. package/examples/jsm/inspector/ui/Item.js +92 -13
  65. package/examples/jsm/inspector/ui/List.js +2 -2
  66. package/examples/jsm/inspector/ui/Profiler.js +1991 -44
  67. package/examples/jsm/inspector/ui/Style.js +1943 -543
  68. package/examples/jsm/inspector/ui/Tab.js +226 -5
  69. package/examples/jsm/inspector/ui/Values.js +126 -8
  70. package/examples/jsm/inspector/ui/utils.js +143 -10
  71. package/examples/jsm/interaction/InteractionManager.js +226 -0
  72. package/examples/jsm/libs/basis/README.md +0 -1
  73. package/examples/jsm/libs/demuxer_mp4.js +3 -3
  74. package/examples/jsm/libs/draco/README.md +0 -1
  75. package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
  76. package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
  77. package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
  78. package/examples/jsm/libs/mikktspace.module.js +34 -9
  79. package/examples/jsm/lighting/ClusteredLighting.js +55 -0
  80. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  81. package/examples/jsm/lighting/LightProbeGrid.js +681 -0
  82. package/examples/jsm/lines/LineMaterial.js +45 -16
  83. package/examples/jsm/lines/LineSegments2.js +8 -0
  84. package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
  85. package/examples/jsm/loaders/3DMLoader.js +6 -5
  86. package/examples/jsm/loaders/3MFLoader.js +2 -2
  87. package/examples/jsm/loaders/AMFLoader.js +2 -2
  88. package/examples/jsm/loaders/ColladaLoader.js +24 -4026
  89. package/examples/jsm/loaders/DRACOLoader.js +51 -18
  90. package/examples/jsm/loaders/EXRLoader.js +701 -90
  91. package/examples/jsm/loaders/FBXLoader.js +235 -37
  92. package/examples/jsm/loaders/GCodeLoader.js +34 -8
  93. package/examples/jsm/loaders/GLTFLoader.js +146 -178
  94. package/examples/jsm/loaders/HDRLoader.js +7 -30
  95. package/examples/jsm/loaders/KMZLoader.js +5 -5
  96. package/examples/jsm/loaders/KTX2Loader.js +58 -17
  97. package/examples/jsm/loaders/LDrawLoader.js +49 -58
  98. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  99. package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
  100. package/examples/jsm/loaders/LWOLoader.js +11 -39
  101. package/examples/jsm/loaders/LottieLoader.js +1 -1
  102. package/examples/jsm/loaders/MaterialXLoader.js +31 -9
  103. package/examples/jsm/loaders/NRRDLoader.js +5 -5
  104. package/examples/jsm/loaders/PCDLoader.js +11 -9
  105. package/examples/jsm/loaders/PLYLoader.js +218 -55
  106. package/examples/jsm/loaders/SVGLoader.js +549 -497
  107. package/examples/jsm/loaders/TDSLoader.js +0 -2
  108. package/examples/jsm/loaders/TGALoader.js +0 -2
  109. package/examples/jsm/loaders/TTFLoader.js +1 -1
  110. package/examples/jsm/loaders/USDLoader.js +127 -43
  111. package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
  112. package/examples/jsm/loaders/VOXLoader.js +660 -117
  113. package/examples/jsm/loaders/VRMLLoader.js +80 -3
  114. package/examples/jsm/loaders/VTKLoader.js +42 -25
  115. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  116. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  117. package/examples/jsm/loaders/usd/USDAParser.js +504 -344
  118. package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
  119. package/examples/jsm/loaders/usd/USDComposer.js +4627 -0
  120. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
  121. package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
  122. package/examples/jsm/math/Octree.js +131 -1
  123. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  124. package/examples/jsm/misc/RollerCoaster.js +42 -4
  125. package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
  126. package/examples/jsm/misc/Volume.js +2 -3
  127. package/examples/jsm/misc/VolumeSlice.js +0 -1
  128. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  129. package/examples/jsm/objects/GroundedSkybox.js +1 -1
  130. package/examples/jsm/objects/LensflareMesh.js +1 -1
  131. package/examples/jsm/objects/Reflector.js +72 -25
  132. package/examples/jsm/objects/Sky.js +90 -6
  133. package/examples/jsm/objects/SkyMesh.js +150 -16
  134. package/examples/jsm/objects/Water.js +4 -3
  135. package/examples/jsm/objects/Water2.js +5 -3
  136. package/examples/jsm/objects/Water2Mesh.js +1 -1
  137. package/examples/jsm/objects/WaterMesh.js +5 -7
  138. package/examples/jsm/physics/AmmoPhysics.js +27 -15
  139. package/examples/jsm/physics/JoltPhysics.js +10 -6
  140. package/examples/jsm/physics/RapierPhysics.js +36 -7
  141. package/examples/jsm/postprocessing/EffectComposer.js +7 -5
  142. package/examples/jsm/postprocessing/OutputPass.js +9 -0
  143. package/examples/jsm/postprocessing/RenderPass.js +10 -0
  144. package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
  145. package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
  146. package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
  147. package/examples/jsm/renderers/Projector.js +246 -28
  148. package/examples/jsm/renderers/SVGRenderer.js +174 -60
  149. package/examples/jsm/shaders/GTAOShader.js +19 -6
  150. package/examples/jsm/shaders/HalftoneShader.js +12 -1
  151. package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
  152. package/examples/jsm/shaders/SAOShader.js +17 -4
  153. package/examples/jsm/shaders/SSAOShader.js +11 -1
  154. package/examples/jsm/shaders/SSRShader.js +6 -5
  155. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
  156. package/examples/jsm/shaders/VignetteShader.js +1 -1
  157. package/examples/jsm/shaders/VolumeShader.js +31 -44
  158. package/examples/jsm/transpiler/AST.js +44 -0
  159. package/examples/jsm/transpiler/GLSLDecoder.js +65 -8
  160. package/examples/jsm/transpiler/Linker.js +1 -1
  161. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
  162. package/examples/jsm/transpiler/TSLEncoder.js +46 -3
  163. package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
  164. package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
  165. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  166. package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
  167. package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
  168. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  169. package/examples/jsm/tsl/display/BloomNode.js +75 -25
  170. package/examples/jsm/tsl/display/CRT.js +150 -0
  171. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
  172. package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
  173. package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
  174. package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
  175. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  176. package/examples/jsm/tsl/display/FXAANode.js +13 -14
  177. package/examples/jsm/tsl/display/GTAONode.js +40 -17
  178. package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
  179. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  180. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
  181. package/examples/jsm/tsl/display/LensflareNode.js +1 -1
  182. package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
  183. package/examples/jsm/tsl/display/OutlineNode.js +69 -19
  184. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
  185. package/examples/jsm/tsl/display/PixelationPassNode.js +9 -8
  186. package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
  187. package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
  188. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  189. package/examples/jsm/tsl/display/SMAANode.js +2 -2
  190. package/examples/jsm/tsl/display/SSAAPassNode.js +15 -27
  191. package/examples/jsm/tsl/display/SSGINode.js +96 -62
  192. package/examples/jsm/tsl/display/SSRNode.js +831 -134
  193. package/examples/jsm/tsl/display/SSSNode.js +8 -6
  194. package/examples/jsm/tsl/display/Shape.js +29 -0
  195. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  196. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
  197. package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
  198. package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
  199. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  200. package/examples/jsm/tsl/display/TRAANode.js +315 -126
  201. package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
  202. package/examples/jsm/tsl/display/TransitionNode.js +1 -1
  203. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  204. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  205. package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
  206. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  207. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  208. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  209. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  210. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  211. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  212. package/examples/jsm/tsl/math/Bayer.js +53 -3
  213. package/examples/jsm/tsl/math/curlNoise.js +107 -0
  214. package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
  215. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
  216. package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
  217. package/examples/jsm/tsl/utils/RNoise.js +51 -0
  218. package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
  219. package/examples/jsm/utils/BufferGeometryUtils.js +128 -62
  220. package/examples/jsm/utils/ColorUtils.js +76 -0
  221. package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
  222. package/examples/jsm/utils/LDrawUtils.js +1 -1
  223. package/examples/jsm/utils/SceneOptimizer.js +1 -1
  224. package/examples/jsm/utils/ShadowMapViewer.js +24 -10
  225. package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
  226. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  227. package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
  228. package/examples/jsm/webxr/ARButton.js +1 -1
  229. package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
  230. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
  231. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  232. package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
  233. package/package.json +28 -34
  234. package/src/Three.Core.js +3 -1
  235. package/src/Three.TSL.js +35 -14
  236. package/src/Three.WebGPU.Nodes.js +5 -0
  237. package/src/Three.WebGPU.js +13 -0
  238. package/src/Three.js +1 -0
  239. package/src/animation/AnimationAction.js +18 -4
  240. package/src/animation/AnimationClip.js +0 -139
  241. package/src/animation/AnimationMixer.js +6 -0
  242. package/src/animation/AnimationUtils.js +1 -12
  243. package/src/animation/KeyframeTrack.js +47 -8
  244. package/src/animation/PropertyBinding.js +2 -2
  245. package/src/animation/PropertyMixer.js +4 -4
  246. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  247. package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
  248. package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
  249. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
  250. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  251. package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
  252. package/src/audio/Audio.js +1 -1
  253. package/src/audio/AudioContext.js +2 -2
  254. package/src/audio/AudioListener.js +5 -3
  255. package/src/cameras/Camera.js +34 -4
  256. package/src/cameras/CubeCamera.js +20 -0
  257. package/src/cameras/StereoCamera.js +5 -2
  258. package/src/constants.js +90 -5
  259. package/src/core/BufferAttribute.js +13 -1
  260. package/src/core/BufferGeometry.js +43 -9
  261. package/src/core/Clock.js +7 -0
  262. package/src/core/Object3D.js +69 -11
  263. package/src/core/Raycaster.js +3 -3
  264. package/src/core/RenderTarget.js +19 -6
  265. package/src/extras/PMREMGenerator.js +13 -22
  266. package/src/extras/TextureUtils.js +6 -2
  267. package/src/extras/core/ShapePath.js +149 -160
  268. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  269. package/src/geometries/ExtrudeGeometry.js +2 -2
  270. package/src/geometries/PolyhedronGeometry.js +1 -1
  271. package/src/geometries/SphereGeometry.js +8 -3
  272. package/src/geometries/TorusGeometry.js +8 -3
  273. package/src/helpers/CameraHelper.js +3 -0
  274. package/src/helpers/DirectionalLightHelper.js +6 -1
  275. package/src/helpers/HemisphereLightHelper.js +5 -0
  276. package/src/helpers/PointLightHelper.js +3 -25
  277. package/src/helpers/SpotLightHelper.js +4 -1
  278. package/src/lights/DirectionalLight.js +13 -0
  279. package/src/lights/HemisphereLight.js +10 -0
  280. package/src/lights/Light.js +1 -11
  281. package/src/lights/LightProbe.js +0 -15
  282. package/src/lights/LightShadow.js +15 -6
  283. package/src/lights/PointLight.js +15 -0
  284. package/src/lights/PointLightShadow.js +0 -86
  285. package/src/lights/SpotLight.js +22 -1
  286. package/src/lights/webgpu/IESSpotLight.js +2 -1
  287. package/src/loaders/AudioLoader.js +11 -1
  288. package/src/loaders/Cache.js +28 -0
  289. package/src/loaders/DataTextureLoader.js +75 -42
  290. package/src/loaders/FileLoader.js +2 -3
  291. package/src/loaders/ImageBitmapLoader.js +12 -9
  292. package/src/loaders/Loader.js +6 -0
  293. package/src/loaders/LoadingManager.js +5 -0
  294. package/src/loaders/MaterialLoader.js +37 -266
  295. package/src/loaders/ObjectLoader.js +48 -6
  296. package/src/loaders/nodes/NodeLoader.js +2 -2
  297. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  298. package/src/materials/LineBasicMaterial.js +4 -0
  299. package/src/materials/Material.js +198 -1
  300. package/src/materials/MeshBasicMaterial.js +24 -0
  301. package/src/materials/MeshDepthMaterial.js +10 -0
  302. package/src/materials/MeshDistanceMaterial.js +10 -0
  303. package/src/materials/MeshLambertMaterial.js +49 -1
  304. package/src/materials/MeshMatcapMaterial.js +25 -1
  305. package/src/materials/MeshNormalMaterial.js +9 -1
  306. package/src/materials/MeshPhongMaterial.js +49 -1
  307. package/src/materials/MeshPhysicalMaterial.js +38 -0
  308. package/src/materials/MeshStandardMaterial.js +42 -1
  309. package/src/materials/MeshToonMaterial.js +35 -2
  310. package/src/materials/PointsMaterial.js +7 -0
  311. package/src/materials/ShaderMaterial.js +106 -1
  312. package/src/materials/SpriteMaterial.js +7 -0
  313. package/src/materials/nodes/Line2NodeMaterial.js +380 -297
  314. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  315. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  316. package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
  317. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +3 -30
  318. package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
  319. package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -15
  320. package/src/materials/nodes/NodeMaterial.js +153 -89
  321. package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
  322. package/src/materials/nodes/manager/NodeMaterialObserver.js +234 -100
  323. package/src/math/Box3.js +5 -0
  324. package/src/math/FrustumArray.js +103 -133
  325. package/src/math/Interpolant.js +1 -1
  326. package/src/math/Line3.js +6 -5
  327. package/src/math/MathUtils.js +12 -12
  328. package/src/math/Matrix2.js +13 -9
  329. package/src/math/Matrix3.js +24 -9
  330. package/src/math/Matrix4.js +112 -74
  331. package/src/math/Plane.js +4 -3
  332. package/src/math/Quaternion.js +3 -29
  333. package/src/math/Sphere.js +1 -1
  334. package/src/math/Triangle.js +1 -1
  335. package/src/math/Vector2.js +13 -9
  336. package/src/math/Vector3.js +17 -15
  337. package/src/math/Vector4.js +15 -11
  338. package/src/math/interpolants/BezierInterpolant.js +106 -0
  339. package/src/nodes/Nodes.js +86 -71
  340. package/src/nodes/TSL.js +15 -13
  341. package/src/nodes/accessors/Arrays.js +5 -5
  342. package/src/nodes/accessors/Batch.js +108 -0
  343. package/src/nodes/accessors/Bitangent.js +7 -7
  344. package/src/nodes/accessors/BufferAttributeNode.js +120 -17
  345. package/src/nodes/accessors/BufferNode.js +29 -2
  346. package/src/nodes/accessors/Camera.js +149 -28
  347. package/src/nodes/accessors/ClippingNode.js +5 -5
  348. package/src/nodes/accessors/CubeTextureNode.js +27 -2
  349. package/src/nodes/accessors/Instance.js +264 -0
  350. package/src/nodes/accessors/MaterialNode.js +27 -3
  351. package/src/nodes/accessors/MaterialProperties.js +6 -8
  352. package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
  353. package/src/nodes/accessors/ModelNode.js +1 -1
  354. package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
  355. package/src/nodes/accessors/Normal.js +24 -24
  356. package/src/nodes/accessors/Object3DNode.js +1 -1
  357. package/src/nodes/accessors/Position.js +39 -3
  358. package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
  359. package/src/nodes/accessors/ReferenceNode.js +9 -8
  360. package/src/nodes/accessors/ReflectVector.js +3 -3
  361. package/src/nodes/accessors/RendererReferenceNode.js +1 -2
  362. package/src/nodes/accessors/SceneProperties.js +47 -0
  363. package/src/nodes/accessors/Skinning.js +263 -0
  364. package/src/nodes/accessors/StorageBufferNode.js +16 -27
  365. package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
  366. package/src/nodes/accessors/StorageTextureNode.js +74 -11
  367. package/src/nodes/accessors/Tangent.js +8 -18
  368. package/src/nodes/accessors/Texture3DNode.js +32 -35
  369. package/src/nodes/accessors/TextureNode.js +124 -25
  370. package/src/nodes/accessors/UniformArrayNode.js +6 -4
  371. package/src/nodes/accessors/UserDataNode.js +1 -2
  372. package/src/nodes/accessors/VertexColorNode.js +1 -2
  373. package/src/nodes/code/FunctionCallNode.js +1 -1
  374. package/src/nodes/code/FunctionNode.js +4 -19
  375. package/src/nodes/core/ArrayNode.js +21 -2
  376. package/src/nodes/core/AssignNode.js +3 -3
  377. package/src/nodes/core/AttributeNode.js +3 -3
  378. package/src/nodes/core/BypassNode.js +1 -1
  379. package/src/nodes/core/ContextNode.js +104 -5
  380. package/src/nodes/core/IndexNode.js +2 -1
  381. package/src/nodes/core/InputNode.js +1 -1
  382. package/src/nodes/core/InspectorNode.js +1 -1
  383. package/src/nodes/core/IsolateNode.js +1 -1
  384. package/src/nodes/core/MRTNode.js +55 -4
  385. package/src/nodes/core/Node.js +151 -17
  386. package/src/nodes/core/NodeBuilder.js +479 -101
  387. package/src/nodes/core/NodeError.js +28 -0
  388. package/src/nodes/core/NodeFrame.js +12 -4
  389. package/src/nodes/core/NodeUtils.js +20 -18
  390. package/src/nodes/core/OutputStructNode.js +13 -11
  391. package/src/nodes/core/OverrideContextNode.js +153 -0
  392. package/src/nodes/core/ParameterNode.js +4 -4
  393. package/src/nodes/core/PropertyNode.js +66 -4
  394. package/src/nodes/core/StackNode.js +91 -20
  395. package/src/nodes/core/StackTrace.js +139 -0
  396. package/src/nodes/core/StructNode.js +20 -8
  397. package/src/nodes/core/StructTypeNode.js +17 -23
  398. package/src/nodes/core/SubBuildNode.js +2 -2
  399. package/src/nodes/core/UniformGroupNode.js +36 -6
  400. package/src/nodes/core/UniformNode.js +21 -5
  401. package/src/nodes/core/VarNode.js +56 -23
  402. package/src/nodes/core/VaryingNode.js +14 -21
  403. package/src/nodes/display/BlendModes.js +1 -105
  404. package/src/nodes/display/BumpMapNode.js +6 -1
  405. package/src/nodes/display/ColorAdjustment.js +27 -9
  406. package/src/nodes/display/ColorSpaceNode.js +3 -3
  407. package/src/nodes/display/FrontFacingNode.js +38 -9
  408. package/src/nodes/display/NormalMapNode.js +41 -6
  409. package/src/nodes/display/PassNode.js +157 -56
  410. package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
  411. package/src/nodes/display/RenderOutputNode.js +19 -10
  412. package/src/nodes/display/ScreenNode.js +4 -2
  413. package/src/nodes/display/ToneMappingNode.js +1 -1
  414. package/src/nodes/display/ToonOutlinePassNode.js +2 -2
  415. package/src/nodes/display/ViewportDepthNode.js +52 -4
  416. package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
  417. package/src/nodes/display/ViewportTextureNode.js +39 -11
  418. package/src/nodes/fog/Fog.js +18 -35
  419. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
  420. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  421. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  422. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  423. package/src/nodes/functions/PhysicalLightingModel.js +126 -45
  424. package/src/nodes/functions/VolumetricLightingModel.js +40 -7
  425. package/src/nodes/geometry/RangeNode.js +5 -3
  426. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  427. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  428. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
  429. package/src/nodes/gpgpu/ComputeNode.js +74 -48
  430. package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
  431. package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -5
  432. package/src/nodes/lighting/AnalyticLightNode.js +53 -0
  433. package/src/nodes/lighting/EnvironmentNode.js +30 -5
  434. package/src/nodes/lighting/IESSpotLightNode.js +40 -2
  435. package/src/nodes/lighting/LightingContextNode.js +10 -2
  436. package/src/nodes/lighting/LightsNode.js +97 -65
  437. package/src/nodes/lighting/PointShadowNode.js +166 -148
  438. package/src/nodes/lighting/ShadowFilterNode.js +74 -117
  439. package/src/nodes/lighting/ShadowNode.js +149 -51
  440. package/src/nodes/materialx/lib/mx_noise.js +2 -2
  441. package/src/nodes/math/BitcastNode.js +1 -1
  442. package/src/nodes/math/BitcountNode.js +433 -0
  443. package/src/nodes/math/ConditionalNode.js +6 -6
  444. package/src/nodes/math/MathNode.js +115 -52
  445. package/src/nodes/math/OperatorNode.js +24 -23
  446. package/src/nodes/math/PackFloatNode.js +98 -0
  447. package/src/nodes/math/UnpackFloatNode.js +96 -0
  448. package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
  449. package/src/nodes/pmrem/PMREMNode.js +34 -3
  450. package/src/nodes/pmrem/PMREMUtils.js +9 -15
  451. package/src/nodes/tsl/TSLBase.js +1 -1
  452. package/src/nodes/tsl/TSLCore.js +99 -33
  453. package/src/nodes/utils/ArrayElementNode.js +14 -1
  454. package/src/nodes/utils/ConvertNode.js +1 -1
  455. package/src/nodes/utils/DebugNode.js +12 -12
  456. package/src/nodes/utils/EquirectUV.js +30 -5
  457. package/src/nodes/utils/EventNode.js +31 -2
  458. package/src/nodes/utils/FlipNode.js +1 -1
  459. package/src/nodes/utils/FunctionOverloadingNode.js +2 -2
  460. package/src/nodes/utils/JoinNode.js +3 -3
  461. package/src/nodes/utils/LoopNode.js +1 -1
  462. package/src/nodes/utils/MemberNode.js +2 -2
  463. package/src/nodes/utils/Packing.js +48 -5
  464. package/src/nodes/utils/PostProcessingUtils.js +33 -1
  465. package/src/nodes/utils/RTTNode.js +41 -25
  466. package/src/nodes/utils/ReflectorNode.js +4 -4
  467. package/src/nodes/utils/Remap.js +48 -0
  468. package/src/nodes/utils/RotateNode.js +1 -1
  469. package/src/nodes/utils/SampleNode.js +1 -1
  470. package/src/nodes/utils/SetNode.js +1 -1
  471. package/src/nodes/utils/SplitNode.js +1 -1
  472. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  473. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  474. package/src/nodes/utils/UVUtils.js +28 -0
  475. package/src/objects/BatchedMesh.js +66 -30
  476. package/src/objects/InstancedMesh.js +19 -3
  477. package/src/objects/Line.js +1 -1
  478. package/src/objects/Mesh.js +1 -1
  479. package/src/objects/Points.js +1 -1
  480. package/src/objects/SkinnedMesh.js +26 -9
  481. package/src/renderers/WebGLRenderer.js +344 -156
  482. package/src/renderers/common/Animation.js +3 -3
  483. package/src/renderers/common/Attributes.js +15 -1
  484. package/src/renderers/common/Backend.js +78 -13
  485. package/src/renderers/common/Background.js +26 -13
  486. package/src/renderers/common/BindGroup.js +1 -16
  487. package/src/renderers/common/Binding.js +11 -0
  488. package/src/renderers/common/Bindings.js +141 -57
  489. package/src/renderers/common/BlendMode.js +143 -0
  490. package/src/renderers/common/Buffer.js +49 -0
  491. package/src/renderers/common/BundleGroup.js +1 -1
  492. package/src/renderers/common/ChainMap.js +30 -6
  493. package/src/renderers/common/ClippingContext.js +10 -2
  494. package/src/renderers/common/ComputePipeline.js +1 -1
  495. package/src/renderers/common/CubeRenderTarget.js +51 -7
  496. package/src/renderers/common/Geometries.js +29 -3
  497. package/src/renderers/common/Info.js +374 -4
  498. package/src/renderers/common/InspectorBase.js +6 -1
  499. package/src/renderers/common/Lighting.js +51 -19
  500. package/src/renderers/common/Pipelines.js +40 -7
  501. package/src/renderers/common/PostProcessing.js +8 -206
  502. package/src/renderers/common/ReadbackBuffer.js +78 -0
  503. package/src/renderers/common/RenderBundle.js +3 -1
  504. package/src/renderers/common/RenderBundles.js +7 -3
  505. package/src/renderers/common/RenderContext.js +16 -0
  506. package/src/renderers/common/RenderContexts.js +33 -49
  507. package/src/renderers/common/RenderList.js +41 -4
  508. package/src/renderers/common/RenderLists.js +2 -1
  509. package/src/renderers/common/RenderObject.js +88 -16
  510. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  511. package/src/renderers/common/RenderObjects.js +21 -5
  512. package/src/renderers/common/RenderPipeline.js +232 -17
  513. package/src/renderers/common/Renderer.js +700 -163
  514. package/src/renderers/common/Sampler.js +16 -48
  515. package/src/renderers/common/StorageBuffer.js +13 -1
  516. package/src/renderers/common/Textures.js +121 -9
  517. package/src/renderers/common/TimestampQueryPool.js +6 -4
  518. package/src/renderers/common/Uniform.js +8 -0
  519. package/src/renderers/common/UniformsGroup.js +84 -1
  520. package/src/renderers/common/XRManager.js +377 -51
  521. package/src/renderers/common/extras/PMREMGenerator.js +40 -61
  522. package/src/renderers/common/nodes/NodeBuilderState.js +10 -2
  523. package/src/renderers/common/nodes/NodeLibrary.js +4 -4
  524. package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +298 -106
  525. package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
  526. package/src/renderers/common/nodes/NodeUniformBuffer.js +65 -0
  527. package/src/renderers/shaders/DFGLUTData.js +19 -34
  528. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  529. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  530. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  531. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  532. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  533. package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
  534. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
  535. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  536. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +9 -13
  537. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
  538. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
  539. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  540. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
  541. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  542. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  543. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +3 -1
  544. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  545. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
  546. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
  547. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  548. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
  549. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  550. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  551. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
  552. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  553. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  554. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +2 -2
  555. package/src/renderers/shaders/ShaderChunk.js +5 -3
  556. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  557. package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
  558. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +2 -3
  559. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  560. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  561. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  562. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  563. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  564. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  565. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  566. package/src/renderers/shaders/ShaderLib.js +7 -6
  567. package/src/renderers/shaders/UniformsLib.js +7 -5
  568. package/src/renderers/shaders/UniformsUtils.js +27 -5
  569. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  570. package/src/renderers/webgl/WebGLBackground.js +15 -15
  571. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  572. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  573. package/src/renderers/webgl/WebGLCapabilities.js +9 -4
  574. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  575. package/src/renderers/webgl/WebGLGeometries.js +10 -7
  576. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  577. package/src/renderers/webgl/WebGLLights.js +18 -1
  578. package/src/renderers/webgl/WebGLMaterials.js +24 -13
  579. package/src/renderers/webgl/WebGLObjects.js +3 -1
  580. package/src/renderers/webgl/WebGLOutput.js +271 -0
  581. package/src/renderers/webgl/WebGLProgram.js +54 -113
  582. package/src/renderers/webgl/WebGLPrograms.js +74 -55
  583. package/src/renderers/webgl/WebGLRenderLists.js +24 -1
  584. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  585. package/src/renderers/webgl/WebGLShaderCache.js +5 -11
  586. package/src/renderers/webgl/WebGLShadowMap.js +188 -24
  587. package/src/renderers/webgl/WebGLState.js +75 -37
  588. package/src/renderers/webgl/WebGLTextures.js +230 -56
  589. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  590. package/src/renderers/webgl/WebGLUniformsGroups.js +82 -35
  591. package/src/renderers/webgl/WebGLUtils.js +6 -2
  592. package/src/renderers/webgl-fallback/WebGLBackend.js +322 -92
  593. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  594. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +295 -66
  595. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  596. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  597. package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
  598. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +118 -73
  599. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
  600. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +9 -3
  601. package/src/renderers/webgpu/WebGPUBackend.js +733 -302
  602. package/src/renderers/webgpu/WebGPURenderer.js +2 -1
  603. package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
  604. package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
  605. package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
  606. package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
  607. package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
  608. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
  609. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
  610. package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
  611. package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
  612. package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
  613. package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
  614. package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
  615. package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
  616. package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
  617. package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
  618. package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
  619. package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
  620. package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
  621. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
  622. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
  623. package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
  624. package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
  625. package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
  626. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
  627. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +526 -93
  628. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
  629. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +194 -61
  630. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +395 -234
  631. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  632. package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
  633. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +224 -91
  634. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +228 -213
  635. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +428 -175
  636. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +40 -25
  637. package/src/renderers/webgpu/utils/WebGPUUtils.js +70 -13
  638. package/src/renderers/webxr/WebXRController.js +12 -0
  639. package/src/renderers/webxr/WebXRManager.js +4 -2
  640. package/src/textures/CubeDepthTexture.js +76 -0
  641. package/src/textures/DepthTexture.js +1 -1
  642. package/src/textures/ExternalTexture.js +0 -3
  643. package/src/textures/HTMLTexture.js +74 -0
  644. package/src/textures/Source.js +2 -2
  645. package/src/textures/Texture.js +16 -5
  646. package/src/utils.js +280 -3
  647. package/examples/fonts/LICENSE +0 -13
  648. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  649. package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
  650. package/examples/fonts/README.md +0 -11
  651. package/examples/fonts/droid/NOTICE +0 -190
  652. package/examples/fonts/droid/README.txt +0 -18
  653. package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
  654. package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
  655. package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
  656. package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
  657. package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
  658. package/examples/fonts/gentilis_bold.typeface.json +0 -1
  659. package/examples/fonts/gentilis_regular.typeface.json +0 -1
  660. package/examples/fonts/helvetiker_bold.typeface.json +0 -1
  661. package/examples/fonts/helvetiker_regular.typeface.json +0 -1
  662. package/examples/fonts/optimer_bold.typeface.json +0 -1
  663. package/examples/fonts/optimer_regular.typeface.json +0 -1
  664. package/examples/fonts/ttf/README.md +0 -9
  665. package/examples/fonts/ttf/kenpixel.ttf +0 -0
  666. package/examples/jsm/libs/ammo.wasm.js +0 -822
  667. package/examples/jsm/libs/ammo.wasm.wasm +0 -0
  668. package/examples/jsm/libs/draco/draco_encoder.js +0 -33
  669. package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
  670. package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
  671. package/examples/jsm/libs/opentype.module.js +0 -14506
  672. package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
  673. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
  674. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  675. package/examples/jsm/lighting/TiledLighting.js +0 -42
  676. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
  677. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
  678. package/examples/jsm/shaders/GodRaysShader.js +0 -333
  679. package/examples/jsm/tsl/display/AnamorphicNode.js +0 -282
  680. package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
  681. package/src/nodes/accessors/BatchNode.js +0 -163
  682. package/src/nodes/accessors/InstanceNode.js +0 -244
  683. package/src/nodes/accessors/InstancedMeshNode.js +0 -50
  684. package/src/nodes/accessors/SceneNode.js +0 -145
  685. package/src/nodes/accessors/SkinningNode.js +0 -327
  686. package/src/nodes/code/ScriptableNode.js +0 -726
  687. package/src/nodes/code/ScriptableValueNode.js +0 -253
  688. package/src/nodes/display/PosterizeNode.js +0 -65
  689. package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
  690. package/src/nodes/utils/RemapNode.js +0 -125
  691. package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
  692. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  693. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
@@ -30,6 +30,7 @@ export * from './effects/OutlineEffect.js';
30
30
  export * from './effects/ParallaxBarrierEffect.js';
31
31
  export * from './effects/StereoEffect.js';
32
32
 
33
+ export * from './environments/ColorEnvironment.js';
33
34
  export * from './environments/DebugEnvironment.js';
34
35
  export * from './environments/RoomEnvironment.js';
35
36
 
@@ -45,15 +46,18 @@ export * from './exporters/USDZExporter.js';
45
46
  export * from './geometries/BoxLineGeometry.js';
46
47
  export * from './geometries/ConvexGeometry.js';
47
48
  export * from './geometries/DecalGeometry.js';
49
+ export * from './geometries/LoftGeometry.js';
48
50
  export * from './geometries/ParametricFunctions.js';
49
51
  export * from './geometries/ParametricGeometry.js';
50
52
  export * from './geometries/RoundedBoxGeometry.js';
51
53
  export * from './geometries/TeapotGeometry.js';
52
54
  export * from './geometries/TextGeometry.js';
53
55
 
56
+ export * from './helpers/AnimationPathHelper.js';
54
57
  export * from './helpers/LightProbeHelper.js';
55
58
  export * from './helpers/OctreeHelper.js';
56
59
  export * from './helpers/PositionalAudioHelper.js';
60
+ export * from './helpers/RapierHelper.js';
57
61
  export * from './helpers/RectAreaLightHelper.js';
58
62
  export * from './helpers/TextureHelper.js';
59
63
  export * from './helpers/VertexNormalsHelper.js';
@@ -98,6 +102,7 @@ export * from './loaders/KTXLoader.js';
98
102
  export * from './loaders/LDrawLoader.js';
99
103
  export * from './loaders/LUT3dlLoader.js';
100
104
  export * from './loaders/LUTCubeLoader.js';
105
+ export * from './loaders/LUTImageLoader.js';
101
106
  export * from './loaders/LWOLoader.js';
102
107
  export * from './loaders/LottieLoader.js';
103
108
  export * from './loaders/MD2Loader.js';
@@ -123,12 +128,11 @@ export * from './loaders/VRMLLoader.js';
123
128
  export * from './loaders/VTKLoader.js';
124
129
  export * from './loaders/XYZLoader.js';
125
130
 
126
- export * from './materials/MeshGouraudMaterial.js';
127
131
  export * from './materials/LDrawConditionalLineMaterial.js';
128
- export * from './materials/MeshPostProcessingMaterial.js';
129
132
 
130
133
  export * from './math/Capsule.js';
131
134
  export * from './math/ColorConverter.js';
135
+ export * as ColorSpaces from './math/ColorSpaces.js';
132
136
  export * from './math/ConvexHull.js';
133
137
  export * from './math/ImprovedNoise.js';
134
138
  export * from './math/Lut.js';
@@ -146,6 +150,7 @@ export * from './misc/MorphAnimMesh.js';
146
150
  export * from './misc/MorphBlendMesh.js';
147
151
  export * from './misc/ProgressiveLightMap.js';
148
152
  export * from './misc/RollerCoaster.js';
153
+ export * from './misc/TileCreasedNormalsPlugin.js';
149
154
  export * from './misc/TubePainter.js';
150
155
  export * from './misc/Volume.js';
151
156
  export * from './misc/VolumeSlice.js';
@@ -167,6 +172,7 @@ export * from './objects/Water.js';
167
172
  export { Water as Water2 } from './objects/Water2.js';
168
173
 
169
174
  export * from './physics/AmmoPhysics.js';
175
+ export * from './physics/JoltPhysics.js';
170
176
  export * from './physics/RapierPhysics.js';
171
177
 
172
178
  export * from './postprocessing/AfterimagePass.js';
@@ -176,6 +182,7 @@ export * from './postprocessing/ClearPass.js';
176
182
  export * from './postprocessing/CubeTexturePass.js';
177
183
  export * from './postprocessing/DotScreenPass.js';
178
184
  export * from './postprocessing/EffectComposer.js';
185
+ export * from './postprocessing/FXAAPass.js';
179
186
  export * from './postprocessing/FilmPass.js';
180
187
  export * from './postprocessing/GlitchPass.js';
181
188
  export * from './postprocessing/GTAOPass.js';
@@ -187,6 +194,7 @@ export * from './postprocessing/OutputPass.js';
187
194
  export * from './postprocessing/Pass.js';
188
195
  export * from './postprocessing/RenderPass.js';
189
196
  export * from './postprocessing/RenderPixelatedPass.js';
197
+ export * from './postprocessing/RenderTransitionPass.js';
190
198
  export * from './postprocessing/SAOPass.js';
191
199
  export * from './postprocessing/SMAAPass.js';
192
200
  export * from './postprocessing/SSAARenderPass.js';
@@ -225,7 +233,6 @@ export * from './shaders/FilmShader.js';
225
233
  export * from './shaders/FocusShader.js';
226
234
  export * from './shaders/FreiChenShader.js';
227
235
  export * from './shaders/GammaCorrectionShader.js';
228
- export * from './shaders/GodRaysShader.js';
229
236
  export * from './shaders/GTAOShader.js';
230
237
  export * from './shaders/HalftoneShader.js';
231
238
  export * from './shaders/HorizontalBlurShader.js';
@@ -237,6 +244,7 @@ export * from './shaders/LuminosityShader.js';
237
244
  export * from './shaders/MirrorShader.js';
238
245
  export * from './shaders/NormalMapShader.js';
239
246
  export * from './shaders/OutputShader.js';
247
+ export * from './shaders/PoissonDenoiseShader.js';
240
248
  export * from './shaders/RGBShiftShader.js';
241
249
  export * from './shaders/SAOShader.js';
242
250
  export * from './shaders/SMAAShader.js';
@@ -260,9 +268,11 @@ export * from './textures/FlakesTexture.js';
260
268
 
261
269
  export * as BufferGeometryUtils from './utils/BufferGeometryUtils.js';
262
270
  export * as CameraUtils from './utils/CameraUtils.js';
271
+ export * as ColorUtils from './utils/ColorUtils.js';
263
272
  export * as GeometryCompressionUtils from './utils/GeometryCompressionUtils.js';
264
273
  export * as GeometryUtils from './utils/GeometryUtils.js';
265
274
  export * from './utils/LDrawUtils.js';
275
+ export * from './utils/SceneOptimizer.js';
266
276
  export * as SceneUtils from './utils/SceneUtils.js';
267
277
  export * from './utils/ShadowMapViewer.js';
268
278
  export * as SkeletonUtils from './utils/SkeletonUtils.js';
@@ -276,6 +286,7 @@ export * from './webxr/OculusHandModel.js';
276
286
  export * from './webxr/OculusHandPointerModel.js';
277
287
  export * from './webxr/Text2D.js';
278
288
  export * from './webxr/VRButton.js';
289
+ export * from './webxr/WebGLXRFallback.js';
279
290
  export * from './webxr/XRButton.js';
280
291
  export * from './webxr/XRControllerModelFactory.js';
281
292
  export * from './webxr/XREstimatedLight.js';
@@ -50,7 +50,7 @@ class CCDIKSolver {
50
50
  /**
51
51
  * The IK objects.
52
52
  *
53
- * @type {SkinnedMesh}
53
+ * @type {Array<CCDIKSolver~IK>}
54
54
  */
55
55
  this.iks = iks;
56
56
 
@@ -204,7 +204,11 @@ class CCDIKSolver {
204
204
 
205
205
  if ( c > 1.0 ) c = 1.0;
206
206
 
207
- const c2 = math.sqrt( 1 - c * c );
207
+ // preserve sign of the rotation along the limitation axis,
208
+ // otherwise negative rotations get mirrored to positive
209
+ const dot = link.quaternion.x * limitation.x + link.quaternion.y * limitation.y + link.quaternion.z * limitation.z;
210
+ const sign = dot < 0 ? - 1 : 1;
211
+ const c2 = sign * math.sqrt( 1 - c * c );
208
212
  link.quaternion.set( limitation.x * c2,
209
213
  limitation.y * c2,
210
214
  limitation.z * c2,
@@ -357,7 +361,7 @@ class CCDIKHelper extends Object3D {
357
361
  /**
358
362
  * The helpers sphere geometry.
359
363
  *
360
- * @type {SkinnedMesh}
364
+ * @type {SphereGeometry}
361
365
  */
362
366
  this.sphereGeometry = new SphereGeometry( sphereSize, 16, 8 );
363
367
 
@@ -98,9 +98,9 @@ const _EPS = 0.000001;
98
98
  * consistent camera movements. Dragging cursor/fingers will cause camera to orbit around the center of the trackball in a conservative
99
99
  * way (returning to the starting point will make the camera return to its starting orientation).
100
100
  *
101
- * In addition to supporting pan, zoom and pinch gestures, Arcball controls provide focus< functionality with a double click/tap for intuitively
102
- * moving the object's point of interest in the center of the virtual trackball. Focus allows a much better inspection and navigation in complex
103
- * environment. Moreover Arcball controls allow FOV manipulation (in a vertigo-style method) and z-rotation. Saving and restoring of Camera State
101
+ * In addition to supporting pan, zoom and pinch gestures, double clicking/tapping focuses on a point, intuitively moving the object's
102
+ * point of interest to the center of the virtual trackball. Focus allows a much better inspection and navigation in complex environment.
103
+ * Moreover Arcball controls allow FOV manipulation (in a vertigo-style method) and z-rotation. Saving and restoring of Camera State
104
104
  * is supported also through clipboard (use ctrl+c and ctrl+v shortcuts for copy and paste the state).
105
105
  *
106
106
  * Unlike {@link OrbitControls} and {@link TrackballControls}, `ArcballControls` doesn't require `update()` to be called externally in an
@@ -265,6 +265,10 @@ class ArcballControls extends Controls {
265
265
  * performed trying to maintain the same visible portion given by initial near and far
266
266
  * values. Only works with perspective cameras.
267
267
  *
268
+ * This feature only works as expected if the camera's initial state (position, near and far values)
269
+ * is correctly configured before creating the controls. Otherwise {@link ArcballControls#setCamera}
270
+ * must be called by the application.
271
+ *
268
272
  * @type {boolean}
269
273
  * @default false
270
274
  */
@@ -453,7 +457,6 @@ class ArcballControls extends Controls {
453
457
 
454
458
  super.connect( element );
455
459
 
456
- this.domElement.style.touchAction = 'none';
457
460
  this._devPxRatio = window.devicePixelRatio;
458
461
 
459
462
  this.domElement.addEventListener( 'contextmenu', this._onContextMenu );
@@ -463,6 +466,8 @@ class ArcballControls extends Controls {
463
466
 
464
467
  window.addEventListener( 'resize', this._onWindowResize );
465
468
 
469
+ this.domElement.style.touchAction = 'none'; // Disable touch scroll
470
+
466
471
  }
467
472
 
468
473
  disconnect() {
@@ -477,6 +482,8 @@ class ArcballControls extends Controls {
477
482
 
478
483
  window.removeEventListener( 'resize', this._onWindowResize );
479
484
 
485
+ this.domElement.style.touchAction = ''; // Restore touch scroll
486
+
480
487
  }
481
488
 
482
489
  onSinglePanStart( event, operation ) {
@@ -2005,8 +2012,8 @@ class ArcballControls extends Controls {
2005
2012
  const gizmoZ = new Line( curveGeometry, curveMaterialZ );
2006
2013
 
2007
2014
  const rotation = Math.PI * 0.5;
2008
- gizmoX.rotation.x = rotation;
2009
- gizmoY.rotation.y = rotation;
2015
+ gizmoX.rotation.y = rotation;
2016
+ gizmoY.rotation.x = rotation;
2010
2017
 
2011
2018
 
2012
2019
  //setting state
@@ -139,7 +139,7 @@ class DragControls extends Controls {
139
139
  this.domElement.addEventListener( 'pointerleave', this._onPointerCancel );
140
140
  this.domElement.addEventListener( 'contextmenu', this._onContextMenu );
141
141
 
142
- this.domElement.style.touchAction = 'none'; // disable touch scroll
142
+ this.domElement.style.touchAction = 'none'; // Disable touch scroll
143
143
 
144
144
  }
145
145
 
@@ -151,7 +151,7 @@ class DragControls extends Controls {
151
151
  this.domElement.removeEventListener( 'pointerleave', this._onPointerCancel );
152
152
  this.domElement.removeEventListener( 'contextmenu', this._onContextMenu );
153
153
 
154
- this.domElement.style.touchAction = 'auto';
154
+ this.domElement.style.touchAction = ''; // Restore touch scroll
155
155
  this.domElement.style.cursor = '';
156
156
 
157
157
  }
@@ -9,6 +9,7 @@ const _lookDirection = new Vector3();
9
9
  const _spherical = new Spherical();
10
10
  const _target = new Vector3();
11
11
  const _targetPosition = new Vector3();
12
+ const _targetVelocity = new Vector3();
12
13
 
13
14
  /**
14
15
  * This class is an alternative implementation of {@link FlyControls}.
@@ -44,6 +45,15 @@ class FirstPersonControls extends Controls {
44
45
  */
45
46
  this.lookSpeed = 0.005;
46
47
 
48
+ /**
49
+ * How quickly the movement and look velocity catches up to the input. Lower
50
+ * values feel heavier (more inertia), `1` disables damping.
51
+ *
52
+ * @type {number}
53
+ * @default 0.1
54
+ */
55
+ this.dampingFactor = 0.1;
56
+
47
57
  /**
48
58
  * Whether it's possible to vertically look around or not.
49
59
  *
@@ -60,14 +70,6 @@ class FirstPersonControls extends Controls {
60
70
  */
61
71
  this.autoForward = false;
62
72
 
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
73
  /**
72
74
  * Whether or not the camera's height influences the forward movement speed.
73
75
  * Use the properties `heightCoef`, `heightMin` and `heightMax` for configuration.
@@ -136,22 +138,33 @@ class FirstPersonControls extends Controls {
136
138
 
137
139
  // internals
138
140
 
139
- this._autoSpeedFactor = 0.0;
141
+ this._velocity = new Vector3();
140
142
 
141
143
  this._pointerX = 0;
142
144
  this._pointerY = 0;
143
145
 
144
- this._moveForward = false;
145
- this._moveBackward = false;
146
+ this._pointerDownX = 0;
147
+ this._pointerDownY = 0;
148
+
149
+ this._pointerCount = 0;
150
+
151
+ // forward / backward come from keys and the pointer, tracked per source so they don't
152
+ // clobber: while a forward / backward key is held, a click only looks
153
+ this._keyForward = false;
154
+ this._keyBackward = false;
155
+ this._pointerForward = false;
156
+ this._pointerBackward = false;
146
157
  this._moveLeft = false;
147
158
  this._moveRight = false;
148
-
149
- this._viewHalfX = 0;
150
- this._viewHalfY = 0;
159
+ this._moveUp = false;
160
+ this._moveDown = false;
151
161
 
152
162
  this._lat = 0;
153
163
  this._lon = 0;
154
164
 
165
+ this._lonVelocity = 0;
166
+ this._latVelocity = 0;
167
+
155
168
  // event listeners
156
169
 
157
170
  this._onPointerMove = onPointerMove.bind( this );
@@ -167,8 +180,6 @@ class FirstPersonControls extends Controls {
167
180
 
168
181
  this.connect( domElement );
169
182
 
170
- this.handleResize();
171
-
172
183
  }
173
184
 
174
185
  this._setOrientation();
@@ -182,11 +193,17 @@ class FirstPersonControls extends Controls {
182
193
  window.addEventListener( 'keydown', this._onKeyDown );
183
194
  window.addEventListener( 'keyup', this._onKeyUp );
184
195
 
185
- this.domElement.addEventListener( 'pointermove', this._onPointerMove );
186
196
  this.domElement.addEventListener( 'pointerdown', this._onPointerDown );
187
- this.domElement.addEventListener( 'pointerup', this._onPointerUp );
188
197
  this.domElement.addEventListener( 'contextmenu', this._onContextMenu );
189
198
 
199
+ const { ownerDocument } = this.domElement;
200
+
201
+ ownerDocument.addEventListener( 'pointermove', this._onPointerMove );
202
+ ownerDocument.addEventListener( 'pointerup', this._onPointerUp );
203
+ ownerDocument.addEventListener( 'pointercancel', this._onPointerUp );
204
+
205
+ this.domElement.style.touchAction = 'none'; // Disable touch scroll
206
+
190
207
  }
191
208
 
192
209
  disconnect() {
@@ -194,35 +211,22 @@ class FirstPersonControls extends Controls {
194
211
  window.removeEventListener( 'keydown', this._onKeyDown );
195
212
  window.removeEventListener( 'keyup', this._onKeyUp );
196
213
 
197
- this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
198
214
  this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
199
- this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
200
215
  this.domElement.removeEventListener( 'contextmenu', this._onContextMenu );
201
216
 
202
- }
217
+ const { ownerDocument } = this.domElement;
203
218
 
204
- dispose() {
219
+ ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
220
+ ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
221
+ ownerDocument.removeEventListener( 'pointercancel', this._onPointerUp );
205
222
 
206
- this.disconnect();
223
+ this.domElement.style.touchAction = ''; // Restore touch scroll
207
224
 
208
225
  }
209
226
 
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;
227
+ dispose() {
224
228
 
225
- }
229
+ this.disconnect();
226
230
 
227
231
  }
228
232
 
@@ -258,37 +262,35 @@ class FirstPersonControls extends Controls {
258
262
 
259
263
  if ( this.enabled === false ) return;
260
264
 
261
- if ( this.heightSpeed ) {
265
+ const moveForward = this._keyForward || this._pointerForward;
266
+ const moveBackward = this._keyBackward || this._pointerBackward;
262
267
 
263
- const y = MathUtils.clamp( this.object.position.y, this.heightMin, this.heightMax );
264
- const heightDelta = y - this.heightMin;
268
+ const forward = moveForward || ( this.autoForward && ! moveBackward );
265
269
 
266
- this._autoSpeedFactor = delta * ( heightDelta * this.heightCoef );
270
+ // target velocity in the object's local space
267
271
 
268
- } else {
272
+ _targetVelocity.set(
273
+ ( this._moveRight ? 1 : 0 ) - ( this._moveLeft ? 1 : 0 ),
274
+ ( this._moveUp ? 1 : 0 ) - ( this._moveDown ? 1 : 0 ),
275
+ ( moveBackward ? 1 : 0 ) - ( forward ? 1 : 0 )
276
+ ).multiplyScalar( this.movementSpeed );
269
277
 
270
- this._autoSpeedFactor = 0.0;
278
+ // faster forward movement the higher the camera is
271
279
 
272
- }
280
+ if ( forward && this.heightSpeed ) {
273
281
 
274
- const actualMoveSpeed = delta * this.movementSpeed;
275
-
276
- if ( this._moveForward || ( this.autoForward && ! this._moveBackward ) ) this.object.translateZ( - ( actualMoveSpeed + this._autoSpeedFactor ) );
277
- if ( this._moveBackward ) this.object.translateZ( actualMoveSpeed );
278
-
279
- if ( this._moveLeft ) this.object.translateX( - actualMoveSpeed );
280
- if ( this._moveRight ) this.object.translateX( actualMoveSpeed );
282
+ const y = MathUtils.clamp( this.object.position.y, this.heightMin, this.heightMax );
283
+ _targetVelocity.z -= ( y - this.heightMin ) * this.heightCoef;
281
284
 
282
- if ( this._moveUp ) this.object.translateY( actualMoveSpeed );
283
- if ( this._moveDown ) this.object.translateY( - actualMoveSpeed );
285
+ }
284
286
 
285
- let actualLookSpeed = delta * this.lookSpeed;
287
+ // ease toward the target velocity for smooth acceleration and deceleration
286
288
 
287
- if ( ! this.activeLook ) {
289
+ this._velocity.lerp( _targetVelocity, this.dampingFactor );
288
290
 
289
- actualLookSpeed = 0;
290
-
291
- }
291
+ this.object.translateX( this._velocity.x * delta );
292
+ this.object.translateY( this._velocity.y * delta );
293
+ this.object.translateZ( this._velocity.z * delta );
292
294
 
293
295
  let verticalLookRatio = 1;
294
296
 
@@ -298,8 +300,16 @@ class FirstPersonControls extends Controls {
298
300
 
299
301
  }
300
302
 
301
- this._lon -= this._pointerX * actualLookSpeed;
302
- if ( this.lookVertical ) this._lat -= this._pointerY * actualLookSpeed * verticalLookRatio;
303
+ // target look velocity, zero when not dragging so the view eases to a stop
304
+
305
+ const targetLon = this.mouseDragOn ? - this._pointerX * this.lookSpeed : 0;
306
+ const targetLat = ( this.mouseDragOn && this.lookVertical ) ? - this._pointerY * this.lookSpeed * verticalLookRatio : 0;
307
+
308
+ this._lonVelocity = MathUtils.lerp( this._lonVelocity, targetLon, this.dampingFactor );
309
+ this._latVelocity = MathUtils.lerp( this._latVelocity, targetLat, this.dampingFactor );
310
+
311
+ this._lon += this._lonVelocity * delta;
312
+ this._lat += this._latVelocity * delta;
303
313
 
304
314
  this._lat = Math.max( - 85, Math.min( 85, this._lat ) );
305
315
 
@@ -332,6 +342,15 @@ class FirstPersonControls extends Controls {
332
342
 
333
343
  }
334
344
 
345
+ /**
346
+ * @deprecated, r184. This method is no longer needed.
347
+ */
348
+ handleResize() {
349
+
350
+ console.warn( 'THREE.FirstPersonControls: handleResize() has been removed.' );
351
+
352
+ }
353
+
335
354
  }
336
355
 
337
356
  function onPointerDown( event ) {
@@ -342,51 +361,73 @@ function onPointerDown( event ) {
342
361
 
343
362
  }
344
363
 
345
- if ( this.activeLook ) {
364
+ this.domElement.setPointerCapture( event.pointerId );
365
+
366
+ this._pointerCount ++;
367
+
368
+ if ( event.pointerType === 'touch' ) {
369
+
370
+ this._pointerForward = this._pointerCount === 1;
371
+ this._pointerBackward = this._pointerCount >= 2;
372
+
373
+ } else {
346
374
 
347
375
  switch ( event.button ) {
348
376
 
349
- case 0: this._moveForward = true; break;
350
- case 2: this._moveBackward = true; break;
377
+ case 0: if ( ! this._keyForward && ! this._keyBackward ) this._pointerForward = true; break;
378
+ case 2: if ( ! this._keyForward && ! this._keyBackward ) this._pointerBackward = true; break;
351
379
 
352
380
  }
353
381
 
354
382
  }
355
383
 
384
+ this._pointerDownX = event.pageX;
385
+ this._pointerDownY = event.pageY;
386
+
387
+ this._pointerX = 0;
388
+ this._pointerY = 0;
389
+
356
390
  this.mouseDragOn = true;
357
391
 
358
392
  }
359
393
 
360
394
  function onPointerUp( event ) {
361
395
 
362
- if ( this.activeLook ) {
396
+ if ( this.mouseDragOn === false ) return;
397
+
398
+ this.domElement.releasePointerCapture( event.pointerId );
399
+
400
+ this._pointerCount --;
401
+
402
+ if ( event.pointerType === 'touch' ) {
403
+
404
+ this._pointerForward = this._pointerCount === 1;
405
+ this._pointerBackward = false;
406
+
407
+ } else {
363
408
 
364
409
  switch ( event.button ) {
365
410
 
366
- case 0: this._moveForward = false; break;
367
- case 2: this._moveBackward = false; break;
411
+ case 0: this._pointerForward = false; break;
412
+ case 2: this._pointerBackward = false; break;
368
413
 
369
414
  }
370
415
 
371
416
  }
372
417
 
373
- this.mouseDragOn = false;
418
+ this._pointerX = 0;
419
+ this._pointerY = 0;
420
+
421
+ if ( this._pointerCount === 0 ) this.mouseDragOn = false;
374
422
 
375
423
  }
376
424
 
377
425
  function onPointerMove( event ) {
378
426
 
379
- if ( this.domElement === document ) {
380
-
381
- this._pointerX = event.pageX - this._viewHalfX;
382
- this._pointerY = event.pageY - this._viewHalfY;
427
+ if ( this.mouseDragOn === false ) return;
383
428
 
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
- }
429
+ this._pointerX = event.pageX - this._pointerDownX;
430
+ this._pointerY = event.pageY - this._pointerDownY;
390
431
 
391
432
  }
392
433
 
@@ -395,19 +436,19 @@ function onKeyDown( event ) {
395
436
  switch ( event.code ) {
396
437
 
397
438
  case 'ArrowUp':
398
- case 'KeyW': this._moveForward = true; break;
439
+ case 'KeyW': this._keyForward = true; break;
399
440
 
400
441
  case 'ArrowLeft':
401
442
  case 'KeyA': this._moveLeft = true; break;
402
443
 
403
444
  case 'ArrowDown':
404
- case 'KeyS': this._moveBackward = true; break;
445
+ case 'KeyS': this._keyBackward = true; break;
405
446
 
406
447
  case 'ArrowRight':
407
448
  case 'KeyD': this._moveRight = true; break;
408
449
 
409
- case 'KeyR': this._moveUp = true; break;
410
- case 'KeyF': this._moveDown = true; break;
450
+ case 'KeyE': this._moveUp = true; break;
451
+ case 'KeyQ': this._moveDown = true; break;
411
452
 
412
453
  }
413
454
 
@@ -418,19 +459,19 @@ function onKeyUp( event ) {
418
459
  switch ( event.code ) {
419
460
 
420
461
  case 'ArrowUp':
421
- case 'KeyW': this._moveForward = false; break;
462
+ case 'KeyW': this._keyForward = false; break;
422
463
 
423
464
  case 'ArrowLeft':
424
465
  case 'KeyA': this._moveLeft = false; break;
425
466
 
426
467
  case 'ArrowDown':
427
- case 'KeyS': this._moveBackward = false; break;
468
+ case 'KeyS': this._keyBackward = false; break;
428
469
 
429
470
  case 'ArrowRight':
430
471
  case 'KeyD': this._moveRight = false; break;
431
472
 
432
- case 'KeyR': this._moveUp = false; break;
433
- case 'KeyF': this._moveDown = false; break;
473
+ case 'KeyE': this._moveUp = false; break;
474
+ case 'KeyQ': this._moveDown = false; break;
434
475
 
435
476
  }
436
477
 
@@ -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() {