super-three 0.171.0 → 0.173.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 (455) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +594 -427
  4. package/build/three.core.js +515 -81
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +79 -350
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +20 -7
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +29362 -3427
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +29361 -3427
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/jsm/Addons.js +0 -5
  15. package/examples/jsm/animation/CCDIKSolver.js +9 -7
  16. package/examples/jsm/capabilities/WebGPU.js +1 -1
  17. package/examples/jsm/controls/ArcballControls.js +48 -37
  18. package/examples/jsm/controls/OrbitControls.js +5 -4
  19. package/examples/jsm/csm/CSMShadowNode.js +16 -11
  20. package/examples/jsm/curves/NURBSCurve.js +1 -1
  21. package/examples/jsm/curves/NURBSUtils.js +3 -0
  22. package/examples/jsm/effects/OutlineEffect.js +1 -1
  23. package/examples/jsm/exporters/GLTFExporter.js +34 -29
  24. package/examples/jsm/exporters/KTX2Exporter.js +1 -1
  25. package/examples/jsm/exporters/PLYExporter.js +2 -2
  26. package/examples/jsm/geometries/TextGeometry.js +1 -12
  27. package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
  28. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  29. package/examples/jsm/interactive/InteractiveGroup.js +108 -51
  30. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  31. package/examples/jsm/lights/LightProbeGenerator.js +3 -3
  32. package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
  33. package/examples/jsm/loaders/3MFLoader.js +6 -3
  34. package/examples/jsm/loaders/BVHLoader.js +1 -1
  35. package/examples/jsm/loaders/ColladaLoader.js +5 -5
  36. package/examples/jsm/loaders/DDSLoader.js +42 -0
  37. package/examples/jsm/loaders/GCodeLoader.js +4 -2
  38. package/examples/jsm/loaders/GLTFLoader.js +22 -4
  39. package/examples/jsm/loaders/KTX2Loader.js +6 -1
  40. package/examples/jsm/loaders/KTXLoader.js +4 -4
  41. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  42. package/examples/jsm/loaders/LottieLoader.js +1 -1
  43. package/examples/jsm/loaders/MTLLoader.js +1 -0
  44. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  45. package/examples/jsm/loaders/PLYLoader.js +7 -7
  46. package/examples/jsm/loaders/PVRLoader.js +1 -1
  47. package/examples/jsm/loaders/SVGLoader.js +2 -2
  48. package/examples/jsm/loaders/TDSLoader.js +1 -2
  49. package/examples/jsm/loaders/VRMLLoader.js +7 -7
  50. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  51. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
  52. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  53. package/examples/jsm/math/ConvexHull.js +1 -1
  54. package/examples/jsm/math/OBB.js +17 -0
  55. package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
  56. package/examples/jsm/misc/ProgressiveLightMap.js +4 -3
  57. package/examples/jsm/misc/ProgressiveLightMapGPU.js +14 -13
  58. package/examples/jsm/misc/Volume.js +27 -17
  59. package/examples/jsm/misc/VolumeSlice.js +7 -5
  60. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  61. package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
  62. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  63. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  64. package/examples/jsm/objects/Sky.js +2 -2
  65. package/examples/jsm/objects/SkyMesh.js +3 -3
  66. package/examples/jsm/objects/Water2.js +1 -1
  67. package/examples/jsm/objects/Water2Mesh.js +2 -2
  68. package/examples/jsm/objects/WaterMesh.js +29 -24
  69. package/examples/jsm/physics/JoltPhysics.js +7 -7
  70. package/examples/jsm/physics/RapierPhysics.js +4 -4
  71. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  72. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  73. package/examples/jsm/postprocessing/OutlinePass.js +4 -4
  74. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  75. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  76. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  77. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  78. package/examples/jsm/postprocessing/SSRPass.js +2 -4
  79. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  80. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  81. package/examples/jsm/shaders/BokehShader2.js +1 -1
  82. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  83. package/examples/jsm/shaders/OutputShader.js +5 -1
  84. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  85. package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
  86. package/examples/jsm/transpiler/TSLEncoder.js +2 -0
  87. package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
  88. package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
  89. package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
  90. package/examples/jsm/tsl/display/BleachBypass.js +10 -0
  91. package/examples/jsm/tsl/display/BloomNode.js +233 -26
  92. package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
  93. package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
  94. package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
  95. package/examples/jsm/tsl/display/FXAANode.js +52 -3
  96. package/examples/jsm/tsl/display/FilmNode.js +47 -1
  97. package/examples/jsm/tsl/display/GTAONode.js +210 -14
  98. package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
  99. package/examples/jsm/tsl/display/LensflareNode.js +131 -13
  100. package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
  101. package/examples/jsm/tsl/display/MotionBlur.js +12 -2
  102. package/examples/jsm/tsl/display/OutlineNode.js +343 -26
  103. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
  104. package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
  105. package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
  106. package/examples/jsm/tsl/display/SMAANode.js +187 -46
  107. package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
  108. package/examples/jsm/tsl/display/SSRNode.js +194 -21
  109. package/examples/jsm/tsl/display/Sepia.js +9 -0
  110. package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
  111. package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
  112. package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
  113. package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
  114. package/examples/jsm/tsl/display/TransitionNode.js +71 -6
  115. package/examples/jsm/tsl/display/hashBlur.js +14 -3
  116. package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
  117. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  118. package/examples/jsm/utils/CameraUtils.js +4 -1
  119. package/examples/jsm/utils/GeometryUtils.js +22 -19
  120. package/examples/jsm/utils/SceneUtils.js +2 -2
  121. package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
  122. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  123. package/package.json +8 -3
  124. package/src/Three.Core.js +4 -0
  125. package/src/Three.Legacy.js +0 -21
  126. package/src/Three.TSL.js +18 -5
  127. package/src/Three.WebGPU.Nodes.js +2 -2
  128. package/src/Three.WebGPU.js +2 -2
  129. package/src/animation/PropertyBinding.js +2 -2
  130. package/src/cameras/ArrayCamera.js +1 -0
  131. package/src/cameras/PerspectiveCamera.js +18 -2
  132. package/src/constants.js +6 -1
  133. package/src/core/BufferAttribute.js +4 -0
  134. package/src/core/EventDispatcher.js +8 -6
  135. package/src/core/RenderTarget.js +18 -0
  136. package/src/core/RenderTarget3D.js +22 -0
  137. package/src/core/RenderTargetArray.js +22 -0
  138. package/src/extras/Earcut.js +1 -1
  139. package/src/extras/ImageUtils.js +1 -11
  140. package/src/extras/PMREMGenerator.js +20 -0
  141. package/src/extras/TextureUtils.js +6 -0
  142. package/src/helpers/CameraHelper.js +16 -13
  143. package/src/loaders/nodes/NodeLoader.js +59 -0
  144. package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
  145. package/src/loaders/nodes/NodeObjectLoader.js +61 -0
  146. package/src/materials/nodes/Line2NodeMaterial.js +128 -34
  147. package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
  148. package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
  149. package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
  150. package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
  151. package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
  152. package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
  153. package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
  154. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
  155. package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
  156. package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
  157. package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
  158. package/src/materials/nodes/NodeMaterial.js +476 -23
  159. package/src/materials/nodes/NodeMaterials.js +0 -1
  160. package/src/materials/nodes/PointsNodeMaterial.js +121 -10
  161. package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
  162. package/src/materials/nodes/SpriteNodeMaterial.js +78 -20
  163. package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
  164. package/src/materials/nodes/manager/NodeMaterialObserver.js +95 -0
  165. package/src/nodes/Nodes.js +5 -6
  166. package/src/nodes/TSL.js +6 -3
  167. package/src/nodes/accessors/AccessorsUtils.js +27 -0
  168. package/src/nodes/accessors/Arrays.js +47 -6
  169. package/src/nodes/accessors/BatchNode.js +42 -6
  170. package/src/nodes/accessors/Bitangent.js +37 -0
  171. package/src/nodes/accessors/BufferAttributeNode.js +178 -5
  172. package/src/nodes/accessors/BufferNode.js +63 -0
  173. package/src/nodes/accessors/BuiltinNode.js +38 -0
  174. package/src/nodes/accessors/Camera.js +113 -3
  175. package/src/nodes/accessors/ClippingNode.js +71 -2
  176. package/src/nodes/accessors/CubeTextureNode.js +64 -0
  177. package/src/nodes/accessors/InstanceNode.js +85 -2
  178. package/src/nodes/accessors/InstancedMeshNode.js +28 -3
  179. package/src/nodes/accessors/Lights.js +50 -1
  180. package/src/nodes/accessors/MaterialNode.js +306 -12
  181. package/src/nodes/accessors/MaterialProperties.js +7 -0
  182. package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
  183. package/src/nodes/accessors/ModelNode.js +100 -5
  184. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
  185. package/src/nodes/accessors/MorphNode.js +48 -4
  186. package/src/nodes/accessors/Normal.js +65 -5
  187. package/src/nodes/accessors/Object3DNode.js +101 -1
  188. package/src/nodes/accessors/PointUVNode.js +26 -0
  189. package/src/nodes/accessors/Position.js +56 -7
  190. package/src/nodes/accessors/ReferenceBaseNode.js +186 -0
  191. package/src/nodes/accessors/ReferenceNode.js +201 -2
  192. package/src/nodes/accessors/ReflectVector.js +24 -0
  193. package/src/nodes/accessors/RendererReferenceNode.js +46 -1
  194. package/src/nodes/accessors/SceneNode.js +54 -0
  195. package/src/nodes/accessors/SkinningNode.js +127 -1
  196. package/src/nodes/accessors/StorageBufferNode.js +209 -8
  197. package/src/nodes/accessors/StorageTextureNode.js +118 -0
  198. package/src/nodes/accessors/Tangent.js +38 -2
  199. package/src/nodes/accessors/Texture3DNode.js +91 -7
  200. package/src/nodes/accessors/TextureBicubic.js +12 -2
  201. package/src/nodes/accessors/TextureNode.js +316 -10
  202. package/src/nodes/accessors/TextureSizeNode.js +42 -0
  203. package/src/nodes/accessors/UV.js +10 -1
  204. package/src/nodes/accessors/UniformArrayNode.js +231 -25
  205. package/src/nodes/accessors/UserDataNode.js +46 -0
  206. package/src/nodes/accessors/VelocityNode.js +80 -0
  207. package/src/nodes/accessors/VertexColorNode.js +39 -2
  208. package/src/nodes/code/CodeNode.js +95 -1
  209. package/src/nodes/code/ExpressionNode.js +28 -0
  210. package/src/nodes/code/FunctionCallNode.js +37 -0
  211. package/src/nodes/code/FunctionNode.js +45 -0
  212. package/src/nodes/code/ScriptableNode.js +223 -1
  213. package/src/nodes/code/ScriptableValueNode.js +85 -1
  214. package/src/nodes/core/ArrayNode.js +125 -0
  215. package/src/nodes/core/AssignNode.js +48 -2
  216. package/src/nodes/core/AttributeNode.js +43 -0
  217. package/src/nodes/core/BypassNode.js +47 -2
  218. package/src/nodes/core/CacheNode.js +53 -2
  219. package/src/nodes/core/ConstNode.js +32 -0
  220. package/src/nodes/core/ContextNode.js +65 -0
  221. package/src/nodes/core/IndexNode.js +68 -7
  222. package/src/nodes/core/InputNode.js +48 -0
  223. package/src/nodes/core/LightingModel.js +60 -0
  224. package/src/nodes/core/MRTNode.js +66 -0
  225. package/src/nodes/core/Node.js +350 -12
  226. package/src/nodes/core/NodeAttribute.js +38 -0
  227. package/src/nodes/core/NodeBuilder.js +1166 -26
  228. package/src/nodes/core/NodeCache.js +41 -2
  229. package/src/nodes/core/NodeCode.js +31 -0
  230. package/src/nodes/core/NodeFrame.js +123 -2
  231. package/src/nodes/core/NodeFunction.js +46 -0
  232. package/src/nodes/core/NodeFunctionInput.js +44 -0
  233. package/src/nodes/core/NodeParser.js +11 -0
  234. package/src/nodes/core/NodeUniform.js +52 -0
  235. package/src/nodes/core/NodeUtils.js +152 -1
  236. package/src/nodes/core/NodeVar.js +47 -1
  237. package/src/nodes/core/NodeVarying.js +28 -0
  238. package/src/nodes/core/OutputStructNode.js +51 -10
  239. package/src/nodes/core/ParameterNode.js +28 -0
  240. package/src/nodes/core/PropertyNode.js +232 -0
  241. package/src/nodes/core/StackNode.js +98 -1
  242. package/src/nodes/core/StructNode.js +121 -0
  243. package/src/nodes/core/StructType.js +13 -0
  244. package/src/nodes/core/StructTypeNode.js +105 -6
  245. package/src/nodes/core/TempNode.js +31 -5
  246. package/src/nodes/core/UniformGroupNode.js +82 -7
  247. package/src/nodes/core/UniformNode.js +66 -0
  248. package/src/nodes/core/VarNode.js +146 -7
  249. package/src/nodes/core/VaryingNode.js +100 -3
  250. package/src/nodes/core/constants.js +36 -0
  251. package/src/nodes/display/BlendModes.js +88 -1
  252. package/src/nodes/display/BumpMapNode.js +37 -0
  253. package/src/nodes/display/ColorAdjustment.js +53 -11
  254. package/src/nodes/display/ColorSpaceFunctions.js +16 -0
  255. package/src/nodes/display/ColorSpaceNode.js +82 -0
  256. package/src/nodes/display/FrontFacingNode.js +29 -0
  257. package/src/nodes/display/NormalMapNode.js +43 -0
  258. package/src/nodes/display/PassNode.js +300 -7
  259. package/src/nodes/display/PosterizeNode.js +33 -0
  260. package/src/nodes/display/RenderOutputNode.js +66 -1
  261. package/src/nodes/display/ScreenNode.js +96 -0
  262. package/src/nodes/display/ToneMappingFunctions.js +58 -10
  263. package/src/nodes/display/ToneMappingNode.js +55 -2
  264. package/src/nodes/display/ToonOutlinePassNode.js +73 -0
  265. package/src/nodes/display/ViewportDepthNode.js +122 -8
  266. package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
  267. package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
  268. package/src/nodes/display/ViewportTextureNode.js +57 -0
  269. package/src/nodes/fog/Fog.js +110 -0
  270. package/src/nodes/functions/BasicLightingModel.js +24 -0
  271. package/src/nodes/functions/PhongLightingModel.js +34 -2
  272. package/src/nodes/functions/PhysicalLightingModel.js +167 -8
  273. package/src/nodes/functions/ShadowMaskModel.js +23 -0
  274. package/src/nodes/functions/ToonLightingModel.js +20 -0
  275. package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
  276. package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
  277. package/src/nodes/geometry/RangeNode.js +54 -2
  278. package/src/nodes/gpgpu/AtomicFunctionNode.js +174 -2
  279. package/src/nodes/gpgpu/BarrierNode.js +47 -0
  280. package/src/nodes/gpgpu/ComputeBuiltinNode.js +134 -0
  281. package/src/nodes/gpgpu/ComputeNode.js +106 -2
  282. package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
  283. package/src/nodes/lighting/AONode.js +18 -0
  284. package/src/nodes/lighting/AmbientLightNode.js +10 -0
  285. package/src/nodes/lighting/AnalyticLightNode.js +97 -2
  286. package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
  287. package/src/nodes/lighting/BasicLightMapNode.js +17 -0
  288. package/src/nodes/lighting/DirectionalLightNode.js +10 -0
  289. package/src/nodes/lighting/EnvironmentNode.js +18 -0
  290. package/src/nodes/lighting/HemisphereLightNode.js +31 -0
  291. package/src/nodes/lighting/IESSpotLightNode.js +11 -0
  292. package/src/nodes/lighting/IrradianceNode.js +17 -0
  293. package/src/nodes/lighting/LightProbeNode.js +20 -0
  294. package/src/nodes/lighting/LightUtils.js +12 -0
  295. package/src/nodes/lighting/LightingContextNode.js +48 -0
  296. package/src/nodes/lighting/LightingNode.js +15 -6
  297. package/src/nodes/lighting/LightsNode.js +132 -1
  298. package/src/nodes/lighting/PointLightNode.js +32 -1
  299. package/src/nodes/lighting/PointShadowNode.js +54 -1
  300. package/src/nodes/lighting/RectAreaLightNode.js +44 -6
  301. package/src/nodes/lighting/ShadowBaseNode.js +93 -0
  302. package/src/nodes/lighting/ShadowNode.js +241 -35
  303. package/src/nodes/lighting/SpotLightNode.js +43 -0
  304. package/src/nodes/math/ConditionalNode.js +78 -4
  305. package/src/nodes/math/Hash.js +9 -0
  306. package/src/nodes/math/MathNode.js +627 -11
  307. package/src/nodes/math/MathUtils.js +45 -1
  308. package/src/nodes/math/OperatorNode.js +329 -18
  309. package/src/nodes/math/TriNoise3D.js +18 -7
  310. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  311. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  312. package/src/nodes/pmrem/PMREMNode.js +133 -0
  313. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  314. package/src/nodes/procedural/Checker.js +9 -0
  315. package/src/nodes/shapes/Shapes.js +33 -0
  316. package/src/nodes/tsl/TSLBase.js +3 -2
  317. package/src/nodes/tsl/TSLCore.js +22 -2
  318. package/src/nodes/utils/ArrayElementNode.js +39 -3
  319. package/src/nodes/utils/ConvertNode.js +31 -0
  320. package/src/nodes/utils/CubeMapNode.js +78 -0
  321. package/src/nodes/utils/Discard.js +16 -0
  322. package/src/nodes/utils/EquirectUVNode.js +31 -1
  323. package/src/nodes/utils/FlipNode.js +38 -0
  324. package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
  325. package/src/nodes/utils/JoinNode.js +25 -0
  326. package/src/nodes/utils/LoopNode.js +82 -2
  327. package/src/nodes/utils/MatcapUVNode.js +17 -0
  328. package/src/nodes/utils/MaxMipLevelNode.js +49 -0
  329. package/src/nodes/utils/MemberNode.js +68 -0
  330. package/src/nodes/utils/Oscillators.js +33 -0
  331. package/src/nodes/utils/Packing.js +17 -0
  332. package/src/nodes/utils/PostProcessingUtils.js +28 -23
  333. package/src/nodes/utils/RTTNode.js +123 -2
  334. package/src/nodes/utils/ReflectorNode.js +174 -4
  335. package/src/nodes/utils/RemapNode.js +79 -0
  336. package/src/nodes/utils/RotateNode.js +41 -0
  337. package/src/nodes/utils/SetNode.js +44 -1
  338. package/src/nodes/utils/SplitNode.js +55 -3
  339. package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
  340. package/src/nodes/utils/SpriteUtils.js +17 -0
  341. package/src/nodes/utils/StorageArrayElementNode.js +54 -0
  342. package/src/nodes/utils/Timer.js +40 -0
  343. package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
  344. package/src/nodes/utils/UVUtils.js +20 -0
  345. package/src/nodes/utils/ViewportUtils.js +13 -0
  346. package/src/objects/BatchedMesh.js +2 -3
  347. package/src/objects/ClippingGroup.js +49 -0
  348. package/src/objects/Line.js +6 -6
  349. package/src/renderers/WebGLRenderer.js +30 -4
  350. package/src/renderers/common/Animation.js +85 -0
  351. package/src/renderers/common/Attributes.js +36 -0
  352. package/src/renderers/common/Backend.js +502 -44
  353. package/src/renderers/common/Background.js +48 -1
  354. package/src/renderers/common/BindGroup.js +43 -0
  355. package/src/renderers/common/Binding.js +35 -0
  356. package/src/renderers/common/Bindings.js +93 -1
  357. package/src/renderers/common/Buffer.js +49 -0
  358. package/src/renderers/common/BufferUtils.js +27 -0
  359. package/src/renderers/common/BundleGroup.js +57 -0
  360. package/src/renderers/common/ChainMap.js +45 -6
  361. package/src/renderers/common/ClippingContext.js +108 -15
  362. package/src/renderers/common/Color4.js +40 -0
  363. package/src/renderers/common/ComputePipeline.js +24 -0
  364. package/src/renderers/common/CubeRenderTarget.js +13 -0
  365. package/src/renderers/common/DataMap.js +37 -1
  366. package/src/renderers/common/Geometries.js +91 -14
  367. package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
  368. package/src/renderers/common/Info.js +78 -35
  369. package/src/renderers/common/Lighting.js +34 -6
  370. package/src/renderers/common/Pipeline.js +22 -0
  371. package/src/renderers/common/Pipelines.js +148 -5
  372. package/src/renderers/common/PostProcessing.js +99 -11
  373. package/src/renderers/common/ProgrammableStage.js +60 -2
  374. package/src/renderers/common/QuadMesh.js +54 -5
  375. package/src/renderers/common/RenderBundle.js +14 -8
  376. package/src/renderers/common/RenderBundles.js +39 -10
  377. package/src/renderers/common/RenderContext.js +201 -2
  378. package/src/renderers/common/RenderContexts.js +59 -6
  379. package/src/renderers/common/RenderList.js +178 -0
  380. package/src/renderers/common/RenderLists.js +40 -3
  381. package/src/renderers/common/RenderObject.js +400 -17
  382. package/src/renderers/common/RenderObjects.js +103 -7
  383. package/src/renderers/common/RenderPipeline.js +24 -0
  384. package/src/renderers/common/Renderer.js +1170 -86
  385. package/src/renderers/common/RendererUtils.js +193 -0
  386. package/src/renderers/common/SampledTexture.js +120 -0
  387. package/src/renderers/common/Sampler.js +30 -0
  388. package/src/renderers/common/StorageBuffer.js +24 -0
  389. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  390. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  391. package/src/renderers/common/StorageTexture.js +38 -0
  392. package/src/renderers/common/Textures.js +97 -7
  393. package/src/renderers/common/TimestampQueryPool.js +39 -0
  394. package/src/renderers/common/Uniform.js +225 -3
  395. package/src/renderers/common/UniformBuffer.js +19 -0
  396. package/src/renderers/common/UniformsGroup.js +141 -2
  397. package/src/renderers/common/XRManager.js +1193 -0
  398. package/src/renderers/common/XRRenderTarget.js +74 -0
  399. package/src/renderers/common/extras/PMREMGenerator.js +76 -10
  400. package/src/renderers/common/nodes/NodeBuilderState.js +99 -5
  401. package/src/renderers/common/nodes/NodeLibrary.js +89 -0
  402. package/src/renderers/common/nodes/NodeSampledTexture.js +90 -2
  403. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  404. package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
  405. package/src/renderers/common/nodes/NodeUniform.js +243 -2
  406. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  407. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  408. package/src/renderers/common/nodes/Nodes.js +352 -78
  409. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  410. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  411. package/src/renderers/webgl/WebGLBackground.js +4 -0
  412. package/src/renderers/webgl-fallback/WebGLBackend.js +819 -116
  413. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +347 -18
  414. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +58 -1
  415. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  416. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  417. package/src/renderers/webgl-fallback/utils/WebGLState.js +323 -11
  418. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +168 -22
  419. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +359 -0
  420. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
  421. package/src/renderers/webgpu/WebGPUBackend.js +578 -164
  422. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +36 -0
  423. package/src/renderers/webgpu/WebGPURenderer.js +36 -0
  424. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
  425. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
  426. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +674 -52
  427. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
  428. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  429. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +95 -14
  430. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +94 -1
  431. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +102 -3
  432. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +98 -1
  433. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +262 -18
  434. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +274 -0
  435. package/src/renderers/webgpu/utils/WebGPUUtils.js +116 -4
  436. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  437. package/src/renderers/webxr/WebXRManager.js +19 -2
  438. package/src/textures/Data3DTexture.js +2 -2
  439. package/src/textures/Texture.js +4 -0
  440. package/src/textures/VideoFrameTexture.js +35 -0
  441. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
  442. package/examples/jsm/animation/MMDPhysics.js +0 -1408
  443. package/examples/jsm/exporters/MMDExporter.js +0 -223
  444. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -176
  445. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  446. package/examples/jsm/loaders/MMDLoader.js +0 -2298
  447. package/examples/jsm/objects/InstancedPoints.js +0 -19
  448. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  449. package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
  450. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
  451. package/src/nodes/core/UniformGroup.js +0 -13
  452. package/src/nodes/fog/FogExp2Node.js +0 -35
  453. package/src/nodes/fog/FogNode.js +0 -50
  454. package/src/nodes/fog/FogRangeNode.js +0 -36
  455. package/src/renderers/common/PostProcessingUtils.js +0 -86
