@needle-tools/three 0.169.20 → 0.183.2-canary.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 (1051) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +5 -6
  3. package/build/three.cjs +54178 -56709
  4. package/build/three.core.js +59506 -0
  5. package/build/three.core.min.js +6 -0
  6. package/build/three.module.js +11645 -73012
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +648 -0
  9. package/build/three.tsl.min.js +6 -0
  10. package/build/three.webgpu.js +53905 -51657
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +53884 -51814
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  15. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  16. package/examples/jsm/Addons.js +5 -15
  17. package/examples/jsm/animation/AnimationClipCreator.js +58 -6
  18. package/examples/jsm/animation/CCDIKSolver.js +152 -45
  19. package/examples/jsm/capabilities/WebGL.js +28 -29
  20. package/examples/jsm/capabilities/WebGPU.js +19 -17
  21. package/examples/jsm/controls/ArcballControls.js +474 -178
  22. package/examples/jsm/controls/DragControls.js +100 -58
  23. package/examples/jsm/controls/FirstPersonControls.js +116 -6
  24. package/examples/jsm/controls/FlyControls.js +50 -2
  25. package/examples/jsm/controls/MapControls.js +96 -8
  26. package/examples/jsm/controls/OrbitControls.js +496 -57
  27. package/examples/jsm/controls/PointerLockControls.js +115 -22
  28. package/examples/jsm/controls/TrackballControls.js +166 -14
  29. package/examples/jsm/controls/TransformControls.js +336 -26
  30. package/examples/jsm/csm/CSM.js +232 -18
  31. package/examples/jsm/csm/CSMFrustum.js +61 -4
  32. package/examples/jsm/csm/CSMHelper.js +50 -0
  33. package/examples/jsm/csm/CSMShader.js +13 -1
  34. package/examples/jsm/csm/CSMShadowNode.js +599 -0
  35. package/examples/jsm/curves/CurveExtras.js +303 -31
  36. package/examples/jsm/curves/NURBSCurve.js +91 -16
  37. package/examples/jsm/curves/NURBSSurface.js +52 -6
  38. package/examples/jsm/curves/NURBSUtils.js +102 -112
  39. package/examples/jsm/curves/NURBSVolume.js +24 -4
  40. package/examples/jsm/effects/AnaglyphEffect.js +134 -7
  41. package/examples/jsm/effects/AsciiEffect.js +69 -22
  42. package/examples/jsm/effects/OutlineEffect.js +61 -111
  43. package/examples/jsm/effects/ParallaxBarrierEffect.js +30 -0
  44. package/examples/jsm/effects/StereoEffect.js +31 -0
  45. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  46. package/examples/jsm/environments/DebugEnvironment.js +50 -0
  47. package/examples/jsm/environments/RoomEnvironment.js +83 -42
  48. package/examples/jsm/exporters/DRACOExporter.js +56 -14
  49. package/examples/jsm/exporters/EXRExporter.js +40 -9
  50. package/examples/jsm/exporters/GLTFExporter.js +502 -169
  51. package/examples/jsm/exporters/OBJExporter.js +21 -1
  52. package/examples/jsm/exporters/PLYExporter.js +44 -12
  53. package/examples/jsm/exporters/STLExporter.js +27 -5
  54. package/examples/jsm/exporters/USDZExporter.js +781 -291
  55. package/examples/jsm/geometries/BoxLineGeometry.js +23 -0
  56. package/examples/jsm/geometries/ConvexGeometry.js +19 -0
  57. package/examples/jsm/geometries/DecalGeometry.js +91 -30
  58. package/examples/jsm/geometries/ParametricFunctions.js +100 -0
  59. package/examples/jsm/geometries/ParametricGeometry.js +38 -5
  60. package/examples/jsm/geometries/RoundedBoxGeometry.js +68 -7
  61. package/examples/jsm/geometries/TeapotGeometry.js +23 -38
  62. package/examples/jsm/geometries/TextGeometry.js +48 -29
  63. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  64. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  65. package/examples/jsm/helpers/LightProbeHelper.js +36 -0
  66. package/examples/jsm/helpers/LightProbeHelperGPU.js +38 -1
  67. package/examples/jsm/helpers/OctreeHelper.js +36 -0
  68. package/examples/jsm/helpers/PositionalAudioHelper.js +60 -0
  69. package/examples/jsm/helpers/RapierHelper.js +59 -0
  70. package/examples/jsm/helpers/RectAreaLightHelper.js +36 -3
  71. package/examples/jsm/helpers/TextureHelper.js +28 -0
  72. package/examples/jsm/helpers/TextureHelperGPU.js +214 -0
  73. package/examples/jsm/helpers/VertexNormalsHelper.js +61 -2
  74. package/examples/jsm/helpers/VertexTangentsHelper.js +47 -2
  75. package/examples/jsm/helpers/ViewHelper.js +181 -9
  76. package/examples/jsm/inspector/Inspector.js +487 -0
  77. package/examples/jsm/inspector/RendererInspector.js +425 -0
  78. package/examples/jsm/inspector/tabs/Console.js +238 -0
  79. package/examples/jsm/inspector/tabs/Parameters.js +348 -0
  80. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  81. package/examples/jsm/inspector/tabs/Viewer.js +166 -0
  82. package/examples/jsm/inspector/ui/Graph.js +95 -0
  83. package/examples/jsm/inspector/ui/Item.js +170 -0
  84. package/examples/jsm/inspector/ui/List.js +75 -0
  85. package/examples/jsm/inspector/ui/Profiler.js +1975 -0
  86. package/examples/jsm/inspector/ui/Style.js +1613 -0
  87. package/examples/jsm/inspector/ui/Tab.js +233 -0
  88. package/examples/jsm/inspector/ui/Values.js +439 -0
  89. package/examples/jsm/inspector/ui/utils.js +56 -0
  90. package/examples/jsm/interactive/HTMLMesh.js +43 -12
  91. package/examples/jsm/interactive/InteractiveGroup.js +170 -52
  92. package/examples/jsm/interactive/SelectionBox.js +106 -9
  93. package/examples/jsm/interactive/SelectionHelper.js +76 -30
  94. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  95. package/examples/jsm/libs/meshopt_decoder.module.js +76 -58
  96. package/examples/jsm/libs/motion-controllers.module.js +1 -1
  97. package/examples/jsm/lighting/TiledLighting.js +42 -0
  98. package/examples/jsm/lights/LightProbeGenerator.js +44 -7
  99. package/examples/jsm/lights/RectAreaLightTexturesLib.js +50 -14
  100. package/examples/jsm/lights/RectAreaLightUniformsLib.js +16 -0
  101. package/examples/jsm/lines/Line2.js +41 -4
  102. package/examples/jsm/lines/LineGeometry.js +80 -2
  103. package/examples/jsm/lines/LineMaterial.js +105 -5
  104. package/examples/jsm/lines/LineSegments2.js +54 -4
  105. package/examples/jsm/lines/LineSegmentsGeometry.js +65 -8
  106. package/examples/jsm/lines/Wireframe.js +41 -4
  107. package/examples/jsm/lines/WireframeGeometry2.js +27 -2
  108. package/examples/jsm/lines/webgpu/Line2.js +28 -2
  109. package/examples/jsm/lines/webgpu/LineSegments2.js +59 -24
  110. package/examples/jsm/lines/webgpu/Wireframe.js +86 -0
  111. package/examples/jsm/loaders/3DMLoader.js +78 -6
  112. package/examples/jsm/loaders/3MFLoader.js +148 -7
  113. package/examples/jsm/loaders/AMFLoader.js +34 -14
  114. package/examples/jsm/loaders/BVHLoader.js +59 -12
  115. package/examples/jsm/loaders/ColladaLoader.js +61 -4027
  116. package/examples/jsm/loaders/DDSLoader.js +68 -1
  117. package/examples/jsm/loaders/DRACOLoader.js +146 -22
  118. package/examples/jsm/loaders/EXRLoader.js +255 -34
  119. package/examples/jsm/loaders/FBXLoader.js +80 -42
  120. package/examples/jsm/loaders/FontLoader.js +83 -6
  121. package/examples/jsm/loaders/GCodeLoader.js +71 -14
  122. package/examples/jsm/loaders/GLTFLoader.js +381 -263
  123. package/examples/jsm/loaders/HDRCubeTextureLoader.js +52 -3
  124. package/examples/jsm/loaders/HDRLoader.js +485 -0
  125. package/examples/jsm/loaders/IESLoader.js +42 -0
  126. package/examples/jsm/loaders/KMZLoader.js +39 -6
  127. package/examples/jsm/loaders/KTX2Loader.js +124 -48
  128. package/examples/jsm/loaders/KTXLoader.js +31 -10
  129. package/examples/jsm/loaders/LDrawLoader.js +192 -145
  130. package/examples/jsm/loaders/LUT3dlLoader.js +47 -10
  131. package/examples/jsm/loaders/LUTCubeLoader.js +46 -9
  132. package/examples/jsm/loaders/LUTImageLoader.js +79 -38
  133. package/examples/jsm/loaders/LWOLoader.js +54 -59
  134. package/examples/jsm/loaders/LottieLoader.js +54 -1
  135. package/examples/jsm/loaders/MD2Loader.js +37 -1
  136. package/examples/jsm/loaders/MDDLoader.js +57 -12
  137. package/examples/jsm/loaders/MTLLoader.js +60 -35
  138. package/examples/jsm/loaders/MaterialXLoader.js +268 -34
  139. package/examples/jsm/loaders/NRRDLoader.js +40 -8
  140. package/examples/jsm/loaders/OBJLoader.js +51 -2
  141. package/examples/jsm/loaders/PCDLoader.js +173 -21
  142. package/examples/jsm/loaders/PDBLoader.js +41 -2
  143. package/examples/jsm/loaders/PLYLoader.js +70 -39
  144. package/examples/jsm/loaders/PVRLoader.js +25 -6
  145. package/examples/jsm/loaders/RGBELoader.js +6 -438
  146. package/examples/jsm/loaders/STLLoader.js +48 -38
  147. package/examples/jsm/loaders/SVGLoader.js +119 -25
  148. package/examples/jsm/loaders/TDSLoader.js +92 -74
  149. package/examples/jsm/loaders/TGALoader.js +23 -2
  150. package/examples/jsm/loaders/TIFFLoader.js +23 -0
  151. package/examples/jsm/loaders/TTFLoader.js +50 -3
  152. package/examples/jsm/loaders/USDLoader.js +279 -0
  153. package/examples/jsm/loaders/USDZLoader.js +4 -858
  154. package/examples/jsm/loaders/UltraHDRLoader.js +338 -166
  155. package/examples/jsm/loaders/VOXLoader.js +688 -87
  156. package/examples/jsm/loaders/VRMLLoader.js +121 -12
  157. package/examples/jsm/loaders/VTKLoader.js +77 -25
  158. package/examples/jsm/loaders/XYZLoader.js +36 -0
  159. package/examples/jsm/loaders/collada/ColladaComposer.js +2950 -0
  160. package/examples/jsm/loaders/collada/ColladaParser.js +1962 -0
  161. package/examples/jsm/loaders/lwo/IFFParser.js +77 -77
  162. package/examples/jsm/loaders/usd/USDAParser.js +822 -0
  163. package/examples/jsm/loaders/usd/USDCParser.js +1852 -0
  164. package/examples/jsm/loaders/usd/USDComposer.js +4041 -0
  165. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
  166. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
  167. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  168. package/examples/jsm/math/Capsule.js +91 -14
  169. package/examples/jsm/math/ColorConverter.js +22 -0
  170. package/examples/jsm/math/ColorSpaces.js +74 -2
  171. package/examples/jsm/math/ConvexHull.js +517 -93
  172. package/examples/jsm/math/ImprovedNoise.js +32 -15
  173. package/examples/jsm/math/Lut.js +113 -0
  174. package/examples/jsm/math/MeshSurfaceSampler.js +78 -13
  175. package/examples/jsm/math/OBB.js +141 -29
  176. package/examples/jsm/math/Octree.js +283 -7
  177. package/examples/jsm/math/SimplexNoise.js +68 -42
  178. package/examples/jsm/misc/ConvexObjectBreaker.js +45 -25
  179. package/examples/jsm/misc/GPUComputationRenderer.js +96 -20
  180. package/examples/jsm/misc/Gyroscope.js +12 -0
  181. package/examples/jsm/misc/MD2Character.js +117 -2
  182. package/examples/jsm/misc/MD2CharacterComplex.js +175 -11
  183. package/examples/jsm/misc/MorphAnimMesh.js +44 -0
  184. package/examples/jsm/misc/MorphBlendMesh.js +103 -0
  185. package/examples/jsm/misc/ProgressiveLightMap.js +100 -54
  186. package/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
  187. package/examples/jsm/misc/RollerCoaster.js +57 -0
  188. package/examples/jsm/misc/TubePainter.js +437 -40
  189. package/examples/jsm/misc/Volume.js +123 -76
  190. package/examples/jsm/misc/VolumeSlice.js +95 -49
  191. package/examples/jsm/modifiers/CurveModifier.js +66 -38
  192. package/examples/jsm/modifiers/CurveModifierGPU.js +42 -19
  193. package/examples/jsm/modifiers/EdgeSplitModifier.js +20 -0
  194. package/examples/jsm/modifiers/SimplifyModifier.js +24 -10
  195. package/examples/jsm/modifiers/TessellateModifier.js +35 -2
  196. package/examples/jsm/objects/GroundedSkybox.js +25 -6
  197. package/examples/jsm/objects/Lensflare.js +94 -2
  198. package/examples/jsm/objects/LensflareMesh.js +64 -10
  199. package/examples/jsm/objects/MarchingCubes.js +90 -5
  200. package/examples/jsm/objects/Reflector.js +76 -2
  201. package/examples/jsm/objects/ReflectorForSSRPass.js +41 -0
  202. package/examples/jsm/objects/Refractor.js +62 -0
  203. package/examples/jsm/objects/ShadowMesh.js +54 -4
  204. package/examples/jsm/objects/Sky.js +106 -16
  205. package/examples/jsm/objects/SkyMesh.js +211 -38
  206. package/examples/jsm/objects/Water.js +49 -8
  207. package/examples/jsm/objects/Water2.js +49 -7
  208. package/examples/jsm/objects/Water2Mesh.js +50 -9
  209. package/examples/jsm/objects/WaterMesh.js +136 -43
  210. package/examples/jsm/physics/AmmoPhysics.js +60 -7
  211. package/examples/jsm/physics/JoltPhysics.js +65 -12
  212. package/examples/jsm/physics/RapierPhysics.js +217 -21
  213. package/examples/jsm/postprocessing/AfterimagePass.js +110 -29
  214. package/examples/jsm/postprocessing/BloomPass.js +128 -26
  215. package/examples/jsm/postprocessing/BokehPass.js +99 -22
  216. package/examples/jsm/postprocessing/ClearPass.js +54 -3
  217. package/examples/jsm/postprocessing/CubeTexturePass.js +82 -21
  218. package/examples/jsm/postprocessing/DotScreenPass.js +59 -10
  219. package/examples/jsm/postprocessing/EffectComposer.js +140 -6
  220. package/examples/jsm/postprocessing/FXAAPass.js +40 -0
  221. package/examples/jsm/postprocessing/FilmPass.js +54 -5
  222. package/examples/jsm/postprocessing/GTAOPass.js +202 -57
  223. package/examples/jsm/postprocessing/GlitchPass.js +86 -34
  224. package/examples/jsm/postprocessing/HalftonePass.js +65 -10
  225. package/examples/jsm/postprocessing/LUTPass.js +38 -8
  226. package/examples/jsm/postprocessing/MaskPass.js +91 -0
  227. package/examples/jsm/postprocessing/OutlinePass.js +272 -135
  228. package/examples/jsm/postprocessing/OutputPass.js +65 -14
  229. package/examples/jsm/postprocessing/Pass.js +100 -4
  230. package/examples/jsm/postprocessing/RenderPass.js +94 -0
  231. package/examples/jsm/postprocessing/RenderPixelatedPass.js +124 -45
  232. package/examples/jsm/postprocessing/RenderTransitionPass.js +120 -21
  233. package/examples/jsm/postprocessing/SAOPass.js +128 -55
  234. package/examples/jsm/postprocessing/SMAAPass.js +106 -75
  235. package/examples/jsm/postprocessing/SSAARenderPass.js +118 -35
  236. package/examples/jsm/postprocessing/SSAOPass.js +173 -60
  237. package/examples/jsm/postprocessing/SSRPass.js +268 -53
  238. package/examples/jsm/postprocessing/SavePass.js +69 -16
  239. package/examples/jsm/postprocessing/ShaderPass.js +65 -7
  240. package/examples/jsm/postprocessing/TAARenderPass.js +79 -24
  241. package/examples/jsm/postprocessing/TexturePass.js +72 -8
  242. package/examples/jsm/postprocessing/UnrealBloomPass.js +168 -59
  243. package/examples/jsm/renderers/CSS2DRenderer.js +98 -5
  244. package/examples/jsm/renderers/CSS3DRenderer.js +111 -7
  245. package/examples/jsm/renderers/Projector.js +288 -32
  246. package/examples/jsm/renderers/SVGRenderer.js +323 -61
  247. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +3 -1
  248. package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
  249. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +5 -1
  250. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +12 -5
  251. package/examples/jsm/shaders/AfterimageShader.js +8 -3
  252. package/examples/jsm/shaders/BasicShader.js +8 -1
  253. package/examples/jsm/shaders/BleachBypassShader.js +10 -3
  254. package/examples/jsm/shaders/BlendShader.js +8 -1
  255. package/examples/jsm/shaders/BokehShader.js +9 -3
  256. package/examples/jsm/shaders/BokehShader2.js +11 -4
  257. package/examples/jsm/shaders/BrightnessContrastShader.js +10 -4
  258. package/examples/jsm/shaders/ColorCorrectionShader.js +8 -1
  259. package/examples/jsm/shaders/ColorifyShader.js +8 -1
  260. package/examples/jsm/shaders/ConvolutionShader.js +9 -38
  261. package/examples/jsm/shaders/CopyShader.js +8 -1
  262. package/examples/jsm/shaders/DOFMipMapShader.js +10 -3
  263. package/examples/jsm/shaders/DepthLimitedBlurShader.js +10 -1
  264. package/examples/jsm/shaders/DigitalGlitch.js +10 -7
  265. package/examples/jsm/shaders/DotScreenShader.js +8 -3
  266. package/examples/jsm/shaders/ExposureShader.js +8 -1
  267. package/examples/jsm/shaders/FXAAShader.js +233 -221
  268. package/examples/jsm/shaders/FilmShader.js +13 -0
  269. package/examples/jsm/shaders/FocusShader.js +8 -3
  270. package/examples/jsm/shaders/FreiChenShader.js +10 -3
  271. package/examples/jsm/shaders/GTAOShader.js +55 -45
  272. package/examples/jsm/shaders/GammaCorrectionShader.js +11 -2
  273. package/examples/jsm/shaders/HalftoneShader.js +24 -4
  274. package/examples/jsm/shaders/HorizontalBlurShader.js +12 -3
  275. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +9 -2
  276. package/examples/jsm/shaders/HueSaturationShader.js +10 -3
  277. package/examples/jsm/shaders/KaleidoShader.js +11 -4
  278. package/examples/jsm/shaders/LuminosityHighPassShader.js +8 -4
  279. package/examples/jsm/shaders/LuminosityShader.js +8 -2
  280. package/examples/jsm/shaders/MirrorShader.js +10 -4
  281. package/examples/jsm/shaders/NormalMapShader.js +7 -2
  282. package/examples/jsm/shaders/OutputShader.js +19 -1
  283. package/examples/jsm/shaders/PoissonDenoiseShader.js +30 -17
  284. package/examples/jsm/shaders/RGBShiftShader.js +8 -1
  285. package/examples/jsm/shaders/SAOShader.js +27 -5
  286. package/examples/jsm/shaders/SMAAShader.js +24 -1
  287. package/examples/jsm/shaders/SSAOShader.js +37 -6
  288. package/examples/jsm/shaders/SSRShader.js +32 -6
  289. package/examples/jsm/shaders/SepiaShader.js +8 -3
  290. package/examples/jsm/shaders/SobelOperatorShader.js +9 -3
  291. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +13 -8
  292. package/examples/jsm/shaders/TechnicolorShader.js +10 -4
  293. package/examples/jsm/shaders/ToonShader.js +29 -6
  294. package/examples/jsm/shaders/TriangleBlurShader.js +9 -4
  295. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +19 -6
  296. package/examples/jsm/shaders/VelocityShader.js +8 -1
  297. package/examples/jsm/shaders/VerticalBlurShader.js +9 -2
  298. package/examples/jsm/shaders/VerticalTiltShiftShader.js +8 -1
  299. package/examples/jsm/shaders/VignetteShader.js +8 -3
  300. package/examples/jsm/shaders/VolumeShader.js +11 -2
  301. package/examples/jsm/shaders/WaterRefractionShader.js +11 -0
  302. package/examples/jsm/textures/FlakesTexture.js +14 -0
  303. package/examples/jsm/transpiler/AST.js +436 -31
  304. package/examples/jsm/transpiler/GLSLDecoder.js +380 -135
  305. package/examples/jsm/transpiler/Linker.js +327 -0
  306. package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -1
  307. package/examples/jsm/transpiler/TSLEncoder.js +363 -97
  308. package/examples/jsm/transpiler/Transpiler.js +50 -1
  309. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  310. package/examples/jsm/transpiler/WGSLEncoder.js +839 -0
  311. package/examples/jsm/tsl/display/AfterImageNode.js +244 -0
  312. package/examples/jsm/tsl/display/AnaglyphPassNode.js +549 -0
  313. package/examples/jsm/tsl/display/AnamorphicNode.js +282 -0
  314. package/examples/jsm/tsl/display/BilateralBlurNode.js +364 -0
  315. package/{src/nodes → examples/jsm/tsl}/display/BleachBypass.js +11 -4
  316. package/examples/jsm/tsl/display/BloomNode.js +534 -0
  317. package/examples/jsm/tsl/display/CRT.js +150 -0
  318. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
  319. package/examples/jsm/tsl/display/DenoiseNode.js +334 -0
  320. package/examples/jsm/tsl/display/DepthOfFieldNode.js +554 -0
  321. package/examples/jsm/tsl/display/DotScreenNode.js +104 -0
  322. package/examples/jsm/tsl/display/FXAANode.js +365 -0
  323. package/examples/jsm/tsl/display/FilmNode.js +101 -0
  324. package/examples/jsm/tsl/display/GTAONode.js +571 -0
  325. package/examples/jsm/tsl/display/GaussianBlurNode.js +389 -0
  326. package/examples/jsm/tsl/display/GodraysNode.js +624 -0
  327. package/examples/jsm/tsl/display/LensflareNode.js +279 -0
  328. package/examples/jsm/tsl/display/Lut3DNode.js +109 -0
  329. package/examples/jsm/tsl/display/MotionBlur.js +33 -0
  330. package/examples/jsm/tsl/display/OutlineNode.js +762 -0
  331. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +89 -0
  332. package/examples/jsm/tsl/display/PixelationPassNode.js +335 -0
  333. package/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
  334. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  335. package/examples/jsm/tsl/display/SMAANode.js +768 -0
  336. package/{src/nodes → examples/jsm/tsl}/display/SSAAPassNode.js +120 -49
  337. package/examples/jsm/tsl/display/SSGINode.js +642 -0
  338. package/examples/jsm/tsl/display/SSRNode.js +656 -0
  339. package/examples/jsm/tsl/display/SSSNode.js +490 -0
  340. package/{src/nodes → examples/jsm/tsl}/display/Sepia.js +9 -2
  341. package/examples/jsm/tsl/display/Shape.js +29 -0
  342. package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +61 -19
  343. package/examples/jsm/tsl/display/StereoCompositePassNode.js +192 -0
  344. package/{src/nodes → examples/jsm/tsl}/display/StereoPassNode.js +48 -12
  345. package/examples/jsm/tsl/display/TRAANode.js +726 -0
  346. package/examples/jsm/tsl/display/TransitionNode.js +141 -0
  347. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  348. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  349. package/examples/jsm/tsl/display/hashBlur.js +54 -0
  350. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  351. package/examples/jsm/tsl/lighting/TiledLightsNode.js +442 -0
  352. package/examples/jsm/tsl/math/Bayer.js +73 -0
  353. package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  354. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  355. package/examples/jsm/tsl/utils/Raymarching.js +70 -0
  356. package/examples/jsm/utils/BufferGeometryUtils.js +91 -29
  357. package/examples/jsm/utils/CameraUtils.js +15 -6
  358. package/examples/jsm/utils/GeometryCompressionUtils.js +23 -30
  359. package/examples/jsm/utils/GeometryUtils.js +32 -27
  360. package/examples/jsm/utils/LDrawUtils.js +14 -5
  361. package/examples/jsm/utils/SceneOptimizer.js +458 -0
  362. package/examples/jsm/utils/SceneUtils.js +53 -3
  363. package/examples/jsm/utils/ShadowMapViewer.js +72 -33
  364. package/examples/jsm/utils/ShadowMapViewerGPU.js +61 -29
  365. package/examples/jsm/utils/SkeletonUtils.js +48 -0
  366. package/examples/jsm/utils/SortUtils.js +17 -5
  367. package/examples/jsm/utils/UVsDebug.js +12 -4
  368. package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +16 -0
  369. package/examples/jsm/utils/{TextureUtilsGPU.js → WebGPUTextureUtils.js} +20 -2
  370. package/examples/jsm/utils/WorkerPool.js +67 -2
  371. package/examples/jsm/webxr/ARButton.js +19 -0
  372. package/examples/jsm/webxr/OculusHandModel.js +84 -0
  373. package/examples/jsm/webxr/OculusHandPointerModel.js +148 -22
  374. package/examples/jsm/webxr/Text2D.js +20 -6
  375. package/examples/jsm/webxr/VRButton.js +31 -0
  376. package/examples/jsm/webxr/XRButton.js +23 -0
  377. package/examples/jsm/webxr/XRControllerModelFactory.js +94 -3
  378. package/examples/jsm/webxr/XREstimatedLight.js +35 -4
  379. package/examples/jsm/webxr/XRHandMeshModel.js +37 -0
  380. package/examples/jsm/webxr/XRHandModelFactory.js +96 -6
  381. package/examples/jsm/webxr/XRHandPrimitiveModel.js +44 -0
  382. package/examples/jsm/webxr/XRPlanes.js +18 -0
  383. package/package.json +29 -34
  384. package/src/Three.Core.js +198 -0
  385. package/src/Three.Legacy.js +0 -21
  386. package/src/Three.TSL.js +641 -0
  387. package/src/Three.WebGPU.Nodes.js +14 -186
  388. package/src/Three.WebGPU.js +16 -186
  389. package/src/Three.js +2 -197
  390. package/src/animation/AnimationAction.js +263 -31
  391. package/src/animation/AnimationClip.js +162 -7
  392. package/src/animation/AnimationMixer.js +99 -15
  393. package/src/animation/AnimationObjectGroup.js +45 -21
  394. package/src/animation/AnimationUtils.js +163 -24
  395. package/src/animation/KeyframeTrack.js +191 -17
  396. package/src/animation/PropertyBinding.js +91 -16
  397. package/src/animation/PropertyMixer.js +72 -5
  398. package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
  399. package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
  400. package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
  401. package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
  402. package/src/animation/tracks/StringKeyframeTrack.js +33 -2
  403. package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
  404. package/src/audio/Audio.js +386 -8
  405. package/src/audio/AudioAnalyser.js +58 -1
  406. package/src/audio/AudioContext.js +15 -0
  407. package/src/audio/AudioListener.js +94 -13
  408. package/src/audio/PositionalAudio.js +107 -0
  409. package/src/cameras/ArrayCamera.js +37 -0
  410. package/src/cameras/Camera.js +61 -0
  411. package/src/cameras/CubeCamera.js +86 -0
  412. package/src/cameras/OrthographicCamera.js +110 -1
  413. package/src/cameras/PerspectiveCamera.js +174 -35
  414. package/src/cameras/StereoCamera.js +48 -2
  415. package/src/constants.js +1546 -11
  416. package/src/core/BufferAttribute.js +417 -3
  417. package/src/core/BufferGeometry.js +407 -22
  418. package/src/core/Clock.js +69 -8
  419. package/src/core/EventDispatcher.js +52 -8
  420. package/src/core/GLBufferAttribute.js +113 -2
  421. package/src/core/InstancedBufferAttribute.js +29 -0
  422. package/src/core/InstancedBufferGeometry.js +20 -0
  423. package/src/core/InstancedInterleavedBuffer.js +26 -0
  424. package/src/core/InterleavedBuffer.js +141 -7
  425. package/src/core/InterleavedBufferAttribute.js +200 -2
  426. package/src/core/Layers.js +71 -10
  427. package/src/core/Object3D.js +673 -26
  428. package/src/core/Raycaster.js +136 -2
  429. package/src/core/RenderTarget.js +256 -27
  430. package/src/core/RenderTarget3D.js +48 -0
  431. package/src/core/Timer.js +184 -0
  432. package/src/core/Uniform.js +29 -0
  433. package/src/core/UniformsGroup.js +84 -2
  434. package/src/extras/Controls.js +89 -1
  435. package/src/extras/DataUtils.js +50 -9
  436. package/src/extras/Earcut.js +18 -779
  437. package/src/extras/ImageUtils.js +22 -14
  438. package/src/extras/PMREMGenerator.js +316 -67
  439. package/src/extras/ShapeUtils.js +24 -2
  440. package/src/extras/TextureUtils.js +101 -15
  441. package/src/extras/core/Curve.js +156 -55
  442. package/src/extras/core/CurvePath.js +63 -22
  443. package/src/extras/core/Interpolations.js +34 -2
  444. package/src/extras/core/Path.js +134 -1
  445. package/src/extras/core/Shape.js +66 -3
  446. package/src/extras/core/ShapePath.js +80 -4
  447. package/src/extras/curves/ArcCurve.js +22 -0
  448. package/src/extras/curves/CatmullRomCurve3.js +89 -18
  449. package/src/extras/curves/CubicBezierCurve.js +67 -0
  450. package/src/extras/curves/CubicBezierCurve3.js +50 -0
  451. package/src/extras/curves/EllipseCurve.js +102 -0
  452. package/src/extras/curves/LineCurve.js +36 -0
  453. package/src/extras/curves/LineCurve3.js +36 -0
  454. package/src/extras/curves/QuadraticBezierCurve.js +59 -0
  455. package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
  456. package/src/extras/curves/SplineCurve.js +48 -0
  457. package/src/extras/lib/earcut.js +685 -0
  458. package/src/geometries/BoxGeometry.js +39 -0
  459. package/src/geometries/CapsuleGeometry.js +196 -11
  460. package/src/geometries/CircleGeometry.js +41 -0
  461. package/src/geometries/ConeGeometry.js +39 -0
  462. package/src/geometries/CylinderGeometry.js +42 -2
  463. package/src/geometries/DodecahedronGeometry.js +33 -0
  464. package/src/geometries/EdgesGeometry.js +30 -2
  465. package/src/geometries/ExtrudeGeometry.js +148 -52
  466. package/src/geometries/IcosahedronGeometry.js +33 -0
  467. package/src/geometries/LatheGeometry.js +44 -3
  468. package/src/geometries/OctahedronGeometry.js +33 -0
  469. package/src/geometries/PlaneGeometry.js +35 -0
  470. package/src/geometries/PolyhedronGeometry.js +30 -1
  471. package/src/geometries/RingGeometry.js +37 -0
  472. package/src/geometries/ShapeGeometry.js +38 -0
  473. package/src/geometries/SphereGeometry.js +38 -0
  474. package/src/geometries/TetrahedronGeometry.js +33 -0
  475. package/src/geometries/TorusGeometry.js +44 -3
  476. package/src/geometries/TorusKnotGeometry.js +39 -0
  477. package/src/geometries/TubeGeometry.js +50 -0
  478. package/src/geometries/WireframeGeometry.js +32 -0
  479. package/src/helpers/ArrowHelper.js +62 -5
  480. package/src/helpers/AxesHelper.js +28 -0
  481. package/src/helpers/Box3Helper.js +28 -0
  482. package/src/helpers/BoxHelper.js +43 -7
  483. package/src/helpers/CameraHelper.js +103 -27
  484. package/src/helpers/DirectionalLightHelper.js +55 -0
  485. package/src/helpers/GridHelper.js +26 -0
  486. package/src/helpers/HemisphereLightHelper.js +42 -0
  487. package/src/helpers/PlaneHelper.js +33 -0
  488. package/src/helpers/PointLightHelper.js +43 -24
  489. package/src/helpers/PolarGridHelper.js +30 -0
  490. package/src/helpers/SkeletonHelper.js +73 -7
  491. package/src/helpers/SpotLightHelper.js +43 -0
  492. package/src/lights/AmbientLight.js +25 -0
  493. package/src/lights/DirectionalLight.js +70 -0
  494. package/src/lights/DirectionalLightShadow.js +15 -0
  495. package/src/lights/HemisphereLight.js +42 -0
  496. package/src/lights/Light.js +37 -11
  497. package/src/lights/LightProbe.js +37 -9
  498. package/src/lights/LightShadow.js +202 -7
  499. package/src/lights/PointLight.js +74 -0
  500. package/src/lights/PointLightShadow.js +15 -80
  501. package/src/lights/RectAreaLight.js +59 -0
  502. package/src/lights/SpotLight.js +124 -1
  503. package/src/lights/SpotLightShadow.js +33 -3
  504. package/src/lights/webgpu/IESSpotLight.js +22 -0
  505. package/src/lights/webgpu/ProjectorLight.js +46 -0
  506. package/src/loaders/AnimationLoader.js +34 -2
  507. package/src/loaders/AudioLoader.js +34 -2
  508. package/src/loaders/BufferGeometryLoader.js +38 -13
  509. package/src/loaders/Cache.js +75 -2
  510. package/src/loaders/CompressedTextureLoader.js +36 -3
  511. package/src/loaders/CubeTextureLoader.js +45 -0
  512. package/src/loaders/DataTextureLoader.js +45 -4
  513. package/src/loaders/FileLoader.js +85 -5
  514. package/src/loaders/ImageBitmapLoader.js +113 -11
  515. package/src/loaders/ImageLoader.js +85 -8
  516. package/src/loaders/Loader.js +144 -0
  517. package/src/loaders/LoaderUtils.js +18 -36
  518. package/src/loaders/LoadingManager.js +187 -0
  519. package/src/loaders/MaterialLoader.js +62 -3
  520. package/src/loaders/ObjectLoader.js +131 -31
  521. package/src/loaders/TextureLoader.js +33 -0
  522. package/src/loaders/nodes/NodeLoader.js +68 -4
  523. package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
  524. package/src/loaders/nodes/NodeObjectLoader.js +61 -0
  525. package/src/materials/LineBasicMaterial.js +74 -1
  526. package/src/materials/LineDashedMaterial.js +52 -1
  527. package/src/materials/Material.js +502 -8
  528. package/src/materials/MeshBasicMaterial.js +168 -2
  529. package/src/materials/MeshDepthMaterial.js +94 -0
  530. package/src/materials/MeshDistanceMaterial.js +76 -0
  531. package/src/materials/MeshLambertMaterial.js +283 -0
  532. package/src/materials/MeshMatcapMaterial.js +164 -0
  533. package/src/materials/MeshNormalMaterial.js +114 -0
  534. package/src/materials/MeshPhongMaterial.js +298 -0
  535. package/src/materials/MeshPhysicalMaterial.js +296 -4
  536. package/src/materials/MeshStandardMaterial.js +300 -2
  537. package/src/materials/MeshToonMaterial.js +219 -0
  538. package/src/materials/PointsMaterial.js +89 -0
  539. package/src/materials/RawShaderMaterial.js +25 -0
  540. package/src/materials/ShaderMaterial.js +234 -6
  541. package/src/materials/ShadowMaterial.js +54 -0
  542. package/src/materials/SpriteMaterial.js +82 -0
  543. package/src/materials/nodes/Line2NodeMaterial.js +158 -53
  544. package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
  545. package/src/materials/nodes/LineDashedNodeMaterial.js +81 -6
  546. package/src/materials/nodes/MeshBasicNodeMaterial.js +59 -2
  547. package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
  548. package/src/materials/nodes/MeshMatcapNodeMaterial.js +23 -3
  549. package/src/materials/nodes/MeshNormalNodeMaterial.js +27 -4
  550. package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
  551. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +276 -3
  552. package/src/materials/nodes/MeshSSSNodeMaterial.js +98 -10
  553. package/src/materials/nodes/MeshStandardNodeMaterial.js +83 -4
  554. package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
  555. package/src/materials/nodes/NodeMaterial.js +789 -74
  556. package/src/materials/nodes/NodeMaterials.js +0 -1
  557. package/src/materials/nodes/PointsNodeMaterial.js +180 -11
  558. package/src/materials/nodes/ShadowNodeMaterial.js +38 -0
  559. package/src/materials/nodes/SpriteNodeMaterial.js +86 -23
  560. package/src/materials/nodes/VolumeNodeMaterial.js +57 -84
  561. package/src/materials/nodes/manager/NodeMaterialObserver.js +329 -12
  562. package/src/math/Box2.js +177 -0
  563. package/src/math/Box3.js +271 -0
  564. package/src/math/Color.js +355 -11
  565. package/src/math/ColorManagement.js +158 -92
  566. package/src/math/Cylindrical.js +65 -6
  567. package/src/math/Euler.js +139 -5
  568. package/src/math/Frustum.js +108 -9
  569. package/src/math/FrustumArray.js +258 -0
  570. package/src/math/Interpolant.js +87 -8
  571. package/src/math/Line3.js +221 -2
  572. package/src/math/MathUtils.js +408 -20
  573. package/src/math/Matrix2.js +70 -0
  574. package/src/math/Matrix3.js +229 -4
  575. package/src/math/Matrix4.js +489 -94
  576. package/src/math/Plane.js +164 -2
  577. package/src/math/Quaternion.js +322 -90
  578. package/src/math/Ray.js +162 -0
  579. package/src/math/Sphere.js +175 -0
  580. package/src/math/Spherical.js +73 -11
  581. package/src/math/SphericalHarmonics3.js +112 -14
  582. package/src/math/Triangle.js +206 -2
  583. package/src/math/Vector2.js +396 -10
  584. package/src/math/Vector3.js +550 -15
  585. package/src/math/Vector4.js +415 -9
  586. package/src/math/interpolants/BezierInterpolant.js +108 -0
  587. package/src/math/interpolants/CubicInterpolant.js +10 -1
  588. package/src/math/interpolants/DiscreteInterpolant.js +10 -2
  589. package/src/math/interpolants/LinearInterpolant.js +13 -0
  590. package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
  591. package/src/nodes/Nodes.js +91 -88
  592. package/src/nodes/TSL.js +32 -38
  593. package/src/nodes/accessors/AccessorsUtils.js +37 -9
  594. package/src/nodes/accessors/Arrays.js +68 -0
  595. package/src/nodes/accessors/BatchNode.js +49 -14
  596. package/src/nodes/accessors/Bitangent.js +82 -13
  597. package/src/nodes/accessors/BufferAttributeNode.js +269 -8
  598. package/src/nodes/accessors/BufferNode.js +91 -2
  599. package/src/nodes/accessors/BuiltinNode.js +63 -0
  600. package/src/nodes/accessors/Camera.js +400 -10
  601. package/src/nodes/accessors/ClippingNode.js +149 -45
  602. package/src/nodes/accessors/CubeTextureNode.js +137 -7
  603. package/src/nodes/accessors/InstanceNode.js +245 -40
  604. package/src/nodes/accessors/InstancedMeshNode.js +50 -0
  605. package/src/nodes/accessors/Lights.js +88 -0
  606. package/src/nodes/accessors/MaterialNode.js +355 -13
  607. package/src/nodes/accessors/MaterialProperties.js +57 -1
  608. package/src/nodes/accessors/MaterialReferenceNode.js +52 -14
  609. package/src/nodes/accessors/ModelNode.js +117 -5
  610. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -39
  611. package/src/nodes/accessors/MorphNode.js +73 -26
  612. package/src/nodes/accessors/Normal.js +174 -19
  613. package/src/nodes/accessors/Object3DNode.js +146 -12
  614. package/src/nodes/accessors/PointUVNode.js +25 -0
  615. package/src/nodes/accessors/Position.js +119 -7
  616. package/src/nodes/accessors/ReferenceBaseNode.js +190 -4
  617. package/src/nodes/accessors/ReferenceNode.js +223 -8
  618. package/src/nodes/accessors/ReflectVector.js +29 -3
  619. package/src/nodes/accessors/RendererReferenceNode.js +45 -2
  620. package/src/nodes/accessors/SceneProperties.js +53 -0
  621. package/src/nodes/accessors/SkinningNode.js +180 -43
  622. package/src/nodes/accessors/StorageBufferNode.js +278 -26
  623. package/src/nodes/accessors/StorageTextureNode.js +205 -12
  624. package/src/nodes/accessors/Tangent.js +48 -10
  625. package/src/nodes/accessors/TangentUtils.js +46 -0
  626. package/src/nodes/accessors/Texture3DNode.js +104 -11
  627. package/src/nodes/accessors/TextureBicubic.js +31 -4
  628. package/src/nodes/accessors/TextureNode.js +564 -52
  629. package/src/nodes/accessors/TextureSizeNode.js +42 -1
  630. package/src/nodes/accessors/UV.js +9 -1
  631. package/src/nodes/accessors/UniformArrayNode.js +226 -34
  632. package/src/nodes/accessors/UserDataNode.js +46 -2
  633. package/src/nodes/accessors/VelocityNode.js +93 -3
  634. package/src/nodes/accessors/VertexColorNode.js +39 -4
  635. package/src/nodes/code/CodeNode.js +101 -8
  636. package/src/nodes/code/ExpressionNode.js +29 -2
  637. package/src/nodes/code/FunctionCallNode.js +98 -10
  638. package/src/nodes/code/FunctionNode.js +69 -2
  639. package/src/nodes/core/ArrayNode.js +174 -0
  640. package/src/nodes/core/AssignNode.js +80 -9
  641. package/src/nodes/core/AttributeNode.js +47 -4
  642. package/src/nodes/core/BypassNode.js +47 -3
  643. package/src/nodes/core/ConstNode.js +32 -0
  644. package/src/nodes/core/ContextNode.js +220 -14
  645. package/src/nodes/core/IndexNode.js +72 -7
  646. package/src/nodes/core/InputNode.js +50 -1
  647. package/src/nodes/core/InspectorNode.js +128 -0
  648. package/src/nodes/core/IsolateNode.js +133 -0
  649. package/src/nodes/core/LightingModel.js +65 -5
  650. package/src/nodes/core/MRTNode.js +113 -2
  651. package/src/nodes/core/Node.js +595 -36
  652. package/src/nodes/core/NodeAttribute.js +38 -0
  653. package/src/nodes/core/NodeBuilder.js +1840 -121
  654. package/src/nodes/core/NodeCache.js +41 -2
  655. package/src/nodes/core/NodeCode.js +31 -0
  656. package/src/nodes/core/NodeError.js +28 -0
  657. package/src/nodes/core/NodeFrame.js +153 -24
  658. package/src/nodes/core/NodeFunction.js +48 -1
  659. package/src/nodes/core/NodeFunctionInput.js +44 -0
  660. package/src/nodes/core/NodeParser.js +13 -1
  661. package/src/nodes/core/NodeUniform.js +53 -1
  662. package/src/nodes/core/NodeUtils.js +201 -51
  663. package/src/nodes/core/NodeVar.js +47 -1
  664. package/src/nodes/core/NodeVarying.js +47 -1
  665. package/src/nodes/core/OutputStructNode.js +54 -12
  666. package/src/nodes/core/ParameterNode.js +60 -2
  667. package/src/nodes/core/PropertyNode.js +286 -7
  668. package/src/nodes/core/StackNode.js +337 -20
  669. package/src/nodes/core/StackTrace.js +139 -0
  670. package/src/nodes/core/StructNode.js +134 -0
  671. package/src/nodes/core/StructType.js +13 -0
  672. package/src/nodes/core/StructTypeNode.js +126 -6
  673. package/src/nodes/core/SubBuildNode.js +89 -0
  674. package/src/nodes/core/TempNode.js +31 -5
  675. package/src/nodes/core/UniformGroupNode.js +85 -7
  676. package/src/nodes/core/UniformNode.js +163 -16
  677. package/src/nodes/core/VarNode.js +317 -10
  678. package/src/nodes/core/VaryingNode.js +115 -13
  679. package/src/nodes/core/constants.js +40 -0
  680. package/src/nodes/display/BlendModes.js +171 -0
  681. package/src/nodes/display/BumpMapNode.js +38 -2
  682. package/src/nodes/display/ColorAdjustment.js +118 -6
  683. package/src/nodes/display/ColorSpaceFunctions.js +22 -6
  684. package/src/nodes/display/ColorSpaceNode.js +97 -47
  685. package/src/nodes/display/FrontFacingNode.js +64 -7
  686. package/src/nodes/display/NormalMapNode.js +101 -54
  687. package/src/nodes/display/PassNode.js +690 -33
  688. package/src/nodes/display/RenderOutputNode.js +94 -4
  689. package/src/nodes/display/ScreenNode.js +138 -27
  690. package/src/nodes/display/ToneMappingFunctions.js +62 -10
  691. package/src/nodes/display/ToneMappingNode.js +88 -8
  692. package/src/nodes/display/ToonOutlinePassNode.js +84 -4
  693. package/src/nodes/display/ViewportDepthNode.js +227 -10
  694. package/src/nodes/display/ViewportDepthTextureNode.js +39 -5
  695. package/src/nodes/display/ViewportSharedTextureNode.js +35 -1
  696. package/src/nodes/display/ViewportTextureNode.js +171 -7
  697. package/src/nodes/fog/Fog.js +97 -0
  698. package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
  699. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  700. package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
  701. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  702. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  703. package/src/nodes/functions/BSDF/LTC.js +45 -1
  704. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +1 -1
  705. package/src/nodes/functions/BasicLightingModel.js +28 -6
  706. package/src/nodes/functions/PhongLightingModel.js +36 -6
  707. package/src/nodes/functions/PhysicalLightingModel.js +336 -91
  708. package/src/nodes/functions/ShadowMaskModel.js +30 -3
  709. package/src/nodes/functions/ToonLightingModel.js +21 -2
  710. package/src/nodes/functions/VolumetricLightingModel.js +183 -0
  711. package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
  712. package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
  713. package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
  714. package/src/nodes/geometry/RangeNode.js +97 -8
  715. package/src/nodes/gpgpu/AtomicFunctionNode.js +198 -23
  716. package/src/nodes/gpgpu/BarrierNode.js +52 -3
  717. package/src/nodes/gpgpu/ComputeBuiltinNode.js +135 -6
  718. package/src/nodes/gpgpu/ComputeNode.js +212 -16
  719. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  720. package/src/nodes/gpgpu/WorkgroupInfoNode.js +143 -9
  721. package/src/nodes/lighting/AONode.js +18 -0
  722. package/src/nodes/lighting/AmbientLightNode.js +10 -0
  723. package/src/nodes/lighting/AnalyticLightNode.js +186 -399
  724. package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
  725. package/src/nodes/lighting/BasicLightMapNode.js +17 -0
  726. package/src/nodes/lighting/DirectionalLightNode.js +12 -11
  727. package/src/nodes/lighting/EnvironmentNode.js +59 -19
  728. package/src/nodes/lighting/HemisphereLightNode.js +33 -2
  729. package/src/nodes/lighting/IESSpotLightNode.js +13 -1
  730. package/src/nodes/lighting/IrradianceNode.js +17 -0
  731. package/src/nodes/lighting/LightProbeNode.js +20 -0
  732. package/src/nodes/lighting/LightUtils.js +11 -3
  733. package/src/nodes/lighting/LightingContextNode.js +52 -4
  734. package/src/nodes/lighting/LightingNode.js +15 -6
  735. package/src/nodes/lighting/LightsNode.js +238 -35
  736. package/src/nodes/lighting/PointLightNode.js +60 -25
  737. package/src/nodes/lighting/PointShadowNode.js +325 -0
  738. package/src/nodes/lighting/ProjectorLightNode.js +91 -0
  739. package/src/nodes/lighting/RectAreaLightNode.js +50 -14
  740. package/src/nodes/lighting/ShadowBaseNode.js +81 -0
  741. package/src/nodes/lighting/ShadowFilterNode.js +264 -0
  742. package/src/nodes/lighting/ShadowNode.js +867 -0
  743. package/src/nodes/lighting/SpotLightNode.js +99 -18
  744. package/src/nodes/materialx/MaterialXNodes.js +131 -2
  745. package/src/nodes/materialx/lib/mx_noise.js +166 -2
  746. package/src/nodes/math/BitcastNode.js +156 -0
  747. package/src/nodes/math/BitcountNode.js +433 -0
  748. package/src/nodes/math/ConditionalNode.js +110 -21
  749. package/src/nodes/math/Hash.js +8 -0
  750. package/src/nodes/math/MathNode.js +820 -97
  751. package/src/nodes/math/MathUtils.js +47 -1
  752. package/src/nodes/math/OperatorNode.js +517 -84
  753. package/src/nodes/math/PackFloatNode.js +98 -0
  754. package/src/nodes/math/TriNoise3D.js +17 -7
  755. package/src/nodes/math/UnpackFloatNode.js +96 -0
  756. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  757. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  758. package/src/nodes/pmrem/PMREMNode.js +180 -23
  759. package/src/nodes/pmrem/PMREMUtils.js +114 -5
  760. package/src/nodes/procedural/Checker.js +8 -0
  761. package/src/nodes/shapes/Shapes.js +33 -0
  762. package/src/nodes/tsl/TSLBase.js +10 -4
  763. package/src/nodes/tsl/TSLCore.js +732 -160
  764. package/src/nodes/utils/ArrayElementNode.js +55 -4
  765. package/src/nodes/utils/ConvertNode.js +31 -0
  766. package/src/nodes/utils/CubeMapNode.js +79 -2
  767. package/src/nodes/utils/DebugNode.js +83 -0
  768. package/src/nodes/utils/Discard.js +18 -2
  769. package/src/nodes/utils/EquirectUV.js +27 -0
  770. package/src/nodes/utils/EventNode.js +118 -0
  771. package/src/nodes/utils/FlipNode.js +38 -0
  772. package/src/nodes/utils/FunctionOverloadingNode.js +91 -22
  773. package/src/nodes/utils/JoinNode.js +57 -4
  774. package/src/nodes/utils/LoopNode.js +193 -55
  775. package/src/nodes/utils/MatcapUV.js +22 -0
  776. package/src/nodes/utils/MaxMipLevelNode.js +49 -1
  777. package/src/nodes/utils/MemberNode.js +120 -0
  778. package/src/nodes/utils/Oscillators.js +41 -0
  779. package/src/nodes/utils/Packing.js +30 -1
  780. package/src/nodes/utils/PostProcessingUtils.js +154 -0
  781. package/src/nodes/utils/RTTNode.js +165 -9
  782. package/src/nodes/utils/ReflectorNode.js +407 -21
  783. package/src/nodes/utils/RemapNode.js +81 -2
  784. package/src/nodes/utils/RotateNode.js +41 -1
  785. package/src/nodes/utils/SampleNode.js +91 -0
  786. package/src/nodes/utils/SetNode.js +44 -1
  787. package/src/nodes/utils/SplitNode.js +66 -3
  788. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  789. package/src/nodes/utils/SpriteUtils.js +16 -0
  790. package/src/nodes/utils/StorageArrayElementNode.js +56 -3
  791. package/src/nodes/utils/Timer.js +26 -0
  792. package/src/nodes/utils/TriplanarTextures.js +65 -0
  793. package/src/nodes/utils/UVUtils.js +48 -0
  794. package/src/nodes/utils/ViewportUtils.js +12 -0
  795. package/src/objects/BatchedMesh.js +798 -309
  796. package/src/objects/Bone.js +24 -0
  797. package/src/objects/ClippingGroup.js +68 -0
  798. package/src/objects/Group.js +24 -0
  799. package/src/objects/InstancedMesh.js +131 -2
  800. package/src/objects/LOD.js +99 -5
  801. package/src/objects/Line.js +90 -7
  802. package/src/objects/LineLoop.js +20 -0
  803. package/src/objects/LineSegments.js +20 -1
  804. package/src/objects/Mesh.js +84 -0
  805. package/src/objects/Points.js +60 -0
  806. package/src/objects/Skeleton.js +120 -5
  807. package/src/objects/SkinnedMesh.js +102 -6
  808. package/src/objects/Sprite.js +65 -1
  809. package/src/renderers/WebGL3DRenderTarget.js +26 -0
  810. package/src/renderers/WebGLArrayRenderTarget.js +26 -0
  811. package/src/renderers/WebGLCubeRenderTarget.js +41 -5
  812. package/src/renderers/WebGLRenderTarget.js +19 -0
  813. package/src/renderers/WebGLRenderer.js +1016 -278
  814. package/src/renderers/common/Animation.js +123 -14
  815. package/src/renderers/common/Attributes.js +41 -1
  816. package/src/renderers/common/Backend.js +623 -44
  817. package/src/renderers/common/Background.js +99 -16
  818. package/src/renderers/common/BindGroup.js +37 -2
  819. package/src/renderers/common/Binding.js +46 -0
  820. package/src/renderers/common/Bindings.js +211 -20
  821. package/src/renderers/common/BlendMode.js +143 -0
  822. package/src/renderers/common/Buffer.js +89 -0
  823. package/src/renderers/common/BufferUtils.js +25 -0
  824. package/src/renderers/common/BundleGroup.js +57 -0
  825. package/src/renderers/common/CanvasTarget.js +341 -0
  826. package/src/renderers/common/ChainMap.js +73 -10
  827. package/src/renderers/common/ClippingContext.js +172 -87
  828. package/src/renderers/common/Color4.js +40 -0
  829. package/src/renderers/common/ComputePipeline.js +24 -0
  830. package/src/renderers/common/Constants.js +2 -1
  831. package/src/renderers/common/CubeRenderTarget.js +77 -7
  832. package/src/renderers/common/DataMap.js +37 -1
  833. package/src/renderers/common/Geometries.js +163 -14
  834. package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  835. package/src/renderers/common/Info.js +81 -36
  836. package/src/renderers/common/InspectorBase.js +146 -0
  837. package/src/renderers/common/Lighting.js +57 -0
  838. package/src/renderers/common/Pipeline.js +22 -0
  839. package/src/renderers/common/Pipelines.js +150 -7
  840. package/src/renderers/common/PostProcessing.js +22 -84
  841. package/src/renderers/common/ProgrammableStage.js +60 -2
  842. package/src/renderers/common/QuadMesh.js +63 -6
  843. package/src/renderers/common/RenderBundle.js +14 -8
  844. package/src/renderers/common/RenderBundles.js +40 -10
  845. package/src/renderers/common/RenderContext.js +219 -4
  846. package/src/renderers/common/RenderContexts.js +54 -17
  847. package/src/renderers/common/RenderList.js +233 -24
  848. package/src/renderers/common/RenderLists.js +46 -6
  849. package/src/renderers/common/RenderObject.js +548 -46
  850. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  851. package/src/renderers/common/RenderObjects.js +133 -15
  852. package/src/renderers/common/RenderPipeline.js +216 -6
  853. package/src/renderers/common/Renderer.js +2155 -332
  854. package/src/renderers/common/RendererUtils.js +200 -0
  855. package/src/renderers/common/SampledTexture.js +99 -39
  856. package/src/renderers/common/Sampler.js +148 -1
  857. package/src/renderers/common/Storage3DTexture.js +100 -0
  858. package/src/renderers/common/StorageArrayTexture.js +84 -0
  859. package/src/renderers/common/StorageBuffer.js +38 -2
  860. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  861. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  862. package/src/renderers/common/StorageTexture.js +65 -0
  863. package/src/renderers/common/Textures.js +273 -57
  864. package/src/renderers/common/TimestampQueryPool.js +163 -0
  865. package/src/renderers/common/Uniform.js +233 -3
  866. package/src/renderers/common/UniformBuffer.js +19 -0
  867. package/src/renderers/common/UniformsGroup.js +235 -26
  868. package/src/renderers/common/XRManager.js +1677 -0
  869. package/src/renderers/common/XRRenderTarget.js +91 -0
  870. package/src/renderers/common/extras/PMREMGenerator.js +371 -108
  871. package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
  872. package/src/renderers/common/nodes/NodeLibrary.js +95 -17
  873. package/src/renderers/common/nodes/NodeManager.js +852 -0
  874. package/src/renderers/common/nodes/NodeSampledTexture.js +84 -8
  875. package/src/renderers/common/nodes/NodeSampler.js +41 -1
  876. package/src/renderers/common/nodes/NodeStorageBuffer.js +48 -3
  877. package/src/renderers/common/nodes/NodeUniform.js +285 -2
  878. package/src/renderers/common/nodes/NodeUniformBuffer.js +81 -0
  879. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  880. package/src/renderers/shaders/DFGLUTData.js +49 -0
  881. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  882. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  883. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  884. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  885. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  886. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
  887. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  888. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
  889. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
  890. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +7 -11
  891. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  892. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +5 -2
  893. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  894. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  895. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  896. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +154 -59
  897. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
  898. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  899. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
  900. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
  901. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
  902. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  903. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
  904. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +230 -181
  905. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  906. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  907. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  908. package/src/renderers/shaders/ShaderChunk.js +3 -3
  909. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  910. package/src/renderers/shaders/ShaderLib/depth.glsl.js +14 -2
  911. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
  912. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  913. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  914. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  915. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  916. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  917. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  918. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  919. package/src/renderers/shaders/ShaderLib.js +7 -5
  920. package/src/renderers/shaders/UniformsLib.js +2 -7
  921. package/src/renderers/shaders/UniformsUtils.js +21 -2
  922. package/src/renderers/webgl/WebGLAttributes.js +4 -0
  923. package/src/renderers/webgl/WebGLBackground.js +30 -5
  924. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  925. package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
  926. package/src/renderers/webgl/WebGLCapabilities.js +7 -14
  927. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  928. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  929. package/src/renderers/webgl/WebGLGeometries.js +10 -35
  930. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
  931. package/src/renderers/webgl/WebGLInfo.js +3 -1
  932. package/src/renderers/webgl/WebGLLights.js +18 -1
  933. package/src/renderers/webgl/WebGLMaterials.js +12 -0
  934. package/src/renderers/webgl/WebGLObjects.js +3 -1
  935. package/src/renderers/webgl/WebGLOutput.js +267 -0
  936. package/src/renderers/webgl/WebGLProgram.js +87 -148
  937. package/src/renderers/webgl/WebGLPrograms.js +53 -51
  938. package/src/renderers/webgl/WebGLRenderLists.js +15 -0
  939. package/src/renderers/webgl/WebGLShadowMap.js +204 -28
  940. package/src/renderers/webgl/WebGLState.js +88 -56
  941. package/src/renderers/webgl/WebGLTextures.js +293 -59
  942. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  943. package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
  944. package/src/renderers/webgl/WebGLUtils.js +7 -5
  945. package/src/renderers/webgl-fallback/WebGLBackend.js +1416 -293
  946. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
  947. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +785 -92
  948. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +62 -1
  949. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  950. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +3 -3
  951. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  952. package/src/renderers/webgl-fallback/utils/WebGLState.js +584 -20
  953. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +468 -80
  954. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +396 -0
  955. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +72 -24
  956. package/src/renderers/webgpu/WebGPUBackend.js +1517 -428
  957. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +31 -4
  958. package/src/renderers/webgpu/WebGPURenderer.js +55 -4
  959. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +23 -16
  960. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +37 -42
  961. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +1335 -241
  962. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +32 -4
  963. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  964. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +144 -20
  965. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +460 -116
  966. package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -4
  967. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +283 -69
  968. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +225 -178
  969. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +583 -191
  970. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +310 -0
  971. package/src/renderers/webgpu/utils/WebGPUUtils.js +150 -28
  972. package/src/renderers/webxr/WebXRController.js +87 -2
  973. package/src/renderers/webxr/WebXRDepthSensing.js +52 -7
  974. package/src/renderers/webxr/WebXRManager.js +275 -15
  975. package/src/scenes/Fog.js +60 -0
  976. package/src/scenes/FogExp2.js +51 -0
  977. package/src/scenes/Scene.js +88 -0
  978. package/src/textures/CanvasTexture.js +28 -0
  979. package/src/textures/CompressedArrayTexture.js +57 -0
  980. package/src/textures/CompressedCubeTexture.js +29 -0
  981. package/src/textures/CompressedTexture.js +64 -6
  982. package/src/textures/CubeDepthTexture.js +76 -0
  983. package/src/textures/CubeTexture.js +52 -4
  984. package/src/textures/Data3DTexture.js +79 -2
  985. package/src/textures/DataArrayTexture.js +93 -0
  986. package/src/textures/DataTexture.js +65 -0
  987. package/src/textures/DepthTexture.js +59 -11
  988. package/src/textures/ExternalTexture.js +56 -0
  989. package/src/textures/FramebufferTexture.js +62 -0
  990. package/src/textures/Source.js +106 -4
  991. package/src/textures/Texture.js +488 -6
  992. package/src/textures/VideoFrameTexture.js +72 -0
  993. package/src/textures/VideoTexture.js +78 -6
  994. package/src/utils.js +322 -3
  995. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
  996. package/examples/jsm/animation/MMDPhysics.js +0 -1406
  997. package/examples/jsm/cameras/CinematicCamera.js +0 -208
  998. package/examples/jsm/effects/PeppersGhostEffect.js +0 -153
  999. package/examples/jsm/exporters/MMDExporter.js +0 -217
  1000. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
  1001. package/examples/jsm/geometries/ParametricGeometries.js +0 -254
  1002. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  1003. package/examples/jsm/loaders/GLTFLoaderAnimationPointer.js +0 -729
  1004. package/examples/jsm/loaders/MMDLoader.js +0 -2295
  1005. package/examples/jsm/loaders/RGBMLoader.js +0 -1081
  1006. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -432
  1007. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -144
  1008. package/examples/jsm/misc/Timer.js +0 -128
  1009. package/examples/jsm/objects/InstancedPoints.js +0 -21
  1010. package/examples/jsm/shaders/GodRaysShader.js +0 -321
  1011. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  1012. package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
  1013. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
  1014. package/src/nodes/accessors/SceneNode.js +0 -55
  1015. package/src/nodes/code/ScriptableNode.js +0 -505
  1016. package/src/nodes/code/ScriptableValueNode.js +0 -170
  1017. package/src/nodes/core/CacheNode.js +0 -50
  1018. package/src/nodes/core/UniformGroup.js +0 -13
  1019. package/src/nodes/display/AfterImageNode.js +0 -158
  1020. package/src/nodes/display/AnaglyphPassNode.js +0 -67
  1021. package/src/nodes/display/AnamorphicNode.js +0 -151
  1022. package/src/nodes/display/BlendMode.js +0 -54
  1023. package/src/nodes/display/BloomNode.js +0 -341
  1024. package/src/nodes/display/DenoiseNode.js +0 -204
  1025. package/src/nodes/display/DepthOfFieldNode.js +0 -124
  1026. package/src/nodes/display/DotScreenNode.js +0 -66
  1027. package/src/nodes/display/FXAANode.js +0 -332
  1028. package/src/nodes/display/FilmNode.js +0 -56
  1029. package/src/nodes/display/GTAONode.js +0 -331
  1030. package/src/nodes/display/GaussianBlurNode.js +0 -213
  1031. package/src/nodes/display/Lut3DNode.js +0 -57
  1032. package/src/nodes/display/MotionBlur.js +0 -25
  1033. package/src/nodes/display/ParallaxBarrierPassNode.js +0 -58
  1034. package/src/nodes/display/PixelationPassNode.js +0 -213
  1035. package/src/nodes/display/PosterizeNode.js +0 -33
  1036. package/src/nodes/display/RGBShiftNode.js +0 -53
  1037. package/src/nodes/display/StereoCompositePassNode.js +0 -110
  1038. package/src/nodes/display/TransitionNode.js +0 -80
  1039. package/src/nodes/fog/FogExp2Node.js +0 -35
  1040. package/src/nodes/fog/FogNode.js +0 -50
  1041. package/src/nodes/fog/FogRangeNode.js +0 -36
  1042. package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
  1043. package/src/nodes/utils/EquirectUVNode.js +0 -36
  1044. package/src/nodes/utils/MatcapUVNode.js +0 -33
  1045. package/src/nodes/utils/OscNode.js +0 -85
  1046. package/src/nodes/utils/SpriteSheetUVNode.js +0 -45
  1047. package/src/nodes/utils/TimerNode.js +0 -97
  1048. package/src/nodes/utils/TriplanarTexturesNode.js +0 -64
  1049. package/src/renderers/common/nodes/Nodes.js +0 -534
  1050. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  1051. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -136
