@plastic-software/three 0.175.14 → 0.178.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 (528) hide show
  1. package/README.md +3 -3
  2. package/build/three.cjs +7746 -6791
  3. package/build/three.core.js +7371 -6576
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +189 -29
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +19 -11
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +4989 -2235
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +5082 -2469
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/jsm/Addons.js +0 -1
  14. package/examples/jsm/animation/AnimationClipCreator.js +1 -0
  15. package/examples/jsm/animation/CCDIKSolver.js +6 -3
  16. package/examples/jsm/capabilities/WebGL.js +1 -27
  17. package/examples/jsm/capabilities/WebGPU.js +1 -0
  18. package/examples/jsm/controls/ArcballControls.js +15 -4
  19. package/examples/jsm/controls/DragControls.js +1 -0
  20. package/examples/jsm/controls/FirstPersonControls.js +1 -0
  21. package/examples/jsm/controls/FlyControls.js +1 -0
  22. package/examples/jsm/controls/MapControls.js +1 -0
  23. package/examples/jsm/controls/OrbitControls.js +1 -0
  24. package/examples/jsm/controls/PointerLockControls.js +5 -3
  25. package/examples/jsm/controls/TrackballControls.js +1 -0
  26. package/examples/jsm/controls/TransformControls.js +62 -14
  27. package/examples/jsm/csm/CSM.js +2 -0
  28. package/examples/jsm/csm/CSMFrustum.js +2 -0
  29. package/examples/jsm/csm/CSMHelper.js +1 -0
  30. package/examples/jsm/csm/CSMShader.js +4 -1
  31. package/examples/jsm/csm/CSMShadowNode.js +18 -4
  32. package/examples/jsm/curves/CurveExtras.js +14 -0
  33. package/examples/jsm/curves/NURBSCurve.js +1 -0
  34. package/examples/jsm/curves/NURBSSurface.js +2 -0
  35. package/examples/jsm/curves/NURBSUtils.js +4 -1
  36. package/examples/jsm/curves/NURBSVolume.js +2 -0
  37. package/examples/jsm/effects/AnaglyphEffect.js +2 -0
  38. package/examples/jsm/effects/AsciiEffect.js +2 -0
  39. package/examples/jsm/effects/OutlineEffect.js +2 -0
  40. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -0
  41. package/examples/jsm/effects/StereoEffect.js +2 -0
  42. package/examples/jsm/environments/DebugEnvironment.js +1 -0
  43. package/examples/jsm/environments/RoomEnvironment.js +49 -35
  44. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  45. package/examples/jsm/exporters/EXRExporter.js +2 -0
  46. package/examples/jsm/exporters/GLTFExporter.js +7 -4
  47. package/examples/jsm/exporters/KTX2Exporter.js +2 -0
  48. package/examples/jsm/exporters/OBJExporter.js +3 -1
  49. package/examples/jsm/exporters/PLYExporter.js +4 -2
  50. package/examples/jsm/exporters/STLExporter.js +2 -0
  51. package/examples/jsm/exporters/USDZExporter.js +12 -10
  52. package/examples/jsm/geometries/BoxLineGeometry.js +1 -0
  53. package/examples/jsm/geometries/ConvexGeometry.js +1 -0
  54. package/examples/jsm/geometries/DecalGeometry.js +1 -0
  55. package/examples/jsm/geometries/ParametricFunctions.js +4 -1
  56. package/examples/jsm/geometries/ParametricGeometry.js +1 -0
  57. package/examples/jsm/geometries/RoundedBoxGeometry.js +2 -1
  58. package/examples/jsm/geometries/TeapotGeometry.js +1 -0
  59. package/examples/jsm/geometries/TextGeometry.js +1 -0
  60. package/examples/jsm/helpers/LightProbeHelper.js +1 -0
  61. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -0
  62. package/examples/jsm/helpers/OctreeHelper.js +1 -0
  63. package/examples/jsm/helpers/PositionalAudioHelper.js +1 -0
  64. package/examples/jsm/helpers/RapierHelper.js +59 -0
  65. package/examples/jsm/helpers/RectAreaLightHelper.js +1 -0
  66. package/examples/jsm/helpers/TextureHelper.js +1 -0
  67. package/examples/jsm/helpers/TextureHelperGPU.js +5 -4
  68. package/examples/jsm/helpers/VertexNormalsHelper.js +1 -0
  69. package/examples/jsm/helpers/VertexTangentsHelper.js +1 -0
  70. package/examples/jsm/helpers/ViewHelper.js +1 -0
  71. package/examples/jsm/interactive/HTMLMesh.js +7 -0
  72. package/examples/jsm/interactive/InteractiveGroup.js +1 -0
  73. package/examples/jsm/interactive/SelectionBox.js +2 -0
  74. package/examples/jsm/interactive/SelectionHelper.js +2 -0
  75. package/examples/jsm/lighting/TiledLighting.js +1 -0
  76. package/examples/jsm/lights/LightProbeGenerator.js +1 -0
  77. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
  78. package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
  79. package/examples/jsm/lines/Line2.js +1 -0
  80. package/examples/jsm/lines/LineGeometry.js +1 -0
  81. package/examples/jsm/lines/LineMaterial.js +4 -4
  82. package/examples/jsm/lines/LineSegments2.js +1 -0
  83. package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
  84. package/examples/jsm/lines/Wireframe.js +1 -0
  85. package/examples/jsm/lines/WireframeGeometry2.js +1 -0
  86. package/examples/jsm/lines/webgpu/Line2.js +1 -0
  87. package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
  88. package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
  89. package/examples/jsm/loaders/3DMLoader.js +1 -0
  90. package/examples/jsm/loaders/3MFLoader.js +1 -0
  91. package/examples/jsm/loaders/AMFLoader.js +1 -0
  92. package/examples/jsm/loaders/BVHLoader.js +1 -0
  93. package/examples/jsm/loaders/ColladaLoader.js +6 -5
  94. package/examples/jsm/loaders/DDSLoader.js +1 -0
  95. package/examples/jsm/loaders/DRACOLoader.js +2 -1
  96. package/examples/jsm/loaders/EXRLoader.js +1 -0
  97. package/examples/jsm/loaders/FBXLoader.js +25 -23
  98. package/examples/jsm/loaders/FontLoader.js +1 -0
  99. package/examples/jsm/loaders/GCodeLoader.js +1 -0
  100. package/examples/jsm/loaders/GLTFLoader.js +10 -82
  101. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
  102. package/examples/jsm/loaders/IESLoader.js +1 -0
  103. package/examples/jsm/loaders/KMZLoader.js +1 -0
  104. package/examples/jsm/loaders/KTX2Loader.js +67 -26
  105. package/examples/jsm/loaders/KTXLoader.js +1 -0
  106. package/examples/jsm/loaders/LDrawLoader.js +55 -3
  107. package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
  108. package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
  109. package/examples/jsm/loaders/LUTImageLoader.js +1 -0
  110. package/examples/jsm/loaders/LWOLoader.js +1 -13
  111. package/examples/jsm/loaders/LottieLoader.js +15 -0
  112. package/examples/jsm/loaders/MD2Loader.js +1 -0
  113. package/examples/jsm/loaders/MDDLoader.js +1 -0
  114. package/examples/jsm/loaders/MTLLoader.js +4 -3
  115. package/examples/jsm/loaders/MaterialXLoader.js +1 -0
  116. package/examples/jsm/loaders/NRRDLoader.js +1 -0
  117. package/examples/jsm/loaders/OBJLoader.js +1 -0
  118. package/examples/jsm/loaders/PCDLoader.js +122 -19
  119. package/examples/jsm/loaders/PDBLoader.js +1 -0
  120. package/examples/jsm/loaders/PLYLoader.js +1 -0
  121. package/examples/jsm/loaders/PVRLoader.js +1 -0
  122. package/examples/jsm/loaders/RGBELoader.js +1 -0
  123. package/examples/jsm/loaders/RGBMLoader.js +1 -0
  124. package/examples/jsm/loaders/STLLoader.js +1 -0
  125. package/examples/jsm/loaders/SVGLoader.js +1 -0
  126. package/examples/jsm/loaders/TDSLoader.js +1 -0
  127. package/examples/jsm/loaders/TGALoader.js +1 -0
  128. package/examples/jsm/loaders/TIFFLoader.js +1 -0
  129. package/examples/jsm/loaders/TTFLoader.js +1 -0
  130. package/examples/jsm/loaders/USDZLoader.js +1 -0
  131. package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
  132. package/examples/jsm/loaders/VOXLoader.js +1 -0
  133. package/examples/jsm/loaders/VRMLLoader.js +3 -2
  134. package/examples/jsm/loaders/VTKLoader.js +1 -0
  135. package/examples/jsm/loaders/XYZLoader.js +1 -0
  136. package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
  137. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
  138. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
  139. package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
  140. package/examples/jsm/math/Capsule.js +2 -0
  141. package/examples/jsm/math/ColorConverter.js +1 -0
  142. package/examples/jsm/math/ConvexHull.js +2 -0
  143. package/examples/jsm/math/ImprovedNoise.js +19 -14
  144. package/examples/jsm/math/Lut.js +2 -0
  145. package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
  146. package/examples/jsm/math/OBB.js +2 -0
  147. package/examples/jsm/math/Octree.js +20 -1
  148. package/examples/jsm/math/SimplexNoise.js +2 -0
  149. package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
  150. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  151. package/examples/jsm/misc/Gyroscope.js +1 -0
  152. package/examples/jsm/misc/MD2Character.js +2 -0
  153. package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
  154. package/examples/jsm/misc/MorphAnimMesh.js +1 -0
  155. package/examples/jsm/misc/MorphBlendMesh.js +1 -0
  156. package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
  157. package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
  158. package/examples/jsm/misc/RollerCoaster.js +5 -0
  159. package/examples/jsm/misc/Timer.js +2 -0
  160. package/examples/jsm/misc/TubePainter.js +1 -0
  161. package/examples/jsm/misc/Volume.js +2 -0
  162. package/examples/jsm/misc/VolumeSlice.js +1 -0
  163. package/examples/jsm/modifiers/CurveModifier.js +3 -0
  164. package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
  165. package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
  166. package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
  167. package/examples/jsm/modifiers/TessellateModifier.js +2 -0
  168. package/examples/jsm/objects/GroundedSkybox.js +1 -0
  169. package/examples/jsm/objects/Lensflare.js +3 -0
  170. package/examples/jsm/objects/LensflareMesh.js +1 -0
  171. package/examples/jsm/objects/MarchingCubes.js +2 -0
  172. package/examples/jsm/objects/Reflector.js +1 -0
  173. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  174. package/examples/jsm/objects/Refractor.js +1 -0
  175. package/examples/jsm/objects/ShadowMesh.js +1 -0
  176. package/examples/jsm/objects/Sky.js +2 -1
  177. package/examples/jsm/objects/SkyMesh.js +20 -17
  178. package/examples/jsm/objects/Water.js +1 -0
  179. package/examples/jsm/objects/Water2.js +1 -0
  180. package/examples/jsm/objects/Water2Mesh.js +3 -1
  181. package/examples/jsm/objects/WaterMesh.js +2 -1
  182. package/examples/jsm/physics/AmmoPhysics.js +1 -0
  183. package/examples/jsm/physics/JoltPhysics.js +1 -0
  184. package/examples/jsm/physics/RapierPhysics.js +139 -12
  185. package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
  186. package/examples/jsm/postprocessing/BloomPass.js +2 -1
  187. package/examples/jsm/postprocessing/BokehPass.js +2 -1
  188. package/examples/jsm/postprocessing/ClearPass.js +1 -0
  189. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
  190. package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
  191. package/examples/jsm/postprocessing/EffectComposer.js +4 -2
  192. package/examples/jsm/postprocessing/FXAAPass.js +40 -0
  193. package/examples/jsm/postprocessing/FilmPass.js +1 -0
  194. package/examples/jsm/postprocessing/GTAOPass.js +4 -3
  195. package/examples/jsm/postprocessing/GlitchPass.js +2 -1
  196. package/examples/jsm/postprocessing/HalftonePass.js +2 -1
  197. package/examples/jsm/postprocessing/LUTPass.js +1 -0
  198. package/examples/jsm/postprocessing/MaskPass.js +1 -0
  199. package/examples/jsm/postprocessing/OutlinePass.js +5 -2
  200. package/examples/jsm/postprocessing/OutputPass.js +1 -0
  201. package/examples/jsm/postprocessing/Pass.js +3 -1
  202. package/examples/jsm/postprocessing/RenderPass.js +1 -0
  203. package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
  204. package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
  205. package/examples/jsm/postprocessing/SAOPass.js +3 -2
  206. package/examples/jsm/postprocessing/SMAAPass.js +3 -2
  207. package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
  208. package/examples/jsm/postprocessing/SSAOPass.js +2 -1
  209. package/examples/jsm/postprocessing/SSRPass.js +4 -3
  210. package/examples/jsm/postprocessing/SavePass.js +2 -1
  211. package/examples/jsm/postprocessing/ShaderPass.js +1 -0
  212. package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
  213. package/examples/jsm/postprocessing/TexturePass.js +1 -0
  214. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
  215. package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
  216. package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
  217. package/examples/jsm/renderers/Projector.js +2 -0
  218. package/examples/jsm/renderers/SVGRenderer.js +3 -0
  219. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
  220. package/examples/jsm/shaders/AfterimageShader.js +4 -1
  221. package/examples/jsm/shaders/BasicShader.js +4 -1
  222. package/examples/jsm/shaders/BleachBypassShader.js +4 -1
  223. package/examples/jsm/shaders/BlendShader.js +4 -1
  224. package/examples/jsm/shaders/BokehShader.js +4 -1
  225. package/examples/jsm/shaders/BokehShader2.js +4 -1
  226. package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
  227. package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
  228. package/examples/jsm/shaders/ColorifyShader.js +4 -1
  229. package/examples/jsm/shaders/ConvolutionShader.js +4 -1
  230. package/examples/jsm/shaders/CopyShader.js +4 -1
  231. package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
  232. package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
  233. package/examples/jsm/shaders/DigitalGlitch.js +4 -1
  234. package/examples/jsm/shaders/DotScreenShader.js +4 -1
  235. package/examples/jsm/shaders/ExposureShader.js +4 -1
  236. package/examples/jsm/shaders/FXAAShader.js +4 -1
  237. package/examples/jsm/shaders/FilmShader.js +4 -1
  238. package/examples/jsm/shaders/FocusShader.js +4 -1
  239. package/examples/jsm/shaders/FreiChenShader.js +4 -1
  240. package/examples/jsm/shaders/GTAOShader.js +4 -1
  241. package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
  242. package/examples/jsm/shaders/GodRaysShader.js +4 -1
  243. package/examples/jsm/shaders/HalftoneShader.js +4 -1
  244. package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
  245. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
  246. package/examples/jsm/shaders/HueSaturationShader.js +4 -1
  247. package/examples/jsm/shaders/KaleidoShader.js +4 -1
  248. package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
  249. package/examples/jsm/shaders/LuminosityShader.js +4 -1
  250. package/examples/jsm/shaders/MirrorShader.js +4 -1
  251. package/examples/jsm/shaders/NormalMapShader.js +4 -1
  252. package/examples/jsm/shaders/OutputShader.js +4 -1
  253. package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
  254. package/examples/jsm/shaders/RGBShiftShader.js +4 -1
  255. package/examples/jsm/shaders/SAOShader.js +4 -1
  256. package/examples/jsm/shaders/SMAAShader.js +1 -0
  257. package/examples/jsm/shaders/SSAOShader.js +4 -1
  258. package/examples/jsm/shaders/SSRShader.js +1 -0
  259. package/examples/jsm/shaders/SepiaShader.js +4 -1
  260. package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
  261. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
  262. package/examples/jsm/shaders/TechnicolorShader.js +4 -1
  263. package/examples/jsm/shaders/ToonShader.js +2 -1
  264. package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
  265. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +4 -1
  266. package/examples/jsm/shaders/VelocityShader.js +4 -1
  267. package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
  268. package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
  269. package/examples/jsm/shaders/VignetteShader.js +4 -1
  270. package/examples/jsm/shaders/VolumeShader.js +5 -2
  271. package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
  272. package/examples/jsm/textures/FlakesTexture.js +2 -0
  273. package/examples/jsm/transpiler/AST.js +381 -30
  274. package/examples/jsm/transpiler/GLSLDecoder.js +226 -87
  275. package/examples/jsm/transpiler/Linker.js +327 -0
  276. package/examples/jsm/transpiler/TSLEncoder.js +234 -85
  277. package/examples/jsm/transpiler/Transpiler.js +19 -1
  278. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  279. package/examples/jsm/transpiler/WGSLEncoder.js +788 -0
  280. package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
  281. package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
  282. package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
  283. package/examples/jsm/tsl/display/BloomNode.js +1 -0
  284. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +206 -0
  285. package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
  286. package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
  287. package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
  288. package/examples/jsm/tsl/display/FXAANode.js +3 -2
  289. package/examples/jsm/tsl/display/FilmNode.js +1 -0
  290. package/examples/jsm/tsl/display/GTAONode.js +1 -0
  291. package/examples/jsm/tsl/display/GaussianBlurNode.js +4 -29
  292. package/examples/jsm/tsl/display/LensflareNode.js +1 -0
  293. package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
  294. package/examples/jsm/tsl/display/OutlineNode.js +1 -0
  295. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
  296. package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
  297. package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
  298. package/examples/jsm/tsl/display/SMAANode.js +9 -8
  299. package/examples/jsm/tsl/display/SSAAPassNode.js +5 -4
  300. package/examples/jsm/tsl/display/SSRNode.js +1 -0
  301. package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
  302. package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
  303. package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
  304. package/examples/jsm/tsl/display/TRAAPassNode.js +5 -4
  305. package/examples/jsm/tsl/display/TransitionNode.js +1 -0
  306. package/examples/jsm/tsl/display/hashBlur.js +28 -6
  307. package/examples/jsm/tsl/lighting/TiledLightsNode.js +4 -3
  308. package/examples/jsm/tsl/math/Bayer.js +4 -1
  309. package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  310. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  311. package/examples/jsm/tsl/utils/Raymarching.js +6 -3
  312. package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
  313. package/examples/jsm/utils/CameraUtils.js +4 -1
  314. package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
  315. package/examples/jsm/utils/GeometryUtils.js +4 -1
  316. package/examples/jsm/utils/LDrawUtils.js +2 -0
  317. package/examples/jsm/utils/SceneOptimizer.js +2 -0
  318. package/examples/jsm/utils/SceneUtils.js +4 -1
  319. package/examples/jsm/utils/ShadowMapViewer.js +2 -0
  320. package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
  321. package/examples/jsm/utils/SkeletonUtils.js +4 -1
  322. package/examples/jsm/utils/SortUtils.js +4 -1
  323. package/examples/jsm/utils/UVsDebug.js +4 -1
  324. package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
  325. package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
  326. package/examples/jsm/utils/WorkerPool.js +2 -0
  327. package/examples/jsm/webxr/ARButton.js +1 -0
  328. package/examples/jsm/webxr/OculusHandModel.js +1 -0
  329. package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
  330. package/examples/jsm/webxr/Text2D.js +4 -1
  331. package/examples/jsm/webxr/VRButton.js +1 -0
  332. package/examples/jsm/webxr/XRButton.js +1 -0
  333. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
  334. package/examples/jsm/webxr/XREstimatedLight.js +1 -0
  335. package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
  336. package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
  337. package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
  338. package/examples/jsm/webxr/XRPlanes.js +1 -0
  339. package/package.json +6 -4
  340. package/src/Three.Core.js +1 -1
  341. package/src/Three.TSL.js +18 -10
  342. package/src/Three.WebGPU.Nodes.js +1 -0
  343. package/src/Three.WebGPU.js +3 -0
  344. package/src/audio/AudioListener.js +13 -10
  345. package/src/cameras/ArrayCamera.js +9 -1
  346. package/src/constants.js +47 -20
  347. package/src/core/BufferAttribute.js +3 -3
  348. package/src/core/BufferGeometry.js +2 -5
  349. package/src/core/Clock.js +2 -8
  350. package/src/core/GLBufferAttribute.js +13 -1
  351. package/src/core/Object3D.js +23 -22
  352. package/src/core/RenderTarget.js +65 -21
  353. package/src/core/RenderTarget3D.js +1 -0
  354. package/src/extras/TextureUtils.js +1 -5
  355. package/src/extras/core/Curve.js +1 -1
  356. package/src/extras/core/Path.js +22 -22
  357. package/src/geometries/CapsuleGeometry.js +167 -17
  358. package/src/geometries/ExtrudeGeometry.js +39 -29
  359. package/src/helpers/ArrowHelper.js +2 -2
  360. package/src/helpers/SkeletonHelper.js +1 -1
  361. package/src/lights/LightShadow.js +14 -0
  362. package/src/lights/SpotLightShadow.js +9 -1
  363. package/src/lights/webgpu/ProjectorLight.js +46 -0
  364. package/src/loaders/BufferGeometryLoader.js +1 -10
  365. package/src/loaders/FileLoader.js +2 -2
  366. package/src/loaders/ImageBitmapLoader.js +25 -9
  367. package/src/loaders/ImageLoader.js +55 -8
  368. package/src/loaders/ObjectLoader.js +44 -16
  369. package/src/loaders/nodes/NodeObjectLoader.js +2 -2
  370. package/src/materials/Material.js +1 -7
  371. package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
  372. package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
  373. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  374. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
  375. package/src/materials/nodes/MeshSSSNodeMaterial.js +2 -2
  376. package/src/materials/nodes/NodeMaterial.js +105 -19
  377. package/src/materials/nodes/manager/NodeMaterialObserver.js +20 -2
  378. package/src/math/Box3.js +28 -0
  379. package/src/math/Color.js +7 -7
  380. package/src/math/ColorManagement.js +22 -3
  381. package/src/math/Frustum.js +6 -1
  382. package/src/math/FrustumArray.js +253 -0
  383. package/src/math/Quaternion.js +1 -1
  384. package/src/math/Ray.js +2 -0
  385. package/src/math/Sphere.js +28 -0
  386. package/src/nodes/Nodes.js +2 -3
  387. package/src/nodes/TSL.js +5 -3
  388. package/src/nodes/accessors/AccessorsUtils.js +7 -8
  389. package/src/nodes/accessors/Bitangent.js +54 -26
  390. package/src/nodes/accessors/Camera.js +31 -4
  391. package/src/nodes/accessors/CubeTextureNode.js +50 -2
  392. package/src/nodes/accessors/InstanceNode.js +5 -4
  393. package/src/nodes/accessors/Lights.js +2 -2
  394. package/src/nodes/accessors/MaterialNode.js +4 -0
  395. package/src/nodes/accessors/ModelNode.js +1 -1
  396. package/src/nodes/accessors/Normal.js +102 -16
  397. package/src/nodes/accessors/Object3DNode.js +7 -8
  398. package/src/nodes/accessors/Position.js +14 -4
  399. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  400. package/src/nodes/accessors/ReferenceNode.js +1 -1
  401. package/src/nodes/accessors/ReflectVector.js +3 -3
  402. package/src/nodes/accessors/SkinningNode.js +3 -2
  403. package/src/nodes/accessors/StorageBufferNode.js +25 -0
  404. package/src/nodes/accessors/StorageTextureNode.js +14 -3
  405. package/src/nodes/accessors/Tangent.js +25 -17
  406. package/src/nodes/accessors/TangentUtils.js +46 -0
  407. package/src/nodes/accessors/TextureBicubic.js +21 -3
  408. package/src/nodes/accessors/TextureNode.js +59 -8
  409. package/src/nodes/accessors/UniformArrayNode.js +0 -16
  410. package/src/nodes/accessors/VelocityNode.js +1 -0
  411. package/src/nodes/accessors/VertexColorNode.js +4 -4
  412. package/src/nodes/code/CodeNode.js +8 -11
  413. package/src/nodes/core/AssignNode.js +27 -5
  414. package/src/nodes/core/AttributeNode.js +2 -2
  415. package/src/nodes/core/ContextNode.js +7 -3
  416. package/src/nodes/core/Node.js +69 -20
  417. package/src/nodes/core/NodeBuilder.js +248 -29
  418. package/src/nodes/core/NodeUtils.js +42 -0
  419. package/src/nodes/core/NodeVarying.js +19 -1
  420. package/src/nodes/core/PropertyNode.js +8 -12
  421. package/src/nodes/core/StackNode.js +129 -26
  422. package/src/nodes/core/StructTypeNode.js +26 -4
  423. package/src/nodes/core/SubBuildNode.js +89 -0
  424. package/src/nodes/core/VarNode.js +11 -2
  425. package/src/nodes/core/VaryingNode.js +45 -24
  426. package/src/nodes/display/BlendModes.js +42 -1
  427. package/src/nodes/display/ColorSpaceNode.js +4 -27
  428. package/src/nodes/display/FrontFacingNode.js +34 -2
  429. package/src/nodes/display/NormalMapNode.js +19 -50
  430. package/src/nodes/display/PassNode.js +18 -19
  431. package/src/nodes/display/ScreenNode.js +0 -26
  432. package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
  433. package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
  434. package/src/nodes/functions/PhongLightingModel.js +3 -3
  435. package/src/nodes/functions/PhysicalLightingModel.js +14 -14
  436. package/src/nodes/functions/ShadowMaskModel.js +5 -1
  437. package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
  438. package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
  439. package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
  440. package/src/nodes/gpgpu/BarrierNode.js +3 -3
  441. package/src/nodes/gpgpu/ComputeNode.js +1 -1
  442. package/src/nodes/lighting/AnalyticLightNode.js +7 -13
  443. package/src/nodes/lighting/EnvironmentNode.js +5 -5
  444. package/src/nodes/lighting/HemisphereLightNode.js +2 -2
  445. package/src/nodes/lighting/IESSpotLightNode.js +2 -1
  446. package/src/nodes/lighting/LightsNode.js +29 -11
  447. package/src/nodes/lighting/ProjectorLightNode.js +78 -0
  448. package/src/nodes/lighting/ShadowBaseNode.js +1 -12
  449. package/src/nodes/lighting/ShadowFilterNode.js +274 -0
  450. package/src/nodes/lighting/ShadowNode.js +174 -242
  451. package/src/nodes/lighting/SpotLightNode.js +44 -7
  452. package/src/nodes/materialx/lib/mx_noise.js +1 -1
  453. package/src/nodes/math/ConditionalNode.js +0 -19
  454. package/src/nodes/math/MathNode.js +68 -21
  455. package/src/nodes/math/OperatorNode.js +108 -98
  456. package/src/nodes/shapes/Shapes.js +5 -4
  457. package/src/nodes/tsl/TSLBase.js +1 -0
  458. package/src/nodes/tsl/TSLCore.js +160 -65
  459. package/src/nodes/utils/DebugNode.js +15 -3
  460. package/src/nodes/utils/Discard.js +2 -2
  461. package/src/nodes/utils/EquirectUV.js +27 -0
  462. package/src/nodes/utils/LoopNode.js +64 -34
  463. package/src/nodes/utils/MatcapUV.js +22 -0
  464. package/src/nodes/utils/RTTNode.js +13 -5
  465. package/src/nodes/utils/ReflectorNode.js +77 -7
  466. package/src/nodes/utils/SampleNode.js +81 -0
  467. package/src/nodes/utils/TriplanarTextures.js +65 -0
  468. package/src/objects/BatchedMesh.js +16 -4
  469. package/src/objects/Mesh.js +9 -0
  470. package/src/objects/Skeleton.js +1 -1
  471. package/src/objects/Sprite.js +9 -0
  472. package/src/renderers/WebGL3DRenderTarget.js +1 -0
  473. package/src/renderers/WebGLArrayRenderTarget.js +1 -0
  474. package/src/renderers/WebGLCubeRenderTarget.js +2 -4
  475. package/src/renderers/WebGLRenderer.js +25 -11
  476. package/src/renderers/common/Animation.js +2 -2
  477. package/src/renderers/common/Background.js +13 -2
  478. package/src/renderers/common/CubeRenderTarget.js +1 -1
  479. package/src/renderers/common/RenderList.js +0 -4
  480. package/src/renderers/common/RenderObject.js +80 -4
  481. package/src/renderers/common/Renderer.js +116 -8
  482. package/src/renderers/common/Storage3DTexture.js +79 -0
  483. package/src/renderers/common/StorageArrayTexture.js +63 -0
  484. package/src/renderers/common/Textures.js +15 -21
  485. package/src/renderers/common/TimestampQueryPool.js +1 -0
  486. package/src/renderers/common/Uniform.js +1 -1
  487. package/src/renderers/common/UniformsGroup.js +14 -18
  488. package/src/renderers/common/XRManager.js +157 -27
  489. package/src/renderers/common/XRRenderTarget.js +21 -4
  490. package/src/renderers/common/extras/PMREMGenerator.js +30 -23
  491. package/src/renderers/common/nodes/Nodes.js +13 -3
  492. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
  493. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  494. package/src/renderers/webgl/WebGLAttributes.js +4 -0
  495. package/src/renderers/webgl/WebGLPrograms.js +4 -2
  496. package/src/renderers/webgl/WebGLShadowMap.js +3 -2
  497. package/src/renderers/webgl/WebGLState.js +4 -4
  498. package/src/renderers/webgl/WebGLTextures.js +144 -4
  499. package/src/renderers/webgl/WebGLUtils.js +1 -3
  500. package/src/renderers/webgl-fallback/WebGLBackend.js +244 -87
  501. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +73 -7
  502. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
  503. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
  504. package/src/renderers/webgl-fallback/utils/WebGLState.js +4 -4
  505. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +44 -29
  506. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
  507. package/src/renderers/webgpu/WebGPUBackend.js +451 -128
  508. package/src/renderers/webgpu/WebGPURenderer.js +7 -0
  509. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
  510. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
  511. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +86 -33
  512. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
  513. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
  514. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +28 -5
  515. package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
  516. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +38 -8
  517. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +45 -50
  518. package/src/renderers/webxr/WebXRController.js +1 -1
  519. package/src/renderers/webxr/WebXRManager.js +2 -1
  520. package/src/textures/DepthTexture.js +6 -10
  521. package/src/textures/Source.js +22 -0
  522. package/src/textures/Texture.js +118 -1
  523. package/src/textures/VideoTexture.js +1 -1
  524. package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
  525. package/src/core/RenderTargetArray.js +0 -40
  526. package/src/nodes/utils/EquirectUVNode.js +0 -65
  527. package/src/nodes/utils/MatcapUVNode.js +0 -49
  528. package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