@@ -1,8 +1,52 @@
1
1
  import { sub, mul, div, add } from './OperatorNode.js';
2
2
  import { PI, pow, sin } from './MathNode.js';
3
3
 
4
- // remapping functions https://iquilezles.org/articles/functions/
4
+ /** @module MathUtils **/
5
+
6
+ /**
7
+ * A function that remaps the `[0,1]` interval into the `[0,1]` interval.
8
+ * The corners are mapped to `0` and the center to `1`.
9
+ * Reference: {@link https://iquilezles.org/articles/functions/}.
10
+ *
11
+ * @method
12
+ * @param {Node<float>} x - The value to remap.
13
+ * @param {Node<float>} k - Allows to control the remapping functions shape by rising the parabola to a power `k`.
14
+ * @return {Node<float>} The remapped value.
15
+ */
5
16
  export const parabola = ( x, k ) => pow( mul( 4.0, x.mul( sub( 1.0, x ) ) ), k );
17
+
18
+ /**
19
+ * A function that remaps the `[0,1]` interval into the `[0,1]` interval.
20
+ * Expands the sides and compresses the center, and keeps `0.5` mapped to `0.5`.
21
+ * Reference: {@link https://iquilezles.org/articles/functions/}.
22
+ *
23
+ * @method
24
+ * @param {Node<float>} x - The value to remap.
25
+ * @param {Node<float>} k - `k=1` is the identity curve,`k<1` produces the classic `gain()` shape, and `k>1` produces "s" shaped curves.
26
+ * @return {Node<float>} The remapped value.
27
+ */
6
28
  export const gain = ( x, k ) => x.lessThan( 0.5 ) ? parabola( x.mul( 2.0 ), k ).div( 2.0 ) : sub( 1.0, parabola( mul( sub( 1.0, x ), 2.0 ), k ).div( 2.0 ) );