@@ -5,7 +5,8 @@ import { EventDispatcher } from './EventDispatcher.js';
5
5
  import { Euler } from '../math/Euler.js';
6
6
  import { Layers } from './Layers.js';
7
7
  import { Matrix3 } from '../math/Matrix3.js';
8
- import * as MathUtils from '../math/MathUtils.js';
8
+ import { generateUUID } from '../math/MathUtils.js';
9
+ import { error } from '../utils.js';
9
10
 
10
11
  let _object3DId = 0;
11
12
 
@@ -22,30 +23,118 @@ const _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );
22
23
  const _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );
23
24
  const _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );
24
25
 
26
+ /**
27
+ * Fires when the object has been added to its parent object.
28
+ *
29
+ * @event Object3D#added
30
+ * @type {Object}
31
+ */
25
32
  const _addedEvent = { type: 'added' };
33
+
34
+ /**
35
+ * Fires when the object has been removed from its parent object.
36
+ *
37
+ * @event Object3D#removed
38
+ * @type {Object}
39
+ */
26
40
  const _removedEvent = { type: 'removed' };
27
41
 
42
+ /**
43
+ * Fires when a new child object has been added.
44
+ *
45
+ * @event Object3D#childadded
46
+ * @type {Object}
47
+ */
28
48
  const _childaddedEvent = { type: 'childadded', child: null };
49
+
50
+ /**
51
+ * Fires when a child object has been removed.
52
+ *
53
+ * @event Object3D#childremoved
54
+ * @type {Object}
55
+ */
29
56
  const _childremovedEvent = { type: 'childremoved', child: null };
30
57
 
58
+ /**
59
+ * This is the base class for most objects in three.js and provides a set of
60
+ * properties and methods for manipulating objects in 3D space.
61
+ *
62
+ * @augments EventDispatcher
63
+ */
31
64
  class Object3D extends EventDispatcher {
32
65
 
66
+ /**
67
+ * Constructs a new 3D object.
68
+ */
33
69
  constructor() {
34
70
 
35
71
  super();
36
72
 
73
+ /**
74
+ * This flag can be used for type testing.
75
+ *
76
+ * @type {boolean}
77
+ * @readonly
78
+ * @default true
79
+ */
37
80
  this.isObject3D = true;
38
81
 
82
+ /**
83
+ * The ID of the 3D object.
84
+ *
85
+ * @name Object3D#id
86
+ * @type {number}
87
+ * @readonly
88
+ */
39
89
  Object.defineProperty( this, 'id', { value: _object3DId ++ } );
40
90
 
41
- this.uuid = MathUtils.generateUUID();
42
-
91
+ /**
92
+ * The UUID of the 3D object.
93
+ *
94
+ * @type {string}
95
+ * @readonly
96
+ */
97
+ this.uuid = generateUUID();
98
+
99
+ /**
100
+ * The name of the 3D object.
101
+ *
102
+ * @type {string}
103
+ */
43
104
  this.name = '';
105
+
106
+ /**
107
+ * The type property is used for detecting the object type
108
+ * in context of serialization/deserialization.
109
+ *
110
+ * @type {string}
111
+ * @readonly
112
+ */
44
113
  this.type = 'Object3D';
45
114
 
115
+ /**
116
+ * A reference to the parent object.
117
+ *
118
+ * @type {?Object3D}
119
+ * @default null
120
+ */
46
121
  this.parent = null;
122
+
123
+ /**
124
+ * An array holding the child 3D objects of this instance.
125
+ *
126
+ * @type {Array<Object3D>}
127
+ */
47
128
  this.children = [];
48
129
 
130
+ /**
131
+ * Defines the `up` direction of the 3D object which influences
132
+ * the orientation via methods like {@link Object3D#lookAt}.
133
+ *
134
+ * The default values for all 3D objects is defined by `Object3D.DEFAULT_UP`.
135
+ *
136
+ * @type {Vector3}
137
+ */
49
138
  this.up = Object3D.DEFAULT_UP.clone();
50
139
 
51
140
  const position = new Vector3();
@@ -69,65 +158,293 @@ class Object3D extends EventDispatcher {
69
158
  quaternion._onChange( onQuaternionChange );
70
159
 
71
160
  Object.defineProperties( this, {
161
+ /**
162
+ * Represents the object's local position.
163
+ *
164
+ * @name Object3D#position
165
+ * @type {Vector3}
166
+ * @default (0,0,0)
167
+ */
72
168
  position: {
73
169
  configurable: true,
74
170
  enumerable: true,
75
171
  value: position
76
172
  },
173
+ /**
174
+ * Represents the object's local rotation as Euler angles, in radians.
175
+ *
176
+ * @name Object3D#rotation
177
+ * @type {Euler}
178
+ * @default (0,0,0)
179
+ */
77
180
  rotation: {
78
181
  configurable: true,
79
182
  enumerable: true,
80
183
  value: rotation
81
184
  },
185
+ /**
186
+ * Represents the object's local rotation as Quaternions.
187
+ *
188
+ * @name Object3D#quaternion
189
+ * @type {Quaternion}
190
+ */
82
191
  quaternion: {
83
192
  configurable: true,
84
193
  enumerable: true,
85
194
  value: quaternion
86
195
  },
196
+ /**
197
+ * Represents the object's local scale.
198
+ *
199
+ * @name Object3D#scale
200
+ * @type {Vector3}
201
+ * @default (1,1,1)
202
+ */
87
203
  scale: {
88
204
  configurable: true,
89
205
  enumerable: true,
90
206
  value: scale
91
207
  },
208
+ /**
209
+ * Represents the object's model-view matrix.
210
+ *
211
+ * @name Object3D#modelViewMatrix
212
+ * @type {Matrix4}
213
+ */
92
214
  modelViewMatrix: {
93
215
  value: new Matrix4()
94
216
  },
217
+ /**
218
+ * Represents the object's normal matrix.
219
+ *
220
+ * @name Object3D#normalMatrix
221
+ * @type {Matrix3}
222
+ */
95
223
  normalMatrix: {
96
224
  value: new Matrix3()
97
225
  }
98
226
  } );
99
227
 
228
+ /**
229
+ * Represents the object's transformation matrix in local space.
230
+ *
231
+ * @type {Matrix4}
232
+ */
100
233
  this.matrix = new Matrix4();
234
+
235
+ /**
236
+ * Represents the object's transformation matrix in world space.
237
+ * If the 3D object has no parent, then it's identical to the local transformation matrix
238
+ *
239
+ * @type {Matrix4}
240
+ */
101
241
  this.matrixWorld = new Matrix4();
102
242
 
243
+ /**
244
+ * When set to `true`, the engine automatically computes the local matrix from position,
245
+ * rotation and scale every frame. If set to `false`, the app is responsible for recomputing
246
+ * the local matrix by calling `updateMatrix()`.
247
+ *
248
+ * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_AUTO_UPDATE`.
249
+ *
250
+ * @type {boolean}
251
+ * @default true
252
+ */
103
253
  this.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;
104
254
 
255
+ /**
256
+ * When set to `true`, the engine automatically computes the world matrix from the current local
257
+ * matrix and the object's transformation hierarchy. If set to `false`, the app is responsible for
258
+ * recomputing the world matrix by directly updating the `matrixWorld` property.
259
+ *
260
+ * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE`.
261
+ *
262
+ * @type {boolean}
263
+ * @default true
264
+ */
105
265
  this.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer
266
+
267
+ /**
268
+ * When set to `true`, it calculates the world matrix in that frame and resets this property
269
+ * to `false`.
270
+ *
271
+ * @type {boolean}
272
+ * @default false
273
+ */
106
274
  this.matrixWorldNeedsUpdate = false;
107
275
 
276
+ /**
277
+ * The layer membership of the 3D object. The 3D object is only visible if it has
278
+ * at least one layer in common with the camera in use. This property can also be
279
+ * used to filter out unwanted objects in ray-intersection tests when using {@link Raycaster}.
280
+ *
281
+ * @type {Layers}
282
+ */
108
283
  this.layers = new Layers();
284
+
285
+ /**
286
+ * When set to `true`, the 3D object gets rendered.
287
+ *
288
+ * @type {boolean}
289
+ * @default true
290
+ */
109
291
  this.visible = true;
110
292
 
293
+ /**
294
+ * When set to `true`, the 3D object gets rendered into shadow maps.
295
+ *
296
+ * @type {boolean}
297
+ * @default false
298
+ */
111
299
  this.castShadow = false;
300
+
301
+ /**
302
+ * When set to `true`, the 3D object is affected by shadows in the scene.
303
+ *
304
+ * @type {boolean}
305
+ * @default false
306
+ */
112
307
  this.receiveShadow = false;
113
308
 
309
+ /**
310
+ * When set to `true`, the 3D object is honored by view frustum culling.
311
+ *
312
+ * @type {boolean}
313
+ * @default true
314
+ */
114
315
  this.frustumCulled = true;
316
+
317
+ /**
318
+ * This value allows the default rendering order of scene graph objects to be
319
+ * overridden although opaque and transparent objects remain sorted independently.
320
+ * When this property is set for an instance of {@link Group},all descendants
321
+ * objects will be sorted and rendered together. Sorting is from lowest to highest
322
+ * render order.
323
+ *
324
+ * @type {number}
325
+ * @default 0
326
+ */
115
327
  this.renderOrder = 0;
116
328
 
329
+ /**
330
+ * An array holding the animation clips of the 3D object.
331
+ *
332
+ * @type {Array<AnimationClip>}
333
+ */
117
334
  this.animations = [];
118
335
 
336
+ /**
337
+ * Custom depth material to be used when rendering to the depth map. Can only be used
338
+ * in context of meshes. When shadow-casting with a {@link DirectionalLight} or {@link SpotLight},
339
+ * if you are modifying vertex positions in the vertex shader you must specify a custom depth
340
+ * material for proper shadows.
341
+ *
342
+ * Only relevant in context of {@link WebGLRenderer}.
343
+ *
344
+ * @type {(Material|undefined)}
345
+ * @default undefined
346
+ */
347
+ this.customDepthMaterial = undefined;
348
+
349
+ /**
350
+ * Same as {@link Object3D#customDepthMaterial}, but used with {@link PointLight}.
351
+ *
352
+ * Only relevant in context of {@link WebGLRenderer}.
353
+ *
354
+ * @type {(Material|undefined)}
355
+ * @default undefined
356
+ */
357
+ this.customDistanceMaterial = undefined;
358
+
359
+ /**
360
+ * Whether the 3D object is supposed to be static or not. If set to `true`, it means
361
+ * the 3D object is not going to be changed after the initial renderer. This includes
362
+ * geometry and material settings. A static 3D object can be processed by the renderer
363
+ * slightly faster since certain state checks can be bypassed.
364
+ *
365
+ * Only relevant in context of {@link WebGPURenderer}.
366
+ *
367
+ * @type {boolean}
368
+ * @default false
369
+ */
370
+ this.static = false;
371
+
372
+ /**
373
+ * An object that can be used to store custom data about the 3D object. It
374
+ * should not hold references to functions as these will not be cloned.
375
+ *
376
+ * @type {Object}
377
+ */
119
378
  this.userData = {};
120
379
 
380
+ /**
381
+ * The pivot point for rotation and scale transformations.
382
+ * When set, rotation and scale are applied around this point
383
+ * instead of the object's origin.
384
+ *
385
+ * @type {?Vector3}
386
+ * @default null
387
+ */
388
+ this.pivot = null;
389
+
121
390
  }
122
391
 
392
+ /**
393
+ * A callback that is executed immediately before a 3D object is rendered to a shadow map.
394
+ *
395
+ * @param {Renderer|WebGLRenderer} renderer - The renderer.
396
+ * @param {Object3D} object - The 3D object.
397
+ * @param {Camera} camera - The camera that is used to render the scene.
398
+ * @param {Camera} shadowCamera - The shadow camera.
399
+ * @param {BufferGeometry} geometry - The 3D object's geometry.
400
+ * @param {Material} depthMaterial - The depth material.
401
+ * @param {Object} group - The geometry group data.
402
+ */
123
403
  onBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}
124
404
 
405
+ /**
406
+ * A callback that is executed immediately after a 3D object is rendered to a shadow map.
407
+ *
408
+ * @param {Renderer|WebGLRenderer} renderer - The renderer.
409
+ * @param {Object3D} object - The 3D object.
410
+ * @param {Camera} camera - The camera that is used to render the scene.
411
+ * @param {Camera} shadowCamera - The shadow camera.
412
+ * @param {BufferGeometry} geometry - The 3D object's geometry.
413
+ * @param {Material} depthMaterial - The depth material.
414
+ * @param {Object} group - The geometry group data.
415
+ */
125
416
  onAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}
