@plastic-software/three 0.167.3 → 0.174.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 (748) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +36277 -24023
  4. package/build/three.core.js +48830 -0
  5. package/build/three.core.min.js +6 -0
  6. package/build/three.module.js +10175 -46743
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +550 -0
  9. package/build/three.tsl.min.js +6 -0
  10. package/build/three.webgpu.js +44348 -50670
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +70301 -0
  13. package/build/three.webgpu.nodes.min.js +6 -0
  14. package/examples/jsm/Addons.js +3 -15
  15. package/examples/jsm/animation/AnimationClipCreator.js +1 -1
  16. package/examples/jsm/animation/CCDIKSolver.js +61 -11
  17. package/examples/jsm/capabilities/WebGL.js +27 -21
  18. package/examples/jsm/capabilities/WebGPU.js +1 -10
  19. package/examples/jsm/controls/ArcballControls.js +262 -231
  20. package/examples/jsm/controls/DragControls.js +1 -1
  21. package/examples/jsm/controls/FirstPersonControls.js +175 -163
  22. package/examples/jsm/controls/FlyControls.js +194 -188
  23. package/examples/jsm/controls/OrbitControls.js +801 -777
  24. package/examples/jsm/controls/PointerLockControls.js +26 -20
  25. package/examples/jsm/controls/TrackballControls.js +469 -448
  26. package/examples/jsm/controls/TransformControls.js +119 -68
  27. package/examples/jsm/csm/CSM.js +2 -2
  28. package/examples/jsm/csm/CSMFrustum.js +7 -4
  29. package/examples/jsm/csm/CSMHelper.js +2 -0
  30. package/examples/jsm/csm/CSMShadowNode.js +442 -0
  31. package/examples/jsm/curves/NURBSCurve.js +33 -2
  32. package/examples/jsm/curves/NURBSUtils.js +3 -0
  33. package/examples/jsm/effects/AnaglyphEffect.js +6 -13
  34. package/examples/jsm/effects/OutlineEffect.js +1 -1
  35. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  36. package/examples/jsm/effects/StereoEffect.js +6 -1
  37. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  38. package/examples/jsm/exporters/EXRExporter.js +19 -11
  39. package/examples/jsm/exporters/GLTFExporter.js +181 -109
  40. package/examples/jsm/exporters/KTX2Exporter.js +54 -23
  41. package/examples/jsm/exporters/OBJExporter.js +5 -1
  42. package/examples/jsm/exporters/PLYExporter.js +11 -9
  43. package/examples/jsm/exporters/USDZExporter.js +50 -11
  44. package/examples/jsm/geometries/DecalGeometry.js +73 -21
  45. package/examples/jsm/geometries/TextGeometry.js +1 -12
  46. package/examples/jsm/helpers/LightProbeHelper.js +43 -44
  47. package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
  48. package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
  49. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  50. package/examples/jsm/interactive/HTMLMesh.js +1 -0
  51. package/examples/jsm/interactive/InteractiveGroup.js +108 -51
  52. package/examples/jsm/interactive/SelectionHelper.js +3 -1
  53. package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  54. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  55. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  56. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  57. package/examples/jsm/lighting/TiledLighting.js +18 -0
  58. package/examples/jsm/lights/LightProbeGenerator.js +26 -12
  59. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  60. package/examples/jsm/lines/LineGeometry.js +25 -0
  61. package/examples/jsm/lines/LineMaterial.js +0 -1
  62. package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
  63. package/examples/jsm/lines/webgpu/Line2.js +2 -1
  64. package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
  65. package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
  66. package/examples/jsm/loaders/3DMLoader.js +1 -0
  67. package/examples/jsm/loaders/3MFLoader.js +104 -2
  68. package/examples/jsm/loaders/BVHLoader.js +1 -1
  69. package/examples/jsm/loaders/ColladaLoader.js +15 -12
  70. package/examples/jsm/loaders/DDSLoader.js +42 -0
  71. package/examples/jsm/loaders/DRACOLoader.js +3 -1
  72. package/examples/jsm/loaders/FBXLoader.js +71 -22
  73. package/examples/jsm/loaders/GCodeLoader.js +4 -2
  74. package/examples/jsm/loaders/GLTFLoader.js +29 -14
  75. package/examples/jsm/loaders/KTX2Loader.js +160 -58
  76. package/examples/jsm/loaders/KTXLoader.js +4 -4
  77. package/examples/jsm/loaders/LDrawLoader.js +22 -136
  78. package/examples/jsm/loaders/LottieLoader.js +2 -1
  79. package/examples/jsm/loaders/MTLLoader.js +27 -7
  80. package/examples/jsm/loaders/MaterialXLoader.js +40 -14
  81. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  82. package/examples/jsm/loaders/OBJLoader.js +5 -3
  83. package/examples/jsm/loaders/PCDLoader.js +14 -13
  84. package/examples/jsm/loaders/PDBLoader.js +3 -2
  85. package/examples/jsm/loaders/PLYLoader.js +15 -12
  86. package/examples/jsm/loaders/PVRLoader.js +1 -1
  87. package/examples/jsm/loaders/STLLoader.js +3 -2
  88. package/examples/jsm/loaders/SVGLoader.js +2 -2
  89. package/examples/jsm/loaders/TDSLoader.js +17 -18
  90. package/examples/jsm/loaders/VRMLLoader.js +17 -17
  91. package/examples/jsm/loaders/VTKLoader.js +4 -3
  92. package/examples/jsm/loaders/XYZLoader.js +3 -2
  93. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  94. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
  95. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
  96. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  97. package/examples/jsm/math/ColorSpaces.js +76 -0
  98. package/examples/jsm/math/ConvexHull.js +1 -1
  99. package/examples/jsm/math/OBB.js +17 -0
  100. package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
  101. package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
  102. package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
  103. package/examples/jsm/misc/Timer.js +27 -12
  104. package/examples/jsm/misc/Volume.js +28 -18
  105. package/examples/jsm/misc/VolumeSlice.js +19 -16
  106. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  107. package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
  108. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  109. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  110. package/examples/jsm/objects/LensflareMesh.js +324 -0
  111. package/examples/jsm/objects/Reflector.js +5 -2
  112. package/examples/jsm/objects/Sky.js +2 -2
  113. package/examples/jsm/objects/SkyMesh.js +14 -14
  114. package/examples/jsm/objects/Water2.js +1 -1
  115. package/examples/jsm/objects/Water2Mesh.js +11 -9
  116. package/examples/jsm/objects/WaterMesh.js +38 -33
  117. package/examples/jsm/physics/JoltPhysics.js +8 -8
  118. package/examples/jsm/physics/RapierPhysics.js +5 -5
  119. package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
  120. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  121. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  122. package/examples/jsm/postprocessing/OutlinePass.js +37 -51
  123. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  124. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  125. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  126. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  127. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  128. package/examples/jsm/postprocessing/SSRPass.js +8 -4
  129. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  130. package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
  131. package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
  132. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  133. package/examples/jsm/shaders/BokehShader2.js +1 -1
  134. package/examples/jsm/shaders/FXAAShader.js +225 -224
  135. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  136. package/examples/jsm/shaders/OutputShader.js +6 -2
  137. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  138. package/examples/jsm/transpiler/AST.js +12 -2
  139. package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
  140. package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
  141. package/examples/jsm/transpiler/TSLEncoder.js +96 -21
  142. package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
  143. package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
  144. package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
  145. package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
  146. package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
  147. package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
  148. package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
  149. package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
  150. package/examples/jsm/tsl/display/FXAANode.js +364 -0
  151. package/examples/jsm/tsl/display/FilmNode.js +100 -0
  152. package/examples/jsm/tsl/display/GTAONode.js +521 -0
  153. package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
  154. package/examples/jsm/tsl/display/LensflareNode.js +278 -0
  155. package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
  156. package/examples/jsm/tsl/display/MotionBlur.js +33 -0
  157. package/examples/jsm/tsl/display/OutlineNode.js +750 -0
  158. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
  159. package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
  160. package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
  161. package/examples/jsm/tsl/display/SMAANode.js +767 -0
  162. package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
  163. package/examples/jsm/tsl/display/SSRNode.js +538 -0
  164. package/examples/jsm/tsl/display/Sepia.js +24 -0
  165. package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
  166. package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
  167. package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
  168. package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
  169. package/examples/jsm/tsl/display/TransitionNode.js +140 -0
  170. package/examples/jsm/tsl/display/hashBlur.js +34 -0
  171. package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
  172. package/examples/jsm/tsl/math/Bayer.js +18 -0
  173. package/examples/jsm/tsl/utils/Raymarching.js +65 -0
  174. package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
  175. package/examples/jsm/utils/CameraUtils.js +4 -1
  176. package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
  177. package/examples/jsm/utils/GeometryUtils.js +22 -19
  178. package/examples/jsm/utils/SceneOptimizer.js +410 -0
  179. package/examples/jsm/utils/SceneUtils.js +2 -2
  180. package/examples/jsm/utils/ShadowMapViewer.js +3 -8
  181. package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
  182. package/examples/jsm/utils/SkeletonUtils.js +84 -66
  183. package/examples/jsm/utils/UVsDebug.js +1 -1
  184. package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
  185. package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
  186. package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
  187. package/examples/jsm/webxr/Text2D.js +6 -6
  188. package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
  189. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  190. package/package.json +14 -9
  191. package/src/Three.Core.js +182 -0
  192. package/src/Three.Legacy.js +0 -21
  193. package/src/Three.TSL.js +543 -0
  194. package/src/Three.WebGPU.Nodes.js +23 -0
  195. package/src/Three.WebGPU.js +13 -184
  196. package/src/Three.js +1 -176
  197. package/src/animation/AnimationClip.js +2 -2
  198. package/src/animation/AnimationObjectGroup.js +2 -2
  199. package/src/animation/AnimationUtils.js +1 -1
  200. package/src/animation/PropertyBinding.js +2 -2
  201. package/src/audio/Audio.js +379 -2
  202. package/src/audio/AudioAnalyser.js +58 -1
  203. package/src/audio/AudioContext.js +15 -0
  204. package/src/audio/AudioListener.js +76 -0
  205. package/src/audio/PositionalAudio.js +107 -0
  206. package/src/cameras/ArrayCamera.js +29 -0
  207. package/src/cameras/Camera.js +47 -0
  208. package/src/cameras/CubeCamera.js +66 -0
  209. package/src/cameras/OrthographicCamera.js +109 -0
  210. package/src/cameras/PerspectiveCamera.js +173 -34
  211. package/src/cameras/StereoCamera.js +48 -2
  212. package/src/constants.js +6 -6
  213. package/src/core/BufferAttribute.js +4 -9
  214. package/src/core/BufferGeometry.js +48 -8
  215. package/src/core/Clock.js +1 -1
  216. package/src/core/EventDispatcher.js +52 -8
  217. package/src/core/InterleavedBuffer.js +4 -13
  218. package/src/core/Object3D.js +573 -3
  219. package/src/core/RenderTarget.js +22 -4
  220. package/src/core/RenderTarget3D.js +22 -0
  221. package/src/core/RenderTargetArray.js +22 -0
  222. package/src/extras/Controls.js +104 -0
  223. package/src/extras/DataUtils.js +48 -8
  224. package/src/extras/Earcut.js +18 -7
  225. package/src/extras/ImageUtils.js +18 -11
  226. package/src/extras/PMREMGenerator.js +40 -9
  227. package/src/extras/ShapeUtils.js +24 -2
  228. package/src/extras/TextureUtils.js +96 -10
  229. package/src/extras/core/Curve.js +153 -53
  230. package/src/extras/core/CurvePath.js +63 -22
  231. package/src/extras/core/Interpolations.js +29 -3
  232. package/src/extras/core/Path.js +134 -1
  233. package/src/extras/core/Shape.js +66 -3
  234. package/src/extras/core/ShapePath.js +76 -0
  235. package/src/extras/curves/ArcCurve.js +22 -0
  236. package/src/extras/curves/CatmullRomCurve3.js +89 -18
  237. package/src/extras/curves/CubicBezierCurve.js +67 -0
  238. package/src/extras/curves/CubicBezierCurve3.js +50 -0
  239. package/src/extras/curves/EllipseCurve.js +102 -0
  240. package/src/extras/curves/LineCurve.js +36 -0
  241. package/src/extras/curves/LineCurve3.js +36 -0
  242. package/src/extras/curves/QuadraticBezierCurve.js +59 -0
  243. package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
  244. package/src/extras/curves/SplineCurve.js +48 -0
  245. package/src/geometries/BoxGeometry.js +38 -0
  246. package/src/geometries/CapsuleGeometry.js +34 -0
  247. package/src/geometries/CircleGeometry.js +40 -0
  248. package/src/geometries/ConeGeometry.js +38 -0
  249. package/src/geometries/CylinderGeometry.js +50 -4
  250. package/src/geometries/DodecahedronGeometry.js +32 -0
  251. package/src/geometries/EdgesGeometry.js +30 -2
  252. package/src/geometries/ExtrudeGeometry.js +52 -0
  253. package/src/geometries/IcosahedronGeometry.js +32 -0
  254. package/src/geometries/LatheGeometry.js +43 -3
  255. package/src/geometries/OctahedronGeometry.js +32 -0
  256. package/src/geometries/PlaneGeometry.js +34 -0
  257. package/src/geometries/PolyhedronGeometry.js +29 -0
  258. package/src/geometries/RingGeometry.js +36 -0
  259. package/src/geometries/ShapeGeometry.js +37 -0
  260. package/src/geometries/SphereGeometry.js +37 -0
  261. package/src/geometries/TetrahedronGeometry.js +32 -0
  262. package/src/geometries/TorusGeometry.js +35 -0
  263. package/src/geometries/TorusKnotGeometry.js +38 -0
  264. package/src/geometries/TubeGeometry.js +49 -0
  265. package/src/geometries/WireframeGeometry.js +32 -0
  266. package/src/helpers/ArrowHelper.js +60 -3
  267. package/src/helpers/AxesHelper.js +28 -0
  268. package/src/helpers/Box3Helper.js +28 -0
  269. package/src/helpers/BoxHelper.js +43 -7
  270. package/src/helpers/CameraHelper.js +61 -18
  271. package/src/helpers/DirectionalLightHelper.js +52 -0
  272. package/src/helpers/GridHelper.js +26 -0
  273. package/src/helpers/HemisphereLightHelper.js +39 -0
  274. package/src/helpers/PlaneHelper.js +33 -0
  275. package/src/helpers/PointLightHelper.js +43 -0
  276. package/src/helpers/PolarGridHelper.js +30 -0
  277. package/src/helpers/SkeletonHelper.js +39 -2
  278. package/src/helpers/SpotLightHelper.js +40 -0
  279. package/src/lights/AmbientLight.js +25 -0
  280. package/src/lights/DirectionalLight.js +57 -0
  281. package/src/lights/DirectionalLightShadow.js +15 -0
  282. package/src/lights/HemisphereLight.js +32 -0
  283. package/src/lights/Light.js +36 -0
  284. package/src/lights/LightProbe.js +43 -0
  285. package/src/lights/LightShadow.js +159 -0
  286. package/src/lights/PointLight.js +59 -0
  287. package/src/lights/PointLightShadow.js +21 -0
  288. package/src/lights/RectAreaLight.js +59 -0
  289. package/src/lights/SpotLight.js +102 -0
  290. package/src/lights/SpotLightShadow.js +24 -2
  291. package/src/lights/webgpu/IESSpotLight.js +21 -0
  292. package/src/loaders/Loader.js +132 -0
  293. package/src/loaders/MaterialLoader.js +7 -1
  294. package/src/loaders/nodes/NodeLoader.js +189 -0
  295. package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
  296. package/src/loaders/nodes/NodeObjectLoader.js +151 -0
  297. package/src/materials/LineDashedMaterial.js +0 -1
  298. package/src/materials/Material.js +469 -7
  299. package/src/materials/MeshPhongMaterial.js +1 -1
  300. package/src/materials/MeshPhysicalMaterial.js +2 -2
  301. package/src/materials/MeshStandardMaterial.js +2 -2
  302. package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
  303. package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
  304. package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
  305. package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
  306. package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
  307. package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
  308. package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
  309. package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
  310. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
  311. package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
  312. package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
  313. package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
  314. package/src/materials/nodes/NodeMaterial.js +1180 -0
  315. package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
  316. package/src/materials/nodes/PointsNodeMaterial.js +153 -0
  317. package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
  318. package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
  319. package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
  320. package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
  321. package/src/math/Box2.js +177 -0
  322. package/src/math/Box3.js +243 -0
  323. package/src/math/Color.js +343 -0
  324. package/src/math/ColorManagement.js +143 -102
  325. package/src/math/Cylindrical.js +65 -6
  326. package/src/math/Euler.js +137 -4
  327. package/src/math/Frustum.js +83 -0
  328. package/src/math/Interpolant.js +87 -8
  329. package/src/math/Line3.js +96 -2
  330. package/src/math/MathUtils.js +182 -19
  331. package/src/math/Matrix2.js +70 -0
  332. package/src/math/Matrix3.js +229 -4
  333. package/src/math/Matrix4.js +368 -3
  334. package/src/math/Plane.js +164 -2
  335. package/src/math/Quaternion.js +265 -9
  336. package/src/math/Ray.js +160 -0
  337. package/src/math/Sphere.js +147 -0
  338. package/src/math/Spherical.js +73 -11
  339. package/src/math/SphericalHarmonics3.js +112 -14
  340. package/src/math/Triangle.js +230 -2
  341. package/src/math/Vector2.js +396 -10
  342. package/src/math/Vector3.js +550 -13
  343. package/src/math/Vector4.js +415 -9
  344. package/src/math/interpolants/CubicInterpolant.js +10 -1
  345. package/src/math/interpolants/DiscreteInterpolant.js +10 -2
  346. package/src/math/interpolants/LinearInterpolant.js +13 -0
  347. package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
  348. package/src/nodes/Nodes.js +84 -166
  349. package/src/nodes/TSL.js +167 -0
  350. package/src/nodes/accessors/AccessorsUtils.js +39 -10
  351. package/src/nodes/accessors/Arrays.js +68 -0
  352. package/src/nodes/accessors/BatchNode.js +93 -26
  353. package/src/nodes/accessors/Bitangent.js +54 -0
  354. package/src/nodes/accessors/BufferAttributeNode.js +189 -11
  355. package/src/nodes/accessors/BufferNode.js +70 -5
  356. package/src/nodes/accessors/BuiltinNode.js +63 -0
  357. package/src/nodes/accessors/Camera.js +129 -0
  358. package/src/nodes/accessors/ClippingNode.js +152 -43
  359. package/src/nodes/accessors/CubeTextureNode.js +76 -13
  360. package/src/nodes/accessors/InstanceNode.js +118 -35
  361. package/src/nodes/accessors/InstancedMeshNode.js +50 -0
  362. package/src/nodes/accessors/Lights.js +129 -0
  363. package/src/nodes/accessors/MaterialNode.js +394 -58
  364. package/src/nodes/accessors/MaterialProperties.js +57 -1
  365. package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
  366. package/src/nodes/accessors/ModelNode.js +159 -12
  367. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
  368. package/src/nodes/accessors/MorphNode.js +60 -13
  369. package/src/nodes/accessors/Normal.js +156 -0
  370. package/src/nodes/accessors/Object3DNode.js +154 -35
  371. package/src/nodes/accessors/PointUVNode.js +35 -6
  372. package/src/nodes/accessors/Position.js +64 -0
  373. package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
  374. package/src/nodes/accessors/ReferenceNode.js +243 -6
  375. package/src/nodes/accessors/ReflectVector.js +36 -0
  376. package/src/nodes/accessors/RendererReferenceNode.js +57 -7
  377. package/src/nodes/accessors/SceneNode.js +98 -6
  378. package/src/nodes/accessors/SkinningNode.js +214 -21
  379. package/src/nodes/accessors/StorageBufferNode.js +288 -28
  380. package/src/nodes/accessors/StorageTextureNode.js +139 -12
  381. package/src/nodes/accessors/Tangent.js +62 -0
  382. package/src/nodes/accessors/Texture3DNode.js +98 -12
  383. package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
  384. package/src/nodes/accessors/TextureNode.js +347 -34
  385. package/src/nodes/accessors/TextureSizeNode.js +51 -9
  386. package/src/nodes/accessors/UV.js +11 -0
  387. package/src/nodes/accessors/UniformArrayNode.js +241 -32
  388. package/src/nodes/accessors/UserDataNode.js +55 -7
  389. package/src/nodes/accessors/VelocityNode.js +223 -0
  390. package/src/nodes/accessors/VertexColorNode.js +45 -6
  391. package/src/nodes/code/CodeNode.js +108 -8
  392. package/src/nodes/code/ExpressionNode.js +38 -7
  393. package/src/nodes/code/FunctionCallNode.js +62 -11
  394. package/src/nodes/code/FunctionNode.js +54 -24
  395. package/src/nodes/code/ScriptableNode.js +241 -17
  396. package/src/nodes/code/ScriptableValueNode.js +93 -8
  397. package/src/nodes/core/ArrayNode.js +142 -0
  398. package/src/nodes/core/AssignNode.js +60 -12
  399. package/src/nodes/core/AttributeNode.js +55 -22
  400. package/src/nodes/core/BypassNode.js +59 -11
  401. package/src/nodes/core/CacheNode.js +64 -10
  402. package/src/nodes/core/ConstNode.js +38 -3
  403. package/src/nodes/core/ContextNode.js +87 -12
  404. package/src/nodes/core/IndexNode.js +102 -10
  405. package/src/nodes/core/InputNode.js +55 -3
  406. package/src/nodes/core/LightingModel.js +65 -5
  407. package/src/nodes/core/MRTNode.js +81 -7
  408. package/src/nodes/core/Node.js +368 -50
  409. package/src/nodes/core/NodeAttribute.js +38 -0
  410. package/src/nodes/core/NodeBuilder.js +1317 -83
  411. package/src/nodes/core/NodeCache.js +41 -2
  412. package/src/nodes/core/NodeCode.js +31 -0
  413. package/src/nodes/core/NodeFrame.js +123 -2
  414. package/src/nodes/core/NodeFunction.js +46 -0
  415. package/src/nodes/core/NodeFunctionInput.js +44 -0
  416. package/src/nodes/core/NodeParser.js +11 -0
  417. package/src/nodes/core/NodeUniform.js +52 -0
  418. package/src/nodes/core/NodeUtils.js +226 -6
  419. package/src/nodes/core/NodeVar.js +47 -1
  420. package/src/nodes/core/NodeVarying.js +28 -0
  421. package/src/nodes/core/OutputStructNode.js +61 -17
  422. package/src/nodes/core/ParameterNode.js +34 -4
  423. package/src/nodes/core/PropertyNode.js +296 -32
  424. package/src/nodes/core/StackNode.js +108 -8
  425. package/src/nodes/core/StructNode.js +120 -0
  426. package/src/nodes/core/StructType.js +13 -0
  427. package/src/nodes/core/StructTypeNode.js +116 -9
  428. package/src/nodes/core/TempNode.js +37 -7
  429. package/src/nodes/core/UniformGroupNode.js +98 -17
  430. package/src/nodes/core/UniformNode.js +72 -4
  431. package/src/nodes/core/VarNode.js +170 -13
  432. package/src/nodes/core/VaryingNode.js +109 -8
  433. package/src/nodes/core/constants.js +40 -0
  434. package/src/nodes/display/BlendModes.js +193 -0
  435. package/src/nodes/display/BumpMapNode.js +47 -10
  436. package/src/nodes/display/ColorAdjustment.js +141 -0
  437. package/src/nodes/display/ColorSpaceFunctions.js +54 -0
  438. package/src/nodes/display/ColorSpaceNode.js +147 -68
  439. package/src/nodes/display/FrontFacingNode.js +39 -6
  440. package/src/nodes/display/NormalMapNode.js +55 -13
  441. package/src/nodes/display/PassNode.js +420 -19
  442. package/src/nodes/display/PosterizeNode.js +40 -7
  443. package/src/nodes/display/RenderOutputNode.js +81 -13
  444. package/src/nodes/display/ScreenNode.js +286 -0
  445. package/src/nodes/display/ToneMappingFunctions.js +242 -0
  446. package/src/nodes/display/ToneMappingNode.js +68 -175
  447. package/src/nodes/display/ToonOutlinePassNode.js +183 -0
  448. package/src/nodes/display/ViewportDepthNode.js +210 -36
  449. package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
  450. package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
  451. package/src/nodes/display/ViewportTextureNode.js +68 -11
  452. package/src/nodes/fog/Fog.js +113 -0
  453. package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
  454. package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  455. package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  456. package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
  457. package/src/nodes/functions/BSDF/D_GGX.js +2 -2
  458. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
  459. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  460. package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
  461. package/src/nodes/functions/BSDF/LTC.js +50 -6
  462. package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  463. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
  464. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  465. package/src/nodes/functions/BasicLightingModel.js +27 -6
  466. package/src/nodes/functions/PhongLightingModel.js +38 -8
  467. package/src/nodes/functions/PhysicalLightingModel.js +215 -51
  468. package/src/nodes/functions/ShadowMaskModel.js +24 -1
  469. package/src/nodes/functions/ToonLightingModel.js +24 -5
  470. package/src/nodes/functions/VolumetricLightingModel.js +183 -0
  471. package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
  472. package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
  473. package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
  474. package/src/nodes/functions/material/getRoughness.js +2 -2
  475. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  476. package/src/nodes/geometry/RangeNode.js +62 -7
  477. package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
  478. package/src/nodes/gpgpu/BarrierNode.js +89 -0
  479. package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
  480. package/src/nodes/gpgpu/ComputeNode.js +124 -9
  481. package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
  482. package/src/nodes/lighting/AONode.js +24 -3
  483. package/src/nodes/lighting/AmbientLightNode.js +16 -8
  484. package/src/nodes/lighting/AnalyticLightNode.js +151 -231
  485. package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
  486. package/src/nodes/lighting/BasicLightMapNode.js +25 -5
  487. package/src/nodes/lighting/DirectionalLightNode.js +19 -20
  488. package/src/nodes/lighting/EnvironmentNode.js +34 -17
  489. package/src/nodes/lighting/HemisphereLightNode.js +42 -11
  490. package/src/nodes/lighting/IESSpotLightNode.js +18 -9
  491. package/src/nodes/lighting/IrradianceNode.js +23 -3
  492. package/src/nodes/lighting/LightProbeNode.js +29 -36
  493. package/src/nodes/lighting/LightUtils.js +12 -4
  494. package/src/nodes/lighting/LightingContextNode.js +70 -21
  495. package/src/nodes/lighting/LightingNode.js +22 -9
  496. package/src/nodes/lighting/LightsNode.js +309 -86
  497. package/src/nodes/lighting/PointLightNode.js +66 -32
  498. package/src/nodes/lighting/PointShadowNode.js +306 -0
  499. package/src/nodes/lighting/RectAreaLightNode.js +61 -25
  500. package/src/nodes/lighting/ShadowBaseNode.js +92 -0
  501. package/src/nodes/lighting/ShadowNode.js +812 -0
  502. package/src/nodes/lighting/SpotLightNode.js +73 -31
  503. package/src/nodes/materialx/MaterialXNodes.js +2 -2
  504. package/src/nodes/materialx/lib/mx_hsv.js +27 -22
  505. package/src/nodes/materialx/lib/mx_noise.js +70 -70
  506. package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
  507. package/src/nodes/math/ConditionalNode.js +230 -0
  508. package/src/nodes/math/Hash.js +21 -0
  509. package/src/nodes/math/MathNode.js +812 -131
  510. package/src/nodes/math/MathUtils.js +47 -8
  511. package/src/nodes/math/OperatorNode.js +410 -66
  512. package/src/nodes/math/TriNoise3D.js +32 -32
  513. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  514. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  515. package/src/nodes/pmrem/PMREMNode.js +188 -28
  516. package/src/nodes/pmrem/PMREMUtils.js +24 -24
  517. package/src/nodes/procedural/Checker.js +22 -0
  518. package/src/nodes/shapes/Shapes.js +32 -0
  519. package/src/nodes/tsl/TSLBase.js +31 -0
  520. package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
  521. package/src/nodes/utils/ArrayElementNode.js +45 -5
  522. package/src/nodes/utils/ConvertNode.js +39 -4
  523. package/src/nodes/utils/CubeMapNode.js +88 -8
  524. package/src/nodes/utils/Discard.js +24 -0
  525. package/src/nodes/utils/EquirectUVNode.js +39 -7
  526. package/src/nodes/utils/FlipNode.js +106 -0
  527. package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
  528. package/src/nodes/utils/JoinNode.js +31 -3
  529. package/src/nodes/utils/LoopNode.js +95 -9
  530. package/src/nodes/utils/MatcapUVNode.js +27 -8
  531. package/src/nodes/utils/MaxMipLevelNode.js +57 -6
  532. package/src/nodes/utils/MemberNode.js +68 -0
  533. package/src/nodes/utils/Oscillators.js +41 -0
  534. package/src/nodes/utils/Packing.js +21 -0
  535. package/src/nodes/utils/PostProcessingUtils.js +95 -0
  536. package/src/nodes/utils/RTTNode.js +141 -9
  537. package/src/nodes/utils/ReflectorNode.js +295 -21
  538. package/src/nodes/utils/RemapNode.js +93 -10
  539. package/src/nodes/utils/RotateNode.js +48 -13
  540. package/src/nodes/utils/SetNode.js +50 -4
  541. package/src/nodes/utils/SplitNode.js +62 -6
  542. package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
  543. package/src/nodes/utils/SpriteUtils.js +21 -5
  544. package/src/nodes/utils/StorageArrayElementNode.js +64 -12
  545. package/src/nodes/utils/Timer.js +73 -0
  546. package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
  547. package/src/nodes/utils/UVUtils.js +27 -9
  548. package/src/nodes/utils/ViewportUtils.js +16 -4
  549. package/src/objects/BatchedMesh.js +808 -281
  550. package/src/objects/Bone.js +24 -0
  551. package/src/objects/ClippingGroup.js +68 -0
  552. package/src/objects/Group.js +24 -0
  553. package/src/objects/InstancedMesh.js +120 -2
  554. package/src/objects/LOD.js +120 -5
  555. package/src/objects/Line.js +89 -6
  556. package/src/objects/LineLoop.js +20 -0
  557. package/src/objects/LineSegments.js +18 -0
  558. package/src/objects/Mesh.js +82 -23
  559. package/src/objects/Points.js +62 -0
  560. package/src/objects/Skeleton.js +107 -2
  561. package/src/objects/SkinnedMesh.js +99 -5
  562. package/src/objects/Sprite.js +54 -0
  563. package/src/renderers/WebGLRenderer.js +274 -157
  564. package/src/renderers/common/Animation.js +109 -12
  565. package/src/renderers/common/Attributes.js +40 -0
  566. package/src/renderers/common/Backend.js +504 -44
  567. package/src/renderers/common/Background.js +67 -9
  568. package/src/renderers/common/BindGroup.js +45 -1
  569. package/src/renderers/common/Binding.js +35 -0
  570. package/src/renderers/common/Bindings.js +136 -19
  571. package/src/renderers/common/Buffer.js +49 -0
  572. package/src/renderers/common/BufferUtils.js +25 -0
  573. package/src/renderers/common/BundleGroup.js +83 -0
  574. package/src/renderers/common/ChainMap.js +45 -6
  575. package/src/renderers/common/ClippingContext.js +175 -80
  576. package/src/renderers/common/Color4.js +40 -0
  577. package/src/renderers/common/ComputePipeline.js +24 -0
  578. package/src/renderers/common/Constants.js +2 -1
  579. package/src/renderers/common/CubeRenderTarget.js +22 -3
  580. package/src/renderers/common/DataMap.js +37 -1
  581. package/src/renderers/common/Geometries.js +111 -14
  582. package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  583. package/src/renderers/common/Info.js +78 -35
  584. package/src/renderers/common/Lighting.js +73 -0
  585. package/src/renderers/common/Pipeline.js +22 -0
  586. package/src/renderers/common/Pipelines.js +148 -5
  587. package/src/renderers/common/PostProcessing.js +112 -11
  588. package/src/renderers/common/ProgrammableStage.js +60 -2
  589. package/src/renderers/common/QuadMesh.js +56 -5
  590. package/src/renderers/common/RenderBundle.js +14 -8
  591. package/src/renderers/common/RenderBundles.js +39 -10
  592. package/src/renderers/common/RenderContext.js +205 -7
  593. package/src/renderers/common/RenderContexts.js +59 -6
  594. package/src/renderers/common/RenderList.js +230 -21
  595. package/src/renderers/common/RenderLists.js +45 -6
  596. package/src/renderers/common/RenderObject.js +552 -41
  597. package/src/renderers/common/RenderObjects.js +118 -9
  598. package/src/renderers/common/RenderPipeline.js +24 -0
  599. package/src/renderers/common/Renderer.js +1537 -239
  600. package/src/renderers/common/RendererUtils.js +191 -0
  601. package/src/renderers/common/SampledTexture.js +132 -3
  602. package/src/renderers/common/Sampler.js +30 -0
  603. package/src/renderers/common/StorageBuffer.js +24 -0
  604. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  605. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  606. package/src/renderers/common/StorageTexture.js +38 -0
  607. package/src/renderers/common/Textures.js +142 -32
  608. package/src/renderers/common/TimestampQueryPool.js +98 -0
  609. package/src/renderers/common/Uniform.js +225 -3
  610. package/src/renderers/common/UniformBuffer.js +19 -0
  611. package/src/renderers/common/UniformsGroup.js +157 -6
  612. package/src/renderers/common/XRManager.js +1185 -0
  613. package/src/renderers/common/XRRenderTarget.js +74 -0
  614. package/src/renderers/common/extras/PMREMGenerator.js +211 -53
  615. package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
  616. package/src/renderers/common/nodes/NodeLibrary.js +194 -0
  617. package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
  618. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  619. package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
  620. package/src/renderers/common/nodes/NodeUniform.js +285 -2
  621. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  622. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  623. package/src/renderers/common/nodes/Nodes.js +390 -70
  624. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
  625. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
  626. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  627. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
  628. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
  629. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  630. package/src/renderers/shaders/ShaderLib/points.glsl.js +2 -0
  631. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  632. package/src/renderers/webgl/WebGLAttributes.js +45 -14
  633. package/src/renderers/webgl/WebGLBackground.js +24 -1
  634. package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
  635. package/src/renderers/webgl/WebGLCapabilities.js +2 -0
  636. package/src/renderers/webgl/WebGLGeometries.js +0 -28
  637. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
  638. package/src/renderers/webgl/WebGLProgram.js +27 -29
  639. package/src/renderers/webgl/WebGLPrograms.js +24 -16
  640. package/src/renderers/webgl/WebGLState.js +68 -11
  641. package/src/renderers/webgl/WebGLTextures.js +49 -10
  642. package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
  643. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
  644. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
  645. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
  646. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  647. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  648. package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
  649. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
  650. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
  651. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
  652. package/src/renderers/webgpu/WebGPUBackend.js +816 -236
  653. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
  654. package/src/renderers/webgpu/WebGPURenderer.js +45 -6
  655. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
  656. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
  657. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
  658. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
  659. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  660. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
  661. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
  662. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
  663. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
  664. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
  665. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
  666. package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
  667. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  668. package/src/renderers/webxr/WebXRManager.js +54 -32
  669. package/src/scenes/Fog.js +60 -0
  670. package/src/scenes/FogExp2.js +51 -0
  671. package/src/scenes/Scene.js +87 -0
  672. package/src/textures/Data3DTexture.js +2 -2
  673. package/src/textures/DepthTexture.js +2 -0
  674. package/src/textures/Source.js +2 -2
  675. package/src/textures/Texture.js +368 -5
  676. package/src/textures/VideoFrameTexture.js +35 -0
  677. package/src/utils.js +33 -1
  678. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
  679. package/examples/jsm/animation/MMDPhysics.js +0 -1406
  680. package/examples/jsm/cameras/CinematicCamera.js +0 -208
  681. package/examples/jsm/controls/Controls.js +0 -32
  682. package/examples/jsm/exporters/MMDExporter.js +0 -217
  683. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
  684. package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  685. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  686. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  687. package/examples/jsm/loaders/MMDLoader.js +0 -2295
  688. package/examples/jsm/loaders/TiltLoader.js +0 -520
  689. package/examples/jsm/objects/InstancedPoints.js +0 -21
  690. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  691. package/examples/jsm/utils/GPUStatsPanel.js +0 -95
  692. package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  693. package/src/nodes/accessors/BitangentNode.js +0 -13
  694. package/src/nodes/accessors/CameraNode.js +0 -19
  695. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  696. package/src/nodes/accessors/NormalNode.js +0 -14
  697. package/src/nodes/accessors/PositionNode.js +0 -10
  698. package/src/nodes/accessors/ReflectVectorNode.js +0 -10
  699. package/src/nodes/accessors/TangentNode.js +0 -23
  700. package/src/nodes/accessors/UVNode.js +0 -3
  701. package/src/nodes/core/NodeKeywords.js +0 -80
  702. package/src/nodes/core/UniformGroup.js +0 -13
  703. package/src/nodes/display/AfterImageNode.js +0 -152
  704. package/src/nodes/display/AnamorphicNode.js +0 -145
  705. package/src/nodes/display/BlendModeNode.js +0 -128
  706. package/src/nodes/display/ColorAdjustmentNode.js +0 -104
  707. package/src/nodes/display/DenoiseNode.js +0 -198
  708. package/src/nodes/display/DotScreenNode.js +0 -75
  709. package/src/nodes/display/FXAANode.js +0 -327
  710. package/src/nodes/display/FilmNode.js +0 -52
  711. package/src/nodes/display/GTAONode.js +0 -324
  712. package/src/nodes/display/GaussianBlurNode.js +0 -207
  713. package/src/nodes/display/Lut3DNode.js +0 -53
  714. package/src/nodes/display/RGBShiftNode.js +0 -49
  715. package/src/nodes/display/SepiaNode.js +0 -18
  716. package/src/nodes/display/TransitionNode.js +0 -76
  717. package/src/nodes/display/ViewportNode.js +0 -137
  718. package/src/nodes/fog/FogExp2Node.js +0 -34
  719. package/src/nodes/fog/FogNode.js +0 -48
  720. package/src/nodes/fog/FogRangeNode.js +0 -35
  721. package/src/nodes/lighting/LightNode.js +0 -57
  722. package/src/nodes/loaders/NodeLoader.js +0 -110
  723. package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
  724. package/src/nodes/loaders/NodeObjectLoader.js +0 -71
  725. package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  726. package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
  727. package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
  728. package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
  729. package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
  730. package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
  731. package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  732. package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
  733. package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
  734. package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
  735. package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
  736. package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
  737. package/src/nodes/materials/NodeMaterial.js +0 -680
  738. package/src/nodes/materials/PointsNodeMaterial.js +0 -39
  739. package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
  740. package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
  741. package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
  742. package/src/nodes/math/CondNode.js +0 -139
  743. package/src/nodes/math/HashNode.js +0 -34
  744. package/src/nodes/procedural/CheckerNode.js +0 -42
  745. package/src/nodes/utils/DiscardNode.js +0 -28
  746. package/src/nodes/utils/OscNode.js +0 -81
  747. package/src/nodes/utils/PackingNode.js +0 -55
  748. package/src/nodes/utils/TimerNode.js +0 -94