29
+
30
+ /**
31
+ * A function that remaps the `[0,1]` interval into the `[0,1]` interval.
32
+ * A generalization of the `parabola()`. Keeps the corners mapped to 0 but allows the control of the shape one either side of the curve.
33
+ * Reference: {@link https://iquilezles.org/articles/functions/}.
34
+ *
35
+ * @method
36
+ * @param {Node<float>} x - The value to remap.
37
+ * @param {Node<float>} a - First control parameter.
38
+ * @param {Node<float>} b - Second control parameter.
39
+ * @return {Node<float>} The remapped value.
40
+ */
7
41
  export const pcurve = ( x, a, b ) => pow( div( pow( x, a ), add( pow( x, a ), pow( sub( 1.0, x ), b ) ) ), 1.0 / a );
42
+
43
+ /**
44
+ * A phase shifted sinus curve that starts at zero and ends at zero, with bouncing behavior.
45
+ * Reference: {@link https://iquilezles.org/articles/functions/}.
46
+ *
47
+ * @method
48
+ * @param {Node<float>} x - The value to compute the sin for.
49
+ * @param {Node<float>} k - Controls the amount of bounces.
50
+ * @return {Node<float>} The result value.
51
+ */
8
52
  export const sinc = ( x, k ) => sin( PI.mul( k.mul( x ).sub( 1.0 ) ) ).div( PI.mul( k.mul( x ).sub( 1.0 ) ) );