126
417
 
418
+ /**
419
+ * A callback that is executed immediately before a 3D object is rendered.
420
+ *
421
+ * @param {Renderer|WebGLRenderer} renderer - The renderer.
422
+ * @param {Object3D} object - The 3D object.
423
+ * @param {Camera} camera - The camera that is used to render the scene.
424
+ * @param {BufferGeometry} geometry - The 3D object's geometry.
425
+ * @param {Material} material - The 3D object's material.
426
+ * @param {Object} group - The geometry group data.
427
+ */
127
428
  onBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}
128
429
 
430
+ /**
431
+ * A callback that is executed immediately after a 3D object is rendered.
432
+ *
433
+ * @param {Renderer|WebGLRenderer} renderer - The renderer.
434
+ * @param {Object3D} object - The 3D object.
435
+ * @param {Camera} camera - The camera that is used to render the scene.
436
+ * @param {BufferGeometry} geometry - The 3D object's geometry.
437
+ * @param {Material} material - The 3D object's material.
438
+ * @param {Object} group - The geometry group data.
439
+ */
129
440
  onAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}
130
441
 
442
+ /**
443
+ * Applies the given transformation matrix to the object and updates the object's position,
444
+ * rotation and scale.
445
+ *
446
+ * @param {Matrix4} matrix - The transformation matrix.
447
+ */
131
448
  applyMatrix4( matrix ) {
132
449
 
133
450
  if ( this.matrixAutoUpdate ) this.updateMatrix();
@@ -138,6 +455,12 @@ class Object3D extends EventDispatcher {
138
455
 
139
456
  }
140
457
 
458
+ /**
459
+ * Applies a rotation represented by given the quaternion to the 3D object.
460
+ *
461
+ * @param {Quaternion} q - The quaternion.
462
+ * @return {Object3D} A reference to this instance.
463
+ */
141
464
  applyQuaternion( q ) {
142
465
 
143
466
  this.quaternion.premultiply( q );
@@ -146,6 +469,12 @@ class Object3D extends EventDispatcher {
146
469
 
147
470
  }
148
471
 
472
+ /**
473
+ * Sets the given rotation represented as an axis/angle couple to the 3D object.
474
+ *
475
+ * @param {Vector3} axis - The (normalized) axis vector.
476
+ * @param {number} angle - The angle in radians.
477
+ */
149
478
  setRotationFromAxisAngle( axis, angle ) {
150
479
 
151
480
  // assumes axis is normalized
@@ -154,12 +483,23 @@ class Object3D extends EventDispatcher {
154
483
 
155
484
  }
156
485
 
486
+ /**
487
+ * Sets the given rotation represented as Euler angles to the 3D object.
488
+ *
489
+ * @param {Euler} euler - The Euler angles.
490
+ */
157
491
  setRotationFromEuler( euler ) {
158
492
 
159
493
  this.quaternion.setFromEuler( euler, true );
160
494
 
161
495
  }
162
496
 
497
+ /**
498
+ * Sets the given rotation represented as rotation matrix to the 3D object.
499
+ *
500
+ * @param {Matrix4} m - Although a 4x4 matrix is expected, the upper 3x3 portion must be
501
+ * a pure rotation matrix (i.e, unscaled).
502
+ */
163
503
  setRotationFromMatrix( m ) {
164
504
 
165
505
  // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)
@@ -168,6 +508,11 @@ class Object3D extends EventDispatcher {
168
508
 
169
509
  }
170
510
 
511
+ /**
512
+ * Sets the given rotation represented as a Quaternion to the 3D object.
513
+ *
514
+ * @param {Quaternion} q - The Quaternion
515
+ */
171
516
  setRotationFromQuaternion( q ) {
172
517
 
173
518
  // assumes q is normalized
@@ -176,6 +521,13 @@ class Object3D extends EventDispatcher {
176
521
 
177
522
  }
178
523
 
524
+ /**
525
+ * Rotates the 3D object along an axis in local space.
526
+ *
527
+ * @param {Vector3} axis - The (normalized) axis vector.
528
+ * @param {number} angle - The angle in radians.
529
+ * @return {Object3D} A reference to this instance.
530
+ */
179
531
  rotateOnAxis( axis, angle ) {
180
532
 
181
533
  // rotate object on axis in object space
@@ -189,6 +541,13 @@ class Object3D extends EventDispatcher {
189
541
 
190
542
  }
191
543
 
544
+ /**
545
+ * Rotates the 3D object along an axis in world space.
546
+ *
547
+ * @param {Vector3} axis - The (normalized) axis vector.
548
+ * @param {number} angle - The angle in radians.
549
+ * @return {Object3D} A reference to this instance.
550
+ */
192
551
  rotateOnWorldAxis( axis, angle ) {
193
552
 
194
553
  // rotate object on axis in world space
@@ -203,24 +562,49 @@ class Object3D extends EventDispatcher {
203
562
 
204
563
  }
205
564
 
565
+ /**
566
+ * Rotates the 3D object around its X axis in local space.
567
+ *
568
+ * @param {number} angle - The angle in radians.
569
+ * @return {Object3D} A reference to this instance.
570
+ */
206
571
  rotateX( angle ) {
207
572
 
208
573
  return this.rotateOnAxis( _xAxis, angle );
209
574
 
210
575
  }
211
576
 
577
+ /**
578
+ * Rotates the 3D object around its Y axis in local space.
579
+ *
580
+ * @param {number} angle - The angle in radians.
581
+ * @return {Object3D} A reference to this instance.
582
+ */
212
583
  rotateY( angle ) {
213
584
 
214
585
  return this.rotateOnAxis( _yAxis, angle );
215
586
 
216
587
  }
217
588
 
589
+ /**
590
+ * Rotates the 3D object around its Z axis in local space.
591
+ *
592
+ * @param {number} angle - The angle in radians.
593
+ * @return {Object3D} A reference to this instance.
594
+ */
218
595
  rotateZ( angle ) {
219
596
 
220
597
  return this.rotateOnAxis( _zAxis, angle );
221
598
 
222
599
  }
223
600
 
601
+ /**
602
+ * Translate the 3D object by a distance along the given axis in local space.
603
+ *
604
+ * @param {Vector3} axis - The (normalized) axis vector.
605
+ * @param {number} distance - The distance in world units.
606
+ * @return {Object3D} A reference to this instance.
607
+ */
224
608
  translateOnAxis( axis, distance ) {
225
609
 
226
610
  // translate object by distance along axis in object space
@@ -234,24 +618,48 @@ class Object3D extends EventDispatcher {
234
618
 
235
619
  }
236
620
 
621
+ /**
622
+ * Translate the 3D object by a distance along its X-axis in local space.
623
+ *
624
+ * @param {number} distance - The distance in world units.
625
+ * @return {Object3D} A reference to this instance.
626
+ */
237
627
  translateX( distance ) {
238
628
 
239
629
  return this.translateOnAxis( _xAxis, distance );
240
630
 
241
631
  }
242
632
 
633
+ /**
634
+ * Translate the 3D object by a distance along its Y-axis in local space.
635
+ *
636
+ * @param {number} distance - The distance in world units.
637
+ * @return {Object3D} A reference to this instance.
638
+ */
243
639
  translateY( distance ) {
244
640
 
245
641
  return this.translateOnAxis( _yAxis, distance );
246
642
 
247
643
  }
248
644
 
645
+ /**
646
+ * Translate the 3D object by a distance along its Z-axis in local space.
647
+ *
648
+ * @param {number} distance - The distance in world units.
649
+ * @return {Object3D} A reference to this instance.
650
+ */
249
651
  translateZ( distance ) {
250
652
 
251
653
  return this.translateOnAxis( _zAxis, distance );
252
654
 
253
655
  }
254
656
 
657
+ /**
658
+ * Converts the given vector from this 3D object's local space to world space.
659
+ *
660
+ * @param {Vector3} vector - The vector to convert.
661
+ * @return {Vector3} The converted vector.
662
+ */
255
663
  localToWorld( vector ) {
256
664
 
257
665
  this.updateWorldMatrix( true, false );
@@ -260,6 +668,12 @@ class Object3D extends EventDispatcher {
260
668
 
261
669
  }
262
670
 
671
+ /**
672
+ * Converts the given vector from this 3D object's world space to local space.
673
+ *
674
+ * @param {Vector3} vector - The vector to convert.
675
+ * @return {Vector3} The converted vector.
676
+ */
263
677
  worldToLocal( vector ) {
264
678
 
265
679
  this.updateWorldMatrix( true, false );
@@ -268,6 +682,15 @@ class Object3D extends EventDispatcher {
268
682
 
269
683
  }
270
684
 
685
+ /**
686
+ * Rotates the object to face a point in world space.
687
+ *
688
+ * This method does not support objects having non-uniformly-scaled parent(s).
689
+ *
690
+ * @param {number|Vector3} x - The x coordinate in world space. Alternatively, a vector representing a position in world space
691
+ * @param {number} [y] - The y coordinate in world space.
692
+ * @param {number} [z] - The z coordinate in world space.
693
+ */
271
694
  lookAt( x, y, z ) {
272
695
 
273
696
  // This method does not support objects having non-uniformly-scaled parent(s)
@@ -310,6 +733,16 @@ class Object3D extends EventDispatcher {
310
733
 
311
734
  }
312
735
 
736
+ /**
737
+ * Adds the given 3D object as a child to this 3D object. An arbitrary number of
738
+ * objects may be added. Any current parent on an object passed in here will be
739
+ * removed, since an object can have at most one parent.
740
+ *
741
+ * @fires Object3D#added
742
+ * @fires Object3D#childadded
743
+ * @param {Object3D} object - The 3D object to add.
744
+ * @return {Object3D} A reference to this instance.
745
+ */
313
746
  add( object ) {
314
747
 
315
748
  if ( arguments.length > 1 ) {
@@ -326,7 +759,7 @@ class Object3D extends EventDispatcher {
326
759
 
327
760
  if ( object === this ) {
328
761
 
329
- console.error( 'THREE.Object3D.add: object can\'t be added as a child of itself.', object );
762
+ error( 'Object3D.add: object can\'t be added as a child of itself.', object );
330
763
  return this;
331
764
 
332
765
  }
@@ -345,7 +778,7 @@ class Object3D extends EventDispatcher {
345
778
 
346
779
  } else {
347
780
 
348
- console.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );
781
+ error( 'Object3D.add: object not an instance of THREE.Object3D.', object );
349
782
 
350
783
  }
351
784
 
@@ -353,6 +786,15 @@ class Object3D extends EventDispatcher {
353
786
 
354
787
  }
355
788
 
789
+ /**
790
+ * Removes the given 3D object as child from this 3D object.
791
+ * An arbitrary number of objects may be removed.
792
+ *
793
+ * @fires Object3D#removed
794
+ * @fires Object3D#childremoved
795
+ * @param {Object3D} object - The 3D object to remove.
796
+ * @return {Object3D} A reference to this instance.
797
+ */
356
798
  remove( object ) {
357
799
 
358
800
  if ( arguments.length > 1 ) {
@@ -386,6 +828,13 @@ class Object3D extends EventDispatcher {
386
828
 
387
829
  }
388
830
 
831
+ /**
832
+ * Removes this 3D object from its current parent.
833
+ *
834
+ * @fires Object3D#removed
835
+ * @fires Object3D#childremoved
836
+ * @return {Object3D} A reference to this instance.
837
+ */
389
838
  removeFromParent() {
390
839
 
391
840
  const parent = this.parent;
@@ -400,12 +849,28 @@ class Object3D extends EventDispatcher {
400
849
 
401
850
  }
402
851
 
852
+ /**
853
+ * Removes all child objects.
854
+ *
855
+ * @fires Object3D#removed
856
+ * @fires Object3D#childremoved
857
+ * @return {Object3D} A reference to this instance.
858
+ */
403
859
  clear() {
404
860
 
405
861
  return this.remove( ... this.children );
406
862
 
407
863
  }
408
864
 
865
+ /**
866
+ * Adds the given 3D object as a child of this 3D object, while maintaining the object's world
867
+ * transform. This method does not support scene graphs having non-uniformly-scaled nodes(s).
868
+ *
869
+ * @fires Object3D#added
870
+ * @fires Object3D#childadded
871
+ * @param {Object3D} object - The 3D object to attach.
872
+ * @return {Object3D} A reference to this instance.
873
+ */
409
874
  attach( object ) {
410
875
 
411
876
  // adds object as a child of this, while maintaining the object's world transform
@@ -442,18 +907,40 @@ class Object3D extends EventDispatcher {
442
907
 
443
908
  }
444
909
 
910
+ /**
911
+ * Searches through the 3D object and its children, starting with the 3D object
912
+ * itself, and returns the first with a matching ID.
913
+ *
914
+ * @param {number} id - The id.
915
+ * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
916
+ */
445
917
  getObjectById( id ) {
446
918
 
447
919
  return this.getObjectByProperty( 'id', id );
448
920
 
449
921
  }
450
922
 
923
+ /**
924
+ * Searches through the 3D object and its children, starting with the 3D object
925
+ * itself, and returns the first with a matching name.
926
+ *
927
+ * @param {string} name - The name.
928
+ * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
929
+ */
451
930
  getObjectByName( name ) {
452
931
 
453
932
  return this.getObjectByProperty( 'name', name );
454
933
 
455
934
  }
456
935
 
936
+ /**
937
+ * Searches through the 3D object and its children, starting with the 3D object
938
+ * itself, and returns the first with a matching property value.
939
+ *
940
+ * @param {string} name - The name of the property.
941
+ * @param {any} value - The value.
942
+ * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
943
+ */
457
944
  getObjectByProperty( name, value ) {
458
945
 
459
946
  if ( this[ name ] === value ) return this;
@@ -475,6 +962,15 @@ class Object3D extends EventDispatcher {
475
962
 
476
963
  }
477
964
 
965
+ /**
966
+ * Searches through the 3D object and its children, starting with the 3D object
967
+ * itself, and returns all 3D objects with a matching property value.
968
+ *
969
+ * @param {string} name - The name of the property.
970
+ * @param {any} value - The value.
971
+ * @param {Array<Object3D>} result - The method stores the result in this array.
972
+ * @return {Array<Object3D>} The found 3D objects.
973
+ */
478
974
  getObjectsByProperty( name, value, result = [] ) {
479
975
 
480
976
  if ( this[ name ] === value ) result.push( this );
@@ -491,6 +987,12 @@ class Object3D extends EventDispatcher {
491
987
 
492
988
  }
493
989
 
990
+ /**
991
+ * Returns a vector representing the position of the 3D object in world space.
992
+ *
993
+ * @param {Vector3} target - The target vector the result is stored to.
994
+ * @return {Vector3} The 3D object's position in world space.
995
+ */
494
996
  getWorldPosition( target ) {
495
997
 
496
998
  this.updateWorldMatrix( true, false );
@@ -499,6 +1001,12 @@ class Object3D extends EventDispatcher {
499
1001
 
500
1002
  }
501
1003
 
1004
+ /**
1005
+ * Returns a Quaternion representing the position of the 3D object in world space.
1006
+ *
1007
+ * @param {Quaternion} target - The target Quaternion the result is stored to.
1008
+ * @return {Quaternion} The 3D object's rotation in world space.
1009
+ */
502
1010
  getWorldQuaternion( target ) {
503
1011
 
504
1012
  this.updateWorldMatrix( true, false );
@@ -509,6 +1017,12 @@ class Object3D extends EventDispatcher {
509
1017
 
510
1018
  }
511
1019
 
1020
+ /**
1021
+ * Returns a vector representing the scale of the 3D object in world space.
1022
+ *
1023
+ * @param {Vector3} target - The target vector the result is stored to.
1024
+ * @return {Vector3} The 3D object's scale in world space.
1025
+ */
512
1026
  getWorldScale( target ) {
513
1027
 
514
1028
  this.updateWorldMatrix( true, false );
@@ -519,6 +1033,12 @@ class Object3D extends EventDispatcher {
519
1033
 
520
1034
  }
521
1035
 
1036
+ /**
1037
+ * Returns a vector representing the ("look") direction of the 3D object in world space.
1038
+ *
1039
+ * @param {Vector3} target - The target vector the result is stored to.
1040
+ * @return {Vector3} The 3D object's direction in world space.
1041
+ */
522
1042
  getWorldDirection( target ) {
523
1043
 
524
1044
  this.updateWorldMatrix( true, false );
@@ -529,8 +1049,24 @@ class Object3D extends EventDispatcher {
529
1049
 
530
1050
  }
531
1051
 
1052
+ /**
1053
+ * Abstract method to get intersections between a casted ray and this
1054
+ * 3D object. Renderable 3D objects such as {@link Mesh}, {@link Line} or {@link Points}
1055
+ * implement this method in order to use raycasting.
1056
+ *
1057
+ * @abstract
1058
+ * @param {Raycaster} raycaster - The raycaster.
1059
+ * @param {Array<Object>} intersects - An array holding the result of the method.
1060
+ */
532
1061
  raycast( /* raycaster, intersects */ ) {}
533
1062
 
1063
+ /**
1064
+ * Executes the callback on this 3D object and all descendants.
1065
+ *
1066
+ * Note: Modifying the scene graph inside the callback is discouraged.
1067
+ *
1068
+ * @param {Function} callback - A callback function that allows to process the current 3D object.
1069
+ */
534
1070
  traverse( callback ) {
535
1071
 
536
1072
  callback( this );
@@ -545,6 +1081,14 @@ class Object3D extends EventDispatcher {
545
1081
 
546
1082
  }
547
1083
 
1084
+ /**
1085
+ * Like {@link Object3D#traverse}, but the callback will only be executed for visible 3D objects.
1086
+ * Descendants of invisible 3D objects are not traversed.
1087
+ *
1088
+ * Note: Modifying the scene graph inside the callback is discouraged.
1089
+ *
1090
+ * @param {Function} callback - A callback function that allows to process the current 3D object.
1091
+ */
548
1092
  traverseVisible( callback ) {
549
1093
 
550
1094
  if ( this.visible === false ) return;
@@ -561,6 +1105,13 @@ class Object3D extends EventDispatcher {
561
1105
 
562
1106
  }
563
1107
 
1108
+ /**
1109
+ * Like {@link Object3D#traverse}, but the callback will only be executed for all ancestors.
1110
+ *
1111
+ * Note: Modifying the scene graph inside the callback is discouraged.
1112
+ *
1113
+ * @param {Function} callback - A callback function that allows to process the current 3D object.
1114
+ */
564
1115
  traverseAncestors( callback ) {
565
1116
 
566
1117
  const parent = this.parent;
@@ -575,14 +1126,42 @@ class Object3D extends EventDispatcher {
575
1126
 
576
1127
  }
577
1128
 
1129
+ /**
1130
+ * Updates the transformation matrix in local space by computing it from the current
1131
+ * position, rotation and scale values.
1132
+ */
578
1133
  updateMatrix() {
579
1134
 
580
1135
  this.matrix.compose( this.position, this.quaternion, this.scale );
581
1136
 
1137
+ const pivot = this.pivot;
1138
+
1139
+ if ( pivot !== null ) {
1140
+
1141
+ const px = pivot.x, py = pivot.y, pz = pivot.z;
1142
+ const te = this.matrix.elements;
1143
+
1144
+ te[ 12 ] += px - te[ 0 ] * px - te[ 4 ] * py - te[ 8 ] * pz;
1145
+ te[ 13 ] += py - te[ 1 ] * px - te[ 5 ] * py - te[ 9 ] * pz;
1146
+ te[ 14 ] += pz - te[ 2 ] * px - te[ 6 ] * py - te[ 10 ] * pz;
1147
+
1148
+ }
1149
+
582
1150
  this.matrixWorldNeedsUpdate = true;
583
1151
 
584
1152
  }
585
1153
 
1154
+ /**
1155
+ * Updates the transformation matrix in world space of this 3D objects and its descendants.
1156
+ *
1157
+ * To ensure correct results, this method also recomputes the 3D object's transformation matrix in
1158
+ * local space. The computation of the local and world matrix can be controlled with the
1159
+ * {@link Object3D#matrixAutoUpdate} and {@link Object3D#matrixWorldAutoUpdate} flags which are both
1160
+ * `true` by default. Set these flags to `false` if you need more control over the update matrix process.
1161
+ *
1162
+ * @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even
1163
+ * when {@link Object3D#matrixWorldNeedsUpdate} is `false`.
1164
+ */
586
1165
  updateMatrixWorld( force ) {
587
1166
 
588
1167
  if ( this.matrixAutoUpdate ) this.updateMatrix();
@@ -623,6 +1202,13 @@ class Object3D extends EventDispatcher {
623
1202
 
624
1203
  }
625
1204
 
1205
+ /**
1206
+ * An alternative version of {@link Object3D#updateMatrixWorld} with more control over the
1207
+ * update of ancestor and descendant nodes.
1208
+ *
1209
+ * @param {boolean} [updateParents=false] Whether ancestor nodes should be updated or not.
1210
+ * @param {boolean} [updateChildren=false] Whether descendant nodes should be updated or not.
1211
+ */
626
1212
  updateWorldMatrix( updateParents, updateChildren ) {
627
1213
 
628
1214
  const parent = this.parent;
@@ -667,6 +1253,13 @@ class Object3D extends EventDispatcher {
667
1253
 
668
1254
  }
669
1255
 
1256
+ /**
1257
+ * Serializes the 3D object into JSON.
1258
+ *
1259
+ * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.
1260
+ * @return {Object} A JSON object representing the serialized 3D object.
1261
+ * @see {@link ObjectLoader#parse}
1262
+ */
670
1263
  toJSON( meta ) {
671
1264
 
672
1265
  // meta is a string when called from JSON.stringify
@@ -692,7 +1285,7 @@ class Object3D extends EventDispatcher {
692
1285
  };
693
1286
 
694
1287
  output.metadata = {
695
- version: 4.6,
1288
+ version: 4.7,
696
1289
  type: 'Object',
697
1290
  generator: 'Object3D.toJSON'
698
1291
  };
@@ -712,14 +1305,20 @@ class Object3D extends EventDispatcher {
712
1305
  if ( this.visible === false ) object.visible = false;
713
1306
  if ( this.frustumCulled === false ) object.frustumCulled = false;
714
1307
  if ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;
1308
+ if ( this.static !== false ) object.static = this.static;
715
1309
  if ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;
716
1310
 
717
1311
  object.layers = this.layers.mask;
718
1312
  object.matrix = this.matrix.toArray();
719
1313
  object.up = this.up.toArray();
720
1314
 
1315
+ if ( this.pivot !== null ) object.pivot = this.pivot.toArray();
1316
+
721
1317
  if ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;
722
1318
 
1319
+ if ( this.morphTargetDictionary !== undefined ) object.morphTargetDictionary = Object.assign( {}, this.morphTargetDictionary );
1320
+ if ( this.morphTargetInfluences !== undefined ) object.morphTargetInfluences = this.morphTargetInfluences.slice();
1321
+
723
1322
  // object specific properties
724
1323
 
725
1324
  if ( this.isInstancedMesh ) {
@@ -740,44 +1339,45 @@ class Object3D extends EventDispatcher {
740
1339
  object.drawRanges = this._drawRanges;
741
1340
  object.reservedRanges = this._reservedRanges;
742
1341
 
743
- object.visibility = this._visibility;
744
- object.active = this._active;
745
- object.bounds = this._bounds.map( bound => ( {
746
- boxInitialized: bound.boxInitialized,
747
- boxMin: bound.box.min.toArray(),
748
- boxMax: bound.box.max.toArray(),
749
-
750
- sphereInitialized: bound.sphereInitialized,
751
- sphereRadius: bound.sphere.radius,
752
- sphereCenter: bound.sphere.center.toArray()
1342
+ object.geometryInfo = this._geometryInfo.map( info => ( {
1343
+ ...info,
1344
+ boundingBox: info.boundingBox ? info.boundingBox.toJSON() : undefined,
1345
+ boundingSphere: info.boundingSphere ? info.boundingSphere.toJSON() : undefined
753
1346
  } ) );
1347
+ object.instanceInfo = this._instanceInfo.map( info => ( { ...info } ) );
1348
+
1349
+ object.availableInstanceIds = this._availableInstanceIds.slice();
1350
+ object.availableGeometryIds = this._availableGeometryIds.slice();
1351
+
1352
+ object.nextIndexStart = this._nextIndexStart;
1353
+ object.nextVertexStart = this._nextVertexStart;
1354
+ object.geometryCount = this._geometryCount;
754
1355
 
755
1356
  object.maxInstanceCount = this._maxInstanceCount;
756
1357
  object.maxVertexCount = this._maxVertexCount;
757
1358
  object.maxIndexCount = this._maxIndexCount;
758
1359
 
759
1360
  object.geometryInitialized = this._geometryInitialized;
760
- object.geometryCount = this._geometryCount;
761
1361
 
762
1362
  object.matricesTexture = this._matricesTexture.toJSON( meta );
763
1363
 
764
- if ( this._colorsTexture !== null ) object.colorsTexture = this._colorsTexture.toJSON( meta );
1364
+ object.indirectTexture = this._indirectTexture.toJSON( meta );
1365
+
1366
+ if ( this._colorsTexture !== null ) {
1367
+
1368
+ object.colorsTexture = this._colorsTexture.toJSON( meta );
1369
+
1370
+ }
765
1371
 
766
1372
  if ( this.boundingSphere !== null ) {
767
1373
 
768
- object.boundingSphere = {
769
- center: object.boundingSphere.center.toArray(),
770
- radius: object.boundingSphere.radius
771
- };
1374
+ object.boundingSphere = this.boundingSphere.toJSON();
772
1375
 
773
1376
  }
774
1377
 
775
1378
  if ( this.boundingBox !== null ) {
776
1379
 
777
- object.boundingBox = {
778
- min: object.boundingBox.min.toArray(),
779
- max: object.boundingBox.max.toArray()
780
- };
1380
+ object.boundingBox = this.boundingBox.toJSON();
781
1381
 
782
1382
  }
783
1383
 
@@ -962,12 +1562,25 @@ class Object3D extends EventDispatcher {
962
1562
 
963
1563
  }
964
1564
 
1565
+ /**
1566
+ * Returns a new 3D object with copied values from this instance.
1567
+ *
1568
+ * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are also cloned.
1569
+ * @return {Object3D} A clone of this instance.
1570
+ */
965
1571
  clone( recursive ) {
966
1572
 
967
1573
  return new this.constructor().copy( this, recursive );
968
1574
 
969
1575
  }
970
1576
 
1577
+ /**
1578
+ * Copies the values of the given 3D object to this instance.
1579
+ *
1580
+ * @param {Object3D} source - The 3D object to copy.
1581
+ * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are cloned.
1582
+ * @return {Object3D} A reference to this instance.
1583
+ */
971
1584
  copy( source, recursive = true ) {
972
1585
 
973
1586
  this.name = source.name;
@@ -979,6 +1592,12 @@ class Object3D extends EventDispatcher {
979
1592
  this.quaternion.copy( source.quaternion );
980
1593
  this.scale.copy( source.scale );
981
1594
 
1595
+ if ( source.pivot !== null ) {
1596
+
1597
+ this.pivot = source.pivot.clone();
1598
+
1599
+ }
1600
+
982
1601
  this.matrix.copy( source.matrix );
983
1602
  this.matrixWorld.copy( source.matrixWorld );
984
1603
 
@@ -996,6 +1615,8 @@ class Object3D extends EventDispatcher {
996
1615
  this.frustumCulled = source.frustumCulled;
997
1616
  this.renderOrder = source.renderOrder;
998
1617
 
1618
+ this.static = source.static;
1619
+
999
1620
  this.animations = source.animations.slice();
1000
1621
 
1001
1622
  this.userData = JSON.parse( JSON.stringify( source.userData ) );
@@ -1017,8 +1638,34 @@ class Object3D extends EventDispatcher {
1017
1638
 
1018
1639
  }
1019
1640
 
1641
+ /**
1642
+ * The default up direction for objects, also used as the default
1643
+ * position for {@link DirectionalLight} and {@link HemisphereLight}.
1644
+ *
1645
+ * @static
1646
+ * @type {Vector3}
1647
+ * @default (0,1,0)
1648
+ */
1020
1649
  Object3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );
1650
+
1651
+ /**
1652
+ * The default setting for {@link Object3D#matrixAutoUpdate} for
1653
+ * newly created 3D objects.
1654
+ *
1655
+ * @static
1656
+ * @type {boolean}
1657
+ * @default true
1658
+ */
1021
1659
  Object3D.DEFAULT_MATRIX_AUTO_UPDATE = true;
1660
+
1661
+ /**
1662
+ * The default setting for {@link Object3D#matrixWorldAutoUpdate} for
1663
+ * newly created 3D objects.
1664
+ *
1665
+ * @static
1666
+ * @type {boolean}
1667
+ * @default true
1668
+ */
1022
1669
  Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;
1023
1670
 
1024
1671
  export { Object3D };