@@ -28,7 +28,6 @@ export * from './effects/AnaglyphEffect.js';
28
28
  export * from './effects/AsciiEffect.js';
29
29
  export * from './effects/OutlineEffect.js';
30
30
  export * from './effects/ParallaxBarrierEffect.js';
31
- export * from './effects/PeppersGhostEffect.js';
32
31
  export * from './effects/StereoEffect.js';
33
32
 
34
33
  export * from './environments/DebugEnvironment.js';
@@ -11,6 +11,7 @@ import {
11
11
  * A utility class with factory methods for creating basic animation clips.
12
12
  *
13
13
  * @hideconstructor
14
+ * @three_import import { AnimationClipCreator } from 'three/addons/animation/AnimationClipCreator.js';
14
15
  */
15
16
  class AnimationClipCreator {
16
17
 
@@ -13,7 +13,7 @@ import {
13
13
  Vector3
14
14
  } from 'three';
15
15
 
16
- const _q = new Quaternion();
16
+ const _quaternion = new Quaternion();
17
17
  const _targetPos = new Vector3();
18
18
  const _targetVec = new Vector3();
19
19
  const _effectorPos = new Vector3();
@@ -29,6 +29,8 @@ const _matrix = new Matrix4();
29
29
  * This class solves the Inverse Kinematics Problem with a [CCD Algorithm]{@link https://web.archive.org/web/20221206080850/https://sites.google.com/site/auraliusproject/ccd-algorithm}.
30
30
  *
31
31
  * `CCDIKSolver` is designed to work with instances of {@link SkinnedMesh}.
32
+ *
33
+ * @three_import import { CCDIKSolver } from 'three/addons/animation/CCDIKSolver.js';
32
34
  */
33
35
  class CCDIKSolver {
34
36
 
@@ -192,8 +194,8 @@ class CCDIKSolver {
192
194
  _axis.crossVectors( _effectorVec, _targetVec );
193
195
  _axis.normalize();
194
196
 
195
- _q.setFromAxisAngle( _axis, angle );
196
- link.quaternion.multiply( _q );
197
+ _quaternion.setFromAxisAngle( _axis, angle );
198
+ link.quaternion.multiply( _quaternion );
197
199
 
198
200
  // TODO: re-consider the limitation specification
199
201
  if ( limitation !== undefined ) {
@@ -322,6 +324,7 @@ function setPositionOfBoneToAttributeArray( array, index, bone, matrixWorldInv )
322
324
  * Helper for visualizing IK bones.
323
325
  *
324
326
  * @augments Object3D
327
+ * @three_import import { CCDIKHelper } from 'three/addons/animation/CCDIKSolver.js';
325
328
  */
326
329
  class CCDIKHelper extends Object3D {
327
330
 
@@ -2,6 +2,7 @@
2
2
  * A utility module with basic WebGL 2 capability testing.
3
3
  *
4
4
  * @hideconstructor
5
+ * @three_import import WebGL from 'three/addons/capabilities/WebGL.js';
5
6
  */
6
7
  class WebGL {
7
8
 
@@ -107,33 +108,6 @@ class WebGL {
107
108
 
108
109
  }
109
110
 
110
- // @deprecated, r168
111
-
112
- static isWebGLAvailable() {
113
-
114
- console.warn( 'isWebGLAvailable() has been deprecated and will be removed in r178. Use isWebGL2Available() instead.' );
115
-
116
- try {
117
-
118
- const canvas = document.createElement( 'canvas' );
119
- return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) );
120
-
121
- } catch ( e ) {
122
-
123
- return false;
124
-
125
- }
126
-
127
- }
128
-
129
- static getWebGLErrorMessage() {
130
-
131
- console.warn( 'getWebGLErrorMessage() has been deprecated and will be removed in r178. Use getWebGL2ErrorMessage() instead.' );
132
-
133
- return this._getErrorMessage( 1 );
134
-
135
- }
136
-
137
111
  }
138
112
 
139
113
  export default WebGL;
@@ -10,6 +10,7 @@ if ( typeof window !== 'undefined' && isAvailable ) {
10
10
  * A utility module with basic WebGPU capability testing.
11
11
  *
12
12
  * @hideconstructor
13
+ * @three_import import WebGPU from 'three/addons/capabilities/WebGPU.js';
13
14
  */
14
15
  class WebGPU {
15
16
 
@@ -96,7 +96,7 @@ const _EPS = 0.000001;
96
96
  * Arcball controls allow the camera to be controlled by a virtual trackball with full touch support and advanced navigation functionality.
97
97
  * Cursor/finger positions and movements are mapped over a virtual trackball surface represented by a gizmo and mapped in intuitive and
98
98
  * consistent camera movements. Dragging cursor/fingers will cause camera to orbit around the center of the trackball in a conservative
99
- * way (returning to the starting point will make the camera to return to its starting orientation).
99
+ * way (returning to the starting point will make the camera return to its starting orientation).
100
100
  *
101
101
  * In addition to supporting pan, zoom and pinch gestures, Arcball controls provide focus< functionality with a double click/tap for intuitively
102
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
@@ -107,6 +107,7 @@ const _EPS = 0.000001;
107
107
  * animation loop when animations are on.
108
108
  *
109
109
  * @augments Controls
110
+ * @three_import import { ArcballControls } from 'three/addons/controls/ArcballControls.js';
110
111
  */
111
112
  class ArcballControls extends Controls {
112
113
 
@@ -195,6 +196,7 @@ class ArcballControls extends Controls {
195
196
  this._farPos0 = 0;
196
197
  this._cameraMatrixState0 = new Matrix4();
197
198
  this._gizmoMatrixState0 = new Matrix4();
199
+ this._target0 = new Vector3();
198
200
 
199
201
  //pointers array
200
202
  this._button = - 1;
@@ -455,7 +457,7 @@ class ArcballControls extends Controls {
455
457
  this._devPxRatio = window.devicePixelRatio;
456
458
 
457
459
  this.domElement.addEventListener( 'contextmenu', this._onContextMenu );
458
- this.domElement.addEventListener( 'wheel', this._onWheel );
460
+ this.domElement.addEventListener( 'wheel', this._onWheel, { passive: false } );
459
461
  this.domElement.addEventListener( 'pointerdown', this._onPointerDown );
460
462
  this.domElement.addEventListener( 'pointercancel', this._onPointerCancel );
461
463
 
@@ -2228,6 +2230,7 @@ class ArcballControls extends Controls {
2228
2230
  */
2229
2231
  reset() {
2230
2232
 
2233
+ this.target.copy( this._target0 );
2231
2234
  this.object.zoom = this._zoom0;
2232
2235
 
2233
2236
  if ( this.object.isPerspectiveCamera ) {
@@ -2300,7 +2303,8 @@ class ArcballControls extends Controls {
2300
2303
  cameraNear: this.object.near,
2301
2304
  cameraUp: this.object.up,
2302
2305
  cameraZoom: this.object.zoom,
2303
- gizmoMatrix: this._gizmos.matrix
2306
+ gizmoMatrix: this._gizmos.matrix,
2307
+ target: this.target
2304
2308
 
2305
2309
  }
2306
2310
  } );
@@ -2315,7 +2319,8 @@ class ArcballControls extends Controls {
2315
2319
  cameraNear: this.object.near,
2316
2320
  cameraUp: this.object.up,
2317
2321
  cameraZoom: this.object.zoom,
2318
- gizmoMatrix: this._gizmos.matrix
2322
+ gizmoMatrix: this._gizmos.matrix,
2323
+ target: this.target
2319
2324
 
2320
2325
  }
2321
2326
  } );
@@ -2346,6 +2351,10 @@ class ArcballControls extends Controls {
2346
2351
  */
2347
2352
  saveState() {
2348
2353
 
2354
+ this.object.updateMatrix();
2355
+ this._gizmos.updateMatrix();
2356
+
2357
+ this._target0.copy( this.target );
2349
2358
  this._cameraMatrixState0.copy( this.object.matrix );
2350
2359
  this._gizmoMatrixState0.copy( this._gizmos.matrix );
2351
2360
  this._nearPos = this.object.near;
@@ -2946,6 +2955,8 @@ class ArcballControls extends Controls {
2946
2955
 
2947
2956
  if ( state.arcballState != undefined ) {
2948
2957
 
2958
+ this.target.fromArray( state.arcballState.target );
2959
+
2949
2960
  this._cameraMatrixState.fromArray( state.arcballState.cameraMatrix.elements );
2950
2961
  this._cameraMatrixState.decompose( this.object.position, this.object.quaternion, this.object.scale );
2951
2962
 
@@ -52,6 +52,7 @@ const STATE = {
52
52
  * ```
53
53
  *
54
54
  * @augments Controls
55
+ * @three_import import { DragControls } from 'three/addons/controls/DragControls.js';
55
56
  */
56
57
  class DragControls extends Controls {
57
58
 
@@ -14,6 +14,7 @@ const _targetPosition = new Vector3();
14
14
  * This class is an alternative implementation of {@link FlyControls}.
15
15
  *
16
16
  * @augments Controls
17
+ * @three_import import { FirstPersonControls } from 'three/addons/controls/FirstPersonControls.js';
17
18
  */
18
19
  class FirstPersonControls extends Controls {
19
20
 
@@ -21,6 +21,7 @@ const _tmpQuaternion = new Quaternion();
21
21
  * (e.g. focus on a specific target).
22
22
  *
23
23
  * @augments Controls
24
+ * @three_import import { FlyControls } from 'three/addons/controls/FlyControls.js';
24
25
  */
25
26
  class FlyControls extends Controls {
26
27
 
@@ -12,6 +12,7 @@ import { OrbitControls } from './OrbitControls.js';
12
12
  * - Pan: Left mouse, or arrow keys / touch: one-finger move.
13
13
  *
14
14
  * @augments OrbitControls
15
+ * @three_import import { MapControls } from 'three/addons/controls/MapControls.js';
15
16
  */
16
17
  class MapControls extends OrbitControls {
17
18
 
@@ -83,6 +83,7 @@ const _EPS = 0.000001;
83
83
  * ```
84
84
  *
85
85
  * @augments Controls
86
+ * @three_import import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
86
87
  */
87
88
  class OrbitControls extends Controls {
88
89
 
@@ -31,6 +31,7 @@ const _lockEvent = { type: 'lock' };
31
31
  */
32
32
  const _unlockEvent = { type: 'unlock' };
33
33
 
34
+ const _MOUSE_SENSITIVITY = 0.002;
34
35
  const _PI_2 = Math.PI / 2;
35
36
 
36
37
  /**
@@ -55,6 +56,7 @@ const _PI_2 = Math.PI / 2;
55
56
  * ```
56
57
  *
57
58
  * @augments Controls
59
+ * @three_import import { PointerLockControls } from 'three/addons/controls/PointerLockControls.js';
58
60
  */
59
61
  class PointerLockControls extends Controls {
60
62
 
@@ -200,7 +202,7 @@ class PointerLockControls extends Controls {
200
202
 
201
203
  /**
202
204
  * Activates the pointer lock.
203
- *
205
+ *
204
206
  * @param {boolean} [unadjustedMovement=false] - Disables OS-level adjustment for mouse acceleration, and accesses raw mouse input instead.
205
207
  * Setting it to true will disable mouse acceleration.
206
208
  */
@@ -232,8 +234,8 @@ function onMouseMove( event ) {
232
234
  const camera = this.object;
233
235
  _euler.setFromQuaternion( camera.quaternion );
234
236
 
235
- _euler.y -= event.movementX * 0.002 * this.pointerSpeed;
236
- _euler.x -= event.movementY * 0.002 * this.pointerSpeed;
237
+ _euler.y -= event.movementX * _MOUSE_SENSITIVITY * this.pointerSpeed;
238
+ _euler.x -= event.movementY * _MOUSE_SENSITIVITY * this.pointerSpeed;
237
239
 
238
240
  _euler.x = Math.max( _PI_2 - this.maxPolarAngle, Math.min( _PI_2 - this.minPolarAngle, _euler.x ) );
239
241
 
@@ -51,6 +51,7 @@ const _moveDirection = new Vector3();
51
51
  * to stay "right side up".
52
52
  *
53
53
  * @augments Controls
54
+ * @three_import import { TrackballControls } from 'three/addons/controls/TrackballControls.js';
54
55
  */
55
56
  class TrackballControls extends Controls {
56
57
 
@@ -72,6 +72,7 @@ const _objectChangeEvent = { type: 'objectChange' };
72
72
  * `TransformControls` expects that its attached 3D object is part of the scene graph.
73
73
  *
74
74
  * @augments Controls
75
+ * @three_import import { TransformControls } from 'three/addons/controls/TransformControls.js';
75
76
  */
76
77
  class TransformControls extends Controls {
77
78
 
@@ -887,6 +888,40 @@ class TransformControls extends Controls {
887
888
 
888
889
  }
889
890
 
891
+ /**
892
+ * Sets the colors of the control's gizmo.
893
+ *
894
+ * @param {number|Color|string} xAxis - The x-axis color.
895
+ * @param {number|Color|string} yAxis - The y-axis color.
896
+ * @param {number|Color|string} zAxis - The z-axis color.
897
+ * @param {number|Color|string} active - The color for active elements.
898
+ */
899
+ setColors( xAxis, yAxis, zAxis, active ) {
900
+
901
+ const materialLib = this._gizmo.materialLib;
902
+
903
+ materialLib.xAxis.color.set( xAxis );
904
+ materialLib.yAxis.color.set( yAxis );
905
+ materialLib.zAxis.color.set( zAxis );
906
+ materialLib.active.color.set( active );
907
+ materialLib.xAxisTransparent.color.set( xAxis );
908
+ materialLib.yAxisTransparent.color.set( yAxis );
909
+ materialLib.zAxisTransparent.color.set( zAxis );
910
+ materialLib.activeTransparent.color.set( active );
911
+
912
+ // update color caches
913
+
914
+ if ( materialLib.xAxis._color ) materialLib.xAxis._color.set( xAxis );
915
+ if ( materialLib.yAxis._color ) materialLib.yAxis._color.set( yAxis );
916
+ if ( materialLib.zAxis._color ) materialLib.zAxis._color.set( zAxis );
917
+ if ( materialLib.active._color ) materialLib.active._color.set( active );
918
+ if ( materialLib.xAxisTransparent._color ) materialLib.xAxisTransparent._color.set( xAxis );
919
+ if ( materialLib.yAxisTransparent._color ) materialLib.yAxisTransparent._color.set( yAxis );
920
+ if ( materialLib.zAxisTransparent._color ) materialLib.zAxisTransparent._color.set( zAxis );
921
+ if ( materialLib.activeTransparent._color ) materialLib.activeTransparent._color.set( active );
922
+
923
+ }
924
+
890
925
  }
891
926
 
892
927
  // mouse / touch event handlers
@@ -1145,6 +1180,19 @@ class TransformControlsGizmo extends Object3D {
1145
1180
  const matGray = gizmoMaterial.clone();
1146
1181
  matGray.color.setHex( 0x787878 );
1147
1182
 
1183
+ // materials in the below property are configurable via setColors()
1184
+
1185
+ this.materialLib = {
1186
+ xAxis: matRed,
1187
+ yAxis: matGreen,
1188
+ zAxis: matBlue,
1189
+ active: matYellow,
1190
+ xAxisTransparent: matRedTransparent,
1191
+ yAxisTransparent: matGreenTransparent,
1192
+ zAxisTransparent: matBlueTransparent,
1193
+ activeTransparent: matYellowTransparent
1194
+ };
1195
+
1148
1196
  // reusable geometry
1149
1197
 
1150
1198
  const arrowGeometry = new CylinderGeometry( 0, 0.04, 0.1, 12 );
@@ -1199,16 +1247,16 @@ class TransformControlsGizmo extends Object3D {
1199
1247
  [ new Mesh( lineGeometry2, matBlue ), null, [ Math.PI / 2, 0, 0 ]]
1200
1248
  ],
1201
1249
  XYZ: [
1202
- [ new Mesh( new OctahedronGeometry( 0.1, 0 ), matWhiteTransparent.clone() ), [ 0, 0, 0 ]]
1250
+ [ new Mesh( new OctahedronGeometry( 0.1, 0 ), matWhiteTransparent ), [ 0, 0, 0 ]]
1203
1251
  ],
1204
1252
  XY: [
1205
- [ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matBlueTransparent.clone() ), [ 0.15, 0.15, 0 ]]
1253
+ [ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matBlueTransparent ), [ 0.15, 0.15, 0 ]]
1206
1254
  ],
1207
1255
  YZ: [
1208
- [ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matRedTransparent.clone() ), [ 0, 0.15, 0.15 ], [ 0, Math.PI / 2, 0 ]]
1256
+ [ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matRedTransparent ), [ 0, 0.15, 0.15 ], [ 0, Math.PI / 2, 0 ]]
1209
1257
  ],
1210
1258
  XZ: [
1211
- [ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matGreenTransparent.clone() ), [ 0.15, 0, 0.15 ], [ - Math.PI / 2, 0, 0 ]]
1259
+ [ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matGreenTransparent ), [ 0.15, 0, 0.15 ], [ - Math.PI / 2, 0, 0 ]]
1212
1260
  ]
1213
1261
  };
1214
1262
 
@@ -1250,13 +1298,13 @@ class TransformControlsGizmo extends Object3D {
1250
1298
  [ new Line( TranslateHelperGeometry(), matHelper ), null, null, null, 'helper' ]
1251
1299
  ],
1252
1300
  X: [
1253
- [ new Line( lineGeometry, matHelper.clone() ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ]
1301
+ [ new Line( lineGeometry, matHelper ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ]
1254
1302
  ],
1255
1303
  Y: [
1256
- [ new Line( lineGeometry, matHelper.clone() ), [ 0, - 1e3, 0 ], [ 0, 0, Math.PI / 2 ], [ 1e6, 1, 1 ], 'helper' ]
1304
+ [ new Line( lineGeometry, matHelper ), [ 0, - 1e3, 0 ], [ 0, 0, Math.PI / 2 ], [ 1e6, 1, 1 ], 'helper' ]
1257
1305
  ],
1258
1306
  Z: [
1259
- [ new Line( lineGeometry, matHelper.clone() ), [ 0, 0, - 1e3 ], [ 0, - Math.PI / 2, 0 ], [ 1e6, 1, 1 ], 'helper' ]
1307
+ [ new Line( lineGeometry, matHelper ), [ 0, 0, - 1e3 ], [ 0, - Math.PI / 2, 0 ], [ 1e6, 1, 1 ], 'helper' ]
1260
1308
  ]
1261
1309
  };
1262
1310
 
@@ -1280,7 +1328,7 @@ class TransformControlsGizmo extends Object3D {
1280
1328
 
1281
1329
  const helperRotate = {
1282
1330
  AXIS: [
1283
- [ new Line( lineGeometry, matHelper.clone() ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ]
1331
+ [ new Line( lineGeometry, matHelper ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ]
1284
1332
  ]
1285
1333
  };
1286
1334
 
@@ -1328,7 +1376,7 @@ class TransformControlsGizmo extends Object3D {
1328
1376
  [ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matGreenTransparent ), [ 0.15, 0, 0.15 ], [ - Math.PI / 2, 0, 0 ]]
1329
1377
  ],
1330
1378
  XYZ: [
1331
- [ new Mesh( new BoxGeometry( 0.1, 0.1, 0.1 ), matWhiteTransparent.clone() ) ],
1379
+ [ new Mesh( new BoxGeometry( 0.1, 0.1, 0.1 ), matWhiteTransparent ) ],
1332
1380
  ]
1333
1381
  };
1334
1382
 
@@ -1361,13 +1409,13 @@ class TransformControlsGizmo extends Object3D {
1361
1409
 
1362
1410
  const helperScale = {
1363
1411
  X: [
1364
- [ new Line( lineGeometry, matHelper.clone() ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ]
1412
+ [ new Line( lineGeometry, matHelper ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ]
1365
1413
  ],
1366
1414
  Y: [
1367
- [ new Line( lineGeometry, matHelper.clone() ), [ 0, - 1e3, 0 ], [ 0, 0, Math.PI / 2 ], [ 1e6, 1, 1 ], 'helper' ]
1415
+ [ new Line( lineGeometry, matHelper ), [ 0, - 1e3, 0 ], [ 0, 0, Math.PI / 2 ], [ 1e6, 1, 1 ], 'helper' ]
1368
1416
  ],
1369
1417
  Z: [
1370
- [ new Line( lineGeometry, matHelper.clone() ), [ 0, 0, - 1e3 ], [ 0, - Math.PI / 2, 0 ], [ 1e6, 1, 1 ], 'helper' ]
1418
+ [ new Line( lineGeometry, matHelper ), [ 0, 0, - 1e3 ], [ 0, - Math.PI / 2, 0 ], [ 1e6, 1, 1 ], 'helper' ]
1371
1419
  ]
1372
1420
  };
1373
1421
 
@@ -1748,7 +1796,7 @@ class TransformControlsGizmo extends Object3D {
1748
1796
 
1749
1797
  if ( handle.name === this.axis ) {
1750
1798
 
1751
- handle.material.color.setHex( 0xffff00 );
1799
+ handle.material.color.copy( this.materialLib.active.color );
1752
1800
  handle.material.opacity = 1.0;
1753
1801
 
1754
1802
  } else if ( this.axis.split( '' ).some( function ( a ) {
@@ -1757,7 +1805,7 @@ class TransformControlsGizmo extends Object3D {
1757
1805
 
1758
1806
  } ) ) {
1759
1807
 
1760
- handle.material.color.setHex( 0xffff00 );
1808
+ handle.material.color.copy( this.materialLib.active.color );
1761
1809
  handle.material.opacity = 1.0;
1762
1810
 
1763
1811
  }
@@ -25,6 +25,8 @@ const _up = new Vector3( 0, 1, 0 );
25
25
  *
26
26
  * This module can only be used with {@link WebGLRenderer}. When using {@link WebGPURenderer},
27
27
  * use {@link CSMShadowNode} instead.
28
+ *
29
+ * @three_import import { CSM } from 'three/addons/csm/CSM.js';
28
30
  */
29
31
  export class CSM {
30
32
 
@@ -4,6 +4,8 @@ const inverseProjectionMatrix = new Matrix4();
4
4
 
5
5
  /**
6
6
  * Represents the frustum of a CSM instance.
7
+ *
8
+ * @three_import import { CSMFrustum } from 'three/addons/csm/CSMFrustum.js';
7
9
  */
8
10
  class CSMFrustum {
9
11
 
@@ -16,6 +16,7 @@ import {
16
16
  * A helper for visualizing the cascades of a CSM instance.
17
17
  *
18
18
  * @augments Group
19
+ * @three_import import { CSMHelper } from 'three/addons/csm/CSMHelper.js';
19
20
  */
20
21
  class CSMHelper extends Group {
21
22
 
@@ -1,6 +1,9 @@
1
1
  import { ShaderChunk } from 'three';
2
2
 
3
- /** @module CSMShader */
3
+ /**
4
+ * @module CSMShader
5
+ * @three_import import { CSMShader } from 'three/addons/csm/CSMShader.js';
6
+ */
4
7
 
5
8
  /**
6
9
  * The object that holds the GLSL enhancements to enable CSM. This
@@ -42,6 +42,7 @@ class LwLight extends Object3D {
42
42
  * use {@link CSM} instead.
43
43
  *
44
44
  * @augments ShadowBaseNode
45
+ * @three_import import { CSMShadowNode } from 'three/addons/csm/CSMShadowNode.js';
45
46
  */
46
47
  class CSMShadowNode extends ShadowBaseNode {
47
48
 
@@ -162,7 +163,6 @@ class CSMShadowNode extends ShadowBaseNode {
162
163
  this.mainFrustum = new CSMFrustum( data );
163
164
 
164
165
  const light = this.light;
165
- const parent = light.parent;
166
166
 
167
167
  for ( let i = 0; i < this.cascades; i ++ ) {
168
168
 
@@ -174,9 +174,6 @@ class CSMShadowNode extends ShadowBaseNode {
174
174
 
175
175
  this.lights.push( lwLight );
176
176
 
177
- parent.add( lwLight );
178
- parent.add( lwLight.target );
179
-
180
177
  lwLight.shadow = lShadow;
181
178
 
182
179
  this._shadowNodes.push( shadow( lwLight, lShadow ) );
@@ -502,9 +499,26 @@ class CSMShadowNode extends ShadowBaseNode {
502
499
  updateBefore( /*builder*/ ) {
503
500
 
504
501
  const light = this.light;
502
+ const parent = light.parent;
505
503
  const camera = this.camera;
506
504
  const frustums = this.frustums;
507
505
 
506
+ // make sure the placeholder light objects which represent the
507
+ // multiple cascade shadow casters are part of the scene graph
508
+
509
+ for ( let i = 0; i < this.lights.length; i ++ ) {
510
+
511
+ const lwLight = this.lights[ i ];
512
+
513
+ if ( lwLight.parent === null ) {
514
+
515
+ parent.add( lwLight.target );
516
+ parent.add( lwLight );
517
+
518
+ }
519
+
520
+ }
521
+
508
522
  _lightDirection.subVectors( light.target.position, light.position ).normalize();
509
523
 
510
524
  // for each frustum we need to find its min-max box aligned with the light orientation
@@ -17,6 +17,7 @@ import {
17
17
  * A Granny Knot curve.
18
18
  *
19
19
  * @augments Curve
20
+ * @three_import import { GrannyKnot } from 'three/addons/curves/CurveExtras.js';
20
21
  */
21
22
  class GrannyKnot extends Curve {
22
23
 
@@ -47,6 +48,7 @@ class GrannyKnot extends Curve {
47
48
  * A heart curve.
48
49
  *
49
50
  * @augments Curve
51
+ * @three_import import { HeartCurve } from 'three/addons/curves/CurveExtras.js';
50
52
  */
51
53
  class HeartCurve extends Curve {
52
54
 
@@ -96,6 +98,7 @@ class HeartCurve extends Curve {
96
98
  * A Viviani curve.
97
99
  *
98
100
  * @augments Curve
101
+ * @three_import import { VivianiCurve } from 'three/addons/curves/CurveExtras.js';
99
102
  */
100
103
  class VivianiCurve extends Curve {
101
104
 
@@ -146,6 +149,7 @@ class VivianiCurve extends Curve {
146
149
  * A knot curve.
147
150
  *
148
151
  * @augments Curve
152
+ * @three_import import { KnotCurve } from 'three/addons/curves/CurveExtras.js';
149
153
  */
150
154
  class KnotCurve extends Curve {
151
155
 
@@ -179,6 +183,7 @@ class KnotCurve extends Curve {
179
183
  * A helix curve.
180
184
  *
181
185
  * @augments Curve
186
+ * @three_import import { HelixCurve } from 'three/addons/curves/CurveExtras.js';
182
187
  */
183
188
  class HelixCurve extends Curve {
184
189
 
@@ -212,6 +217,7 @@ class HelixCurve extends Curve {
212
217
  * A Trefoil Knot.
213
218
  *
214
219
  * @augments Curve
220
+ * @three_import import { TrefoilKnot } from 'three/addons/curves/CurveExtras.js';
215
221
  */
216
222
  class TrefoilKnot extends Curve {
217
223
 
@@ -261,6 +267,7 @@ class TrefoilKnot extends Curve {
261
267
  * A torus knot.
262
268
  *
263
269
  * @augments Curve
270
+ * @three_import import { TorusKnot } from 'three/addons/curves/CurveExtras.js';
264
271
  */
265
272
  class TorusKnot extends Curve {
266
273
 
@@ -313,6 +320,7 @@ class TorusKnot extends Curve {
313
320
  * A Cinquefoil Knot.
314
321
  *
315
322
  * @augments Curve
323
+ * @three_import import { CinquefoilKnot } from 'three/addons/curves/CurveExtras.js';
316
324
  */
317
325
  class CinquefoilKnot extends Curve {
318
326
 
@@ -365,6 +373,7 @@ class CinquefoilKnot extends Curve {
365
373
  * A Trefoil Polynomial Knot.
366
374
  *
367
375
  * @augments Curve
376
+ * @three_import import { TrefoilPolynomialKnot } from 'three/addons/curves/CurveExtras.js';
368
377
  */
369
378
  class TrefoilPolynomialKnot extends Curve {
370
379
 
@@ -421,6 +430,7 @@ function scaleTo( x, y, t ) {
421
430
  * A Figure Eight Polynomial Knot.
422
431
  *
423
432
  * @augments Curve
433
+ * @three_import import { FigureEightPolynomialKnot } from 'three/addons/curves/CurveExtras.js';
424
434
  */
425
435
  class FigureEightPolynomialKnot extends Curve {
426
436
 
@@ -470,6 +480,7 @@ class FigureEightPolynomialKnot extends Curve {
470
480
  * A Decorated Torus Knot 4a.
471
481
  *
472
482
  * @augments Curve
483
+ * @three_import import { DecoratedTorusKnot4a } from 'three/addons/curves/CurveExtras.js';
473
484
  */
474
485
  class DecoratedTorusKnot4a extends Curve {
475
486
 
@@ -519,6 +530,7 @@ class DecoratedTorusKnot4a extends Curve {
519
530
  * A Decorated Torus Knot 4b.
520
531
  *
521
532
  * @augments Curve
533
+ * @three_import import { DecoratedTorusKnot4b } from 'three/addons/curves/CurveExtras.js';
522
534
  */
523
535
  class DecoratedTorusKnot4b extends Curve {
524
536
 
@@ -568,6 +580,7 @@ class DecoratedTorusKnot4b extends Curve {
568
580
  * A Decorated Torus Knot 5a.
569
581
  *
570
582
  * @augments Curve
583
+ * @three_import import { DecoratedTorusKnot5a } from 'three/addons/curves/CurveExtras.js';
571
584
  */
572
585
  class DecoratedTorusKnot5a extends Curve {
573
586
 
@@ -617,6 +630,7 @@ class DecoratedTorusKnot5a extends Curve {
617
630
  * A Decorated Torus Knot 5c.
618
631
  *
619
632
  * @augments Curve
633
+ * @three_import import { DecoratedTorusKnot5c } from 'three/addons/curves/CurveExtras.js';
620
634
  */
621
635
  class DecoratedTorusKnot5c extends Curve {
622
636
 
@@ -11,6 +11,7 @@ import * as NURBSUtils from '../curves/NURBSUtils.js';
11
11
  * Implementation is based on `(x, y [, z=0 [, w=1]])` control points with `w=weight`.
12
12
  *
13
13
  * @augments Curve
14
+ * @three_import import { NURBSCurve } from 'three/addons/curves/NURBSCurve.js';
14
15
  */
15
16
  class NURBSCurve extends Curve {
16
17
 
@@ -7,6 +7,8 @@ import * as NURBSUtils from '../curves/NURBSUtils.js';
7
7
  * This class represents a NURBS surface.
8
8
  *
9
9
  * Implementation is based on `(x, y [, z=0 [, w=1]])` control points with `w=weight`.
10
+ *
11
+ * @three_import import { NURBSSurface } from 'three/addons/curves/NURBSSurface.js';
10
12
  */
11
13
  class NURBSSurface {
12
14
 
@@ -3,7 +3,10 @@ import {
3
3
  Vector4
4
4
  } from 'three';
5
5
 
6
- /** @module NURBSUtils */
6
+ /**
7
+ * @module NURBSUtils
8
+ * @three_import import * as NURBSUtils from 'three/addons/curves/NURBSUtils.js';
9
+ */
7
10
 
8
11
  /**
9
12
  * Finds knot vector span.
@@ -7,6 +7,8 @@ import * as NURBSUtils from '../curves/NURBSUtils.js';
7
7
  * This class represents a NURBS volume.
8
8
  *
9
9
  * Implementation is based on `(x, y [, z=0 [, w=1]])` control points with `w=weight`.
10
+ *
11
+ * @three_import import { NURBSVolume } from 'three/addons/curves/NURBSVolume.js';
10
12
  */
11
13
  class NURBSVolume {
12
14