@@ -6,8 +6,31 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
6
6
 
7
7
  const _box = /*@__PURE__*/ new Box3();
8
8
 
9
+ /**
10
+ * Helper object to graphically show the world-axis-aligned bounding box
11
+ * around an object. The actual bounding box is handled with {@link Box3},
12
+ * this is just a visual helper for debugging. It can be automatically
13
+ * resized with {@link BoxHelper#update} when the object it's created from
14
+ * is transformed. Note that the object must have a geometry for this to work,
15
+ * so it won't work with sprites.
16
+ *
17
+ * ```js
18
+ * const sphere = new THREE.SphereGeometry();
19
+ * const object = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( 0xff0000 ) );
20
+ * const box = new THREE.BoxHelper( object, 0xffff00 );
21
+ * scene.add( box );
22
+ * ```
23
+ *
24
+ * @augments LineSegments
25
+ */
9
26
  class BoxHelper extends LineSegments {
10
27
 
28
+ /**
29
+ * Constructs a new box helper.
30
+ *
31
+ * @param {Object3D} [object] - The 3D object to show the world-axis-aligned bounding box.
32
+ * @param {number|Color|string} [color=0xffff00] - The box's color.
33
+ */
11
34
  constructor( object, color = 0xffff00 ) {
12
35
 
13
36
  const indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );
@@ -19,6 +42,11 @@ class BoxHelper extends LineSegments {
19
42
 
20
43
  super( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );
21
44
 
45
+ /**
46
+ * The 3D object being visualized.
47
+ *
48
+ * @type {Object3D}
49
+ */
22
50
  this.object = object;
23
51
  this.type = 'BoxHelper';
24
52
 
@@ -28,13 +56,11 @@ class BoxHelper extends LineSegments {
28
56
 
29
57
  }
30
58
 
31
- update( object ) {
32
-
33
- if ( object !== undefined ) {
34
-
35
- console.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );
36
-
37
- }
59
+ /**
60
+ * Updates the helper's geometry to match the dimensions of the object,
61
+ * including any children.
62
+ */
63
+ update() {
38
64
 
39
65
  if ( this.object !== undefined ) {
40
66
 
@@ -81,6 +107,12 @@ class BoxHelper extends LineSegments {
81
107
 
82
108
  }
83
109
 
110
+ /**
111
+ * Updates the wireframe box for the passed object.
112
+ *
113
+ * @param {Object3D} object - The 3D object to create the helper for.
114
+ * @return {BoxHelper} A reference to this instance.
115
+ */
84
116
  setFromObject( object ) {
85
117
 
86
118
  this.object = object;
@@ -100,6 +132,10 @@ class BoxHelper extends LineSegments {
100
132
 
101
133
  }
102
134
 
135
+ /**
136
+ * Frees the GPU-related resources allocated by this instance. Call this
137
+ * method whenever this instance is no longer used in your app.
138
+ */
103
139
  dispose() {
104
140
 
105
141
  this.geometry.dispose();
@@ -5,19 +5,34 @@ import { Color } from '../math/Color.js';
5
5
  import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
6
6
  import { BufferGeometry } from '../core/BufferGeometry.js';
7
7
  import { Float32BufferAttribute } from '../core/BufferAttribute.js';
8
+ import { WebGLCoordinateSystem } from '../constants.js';
8
9
 
9
10
  const _vector = /*@__PURE__*/ new Vector3();
10
11
  const _camera = /*@__PURE__*/ new Camera();
11
12
 
12
13
  /**
13
- * - shows frustum, line of sight and up of the camera
14
- * - suitable for fast updates
15
- * - based on frustum visualization in lightgl.js shadowmap example
16
- * https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html
14
+ * This helps with visualizing what a camera contains in its frustum. It
15
+ * visualizes the frustum of a camera using a line segments.
16
+ *
17
+ * Based on frustum visualization in [lightgl.js shadowmap example]{@link https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html}.
18
+ *
19
+ * `CameraHelper` must be a child of the scene.
20
+ *
21
+ * ```js
22
+ * const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
23
+ * const helper = new THREE.CameraHelper( camera );
24
+ * scene.add( helper );
25
+ * ```
26
+ *
27
+ * @augments LineSegments
17
28
  */
18
-
19
29
  class CameraHelper extends LineSegments {
20
30
 
31
+ /**
32
+ * Constructs a new arrow helper.
33
+ *
34
+ * @param {Camera} camera - The camera to visualize.
35
+ */
21
36
  constructor( camera ) {
22
37
 
23
38
  const geometry = new BufferGeometry();
@@ -104,12 +119,22 @@ class CameraHelper extends LineSegments {
104
119
 
105
120
  this.type = 'CameraHelper';
106
121
 
122
+ /**
123
+ * The camera being visualized.
124
+ *
125
+ * @type {Camera}
126
+ */
107
127
  this.camera = camera;
108
128
  if ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();
109
129
 
110
130
  this.matrix = camera.matrixWorld;
111
131
  this.matrixAutoUpdate = false;
112
132
 
133
+ /**
134
+ * This contains the points used to visualize the camera.
135
+ *
136
+ * @type {Object<string,Array<number>>}
137
+ */
113
138
  this.pointMap = pointMap;
114
139
 
115
140
  this.update();
@@ -126,6 +151,15 @@ class CameraHelper extends LineSegments {
126
151
 
127
152
  }
128
153
 
154
+ /**
155
+ * Defines the colors of the helper.
156
+ *
157
+ * @param {Color} frustum - The frustum line color.
158
+ * @param {Color} cone - The cone line color.
159
+ * @param {Color} up - The up line color.
160
+ * @param {Color} target - The target line color.
161
+ * @param {Color} cross - The cross line color.
162
+ */
129
163
  setColors( frustum, cone, up, target, cross ) {
130
164
 
131
165
  const geometry = this.geometry;
@@ -183,6 +217,9 @@ class CameraHelper extends LineSegments {
183
217
 
184
218
  }
185
219
 
220
+ /**
221
+ * Updates the helper based on the projection matrix of the camera.
222
+ */
186
223
  update() {
187
224
 
188
225
  const geometry = this.geometry;
@@ -195,17 +232,19 @@ class CameraHelper extends LineSegments {
195
232
 
196
233
  _camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );
197
234
 
198
- // center / target
235
+ // Adjust z values based on coordinate system
236
+ const nearZ = this.camera.coordinateSystem === WebGLCoordinateSystem ? - 1 : 0;
199
237
 
200
- setPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );
238
+ // center / target
239
+ setPoint( 'c', pointMap, geometry, _camera, 0, 0, nearZ );
201
240
  setPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );
202
241
 
203
242
  // near
204
243
 
205
- setPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );
206
- setPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );
207
- setPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );
208
- setPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );
244
+ setPoint( 'n1', pointMap, geometry, _camera, - w, - h, nearZ );
245
+ setPoint( 'n2', pointMap, geometry, _camera, w, - h, nearZ );
246
+ setPoint( 'n3', pointMap, geometry, _camera, - w, h, nearZ );
247
+ setPoint( 'n4', pointMap, geometry, _camera, w, h, nearZ );
209
248
 
210
249
  // far
211
250
 
@@ -216,9 +255,9 @@ class CameraHelper extends LineSegments {
216
255
 
217
256
  // up
218
257
 
219
- setPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );
220
- setPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );
221
- setPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );
258
+ setPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, nearZ );
259
+ setPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, nearZ );
260
+ setPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, nearZ );
222
261
 
223
262
  // cross
224
263
 
@@ -227,15 +266,19 @@ class CameraHelper extends LineSegments {
227
266
  setPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );
228
267
  setPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );
229
268
 
230
- setPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );
231
- setPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );
232
- setPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );
233
- setPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );
269
+ setPoint( 'cn1', pointMap, geometry, _camera, - w, 0, nearZ );
270
+ setPoint( 'cn2', pointMap, geometry, _camera, w, 0, nearZ );
271
+ setPoint( 'cn3', pointMap, geometry, _camera, 0, - h, nearZ );
272
+ setPoint( 'cn4', pointMap, geometry, _camera, 0, h, nearZ );
234
273
 
235
274
  geometry.getAttribute( 'position' ).needsUpdate = true;
236
275
 
237
276
  }
238
277
 
278
+ /**
279
+ * Frees the GPU-related resources allocated by this instance. Call this
280
+ * method whenever this instance is no longer used in your app.
281
+ */
239
282
  dispose() {
240
283
 
241
284
  this.geometry.dispose();
@@ -9,17 +9,51 @@ const _v1 = /*@__PURE__*/ new Vector3();
9
9
  const _v2 = /*@__PURE__*/ new Vector3();
10
10
  const _v3 = /*@__PURE__*/ new Vector3();
11
11
 
12
+ /**
13
+ * Helper object to assist with visualizing a {@link DirectionalLight}'s
14
+ * effect on the scene. This consists of plane and a line representing the
15
+ * light's position and direction.
16
+ *
17
+ * ```js
18
+ * const light = new THREE.DirectionalLight( 0xFFFFFF );
19
+ * scene.add( light );
20
+ *
21
+ * const helper = new THREE.DirectionalLightHelper( light, 5 );
22
+ * scene.add( helper );
23
+ * ```
24
+ *
25
+ * @augments Object3D
26
+ */
12
27
  class DirectionalLightHelper extends Object3D {
13
28
 
29
+ /**
30
+ * Constructs a new directional light helper.
31
+ *
32
+ * @param {DirectionalLight} light - The light to be visualized.
33
+ * @param {number} [size=1] - The dimensions of the plane.
34
+ * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take
35
+ * the color of the light.
36
+ */
14
37
  constructor( light, size, color ) {
15
38
 
16
39
  super();
17
40
 
41
+ /**
42
+ * The light being visualized.
43
+ *
44
+ * @type {DirectionalLight}
45
+ */
18
46
  this.light = light;
19
47
 
20
48
  this.matrix = light.matrixWorld;
21
49
  this.matrixAutoUpdate = false;
22
50
 
51
+ /**
52
+ * The color parameter passed in the constructor.
53
+ * If not set, the helper will take the color of the light.
54
+ *
55
+ * @type {number|Color|string}
56
+ */
23
57
  this.color = color;
24
58
 
25
59
  this.type = 'DirectionalLightHelper';
@@ -37,12 +71,22 @@ class DirectionalLightHelper extends Object3D {
37
71
 
38
72
  const material = new LineBasicMaterial( { fog: false, toneMapped: false } );
39
73
 
74
+ /**
75
+ * Contains the line showing the location of the directional light.
76
+ *
77
+ * @type {Line}
78
+ */
40
79
  this.lightPlane = new Line( geometry, material );
41
80
  this.add( this.lightPlane );
42
81
 
43
82
  geometry = new BufferGeometry();
44
83
  geometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );
45
84
 
85
+ /**
86
+ * Represents the target line of the directional light.
87
+ *
88
+ * @type {Line}
89
+ */
46
90
  this.targetLine = new Line( geometry, material );
47
91
  this.add( this.targetLine );
48
92
 
@@ -50,6 +94,10 @@ class DirectionalLightHelper extends Object3D {
50
94
 
51
95
  }
52
96
 
97
+ /**
98
+ * Frees the GPU-related resources allocated by this instance. Call this
99
+ * method whenever this instance is no longer used in your app.
100
+ */
53
101
  dispose() {
54
102
 
55
103
  this.lightPlane.geometry.dispose();
@@ -59,6 +107,10 @@ class DirectionalLightHelper extends Object3D {
59
107
 
60
108
  }
61
109
 
110
+ /**
111
+ * Updates the helper to match the position and direction of the
112
+ * light being visualized.
113
+ */
62
114
  update() {
63
115
 
64
116
  this.light.updateWorldMatrix( true, false );
@@ -4,8 +4,30 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
4
4
  import { BufferGeometry } from '../core/BufferGeometry.js';
5
5
  import { Color } from '../math/Color.js';
6
6
 
7
+ /**
8
+ * The helper is an object to define grids. Grids are two-dimensional
9
+ * arrays of lines.
10
+ *
11
+ * ```js
12
+ * const size = 10;
13
+ * const divisions = 10;
14
+ *
15
+ * const gridHelper = new THREE.GridHelper( size, divisions );
16
+ * scene.add( gridHelper );
17
+ * ```
18
+ *
19
+ * @augments LineSegments
20
+ */
7
21
  class GridHelper extends LineSegments {
8
22
 
23
+ /**
24
+ * Constructs a new grid helper.
25
+ *
26
+ * @param {number} [size=10] - The size of the grid.
27
+ * @param {number} [divisions=10] - The number of divisions across the grid.
28
+ * @param {number|Color|string} [color1=0x444444] - The color of the center line.
29
+ * @param {number|Color|string} [color2=0x888888] - The color of the lines of the grid.
30
+ */
9
31
  constructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {
10
32
 
11
33
  color1 = new Color( color1 );
@@ -43,6 +65,10 @@ class GridHelper extends LineSegments {
43
65
 
44
66
  }
45
67
 
68
+ /**
69
+ * Frees the GPU-related resources allocated by this instance. Call this
70
+ * method whenever this instance is no longer used in your app.
71
+ */
46
72
  dispose() {
47
73
 
48
74
  this.geometry.dispose();
@@ -10,17 +10,48 @@ const _vector = /*@__PURE__*/ new Vector3();
10
10
  const _color1 = /*@__PURE__*/ new Color();
11
11
  const _color2 = /*@__PURE__*/ new Color();
12
12
 
13
+ /**
14
+ * Creates a visual aid consisting of a spherical mesh for a
15
+ * given {@link HemisphereLight}.
16
+ *
17
+ * ```js
18
+ * const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );
19
+ * const helper = new THREE.HemisphereLightHelper( light, 5 );
20
+ * scene.add( helper );
21
+ * ```
22
+ *
23
+ * @augments Object3D
24
+ */
13
25
  class HemisphereLightHelper extends Object3D {
14
26
 
27
+ /**
28
+ * Constructs a new hemisphere light helper.
29
+ *
30
+ * @param {HemisphereLight} light - The light to be visualized.
31
+ * @param {number} [size=1] - The size of the mesh used to visualize the light.
32
+ * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take
33
+ * the color of the light.
34
+ */
15
35
  constructor( light, size, color ) {
16
36
 
17
37
  super();
18
38
 
39
+ /**
40
+ * The light being visualized.
41
+ *
42
+ * @type {HemisphereLight}
43
+ */
19
44
  this.light = light;
20
45
 
21
46
  this.matrix = light.matrixWorld;
22
47
  this.matrixAutoUpdate = false;
23
48
 
49
+ /**
50
+ * The color parameter passed in the constructor.
51
+ * If not set, the helper will take the color of the light.
52
+ *
53
+ * @type {number|Color|string}
54
+ */
24
55
  this.color = color;
25
56
 
26
57
  this.type = 'HemisphereLightHelper';
@@ -42,6 +73,10 @@ class HemisphereLightHelper extends Object3D {
42
73
 
43
74
  }
44
75
 
76
+ /**
77
+ * Frees the GPU-related resources allocated by this instance. Call this
78
+ * method whenever this instance is no longer used in your app.
79
+ */
45
80
  dispose() {
46
81
 
47
82
  this.children[ 0 ].geometry.dispose();
@@ -49,6 +84,10 @@ class HemisphereLightHelper extends Object3D {
49
84
 
50
85
  }
51
86
 
87
+ /**
88
+ * Updates the helper to match the position and direction of the
89
+ * light being visualized.
90
+ */
52
91
  update() {
53
92
 
54
93
  const mesh = this.children[ 0 ];
@@ -5,8 +5,26 @@ import { MeshBasicMaterial } from '../materials/MeshBasicMaterial.js';
5
5
  import { Float32BufferAttribute } from '../core/BufferAttribute.js';
6
6
  import { BufferGeometry } from '../core/BufferGeometry.js';
7
7
 
8
+ /**
9
+ * A helper object to visualize an instance of {@link Plane}.
10
+ *
11
+ * ```js
12
+ * const plane = new THREE.Plane( new THREE.Vector3( 1, 1, 0.2 ), 3 );
13
+ * const helper = new THREE.PlaneHelper( plane, 1, 0xffff00 );
14
+ * scene.add( helper );
15
+ * ```
16
+ *
17
+ * @augments Line
18
+ */
8
19
  class PlaneHelper extends Line {
9
20
 
21
+ /**
22
+ * Constructs a new plane helper.
23
+ *
24
+ * @param {Plane} plane - The plane to be visualized.
25
+ * @param {number} [size=1] - The side length of plane helper.
26
+ * @param {number|Color|string} [hex=0xffff00] - The helper's color.
27
+ */
10
28
  constructor( plane, size = 1, hex = 0xffff00 ) {
11
29
 
12
30
  const color = hex;
@@ -21,8 +39,19 @@ class PlaneHelper extends Line {
21
39
 
22
40
  this.type = 'PlaneHelper';
23
41
 
42
+ /**
43
+ * The plane being visualized.
44
+ *
45
+ * @type {Plane}
46
+ */
24
47
  this.plane = plane;
25
48
 
49
+ /**
50
+ * The side length of plane helper.
51
+ *
52
+ * @type {number}
53
+ * @default 1
54
+ */
26
55
  this.size = size;
27
56
 
28
57
  const positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];
@@ -49,6 +78,10 @@ class PlaneHelper extends Line {
49
78
 
50
79
  }
51
80
 
81
+ /**
82
+ * Updates the helper to match the position and direction of the
83
+ * light being visualized.
84
+ */
52
85
  dispose() {
53
86
 
54
87
  this.geometry.dispose();
@@ -2,8 +2,32 @@ import { Mesh } from '../objects/Mesh.js';
2
2
  import { MeshBasicMaterial } from '../materials/MeshBasicMaterial.js';
3
3
  import { SphereGeometry } from '../geometries/SphereGeometry.js';
4
4
 
5
+ /**
6
+ * This displays a helper object consisting of a spherical mesh for
7
+ * visualizing an instance of {@link PointLight}.
8
+ *
9
+ * ```js
10
+ * const pointLight = new THREE.PointLight( 0xff0000, 1, 100 );
11
+ * pointLight.position.set( 10, 10, 10 );
12
+ * scene.add( pointLight );
13
+ *
14
+ * const sphereSize = 1;
15
+ * const pointLightHelper = new THREE.PointLightHelper( pointLight, sphereSize );
16
+ * scene.add( pointLightHelper );
17
+ * ```
18
+ *
19
+ * @augments Mesh
20
+ */
5
21
  class PointLightHelper extends Mesh {
6
22
 
23
+ /**
24
+ * Constructs a new point light helper.
25
+ *
26
+ * @param {PointLight} light - The light to be visualized.
27
+ * @param {number} [sphereSize=1] - The size of the sphere helper.
28
+ * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take
29
+ * the color of the light.
30
+ */
7
31
  constructor( light, sphereSize, color ) {
8
32
 
9
33
  const geometry = new SphereGeometry( sphereSize, 4, 2 );
@@ -11,8 +35,19 @@ class PointLightHelper extends Mesh {
11
35
 
12
36
  super( geometry, material );
13
37
 
38
+ /**
39
+ * The light being visualized.
40
+ *
41
+ * @type {HemisphereLight}
42
+ */
14
43
  this.light = light;
15
44
 
45
+ /**
46
+ * The color parameter passed in the constructor.
47
+ * If not set, the helper will take the color of the light.
48
+ *
49
+ * @type {number|Color|string}
50
+ */
16
51
  this.color = color;
17
52
 
18
53
  this.type = 'PointLightHelper';
@@ -48,6 +83,10 @@ class PointLightHelper extends Mesh {
48
83
 
49
84
  }
50
85
 
86
+ /**
87
+ * Frees the GPU-related resources allocated by this instance. Call this
88
+ * method whenever this instance is no longer used in your app.
89
+ */
51
90
  dispose() {
52
91
 
53
92
  this.geometry.dispose();
@@ -55,6 +94,10 @@ class PointLightHelper extends Mesh {
55
94
 
56
95
  }
57
96
 
97
+ /**
98
+ * Updates the helper to match the position of the
99
+ * light being visualized.
100
+ */
58
101
  update() {
59
102
 
60
103
  this.light.updateWorldMatrix( true, false );
@@ -4,8 +4,34 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
4
4
  import { BufferGeometry } from '../core/BufferGeometry.js';
5
5
  import { Color } from '../math/Color.js';
6
6
 
7
+ /**
8
+ * This helper is an object to define polar grids. Grids are
9
+ * two-dimensional arrays of lines.
10
+ *
11
+ * ```js
12
+ * const radius = 10;
13
+ * const sectors = 16;
14
+ * const rings = 8;
15
+ * const divisions = 64;
16
+ *
17
+ * const helper = new THREE.PolarGridHelper( radius, sectors, rings, divisions );
18
+ * scene.add( helper );
19
+ * ```
20
+ *
21
+ * @augments LineSegments
22
+ */
7
23
  class PolarGridHelper extends LineSegments {
8
24
 
25
+ /**
26
+ * Constructs a new polar grid helper.
27
+ *
28
+ * @param {number} [radius=10] - The radius of the polar grid. This can be any positive number.
29
+ * @param {number} [sectors=16] - The number of sectors the grid will be divided into. This can be any positive integer.
30
+ * @param {number} [rings=16] - The number of rings. This can be any positive integer.
31
+ * @param {number} [divisions=64] - The number of line segments used for each circle. This can be any positive integer.
32
+ * @param {number|Color|string} [color1=0x444444] - The first color used for grid elements.
33
+ * @param {number|Color|string} [color2=0x888888] - The second color used for grid elements.
34
+ */
9
35
  constructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {
10
36
 
11
37
  color1 = new Color( color1 );
@@ -83,6 +109,10 @@ class PolarGridHelper extends LineSegments {
83
109
 
84
110
  }
85
111
 
112
+ /**
113
+ * Frees the GPU-related resources allocated by this instance. Call this
114
+ * method whenever this instance is no longer used in your app.
115
+ */
86
116
  dispose() {
87
117
 
88
118
  this.geometry.dispose();
@@ -10,9 +10,24 @@ const _vector = /*@__PURE__*/ new Vector3();
10
10
  const _boneMatrix = /*@__PURE__*/ new Matrix4();
11
11
  const _matrixWorldInv = /*@__PURE__*/ new Matrix4();
12
12
 
13
-
13
+ /**
14
+ * A helper object to assist with visualizing a {@link Skeleton}.
15
+ *
16
+ * ```js
17
+ * const helper = new THREE.SkeletonHelper( skinnedMesh );
18
+ * scene.add( helper );
19
+ * ```
20
+ *
21
+ * @augments LineSegments
22
+ */
14
23
  class SkeletonHelper extends LineSegments {
15
24
 
25
+ /**
26
+ * Constructs a new hemisphere light helper.
27
+ *
28
+ * @param {Object3D} object - Usually an instance of {@link SkinnedMesh}. However, any 3D object
29
+ * can be used if it represents a hierarchy of bones (see {@link Bone}).
30
+ */
16
31
  constructor( object ) {
17
32
 
18
33
  const bones = getBoneList( object );
@@ -47,11 +62,29 @@ class SkeletonHelper extends LineSegments {
47
62
 
48
63
  super( geometry, material );
49
64
 
65
+ /**
66
+ * This flag can be used for type testing.
67
+ *
68
+ * @type {boolean}
69
+ * @readonly
70
+ * @default true
71
+ */
50
72
  this.isSkeletonHelper = true;
51
73
 
52
74
  this.type = 'SkeletonHelper';
53
75
 
76
+ /**
77
+ * The object being visualized.
78
+ *
79
+ * @type {Object3D}
80
+ */
54
81
  this.root = object;
82
+
83
+ /**
84
+ * he list of bones that the helper visualizes.
85
+ *
86
+ * @type {Array<Bone>}
87
+ */
55
88
  this.bones = bones;
56
89
 
57
90
  this.matrix = object.matrixWorld;
@@ -94,6 +127,10 @@ class SkeletonHelper extends LineSegments {
94
127
 
95
128
  }
96
129
 
130
+ /**
131
+ * Frees the GPU-related resources allocated by this instance. Call this
132
+ * method whenever this instance is no longer used in your app.
133
+ */
97
134
  dispose() {
98
135
 
99
136
  this.geometry.dispose();
@@ -116,7 +153,7 @@ function getBoneList( object ) {
116
153
 
117
154
  for ( let i = 0; i < object.children.length; i ++ ) {
118
155
 
119
- boneList.push.apply( boneList, getBoneList( object.children[ i ] ) );
156
+ boneList.push( ...getBoneList( object.children[ i ] ) );
120
157
 
121
158
  }
122
159