@plastic-software/three 0.167.4 → 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 (747) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +36217 -23964
  4. package/build/three.core.js +48830 -0
  5. package/build/three.core.min.js +6 -0
  6. package/build/three.module.js +10175 -46744
  7. package/build/three.module.min.js +2 -3
  8. package/build/three.tsl.js +550 -0
  9. package/build/three.tsl.min.js +6 -0
  10. package/build/three.webgpu.js +44348 -50671
  11. package/build/three.webgpu.min.js +2 -3
  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/sprite.glsl.js +2 -4
  631. package/src/renderers/webgl/WebGLAttributes.js +45 -14
  632. package/src/renderers/webgl/WebGLBackground.js +24 -1
  633. package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
  634. package/src/renderers/webgl/WebGLCapabilities.js +2 -0
  635. package/src/renderers/webgl/WebGLGeometries.js +0 -28
  636. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
  637. package/src/renderers/webgl/WebGLProgram.js +27 -29
  638. package/src/renderers/webgl/WebGLPrograms.js +24 -16
  639. package/src/renderers/webgl/WebGLState.js +68 -11
  640. package/src/renderers/webgl/WebGLTextures.js +49 -10
  641. package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
  642. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
  643. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
  644. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
  645. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  646. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  647. package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
  648. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
  649. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
  650. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
  651. package/src/renderers/webgpu/WebGPUBackend.js +816 -236
  652. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
  653. package/src/renderers/webgpu/WebGPURenderer.js +45 -6
  654. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
  655. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
  656. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
  657. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
  658. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  659. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
  660. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
  661. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
  662. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
  663. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
  664. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
  665. package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
  666. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  667. package/src/renderers/webxr/WebXRManager.js +54 -32
  668. package/src/scenes/Fog.js +60 -0
  669. package/src/scenes/FogExp2.js +51 -0
  670. package/src/scenes/Scene.js +87 -0
  671. package/src/textures/Data3DTexture.js +2 -2
  672. package/src/textures/DepthTexture.js +2 -0
  673. package/src/textures/Source.js +2 -2
  674. package/src/textures/Texture.js +368 -5
  675. package/src/textures/VideoFrameTexture.js +35 -0
  676. package/src/utils.js +33 -1
  677. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
  678. package/examples/jsm/animation/MMDPhysics.js +0 -1406
  679. package/examples/jsm/cameras/CinematicCamera.js +0 -208
  680. package/examples/jsm/controls/Controls.js +0 -32
  681. package/examples/jsm/exporters/MMDExporter.js +0 -217
  682. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
  683. package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  684. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  685. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  686. package/examples/jsm/loaders/MMDLoader.js +0 -2295
  687. package/examples/jsm/loaders/TiltLoader.js +0 -520
  688. package/examples/jsm/objects/InstancedPoints.js +0 -21
  689. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  690. package/examples/jsm/utils/GPUStatsPanel.js +0 -95
  691. package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  692. package/src/nodes/accessors/BitangentNode.js +0 -13
  693. package/src/nodes/accessors/CameraNode.js +0 -19
  694. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  695. package/src/nodes/accessors/NormalNode.js +0 -14
  696. package/src/nodes/accessors/PositionNode.js +0 -10
  697. package/src/nodes/accessors/ReflectVectorNode.js +0 -10
  698. package/src/nodes/accessors/TangentNode.js +0 -23
  699. package/src/nodes/accessors/UVNode.js +0 -3
  700. package/src/nodes/core/NodeKeywords.js +0 -80
  701. package/src/nodes/core/UniformGroup.js +0 -13
  702. package/src/nodes/display/AfterImageNode.js +0 -152
  703. package/src/nodes/display/AnamorphicNode.js +0 -145
  704. package/src/nodes/display/BlendModeNode.js +0 -128
  705. package/src/nodes/display/ColorAdjustmentNode.js +0 -104
  706. package/src/nodes/display/DenoiseNode.js +0 -198
  707. package/src/nodes/display/DotScreenNode.js +0 -75
  708. package/src/nodes/display/FXAANode.js +0 -327
  709. package/src/nodes/display/FilmNode.js +0 -52
  710. package/src/nodes/display/GTAONode.js +0 -324
  711. package/src/nodes/display/GaussianBlurNode.js +0 -207
  712. package/src/nodes/display/Lut3DNode.js +0 -53
  713. package/src/nodes/display/RGBShiftNode.js +0 -49
  714. package/src/nodes/display/SepiaNode.js +0 -18
  715. package/src/nodes/display/TransitionNode.js +0 -76
  716. package/src/nodes/display/ViewportNode.js +0 -137
  717. package/src/nodes/fog/FogExp2Node.js +0 -34
  718. package/src/nodes/fog/FogNode.js +0 -48
  719. package/src/nodes/fog/FogRangeNode.js +0 -35
  720. package/src/nodes/lighting/LightNode.js +0 -57
  721. package/src/nodes/loaders/NodeLoader.js +0 -110
  722. package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
  723. package/src/nodes/loaders/NodeObjectLoader.js +0 -71
  724. package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  725. package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
  726. package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
  727. package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
  728. package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
  729. package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
  730. package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  731. package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
  732. package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
  733. package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
  734. package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
  735. package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
  736. package/src/nodes/materials/NodeMaterial.js +0 -680
  737. package/src/nodes/materials/PointsNodeMaterial.js +0 -39
  738. package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
  739. package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
  740. package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
  741. package/src/nodes/math/CondNode.js +0 -139
  742. package/src/nodes/math/HashNode.js +0 -34
  743. package/src/nodes/procedural/CheckerNode.js +0 -42
  744. package/src/nodes/utils/DiscardNode.js +0 -28
  745. package/src/nodes/utils/OscNode.js +0 -81
  746. package/src/nodes/utils/PackingNode.js +0 -55
  747. package/src/nodes/utils/TimerNode.js +0 -94