@@ -1,6 +1,14 @@
1
1
  import TempNode from '../core/TempNode.js';
2
2
  import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
3
3
 
4
+ /** @module OperatorNode **/
5
+
6
+ /**
7
+ * This node represents basic mathematical and logical operations like addition,
8
+ * subtraction or comparisons (e.g. `equal()`).
9
+ *
10
+ * @augments TempNode
11
+ */
4
12
  class OperatorNode extends TempNode {
5
13
 
6
14
  static get type() {
@@ -9,6 +17,14 @@ class OperatorNode extends TempNode {
9
17
 
10
18
  }
11
19
 
20
+ /**
21
+ * Constructs a new operator node.
22
+ *
23
+ * @param {String} op - The operator.
24
+ * @param {Node} aNode - The first input.
25
+ * @param {Node} bNode - The second input.
26
+ * @param {...Node} params - Additional input parameters.
27
+ */
12
28
  constructor( op, aNode, bNode, ...params ) {
13
29
 
14
30
  super();
@@ -28,12 +44,46 @@ class OperatorNode extends TempNode {
28
44
 
29
45
  }
30
46
 
47
+ /**
48
+ * The operator.
49
+ *
50
+ * @type {String}
51
+ */
31
52
  this.op = op;
53
+
54
+ /**
55
+ * The first input.
56
+ *
57
+ * @type {Node}
58
+ */
32
59
  this.aNode = aNode;
60
+
61
+ /**
62
+ * The second input.
63
+ *
64
+ * @type {Node}
65
+ */
33
66
  this.bNode = bNode;
34
67
 
68
+ /**
69
+ * This flag can be used for type testing.
70
+ *
71
+ * @type {Boolean}
72
+ * @readonly
73
+ * @default true
74
+ */
75
+ this.isOperatorNode = true;
76
+
35
77
  }
36
78
 
79
+ /**
80
+ * This method is overwritten since the node type is inferred from the operator
81
+ * and the input node types.
82
+ *
83
+ * @param {NodeBuilder} builder - The current node builder.
84
+ * @param {String} output - The current output string.
85
+ * @return {String} The node type.
86
+ */
37
87
  getNodeType( builder, output ) {
38
88
 
39
89
  const op = this.op;
@@ -68,23 +118,39 @@ class OperatorNode extends TempNode {
68
118
 
69
119
  } else {
70
120
 
71
- if ( typeA === 'float' && builder.isMatrix( typeB ) ) {
121
+ // Handle matrix operations
122
+ if ( builder.isMatrix( typeA ) ) {
72
123
 
73
- return typeB;
124
+ if ( typeB === 'float' ) {
125
+
126
+ return typeA; // matrix * scalar = matrix
127
+
128
+ } else if ( builder.isVector( typeB ) ) {
129
+
130
+ return builder.getVectorFromMatrix( typeA ); // matrix * vector
131
+
132
+ } else if ( builder.isMatrix( typeB ) ) {
74
133
 
75
- } else if ( builder.isMatrix( typeA ) && builder.isVector( typeB ) ) {
134
+ return typeA; // matrix * matrix
76
135
 
77
- // matrix x vector
136
+ }
137
+
138
+ } else if ( builder.isMatrix( typeB ) ) {
139
+
140
+ if ( typeA === 'float' ) {
141
+
142
+ return typeB; // scalar * matrix = matrix
78
143
 
79
- return builder.getVectorFromMatrix( typeA );
144
+ } else if ( builder.isVector( typeA ) ) {
80
145
 
81
- } else if ( builder.isVector( typeA ) && builder.isMatrix( typeB ) ) {
146
+ return builder.getVectorFromMatrix( typeB ); // vector * matrix
82
147
 
83
- // vector x matrix
148
+ }
84
149
 
85
- return builder.getVectorFromMatrix( typeB );
150
+ }
86
151
 
87
- } else if ( builder.getTypeLength( typeB ) > builder.getTypeLength( typeA ) ) {
152
+ // Handle non-matrix cases
153
+ if ( builder.getTypeLength( typeB ) > builder.getTypeLength( typeA ) ) {
88
154
 
89
155
  // anytype x anytype: use the greater length vector
90
156
 
@@ -132,17 +198,43 @@ class OperatorNode extends TempNode {
132
198
  typeA = type;
133
199
  typeB = builder.changeComponentType( typeB, 'uint' );
134
200
 
135
- } else if ( builder.isMatrix( typeA ) && builder.isVector( typeB ) ) {
201
+ } else if ( builder.isMatrix( typeA ) ) {
202
+
203
+ if ( typeB === 'float' ) {
204
+
205
+ // Keep matrix type for typeA, but ensure typeB stays float
206
+ typeB = 'float';
136
207
 
137
- // matrix x vector
208
+ } else if ( builder.isVector( typeB ) ) {
138
209
 
139
- typeB = builder.getVectorFromMatrix( typeA );
210
+ // matrix x vector
211
+ typeB = builder.getVectorFromMatrix( typeA );
140
212
 
141
- } else if ( builder.isVector( typeA ) && builder.isMatrix( typeB ) ) {
213
+ } else if ( builder.isMatrix( typeB ) ) {
214
+ // matrix x matrix - keep both types
215
+ } else {
216
+
217
+ typeA = typeB = type;
218
+
219
+ }
220
+
221
+ } else if ( builder.isMatrix( typeB ) ) {
222
+
223
+ if ( typeA === 'float' ) {
224
+
225
+ // Keep matrix type for typeB, but ensure typeA stays float
226
+ typeA = 'float';
227
+
228
+ } else if ( builder.isVector( typeA ) ) {
142
229
 
143
- // vector x matrix
230
+ // vector x matrix
231
+ typeA = builder.getVectorFromMatrix( typeB );
144
232
 
145
- typeA = builder.getVectorFromMatrix( typeB );
233
+ } else {
234
+
235
+ typeA = typeB = type;
236
+
237
+ }
146
238
 
147
239
  } else {
148
240
 
@@ -224,7 +316,20 @@ class OperatorNode extends TempNode {
224
316
 
225
317
  } else {
226
318
 
227
- return builder.format( `( ${ a } ${ op } ${ b } )`, type, output );
319
+ // Handle matrix operations
320
+ if ( builder.isMatrix( typeA ) && typeB === 'float' ) {
321
+
322
+ return builder.format( `( ${ b } ${ op } ${ a } )`, type, output );
323
+
324
+ } else if ( typeA === 'float' && builder.isMatrix( typeB ) ) {
325
+
326
+ return builder.format( `${ a } ${ op } ${ b }`, type, output );
327
+
328
+ } else {
329
+
330
+ return builder.format( `( ${ a } ${ op } ${ b } )`, type, output );
331
+
332
+ }
228
333
 
229
334
  }
230
335
 
@@ -236,7 +341,15 @@ class OperatorNode extends TempNode {
236
341
 
237
342
  } else {
238
343
 
239
- return builder.format( `${ a } ${ op } ${ b }`, type, output );
344
+ if ( builder.isMatrix( typeA ) && typeB === 'float' ) {
345
+
346
+ return builder.format( `${ b } ${ op } ${ a }`, type, output );
347
+
348
+ } else {
349
+
350
+ return builder.format( `${ a } ${ op } ${ b }`, type, output );
351
+
352
+ }
240
353
 
241
354
  }
242
355
 
@@ -264,26 +377,218 @@ class OperatorNode extends TempNode {
264
377
 
265
378
  export default OperatorNode;
266
379
 
380
+ /**
381
+ * Returns the addition of two or more value.
382
+ *
383
+ * @function
384
+ * @param {Node} aNode - The first input.
385
+ * @param {Node} bNode - The second input.
386
+ * @param {...Node} params - Additional input parameters.
387
+ * @returns {OperatorNode}
388
+ */
267
389
  export const add = /*@__PURE__*/ nodeProxy( OperatorNode, '+' );
390
+
391
+ /**
392
+ * Returns the subtraction of two or more value.
393
+ *
394
+ * @function
395
+ * @param {Node} aNode - The first input.
396
+ * @param {Node} bNode - The second input.
397
+ * @param {...Node} params - Additional input parameters.
398
+ * @returns {OperatorNode}
399
+ */
268
400
  export const sub = /*@__PURE__*/ nodeProxy( OperatorNode, '-' );
401
+
402
+ /**
403
+ * Returns the multiplication of two or more value.
404
+ *
405
+ * @function
406
+ * @param {Node} aNode - The first input.
407
+ * @param {Node} bNode - The second input.
408
+ * @param {...Node} params - Additional input parameters.
409
+ * @returns {OperatorNode}
410
+ */
269
411
  export const mul = /*@__PURE__*/ nodeProxy( OperatorNode, '*' );
412
+
413
+ /**
414
+ * Returns the division of two or more value.
415
+ *
416
+ * @function
417
+ * @param {Node} aNode - The first input.
418
+ * @param {Node} bNode - The second input.
419
+ * @param {...Node} params - Additional input parameters.
420
+ * @returns {OperatorNode}
421
+ */
270
422
  export const div = /*@__PURE__*/ nodeProxy( OperatorNode, '/' );
423
+
424
+ /**
425
+ * Computes the remainder of dividing the first node by the second, for integer values.
426
+ *
427
+ * @function
428
+ * @param {Node} aNode - The first input.
429
+ * @param {Node} bNode - The second input.
430
+ * @returns {OperatorNode}
431
+ */
271
432
  export const modInt = /*@__PURE__*/ nodeProxy( OperatorNode, '%' );
433
+
434
+ /**
435
+ * Checks if two nodes are equal.
436
+ *
437
+ * @function
438
+ * @param {Node} aNode - The first input.
439
+ * @param {Node} bNode - The second input.
440
+ * @returns {OperatorNode}
441
+ */
272
442
  export const equal = /*@__PURE__*/ nodeProxy( OperatorNode, '==' );
443
+
444
+ /**
445
+ * Checks if two nodes are not equal.
446
+ *
447
+ * @function
448
+ * @param {Node} aNode - The first input.
449
+ * @param {Node} bNode - The second input.
450
+ * @returns {OperatorNode}
451
+ */
273
452
  export const notEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '!=' );
453
+
454
+ /**
455
+ * Checks if the first node is less than the second.
456
+ *
457
+ * @function
458
+ * @param {Node} aNode - The first input.
459
+ * @param {Node} bNode - The second input.
460
+ * @returns {OperatorNode}
461
+ */
274
462
  export const lessThan = /*@__PURE__*/ nodeProxy( OperatorNode, '<' );
463
+
464
+ /**
465
+ * Checks if the first node is greater than the second.
466
+ *
467
+ * @function
468
+ * @param {Node} aNode - The first input.
469
+ * @param {Node} bNode - The second input.
470
+ * @returns {OperatorNode}
471
+ */
275
472
  export const greaterThan = /*@__PURE__*/ nodeProxy( OperatorNode, '>' );
473
+
474
+ /**
475
+ * Checks if the first node is less than or equal to the second.
476
+ *
477
+ * @function
478
+ * @param {Node} aNode - The first input.
479
+ * @param {Node} bNode - The second input.
480
+ * @returns {OperatorNode}
481
+ */
276
482
  export const lessThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '<=' );
483
+
484
+ /**
485
+ * Checks if the first node is greater than or equal to the second.
486
+ *
487
+ * @function
488
+ * @param {Node} aNode - The first input.
489
+ * @param {Node} bNode - The second input.
490
+ * @returns {OperatorNode}
491
+ */
277
492
  export const greaterThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '>=' );
493
+
494
+ /**
495
+ * Performs logical AND on two nodes.
496
+ *
497
+ * @function
498
+ * @param {Node} aNode - The first input.
499
+ * @param {Node} bNode - The second input.
500
+ * @returns {OperatorNode}
501
+ */
278
502
  export const and = /*@__PURE__*/ nodeProxy( OperatorNode, '&&' );
503
+
504
+ /**
505
+ * Performs logical OR on two nodes.
506
+ *
507
+ * @function
508
+ * @param {Node} aNode - The first input.
509
+ * @param {Node} bNode - The second input.
510
+ * @returns {OperatorNode}
511
+ */
279
512
  export const or = /*@__PURE__*/ nodeProxy( OperatorNode, '||' );
513
+
514
+ /**
515
+ * Performs logical NOT on a node.
516
+ *
517
+ * @function
518
+ * @param {Node} aNode - The first input.
519
+ * @param {Node} bNode - The second input.
520
+ * @returns {OperatorNode}
521
+ */
280
522
  export const not = /*@__PURE__*/ nodeProxy( OperatorNode, '!' );
523
+
524
+ /**
525
+ * Performs logical XOR on two nodes.
526
+ *
527
+ * @function
528
+ * @param {Node} aNode - The first input.
529
+ * @param {Node} bNode - The second input.
530
+ * @returns {OperatorNode}
531
+ */
281
532
  export const xor = /*@__PURE__*/ nodeProxy( OperatorNode, '^^' );
533
+
534
+ /**
535
+ * Performs bitwise AND on two nodes.
536
+ *
537
+ * @function
538
+ * @param {Node} aNode - The first input.
539
+ * @param {Node} bNode - The second input.
540
+ * @returns {OperatorNode}
541
+ */
282
542
  export const bitAnd = /*@__PURE__*/ nodeProxy( OperatorNode, '&' );
543
+
544
+ /**
545
+ * Performs bitwise NOT on a node.
546
+ *
547
+ * @function
548
+ * @param {Node} aNode - The first input.
549
+ * @param {Node} bNode - The second input.
550
+ * @returns {OperatorNode}
551
+ */
283
552
  export const bitNot = /*@__PURE__*/ nodeProxy( OperatorNode, '~' );
553
+
554
+ /**
555
+ * Performs bitwise OR on two nodes.
556
+ *
557
+ * @function
558
+ * @param {Node} aNode - The first input.
559
+ * @param {Node} bNode - The second input.
560
+ * @returns {OperatorNode}
561
+ */
284
562
  export const bitOr = /*@__PURE__*/ nodeProxy( OperatorNode, '|' );
563
+
564
+ /**
565
+ * Performs bitwise XOR on two nodes.
566
+ *
567
+ * @function
568
+ * @param {Node} aNode - The first input.
569
+ * @param {Node} bNode - The second input.
570
+ * @returns {OperatorNode}
571
+ */
285
572
  export const bitXor = /*@__PURE__*/ nodeProxy( OperatorNode, '^' );
573
+
574
+ /**
575
+ * Shifts a node to the left.
576
+ *
577
+ * @function
578
+ * @param {Node} aNode - The node to shift.
579
+ * @param {Node} bNode - The value to shift.
580
+ * @returns {OperatorNode}
581
+ */
286
582
  export const shiftLeft = /*@__PURE__*/ nodeProxy( OperatorNode, '<<' );
583
+
584
+ /**
585
+ * Shifts a node to the right.
586
+ *
587
+ * @function
588
+ * @param {Node} aNode - The node to shift.
589
+ * @param {Node} bNode - The value to shift.
590
+ * @returns {OperatorNode}
591
+ */
287
592
  export const shiftRight = /*@__PURE__*/ nodeProxy( OperatorNode, '>>' );
288
593
 
289
594
  addMethodChaining( 'add', add );
@@ -308,7 +613,13 @@ addMethodChaining( 'bitXor', bitXor );
308
613
  addMethodChaining( 'shiftLeft', shiftLeft );
309
614
  addMethodChaining( 'shiftRight', shiftRight );
310
615
 
311
-
616
+ /**
617
+ * @function
618
+ * @deprecated since r168. Use {@link modInt} instead.
619
+ *
620
+ * @param {...any} params
621
+ * @returns {Function}
622
+ */
312
623
  export const remainder = ( ...params ) => { // @deprecated, r168
313
624
 
314
625
  console.warn( 'TSL.OperatorNode: .remainder() has been renamed to .modInt().' );
@@ -3,7 +3,9 @@
3
3
  import { Loop } from '../utils/LoopNode.js';
4
4
  import { float, vec3, Fn } from '../tsl/TSLBase.js';
5
5
 
6
- export const tri = /*@__PURE__*/ Fn( ( [ x ] ) => {
6
+ /** @module TriNoise3D **/
7
+
8
+ const tri = /*@__PURE__*/ Fn( ( [ x ] ) => {
7
9
 
8
10
  return x.fract().sub( .5 ).abs();
9
11
 
@@ -15,7 +17,7 @@ export const tri = /*@__PURE__*/ Fn( ( [ x ] ) => {
15
17
  ]
16
18
  } );
17
19
 
18
- export const tri3 = /*@__PURE__*/ Fn( ( [ p ] ) => {
20
+ const tri3 = /*@__PURE__*/ Fn( ( [ p ] ) => {
19
21
 
20
22
  return vec3( tri( p.z.add( tri( p.y.mul( 1. ) ) ) ), tri( p.z.add( tri( p.x.mul( 1. ) ) ) ), tri( p.y.add( tri( p.x.mul( 1. ) ) ) ) );
21
23
 
@@ -27,9 +29,18 @@ export const tri3 = /*@__PURE__*/ Fn( ( [ p ] ) => {
27
29
  ]
28
30
  } );
29
31
 
30
- export const triNoise3D = /*@__PURE__*/ Fn( ( [ p_immutable, spd, time ] ) => {
32
+ /**
33
+ * Generates a noise value from the given position, speed and time parameters.
34
+ *
35
+ * @method
36
+ * @param {Node<vec3>} position - The position.
37
+ * @param {Node<float>} speed - The speed.
38
+ * @param {Node<float>} time - The time.
39
+ * @return {Node<float>} The generated noise.
40
+ */
41
+ export const triNoise3D = /*@__PURE__*/ Fn( ( [ position, speed, time ] ) => {
31
42
 
32
- const p = vec3( p_immutable ).toVar();
43
+ const p = vec3( position ).toVar();
33
44
  const z = float( 1.4 ).toVar();
34
45
  const rz = float( 0.0 ).toVar();
35
46
  const bp = vec3( p ).toVar();
@@ -37,7 +48,7 @@ export const triNoise3D = /*@__PURE__*/ Fn( ( [ p_immutable, spd, time ] ) => {
37
48
  Loop( { start: float( 0.0 ), end: float( 3.0 ), type: 'float', condition: '<=' }, () => {
38
49
 
39
50
  const dg = vec3( tri3( bp.mul( 2.0 ) ) ).toVar();
40
- p.addAssign( dg.add( time.mul( float( 0.1 ).mul( spd ) ) ) );
51
+ p.addAssign( dg.add( time.mul( float( 0.1 ).mul( speed ) ) ) );
41
52
  bp.mulAssign( 1.8 );
42
53
  z.mulAssign( 1.5 );
43
54
  p.mulAssign( 1.2 );
@@ -54,8 +65,8 @@ export const triNoise3D = /*@__PURE__*/ Fn( ( [ p_immutable, spd, time ] ) => {
54
65
  name: 'triNoise3D',
55
66
  type: 'float',
56
67
  inputs: [
57
- { name: 'p', type: 'vec3' },
58
- { name: 'spd', type: 'float' },
68
+ { name: 'position', type: 'vec3' },
69
+ { name: 'speed', type: 'float' },
59
70
  { name: 'time', type: 'float' }
60
71
  ]
61
72
  } );
@@ -101,8 +101,18 @@ const parse = ( source ) => {
101
101
 
102
102
  };
103
103
 
104
+ /**
105
+ * This class represents a GLSL node function.
106
+ *
107
+ * @augments NodeFunction
108
+ */
104
109
  class GLSLNodeFunction extends NodeFunction {
105
110
 
111
+ /**
112
+ * Constructs a new GLSL node function.
113
+ *
114
+ * @param {String} source - The GLSL source.
115
+ */
106
116
  constructor( source ) {
107
117
 
108
118
  const { type, inputs, name, precision, inputsCode, blockCode, headerCode } = parse( source );
@@ -115,6 +125,12 @@ class GLSLNodeFunction extends NodeFunction {
115
125
 
116
126
  }
117
127
 
128
+ /**
129
+ * This method returns the GLSL code of the node function.
130
+ *
131
+ * @param {String} [name=this.name] - The function's name.
132
+ * @return {String} The shader code.
133
+ */
118
134
  getCode( name = this.name ) {
119
135
 
120
136
  let code;
@@ -1,8 +1,19 @@
1
1
  import NodeParser from '../core/NodeParser.js';
2
2
  import GLSLNodeFunction from './GLSLNodeFunction.js';
3
3
 
4
+ /**
5
+ * A GLSL node parser.
6
+ *
7
+ * @augments NodeParser
8
+ */
4
9
  class GLSLNodeParser extends NodeParser {
5
10
 
11
+ /**
12
+ * The method parses the given GLSL code an returns a node function.
13
+ *
14
+ * @param {String} source - The GLSL code.
15
+ * @return {GLSLNodeFunction} A node function.
16
+ */
6
17
  parseFunction( source ) {
7
18
 
8
19
  return new GLSLNodeFunction( source );