@@ -3,14 +3,47 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
3
3
  import { Vector3 } from '../math/Vector3.js';
4
4
  import { Vector2 } from '../math/Vector2.js';
5
5
 
6
+ /**
7
+ * A simple shape of Euclidean geometry. It is constructed from a
8
+ * number of triangular segments that are oriented around a central point and
9
+ * extend as far out as a given radius. It is built counter-clockwise from a
10
+ * start angle and a given central angle. It can also be used to create
11
+ * regular polygons, where the number of segments determines the number of
12
+ * sides.
13
+ *
14
+ * ```js
15
+ * const geometry = new THREE.CircleGeometry( 5, 32 );
16
+ * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
17
+ * const circle = new THREE.Mesh( geometry, material );
18
+ * scene.add( circle )
19
+ * ```
20
+ *
21
+ * @augments BufferGeometry
22
+ */
6
23
  class CircleGeometry extends BufferGeometry {
7
24
 
25
+ /**
26
+ * Constructs a new circle geometry.
27
+ *
28
+ * @param {number} [radius=1] - Radius of the circle.
29
+ * @param {number} [segments=32] - Number of segments (triangles), minimum = `3`.
30
+ * @param {number} [thetaStart=0] - Start angle for first segment in radians.
31
+ * @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta,
32
+ * of the circular sector in radians. The default value results in a complete circle.
33
+ */
8
34
  constructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {
9
35
 
10
36
  super();
11
37
 
12
38
  this.type = 'CircleGeometry';
13
39
 
40
+ /**
41
+ * Holds the constructor parameters that have been
42
+ * used to generate the geometry. Any modification
43
+ * after instantiation does not change the geometry.
44
+ *
45
+ * @type {Object}
46
+ */
14
47
  this.parameters = {
15
48
  radius: radius,
16
49
  segments: segments,
@@ -89,6 +122,13 @@ class CircleGeometry extends BufferGeometry {
89
122
 
90
123
  }
91
124
 
125
+ /**
126
+ * Factory method for creating an instance of this class from the given
127
+ * JSON object.
128
+ *
129
+ * @param {Object} data - A JSON object representing the serialized geometry.
130
+ * @return {CircleGeometry} A new instance.
131
+ */
92
132
  static fromJSON( data ) {
93
133
 
94
134
  return new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );
@@ -1,13 +1,44 @@
1
1
  import { CylinderGeometry } from './CylinderGeometry.js';
2
2
 
3
+ /**
4
+ * A geometry class for representing a cone.
5
+ *
6
+ * ```js
7
+ * const geometry = new THREE.ConeGeometry( 5, 20, 32 );
8
+ * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
9
+ * const cone = new THREE.Mesh(geometry, material );
10
+ * scene.add( cone );
11
+ * ```
12
+ *
13
+ * @augments CylinderGeometry
14
+ */
3
15
  class ConeGeometry extends CylinderGeometry {
4
16
 
17
+ /**
18
+ * Constructs a new cone geometry.
19
+ *
20
+ * @param {number} [radius=1] - Radius of the cone base.
21
+ * @param {number} [height=1] - Height of the cone.
22
+ * @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cone.
23
+ * @param {number} [heightSegments=1] - Number of rows of faces along the height of the cone.
24
+ * @param {boolean} [openEnded=false] - Whether the base of the cone is open or capped.
25
+ * @param {boolean} [thetaStart=0] - Start angle for first segment, in radians.
26
+ * @param {boolean} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians.
27
+ * The default value results in a complete cone.
28
+ */
5
29
  constructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {
6
30
 
7
31
  super( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );
8
32
 
9
33
  this.type = 'ConeGeometry';
10
34
 
35
+ /**
36
+ * Holds the constructor parameters that have been
37
+ * used to generate the geometry. Any modification
38
+ * after instantiation does not change the geometry.
39
+ *
40
+ * @type {Object}
41
+ */
11
42
  this.parameters = {
12
43
  radius: radius,
13
44
  height: height,
@@ -20,6 +51,13 @@ class ConeGeometry extends CylinderGeometry {
20
51
 
21
52
  }
22
53
 
54
+ /**
55
+ * Factory method for creating an instance of this class from the given
56
+ * JSON object.
57
+ *
58
+ * @param {Object} data - A JSON object representing the serialized geometry.
59
+ * @return {ConeGeometry} A new instance.
60
+ */
23
61
  static fromJSON( data ) {
24
62
 
25
63
  return new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );
@@ -3,14 +3,46 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
3
3
  import { Vector3 } from '../math/Vector3.js';
4
4
  import { Vector2 } from '../math/Vector2.js';
5
5
 
6
+ /**
7
+ * A geometry class for representing a cylinder.
8
+ *
9
+ * ```js
10
+ * const geometry = new THREE.CylinderGeometry( 5, 5, 20, 32 );
11
+ * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
12
+ * const cylinder = new THREE.Mesh( geometry, material );
13
+ * scene.add( cylinder );
14
+ * ```
15
+ *
16
+ * @augments BufferGeometry
17
+ */
6
18
  class CylinderGeometry extends BufferGeometry {
7
19
 
20
+ /**
21
+ * Constructs a new cylinder geometry.
22
+ *
23
+ * @param {number} [radiusTop=1] - Radius of the cylinder at the top.
24
+ * @param {number} [radiusBottom=1] - Radius of the cylinder at the bottom.
25
+ * @param {number} [height=1] - Height of the cylinder.
26
+ * @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cylinder.
27
+ * @param {number} [heightSegments=1] - Number of rows of faces along the height of the cylinder.
28
+ * @param {boolean} [openEnded=false] - Whether the base of the cylinder is open or capped.
29
+ * @param {boolean} [thetaStart=0] - Start angle for first segment, in radians.
30
+ * @param {boolean} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians.
31
+ * The default value results in a complete cylinder.
32
+ */
8
33
  constructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {
9
34
 
10
35
  super();
11
36
 
12
37
  this.type = 'CylinderGeometry';
13
38
 
39
+ /**
40
+ * Holds the constructor parameters that have been
41
+ * used to generate the geometry. Any modification
42
+ * after instantiation does not change the geometry.
43
+ *
44
+ * @type {Object}
45
+ */
14
46
  this.parameters = {
15
47
  radiusTop: radiusTop,
16
48
  radiusBottom: radiusBottom,
@@ -133,12 +165,19 @@ class CylinderGeometry extends BufferGeometry {
133
165
 
134
166
  // faces
135
167
 
136
- indices.push( a, b, d );
137
- indices.push( b, c, d );
168
+ if ( radiusTop > 0 || y !== 0 ) {
138
169
 
139
- // update group counter
170
+ indices.push( a, b, d );
171
+ groupCount += 3;
140
172
 
141
- groupCount += 6;
173
+ }
174
+
175
+ if ( radiusBottom > 0 || y !== heightSegments - 1 ) {
176
+
177
+ indices.push( b, c, d );
178
+ groupCount += 3;
179
+
180
+ }
142
181
 
143
182
  }
144
183
 
@@ -274,6 +313,13 @@ class CylinderGeometry extends BufferGeometry {
274
313
 
275
314
  }
276
315
 
316
+ /**
317
+ * Factory method for creating an instance of this class from the given
318
+ * JSON object.
319
+ *
320
+ * @param {Object} data - A JSON object representing the serialized geometry.
321
+ * @return {CylinderGeometry} A new instance.
322
+ */
277
323
  static fromJSON( data ) {
278
324
 
279
325
  return new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );
@@ -1,7 +1,25 @@
1
1
  import { PolyhedronGeometry } from './PolyhedronGeometry.js';
2
2
 
3
+ /**
4
+ * A geometry class for representing a dodecahedron.
5
+ *
6
+ * ```js
7
+ * const geometry = new THREE.DodecahedronGeometry();
8
+ * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
9
+ * const dodecahedron = new THREE.Mesh( geometry, material );
10
+ * scene.add( dodecahedron );
11
+ * ```
12
+ *
13
+ * @augments PolyhedronGeometry
14
+ */
3
15
  class DodecahedronGeometry extends PolyhedronGeometry {
4
16
 
17
+ /**
18
+ * Constructs a new dodecahedron geometry.
19
+ *
20
+ * @param {number} [radius=1] - Radius of the dodecahedron.
21
+ * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a dodecahedron.
22
+ */
5
23
  constructor( radius = 1, detail = 0 ) {
6
24
 
7
25
  const t = ( 1 + Math.sqrt( 5 ) ) / 2;
@@ -47,6 +65,13 @@ class DodecahedronGeometry extends PolyhedronGeometry {
47
65
 
48
66
  this.type = 'DodecahedronGeometry';
49
67
 
68
+ /**
69
+ * Holds the constructor parameters that have been
70
+ * used to generate the geometry. Any modification
71
+ * after instantiation does not change the geometry.
72
+ *
73
+ * @type {Object}
74
+ */
50
75
  this.parameters = {
51
76
  radius: radius,
52
77
  detail: detail
@@ -54,6 +79,13 @@ class DodecahedronGeometry extends PolyhedronGeometry {
54
79
 
55
80
  }
56
81
 
82
+ /**
83
+ * Factory method for creating an instance of this class from the given
84
+ * JSON object.
85
+ *
86
+ * @param {Object} data - A JSON object representing the serialized geometry.
87
+ * @return {DodecahedronGeometry} A new instance.
88
+ */
57
89
  static fromJSON( data ) {
58
90
 
59
91
  return new DodecahedronGeometry( data.radius, data.detail );
@@ -1,6 +1,6 @@
1
1
  import { BufferGeometry } from '../core/BufferGeometry.js';
2
2
  import { Float32BufferAttribute } from '../core/BufferAttribute.js';
3
- import * as MathUtils from '../math/MathUtils.js';
3
+ import { DEG2RAD } from '../math/MathUtils.js';
4
4
  import { Triangle } from '../math/Triangle.js';
5
5
  import { Vector3 } from '../math/Vector3.js';
6
6
 
@@ -9,14 +9,42 @@ const _v1 = /*@__PURE__*/ new Vector3();
9
9
  const _normal = /*@__PURE__*/ new Vector3();
10
10
  const _triangle = /*@__PURE__*/ new Triangle();
11
11
 
12
+ /**
13
+ * Can be used as a helper object to view the edges of a geometry.
14
+ *
15
+ * ```js
16
+ * const geometry = new THREE.BoxGeometry();
17
+ * const edges = new THREE.EdgesGeometry( geometry );
18
+ * const line = new THREE.LineSegments( edges );
19
+ * scene.add( line );
20
+ * ```
21
+ *
22
+ * Note: It is not yet possible to serialize/deserialize instances of this class.
23
+ *
24
+ * @augments BufferGeometry
25
+ */
12
26
  class EdgesGeometry extends BufferGeometry {
13
27
 
28
+ /**
29
+ * Constructs a new edges geometry.
30
+ *
31
+ * @param {?BufferGeometry} [geometry=null] - The geometry.
32
+ * @param {number} [thresholdAngle=1] - An edge is only rendered if the angle (in degrees)
33
+ * between the face normals of the adjoining faces exceeds this value.
34
+ */
14
35
  constructor( geometry = null, thresholdAngle = 1 ) {
15
36
 
16
37
  super();
17
38
 
18
39
  this.type = 'EdgesGeometry';
19
40
 
41
+ /**
42
+ * Holds the constructor parameters that have been
43
+ * used to generate the geometry. Any modification
44
+ * after instantiation does not change the geometry.
45
+ *
46
+ * @type {Object}
47
+ */
20
48
  this.parameters = {
21
49
  geometry: geometry,
22
50
  thresholdAngle: thresholdAngle
@@ -26,7 +54,7 @@ class EdgesGeometry extends BufferGeometry {
26
54
 
27
55
  const precisionPoints = 4;
28
56
  const precision = Math.pow( 10, precisionPoints );
29
- const thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );
57
+ const thresholdDot = Math.cos( DEG2RAD * thresholdAngle );
30
58
 
31
59
  const indexAttr = geometry.getIndex();
32
60
  const positionAttr = geometry.getAttribute( 'position' );
@@ -28,14 +28,58 @@ import { Vector3 } from '../math/Vector3.js';
28
28
  import { Shape } from '../extras/core/Shape.js';
29
29
  import { ShapeUtils } from '../extras/ShapeUtils.js';
30
30
 
31
+ /**
32
+ * Creates extruded geometry from a path shape.
33
+ *
34
+ * ```js
35
+ * const length = 12, width = 8;
36
+ *
37
+ * const shape = new THREE.Shape();
38
+ * shape.moveTo( 0,0 );
39
+ * shape.lineTo( 0, width );
40
+ * shape.lineTo( length, width );
41
+ * shape.lineTo( length, 0 );
42
+ * shape.lineTo( 0, 0 );
43
+ *
44
+ * const geometry = new THREE.ExtrudeGeometry( shape );
45
+ * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
46
+ * const mesh = new THREE.Mesh( geometry, material ) ;
47
+ * scene.add( mesh );
48
+ * ```
49
+ *
50
+ * @augments BufferGeometry
51
+ */
31
52
  class ExtrudeGeometry extends BufferGeometry {
32
53
 
54
+ /**
55
+ * Constructs a new extrude geometry.
56
+ *
57
+ * @param {Shape|Array<Shape>} [shapes] - A shape or an array of shapes.
58
+ * @param {Object} [options={}] - The extrude settings.
59
+ * @param {number} [options.curveSegments=12] - Number of points on the curves.
60
+ * @param {number} [options.steps=1] - Number of points used for subdividing segments along the depth of the extruded spline.
61
+ * @param {number} [options.depth=1] - Depth to extrude the shape.
62
+ * @param {boolean} [options.bevelEnabled=true] - Whether to beveling to the shape or not.
63
+ * @param {number} [options.bevelThickness=0.2] - How deep into the original shape the bevel goes.
64
+ * @param {number} [options.bevelSize=bevelThickness-0.1] - Distance from the shape outline that the bevel extends.
65
+ * @param {number} [options.bevelOffset=0] - Distance from the shape outline that the bevel starts.
66
+ * @param {number} [options.bevelSegments=3] - Number of bevel layers.
67
+ * @param {Curve} [options.extrudePath=3] - A 3D spline path along which the shape should be extruded. Bevels not supported for path extrusion.
68
+ * @param {Object} [options.UVGenerator] - An object that provides UV generator functions for custom UV generation.
69
+ */
33
70
  constructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {
34
71
 
35
72
  super();
36
73
 
37
74
  this.type = 'ExtrudeGeometry';
38
75
 
76
+ /**
77
+ * Holds the constructor parameters that have been
78
+ * used to generate the geometry. Any modification
79
+ * after instantiation does not change the geometry.
80
+ *
81
+ * @type {Object}
82
+ */
39
83
  this.parameters = {
40
84
  shapes: shapes,
41
85
  options: options
@@ -698,6 +742,14 @@ class ExtrudeGeometry extends BufferGeometry {
698
742
 
699
743
  }
700
744
 
745
+ /**
746
+ * Factory method for creating an instance of this class from the given
747
+ * JSON object.
748
+ *
749
+ * @param {Object} data - A JSON object representing the serialized geometry.
750
+ * @param {Array<Shape>} shapes - An array of shapes.
751
+ * @return {ExtrudeGeometry} A new instance.
752
+ */
701
753
  static fromJSON( data, shapes ) {
702
754
 
703
755
  const geometryShapes = [];
@@ -1,7 +1,25 @@
1
1
  import { PolyhedronGeometry } from './PolyhedronGeometry.js';
2
2
 
3
+ /**
4
+ * A geometry class for representing an icosahedron.
5
+ *
6
+ * ```js
7
+ * const geometry = new THREE.IcosahedronGeometry();
8
+ * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
9
+ * const icosahedron = new THREE.Mesh( geometry, material );
10
+ * scene.add( icosahedron );
11
+ * ```
12
+ *
13
+ * @augments PolyhedronGeometry
14
+ */
3
15
  class IcosahedronGeometry extends PolyhedronGeometry {
4
16
 
17
+ /**
18
+ * Constructs a new icosahedron geometry.
19
+ *
20
+ * @param {number} [radius=1] - Radius of the icosahedron.
21
+ * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a icosahedron.
22
+ */
5
23
  constructor( radius = 1, detail = 0 ) {
6
24
 
7
25
  const t = ( 1 + Math.sqrt( 5 ) ) / 2;
@@ -23,6 +41,13 @@ class IcosahedronGeometry extends PolyhedronGeometry {
23
41
 
24
42
  this.type = 'IcosahedronGeometry';
25
43
 
44
+ /**
45
+ * Holds the constructor parameters that have been
46
+ * used to generate the geometry. Any modification
47
+ * after instantiation does not change the geometry.
48
+ *
49
+ * @type {Object}
50
+ */
26
51
  this.parameters = {
27
52
  radius: radius,
28
53
  detail: detail
@@ -30,6 +55,13 @@ class IcosahedronGeometry extends PolyhedronGeometry {
30
55
 
31
56
  }
32
57
 
58
+ /**
59
+ * Factory method for creating an instance of this class from the given
60
+ * JSON object.
61
+ *
62
+ * @param {Object} data - A JSON object representing the serialized geometry.
63
+ * @return {IcosahedronGeometry} A new instance.
64
+ */
33
65
  static fromJSON( data ) {
34
66
 
35
67
  return new IcosahedronGeometry( data.radius, data.detail );
@@ -2,16 +2,49 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
2
2
  import { BufferGeometry } from '../core/BufferGeometry.js';
3
3
  import { Vector3 } from '../math/Vector3.js';
4
4
  import { Vector2 } from '../math/Vector2.js';
5
- import * as MathUtils from '../math/MathUtils.js';
6
-
5
+ import { clamp } from '../math/MathUtils.js';
6
+
7
+ /**
8
+ * Creates meshes with axial symmetry like vases. The lathe rotates around the Y axis.
9
+ *
10
+ * ```js
11
+ * const points = [];
12
+ * for ( let i = 0; i < 10; i ++ ) {
13
+ * points.push( new THREE.Vector2( Math.sin( i * 0.2 ) * 10 + 5, ( i - 5 ) * 2 ) );
14
+ * }
15
+ * const geometry = new THREE.LatheGeometry( points );
16
+ * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
17
+ * const lathe = new THREE.Mesh( geometry, material );
18
+ * scene.add( lathe );
19
+ * ```
20
+ *
21
+ * @augments BufferGeometry
22
+ */
7
23
  class LatheGeometry extends BufferGeometry {
8
24
 
25
+ /**
26
+ * Constructs a new lathe geometry.
27
+ *
28
+ * @param {Array<Vector2>} [points] - An array of points in 2D space. The x-coordinate of each point
29
+ * must be greater than zero.
30
+ * @param {number} [segments=12] - The number of circumference segments to generate.
31
+ * @param {number} [phiStart=0] - The starting angle in radians.
32
+ * @param {number} [phiLength=Math.PI*2] - The radian (0 to 2PI) range of the lathed section 2PI is a
33
+ * closed lathe, less than 2PI is a portion.
34
+ */
9
35
  constructor( points = [ new Vector2( 0, - 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {
10
36
 
11
37
  super();
12
38
 
13
39
  this.type = 'LatheGeometry';
14
40
 
41
+ /**
42
+ * Holds the constructor parameters that have been
43
+ * used to generate the geometry. Any modification
44
+ * after instantiation does not change the geometry.
45
+ *
46
+ * @type {Object}
47
+ */
15
48
  this.parameters = {
16
49
  points: points,
17
50
  segments: segments,
@@ -23,7 +56,7 @@ class LatheGeometry extends BufferGeometry {
23
56
 
24
57
  // clamp phiLength so it's in range of [ 0, 2PI ]
25
58
 
26
- phiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );
59
+ phiLength = clamp( phiLength, 0, Math.PI * 2 );
27
60
 
28
61
  // buffers
29
62
 
@@ -177,6 +210,13 @@ class LatheGeometry extends BufferGeometry {
177
210
 
178
211
  }
179
212
 
213
+ /**
214
+ * Factory method for creating an instance of this class from the given
215
+ * JSON object.
216
+ *
217
+ * @param {Object} data - A JSON object representing the serialized geometry.
218
+ * @return {LatheGeometry} A new instance.
219
+ */
180
220
  static fromJSON( data ) {
181
221
 
182
222
  return new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );
@@ -1,7 +1,25 @@
1
1
  import { PolyhedronGeometry } from './PolyhedronGeometry.js';
2
2
 
3
+ /**
4
+ * A geometry class for representing an octahedron.
5
+ *
6
+ * ```js
7
+ * const geometry = new THREE.OctahedronGeometry();
8
+ * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
9
+ * const octahedron = new THREE.Mesh( geometry, material );
10
+ * scene.add( octahedron );
11
+ * ```
12
+ *
13
+ * @augments PolyhedronGeometry
14
+ */
3
15
  class OctahedronGeometry extends PolyhedronGeometry {
4
16
 
17
+ /**
18
+ * Constructs a new octahedron geometry.
19
+ *
20
+ * @param {number} [radius=1] - Radius of the octahedron.
21
+ * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a octahedron.
22
+ */
5
23
  constructor( radius = 1, detail = 0 ) {
6
24
 
7
25
  const vertices = [
@@ -19,6 +37,13 @@ class OctahedronGeometry extends PolyhedronGeometry {
19
37
 
20
38
  this.type = 'OctahedronGeometry';
21
39
 
40
+ /**
41
+ * Holds the constructor parameters that have been
42
+ * used to generate the geometry. Any modification
43
+ * after instantiation does not change the geometry.
44
+ *
45
+ * @type {Object}
46
+ */
22
47
  this.parameters = {
23
48
  radius: radius,
24
49
  detail: detail
@@ -26,6 +51,13 @@ class OctahedronGeometry extends PolyhedronGeometry {
26
51
 
27
52
  }
28
53
 
54
+ /**
55
+ * Factory method for creating an instance of this class from the given
56
+ * JSON object.
57
+ *
58
+ * @param {Object} data - A JSON object representing the serialized geometry.
59
+ * @return {OctahedronGeometry} A new instance.
60
+ */
29
61
  static fromJSON( data ) {
30
62
 
31
63
  return new OctahedronGeometry( data.radius, data.detail );
@@ -1,14 +1,41 @@
1
1
  import { BufferGeometry } from '../core/BufferGeometry.js';
2
2
  import { Float32BufferAttribute } from '../core/BufferAttribute.js';
3
3
 
4
+ /**
5
+ * A geometry class for representing a plane.
6
+ *
7
+ * ```js
8
+ * const geometry = new THREE.PlaneGeometry( 1, 1 );
9
+ * const material = new THREE.MeshBasicMaterial( { color: 0xffff00, side: THREE.DoubleSide } );
10
+ * const plane = new THREE.Mesh( geometry, material );
11
+ * scene.add( plane );
12
+ * ```
13
+ *
14
+ * @augments BufferGeometry
15
+ */
4
16
  class PlaneGeometry extends BufferGeometry {
5
17
 
18
+ /**
19
+ * Constructs a new plane geometry.
20
+ *
21
+ * @param {number} [width=1] - The width along the X axis.
22
+ * @param {number} [height=1] - The height along the Y axis
23
+ * @param {number} [widthSegments=1] - The number of segments along the X axis.
24
+ * @param {number} [heightSegments=1] - The number of segments along the Y axis.
25
+ */
6
26
  constructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {
7
27
 
8
28
  super();
9
29
 
10
30
  this.type = 'PlaneGeometry';
11
31
 
32
+ /**
33
+ * Holds the constructor parameters that have been
34
+ * used to generate the geometry. Any modification
35
+ * after instantiation does not change the geometry.
36
+ *
37
+ * @type {Object}
38
+ */
12
39
  this.parameters = {
13
40
  width: width,
14
41
  height: height,
@@ -87,6 +114,13 @@ class PlaneGeometry extends BufferGeometry {
87
114
 
88
115
  }
89
116
 
117
+ /**
118
+ * Factory method for creating an instance of this class from the given
119
+ * JSON object.
120
+ *
121
+ * @param {Object} data - A JSON object representing the serialized geometry.
122
+ * @return {PlaneGeometry} A new instance.
123
+ */
90
124
  static fromJSON( data ) {
91
125
 
92
126
  return new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );
@@ -3,14 +3,36 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
3
3
  import { Vector3 } from '../math/Vector3.js';
4
4
  import { Vector2 } from '../math/Vector2.js';
5
5
 
6
+ /**
7
+ * A polyhedron is a solid in three dimensions with flat faces. This class
8
+ * will take an array of vertices, project them onto a sphere, and then
9
+ * divide them up to the desired level of detail.
10
+ *
11
+ * @augments BufferGeometry
12
+ */
6
13
  class PolyhedronGeometry extends BufferGeometry {
7
14
 
15
+ /**
16
+ * Constructs a new polyhedron geometry.
17
+ *
18
+ * @param {Array<number>} [vertices] - A flat array of vertices describing the base shape.
19
+ * @param {Array<number>} [indices] - A flat array of indices describing the base shape.
20
+ * @param {number} [radius=1] - The radius of the shape.
21
+ * @param {number} [detail=0] - How many levels to subdivide the geometry. The more detail, the smoother the shape.
22
+ */
8
23
  constructor( vertices = [], indices = [], radius = 1, detail = 0 ) {
9
24
 
10
25
  super();
11
26
 
12
27
  this.type = 'PolyhedronGeometry';
13
28
 
29
+ /**
30
+ * Holds the constructor parameters that have been
31
+ * used to generate the geometry. Any modification
32
+ * after instantiation does not change the geometry.
33
+ *
34
+ * @type {Object}
35
+ */
14
36
  this.parameters = {
15
37
  vertices: vertices,
16
38
  indices: indices,
@@ -308,6 +330,13 @@ class PolyhedronGeometry extends BufferGeometry {
308
330
 
309
331
  }
310
332
 
333
+ /**
334
+ * Factory method for creating an instance of this class from the given
335
+ * JSON object.
336
+ *
337
+ * @param {Object} data - A JSON object representing the serialized geometry.
338
+ * @return {PolyhedronGeometry} A new instance.
339
+ */
311
340
  static fromJSON( data ) {
312
341
 
313
342
  return new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );