super-three 0.171.0 → 0.172.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 (413) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +157 -49
  3. package/build/three.core.js +104 -42
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +53 -8
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +10 -5
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +21191 -1008
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +21189 -1008
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/jsm/Addons.js +0 -5
  14. package/examples/jsm/animation/CCDIKSolver.js +3 -2
  15. package/examples/jsm/controls/ArcballControls.js +28 -19
  16. package/examples/jsm/controls/OrbitControls.js +5 -4
  17. package/examples/jsm/csm/CSMShadowNode.js +16 -11
  18. package/examples/jsm/curves/NURBSCurve.js +1 -1
  19. package/examples/jsm/curves/NURBSUtils.js +3 -0
  20. package/examples/jsm/effects/OutlineEffect.js +1 -1
  21. package/examples/jsm/exporters/GLTFExporter.js +11 -7
  22. package/examples/jsm/exporters/KTX2Exporter.js +1 -1
  23. package/examples/jsm/exporters/PLYExporter.js +2 -2
  24. package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
  25. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  26. package/examples/jsm/lights/LightProbeGenerator.js +3 -3
  27. package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
  28. package/examples/jsm/loaders/3MFLoader.js +6 -3
  29. package/examples/jsm/loaders/BVHLoader.js +1 -1
  30. package/examples/jsm/loaders/ColladaLoader.js +5 -5
  31. package/examples/jsm/loaders/DDSLoader.js +42 -0
  32. package/examples/jsm/loaders/GCodeLoader.js +1 -1
  33. package/examples/jsm/loaders/GLTFLoader.js +22 -2
  34. package/examples/jsm/loaders/KTX2Loader.js +6 -1
  35. package/examples/jsm/loaders/KTXLoader.js +4 -4
  36. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  37. package/examples/jsm/loaders/LottieLoader.js +1 -1
  38. package/examples/jsm/loaders/MTLLoader.js +1 -0
  39. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  40. package/examples/jsm/loaders/PLYLoader.js +7 -7
  41. package/examples/jsm/loaders/PVRLoader.js +1 -1
  42. package/examples/jsm/loaders/SVGLoader.js +2 -2
  43. package/examples/jsm/loaders/TDSLoader.js +1 -1
  44. package/examples/jsm/loaders/VRMLLoader.js +7 -7
  45. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  46. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
  47. package/examples/jsm/math/ConvexHull.js +1 -1
  48. package/examples/jsm/math/OBB.js +17 -0
  49. package/examples/jsm/misc/ProgressiveLightMapGPU.js +10 -10
  50. package/examples/jsm/misc/Volume.js +20 -12
  51. package/examples/jsm/misc/VolumeSlice.js +2 -2
  52. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  53. package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
  54. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  55. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  56. package/examples/jsm/objects/Sky.js +2 -2
  57. package/examples/jsm/objects/SkyMesh.js +3 -3
  58. package/examples/jsm/objects/Water2.js +1 -1
  59. package/examples/jsm/objects/Water2Mesh.js +2 -2
  60. package/examples/jsm/objects/WaterMesh.js +4 -4
  61. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  62. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  63. package/examples/jsm/postprocessing/OutlinePass.js +4 -4
  64. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  65. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  66. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  67. package/examples/jsm/postprocessing/SSRPass.js +2 -4
  68. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  69. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  70. package/examples/jsm/shaders/BokehShader2.js +1 -1
  71. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  72. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  73. package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
  74. package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
  75. package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
  76. package/examples/jsm/tsl/display/BleachBypass.js +10 -0
  77. package/examples/jsm/tsl/display/BloomNode.js +233 -26
  78. package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
  79. package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
  80. package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
  81. package/examples/jsm/tsl/display/FXAANode.js +52 -3
  82. package/examples/jsm/tsl/display/FilmNode.js +47 -1
  83. package/examples/jsm/tsl/display/GTAONode.js +210 -14
  84. package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
  85. package/examples/jsm/tsl/display/LensflareNode.js +131 -13
  86. package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
  87. package/examples/jsm/tsl/display/MotionBlur.js +12 -2
  88. package/examples/jsm/tsl/display/OutlineNode.js +343 -26
  89. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
  90. package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
  91. package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
  92. package/examples/jsm/tsl/display/SMAANode.js +187 -46
  93. package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
  94. package/examples/jsm/tsl/display/SSRNode.js +194 -21
  95. package/examples/jsm/tsl/display/Sepia.js +9 -0
  96. package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
  97. package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
  98. package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
  99. package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
  100. package/examples/jsm/tsl/display/TransitionNode.js +71 -6
  101. package/examples/jsm/tsl/display/hashBlur.js +14 -3
  102. package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
  103. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  104. package/examples/jsm/utils/CameraUtils.js +4 -1
  105. package/examples/jsm/utils/GeometryUtils.js +22 -19
  106. package/examples/jsm/utils/SceneUtils.js +2 -2
  107. package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
  108. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  109. package/package.json +8 -3
  110. package/src/Three.Core.js +2 -0
  111. package/src/Three.Legacy.js +0 -21
  112. package/src/Three.TSL.js +9 -4
  113. package/src/Three.WebGPU.Nodes.js +2 -2
  114. package/src/Three.WebGPU.js +2 -2
  115. package/src/animation/PropertyBinding.js +2 -2
  116. package/src/cameras/PerspectiveCamera.js +18 -2
  117. package/src/constants.js +1 -1
  118. package/src/core/RenderTarget.js +18 -0
  119. package/src/core/RenderTarget3D.js +22 -0
  120. package/src/core/RenderTargetArray.js +22 -0
  121. package/src/extras/Earcut.js +1 -1
  122. package/src/extras/PMREMGenerator.js +20 -0
  123. package/src/extras/TextureUtils.js +6 -0
  124. package/src/helpers/CameraHelper.js +16 -13
  125. package/src/loaders/nodes/NodeLoader.js +59 -0
  126. package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
  127. package/src/loaders/nodes/NodeObjectLoader.js +61 -0
  128. package/src/materials/nodes/InstancedPointsNodeMaterial.js +72 -19
  129. package/src/materials/nodes/Line2NodeMaterial.js +128 -34
  130. package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
  131. package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
  132. package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
  133. package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
  134. package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
  135. package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
  136. package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
  137. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
  138. package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
  139. package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
  140. package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
  141. package/src/materials/nodes/NodeMaterial.js +474 -21
  142. package/src/materials/nodes/PointsNodeMaterial.js +22 -13
  143. package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
  144. package/src/materials/nodes/SpriteNodeMaterial.js +77 -19
  145. package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
  146. package/src/materials/nodes/manager/NodeMaterialObserver.js +87 -0
  147. package/src/nodes/Nodes.js +1 -6
  148. package/src/nodes/TSL.js +2 -3
  149. package/src/nodes/accessors/AccessorsUtils.js +27 -0
  150. package/src/nodes/accessors/Arrays.js +24 -5
  151. package/src/nodes/accessors/BatchNode.js +39 -3
  152. package/src/nodes/accessors/Bitangent.js +37 -0
  153. package/src/nodes/accessors/BufferAttributeNode.js +178 -5
  154. package/src/nodes/accessors/BufferNode.js +63 -0
  155. package/src/nodes/accessors/BuiltinNode.js +38 -0
  156. package/src/nodes/accessors/Camera.js +49 -0
  157. package/src/nodes/accessors/ClippingNode.js +71 -2
  158. package/src/nodes/accessors/CubeTextureNode.js +64 -0
  159. package/src/nodes/accessors/InstanceNode.js +85 -2
  160. package/src/nodes/accessors/InstancedMeshNode.js +28 -3
  161. package/src/nodes/accessors/InstancedPointsMaterialNode.js +13 -0
  162. package/src/nodes/accessors/Lights.js +50 -1
  163. package/src/nodes/accessors/MaterialNode.js +302 -8
  164. package/src/nodes/accessors/MaterialProperties.js +7 -0
  165. package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
  166. package/src/nodes/accessors/ModelNode.js +100 -5
  167. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
  168. package/src/nodes/accessors/MorphNode.js +48 -4
  169. package/src/nodes/accessors/Normal.js +59 -3
  170. package/src/nodes/accessors/Object3DNode.js +102 -1
  171. package/src/nodes/accessors/PointUVNode.js +26 -0
  172. package/src/nodes/accessors/Position.js +53 -4
  173. package/src/nodes/accessors/ReferenceBaseNode.js +188 -0
  174. package/src/nodes/accessors/ReferenceNode.js +202 -2
  175. package/src/nodes/accessors/ReflectVector.js +24 -0
  176. package/src/nodes/accessors/RendererReferenceNode.js +46 -1
  177. package/src/nodes/accessors/SceneNode.js +54 -0
  178. package/src/nodes/accessors/SkinningNode.js +127 -1
  179. package/src/nodes/accessors/StorageBufferNode.js +168 -4
  180. package/src/nodes/accessors/StorageTextureNode.js +118 -0
  181. package/src/nodes/accessors/Tangent.js +36 -0
  182. package/src/nodes/accessors/Texture3DNode.js +89 -5
  183. package/src/nodes/accessors/TextureBicubic.js +12 -2
  184. package/src/nodes/accessors/TextureNode.js +309 -10
  185. package/src/nodes/accessors/TextureSizeNode.js +42 -0
  186. package/src/nodes/accessors/UV.js +10 -1
  187. package/src/nodes/accessors/UniformArrayNode.js +223 -23
  188. package/src/nodes/accessors/UserDataNode.js +46 -0
  189. package/src/nodes/accessors/VelocityNode.js +82 -0
  190. package/src/nodes/accessors/VertexColorNode.js +39 -2
  191. package/src/nodes/code/CodeNode.js +95 -1
  192. package/src/nodes/code/ExpressionNode.js +28 -0
  193. package/src/nodes/code/FunctionCallNode.js +37 -0
  194. package/src/nodes/code/FunctionNode.js +45 -0
  195. package/src/nodes/code/ScriptableNode.js +223 -1
  196. package/src/nodes/code/ScriptableValueNode.js +85 -1
  197. package/src/nodes/core/AssignNode.js +48 -2
  198. package/src/nodes/core/AttributeNode.js +43 -0
  199. package/src/nodes/core/BypassNode.js +47 -2
  200. package/src/nodes/core/CacheNode.js +53 -2
  201. package/src/nodes/core/ConstNode.js +24 -0
  202. package/src/nodes/core/ContextNode.js +65 -0
  203. package/src/nodes/core/IndexNode.js +68 -7
  204. package/src/nodes/core/InputNode.js +48 -0
  205. package/src/nodes/core/LightingModel.js +60 -0
  206. package/src/nodes/core/MRTNode.js +66 -0
  207. package/src/nodes/core/Node.js +337 -12
  208. package/src/nodes/core/NodeAttribute.js +38 -0
  209. package/src/nodes/core/NodeBuilder.js +945 -15
  210. package/src/nodes/core/NodeCache.js +41 -2
  211. package/src/nodes/core/NodeCode.js +31 -0
  212. package/src/nodes/core/NodeFrame.js +123 -2
  213. package/src/nodes/core/NodeFunction.js +46 -0
  214. package/src/nodes/core/NodeFunctionInput.js +44 -0
  215. package/src/nodes/core/NodeParser.js +11 -0
  216. package/src/nodes/core/NodeUniform.js +52 -0
  217. package/src/nodes/core/NodeUtils.js +141 -0
  218. package/src/nodes/core/NodeVar.js +30 -0
  219. package/src/nodes/core/NodeVarying.js +28 -0
  220. package/src/nodes/core/OutputStructNode.js +33 -2
  221. package/src/nodes/core/ParameterNode.js +28 -0
  222. package/src/nodes/core/PropertyNode.js +232 -0
  223. package/src/nodes/core/StackNode.js +78 -0
  224. package/src/nodes/core/StructTypeNode.js +39 -1
  225. package/src/nodes/core/TempNode.js +30 -4
  226. package/src/nodes/core/UniformGroupNode.js +82 -7
  227. package/src/nodes/core/UniformNode.js +66 -0
  228. package/src/nodes/core/VarNode.js +52 -0
  229. package/src/nodes/core/VaryingNode.js +83 -2
  230. package/src/nodes/core/constants.js +36 -0
  231. package/src/nodes/display/BumpMapNode.js +37 -0
  232. package/src/nodes/display/ColorAdjustment.js +53 -11
  233. package/src/nodes/display/ColorSpaceFunctions.js +16 -0
  234. package/src/nodes/display/ColorSpaceNode.js +82 -0
  235. package/src/nodes/display/FrontFacingNode.js +29 -0
  236. package/src/nodes/display/NormalMapNode.js +43 -0
  237. package/src/nodes/display/PassNode.js +298 -7
  238. package/src/nodes/display/PosterizeNode.js +33 -0
  239. package/src/nodes/display/RenderOutputNode.js +66 -1
  240. package/src/nodes/display/ScreenNode.js +87 -0
  241. package/src/nodes/display/ToneMappingFunctions.js +58 -10
  242. package/src/nodes/display/ToneMappingNode.js +55 -2
  243. package/src/nodes/display/ToonOutlinePassNode.js +73 -0
  244. package/src/nodes/display/ViewportDepthNode.js +122 -8
  245. package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
  246. package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
  247. package/src/nodes/display/ViewportTextureNode.js +57 -0
  248. package/src/nodes/fog/Fog.js +93 -0
  249. package/src/nodes/functions/BasicLightingModel.js +24 -0
  250. package/src/nodes/functions/PhongLightingModel.js +34 -2
  251. package/src/nodes/functions/PhysicalLightingModel.js +167 -8
  252. package/src/nodes/functions/ShadowMaskModel.js +23 -0
  253. package/src/nodes/functions/ToonLightingModel.js +20 -0
  254. package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
  255. package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
  256. package/src/nodes/geometry/RangeNode.js +54 -2
  257. package/src/nodes/gpgpu/AtomicFunctionNode.js +157 -1
  258. package/src/nodes/gpgpu/BarrierNode.js +47 -0
  259. package/src/nodes/gpgpu/ComputeBuiltinNode.js +126 -0
  260. package/src/nodes/gpgpu/ComputeNode.js +106 -2
  261. package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
  262. package/src/nodes/lighting/AONode.js +18 -0
  263. package/src/nodes/lighting/AmbientLightNode.js +10 -0
  264. package/src/nodes/lighting/AnalyticLightNode.js +97 -2
  265. package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
  266. package/src/nodes/lighting/BasicLightMapNode.js +17 -0
  267. package/src/nodes/lighting/DirectionalLightNode.js +10 -0
  268. package/src/nodes/lighting/EnvironmentNode.js +18 -0
  269. package/src/nodes/lighting/HemisphereLightNode.js +31 -0
  270. package/src/nodes/lighting/IESSpotLightNode.js +11 -0
  271. package/src/nodes/lighting/IrradianceNode.js +17 -0
  272. package/src/nodes/lighting/LightProbeNode.js +20 -0
  273. package/src/nodes/lighting/LightUtils.js +12 -0
  274. package/src/nodes/lighting/LightingContextNode.js +48 -0
  275. package/src/nodes/lighting/LightingNode.js +15 -6
  276. package/src/nodes/lighting/LightsNode.js +132 -1
  277. package/src/nodes/lighting/PointLightNode.js +32 -1
  278. package/src/nodes/lighting/PointShadowNode.js +54 -1
  279. package/src/nodes/lighting/RectAreaLightNode.js +44 -6
  280. package/src/nodes/lighting/ShadowBaseNode.js +93 -0
  281. package/src/nodes/lighting/ShadowNode.js +240 -34
  282. package/src/nodes/lighting/SpotLightNode.js +43 -0
  283. package/src/nodes/math/ConditionalNode.js +70 -3
  284. package/src/nodes/math/Hash.js +9 -0
  285. package/src/nodes/math/MathNode.js +614 -11
  286. package/src/nodes/math/MathUtils.js +45 -1
  287. package/src/nodes/math/OperatorNode.js +233 -0
  288. package/src/nodes/math/TriNoise3D.js +18 -7
  289. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  290. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  291. package/src/nodes/pmrem/PMREMNode.js +133 -0
  292. package/src/nodes/pmrem/PMREMUtils.js +1 -1
  293. package/src/nodes/procedural/Checker.js +9 -0
  294. package/src/nodes/tsl/TSLBase.js +2 -2
  295. package/src/nodes/utils/ArrayElementNode.js +38 -2
  296. package/src/nodes/utils/ConvertNode.js +31 -0
  297. package/src/nodes/utils/CubeMapNode.js +78 -0
  298. package/src/nodes/utils/Discard.js +16 -0
  299. package/src/nodes/utils/EquirectUVNode.js +31 -1
  300. package/src/nodes/utils/FlipNode.js +38 -0
  301. package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
  302. package/src/nodes/utils/JoinNode.js +25 -0
  303. package/src/nodes/utils/LoopNode.js +74 -1
  304. package/src/nodes/utils/MatcapUVNode.js +17 -0
  305. package/src/nodes/utils/MaxMipLevelNode.js +49 -0
  306. package/src/nodes/utils/Oscillators.js +33 -0
  307. package/src/nodes/utils/Packing.js +17 -0
  308. package/src/nodes/utils/PostProcessingUtils.js +28 -23
  309. package/src/nodes/utils/RTTNode.js +123 -2
  310. package/src/nodes/utils/ReflectorNode.js +174 -4
  311. package/src/nodes/utils/RemapNode.js +79 -0
  312. package/src/nodes/utils/RotateNode.js +41 -0
  313. package/src/nodes/utils/SetNode.js +44 -1
  314. package/src/nodes/utils/SplitNode.js +55 -3
  315. package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
  316. package/src/nodes/utils/SpriteUtils.js +17 -0
  317. package/src/nodes/utils/StorageArrayElementNode.js +40 -0
  318. package/src/nodes/utils/Timer.js +19 -0
  319. package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
  320. package/src/nodes/utils/UVUtils.js +20 -0
  321. package/src/nodes/utils/ViewportUtils.js +13 -0
  322. package/src/objects/BatchedMesh.js +1 -2
  323. package/src/objects/ClippingGroup.js +49 -0
  324. package/src/renderers/WebGLRenderer.js +23 -4
  325. package/src/renderers/common/Animation.js +63 -0
  326. package/src/renderers/common/Attributes.js +36 -0
  327. package/src/renderers/common/Backend.js +467 -52
  328. package/src/renderers/common/Background.js +34 -1
  329. package/src/renderers/common/BindGroup.js +43 -0
  330. package/src/renderers/common/Binding.js +35 -0
  331. package/src/renderers/common/Bindings.js +93 -1
  332. package/src/renderers/common/Buffer.js +49 -0
  333. package/src/renderers/common/BufferUtils.js +27 -0
  334. package/src/renderers/common/BundleGroup.js +57 -0
  335. package/src/renderers/common/ChainMap.js +38 -1
  336. package/src/renderers/common/ClippingContext.js +107 -14
  337. package/src/renderers/common/Color4.js +36 -0
  338. package/src/renderers/common/ComputePipeline.js +24 -0
  339. package/src/renderers/common/CubeRenderTarget.js +13 -0
  340. package/src/renderers/common/DataMap.js +37 -1
  341. package/src/renderers/common/Geometries.js +98 -0
  342. package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
  343. package/src/renderers/common/Info.js +87 -0
  344. package/src/renderers/common/Lighting.js +26 -0
  345. package/src/renderers/common/Pipeline.js +22 -0
  346. package/src/renderers/common/Pipelines.js +148 -5
  347. package/src/renderers/common/PostProcessing.js +75 -3
  348. package/src/renderers/common/ProgrammableStage.js +60 -2
  349. package/src/renderers/common/QuadMesh.js +54 -5
  350. package/src/renderers/common/RenderBundle.js +14 -8
  351. package/src/renderers/common/RenderBundles.js +33 -10
  352. package/src/renderers/common/RenderContext.js +169 -4
  353. package/src/renderers/common/RenderContexts.js +42 -2
  354. package/src/renderers/common/RenderList.js +178 -0
  355. package/src/renderers/common/RenderLists.js +31 -0
  356. package/src/renderers/common/RenderObject.js +328 -4
  357. package/src/renderers/common/RenderObjects.js +101 -7
  358. package/src/renderers/common/RenderPipeline.js +24 -0
  359. package/src/renderers/common/Renderer.js +1096 -31
  360. package/src/renderers/common/RendererUtils.js +193 -0
  361. package/src/renderers/common/SampledTexture.js +121 -0
  362. package/src/renderers/common/Sampler.js +30 -0
  363. package/src/renderers/common/StorageBuffer.js +24 -0
  364. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  365. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  366. package/src/renderers/common/StorageTexture.js +38 -0
  367. package/src/renderers/common/Textures.js +83 -0
  368. package/src/renderers/common/Uniform.js +188 -2
  369. package/src/renderers/common/UniformBuffer.js +19 -0
  370. package/src/renderers/common/UniformsGroup.js +139 -2
  371. package/src/renderers/common/extras/PMREMGenerator.js +24 -3
  372. package/src/renderers/common/nodes/NodeBuilderState.js +95 -1
  373. package/src/renderers/common/nodes/NodeLibrary.js +89 -0
  374. package/src/renderers/common/nodes/NodeSampledTexture.js +91 -2
  375. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  376. package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
  377. package/src/renderers/common/nodes/NodeUniform.js +189 -0
  378. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  379. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  380. package/src/renderers/common/nodes/Nodes.js +327 -60
  381. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  382. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  383. package/src/renderers/webgl-fallback/WebGLBackend.js +547 -29
  384. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +0 -1
  385. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
  386. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1 -1
  387. package/src/renderers/webgpu/WebGPUBackend.js +480 -49
  388. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +34 -0
  389. package/src/renderers/webgpu/WebGPURenderer.js +35 -0
  390. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
  391. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
  392. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +59 -11
  393. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
  394. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  395. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +10 -8
  396. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +9 -1
  397. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +5 -9
  398. package/src/renderers/webgpu/utils/WebGPUUtils.js +30 -0
  399. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  400. package/src/renderers/webxr/WebXRManager.js +7 -1
  401. package/src/textures/Data3DTexture.js +2 -2
  402. package/src/textures/Texture.js +4 -0
  403. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
  404. package/examples/jsm/animation/MMDPhysics.js +0 -1408
  405. package/examples/jsm/exporters/MMDExporter.js +0 -223
  406. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  407. package/examples/jsm/loaders/MMDLoader.js +0 -2298
  408. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  409. package/src/nodes/core/UniformGroup.js +0 -13
  410. package/src/nodes/fog/FogExp2Node.js +0 -35
  411. package/src/nodes/fog/FogNode.js +0 -50
  412. package/src/nodes/fog/FogRangeNode.js +0 -36
  413. package/src/renderers/common/PostProcessingUtils.js +0 -86
@@ -1,5 +1,13 @@
1
1
  import Node from './Node.js';
2
2
 
3
+ /**
4
+ * This module uses cache management to create temporary variables
5
+ * if the node is used more than once to prevent duplicate calculations.
6
+ *
7
+ * The class acts as a base class for many other nodes types.
8
+ *
9
+ * @augments Node
10
+ */
3
11
  class TempNode extends Node {
4
12
 
5
13
  static get type() {
@@ -8,14 +16,32 @@ class TempNode extends Node {
8
16
 
9
17
  }
10
18
 
11
- constructor( type ) {
12
-
13
- super( type );
14
-
19
+ /**
20
+ * Constructs a temp node.
21
+ *
22
+ * @param {String?} nodeType - The node type.
23
+ */
24
+ constructor( nodeType = null ) {
25
+
26
+ super( nodeType );
27
+
28
+ /**
29
+ * This flag can be used for type testing.
30
+ *
31
+ * @type {Boolean}
32
+ * @readonly
33
+ * @default true
34
+ */
15
35
  this.isTempNode = true;
16
36
 
17
37
  }
18
38
 
39
+ /**
40
+ * Whether this node is used more than once in context of other nodes.
41
+ *
42
+ * @param {NodeBuilder} builder - The node builder.
43
+ * @return {Boolean} A flag that indicates if there is more than one dependency to other nodes.
44
+ */
19
45
  hasDependencies( builder ) {
20
46
 
21
47
  return builder.getDataFromNode( this ).usageCount > 1;
@@ -1,5 +1,20 @@
1
1
  import Node from './Node.js';
2
2
 
3
+ /** @module UniformGroupNode **/
4
+
5
+ /**
6
+ * This node can be used to group single instances of {@link UniformNode}
7
+ * and manage them as a uniform buffer.
8
+ *
9
+ * In most cases, the predefined nodes `objectGroup`, `renderGroup` and `frameGroup`
10
+ * will be used when defining the {@link UniformNode#groupNode} property.
11
+ *
12
+ * - `objectGroup`: Uniform buffer per object.
13
+ * - `renderGroup`: Shared uniform buffer, updated once per render call.
14
+ * - `frameGroup`: Shared uniform buffer, updated once per frame.
15
+ *
16
+ * @augments Node
17
+ */
3
18
  class UniformGroupNode extends Node {
4
19
 
5
20
  static get type() {
@@ -8,22 +23,49 @@ class UniformGroupNode extends Node {
8
23
 
9
24
  }
10
25
 
26
+ /**
27
+ * Constructs a new uniform group node.
28
+ *
29
+ * @param {String} name - The name of the uniform group node.
30
+ * @param {Boolean} [shared=false] - Whether this uniform group node is shared or not.
31
+ * @param {Number} [order=1] - Influences the internal sorting.
32
+ */
11
33
  constructor( name, shared = false, order = 1 ) {
12
34
 
13
35
  super( 'string' );
14
36
 
37
+ /**
38
+ * The name of the uniform group node.
39
+ *
40
+ * @type {String}
41
+ */
15
42
  this.name = name;
16
- this.version = 0;
17
43
 
44
+ /**
45
+ * Whether this uniform group node is shared or not.
46
+ *
47
+ * @type {Boolean}
48
+ * @default false
49
+ */
18
50
  this.shared = shared;
19
- this.order = order;
20
- this.isUniformGroup = true;
21
51
 
22
- }
23
-
24
- set needsUpdate( value ) {
52
+ /**
53
+ * Influences the internal sorting.
54
+ * TODO: Add details when this property should be changed.
55
+ *
56
+ * @type {Number}
57
+ * @default 1
58
+ */
59
+ this.order = order;
25
60
 
26
- if ( value === true ) this.version ++;
61
+ /**
62
+ * This flag can be used for type testing.
63
+ *
64
+ * @type {Boolean}
65
+ * @readonly
66
+ * @default true
67
+ */
68
+ this.isUniformGroup = true;
27
69
 
28
70
  }
29
71
 
@@ -51,9 +93,42 @@ class UniformGroupNode extends Node {
51
93
 
52
94
  export default UniformGroupNode;
53
95
 
96
+ /**
97
+ * TSL function for creating a uniform group node with the given name.
98
+ *
99
+ * @function
100
+ * @param {String} name - The name of the uniform group node.
101
+ * @returns {UniformGroupNode}
102
+ */
54
103
  export const uniformGroup = ( name ) => new UniformGroupNode( name );
104
+
105
+ /**
106
+ * TSL function for creating a shared uniform group node with the given name and order.
107
+ *
108
+ * @function
109
+ * @param {String} name - The name of the uniform group node.
110
+ * @param {Number} [order=0] - Influences the internal sorting.
111
+ * @returns {UniformGroupNode}
112
+ */
55
113
  export const sharedUniformGroup = ( name, order = 0 ) => new UniformGroupNode( name, true, order );
56
114
 
115
+ /**
116
+ * TSL object that represents a shared uniform group node which is updated once per frame.
117
+ *
118
+ * @type {UniformGroupNode}
119
+ */
57
120
  export const frameGroup = /*@__PURE__*/ sharedUniformGroup( 'frame' );
121
+
122
+ /**
123
+ * TSL object that represents a shared uniform group node which is updated once per render.
124
+ *
125
+ * @type {UniformGroupNode}
126
+ */
58
127
  export const renderGroup = /*@__PURE__*/ sharedUniformGroup( 'render' );
128
+
129
+ /**
130
+ * TSL object that represents a uniform group node which is updated once per object.
131
+ *
132
+ * @type {UniformGroupNode}
133
+ */
59
134
  export const objectGroup = /*@__PURE__*/ uniformGroup( 'object' );
@@ -2,6 +2,13 @@ import InputNode from './InputNode.js';
2
2
  import { objectGroup } from './UniformGroupNode.js';
3
3
  import { nodeObject, getConstNodeType } from '../tsl/TSLCore.js';
4
4
 
5
+ /** @module UniformNode **/
6
+
7
+ /**
8
+ * Class for representing a uniform.
9
+ *
10
+ * @augments InputNode
11
+ */
5
12
  class UniformNode extends InputNode {
6
13
 
7
14
  static get type() {
@@ -10,17 +17,50 @@ class UniformNode extends InputNode {
10
17
 
11
18
  }
12
19
 
20
+ /**
21
+ * Constructs a new uniform node.
22
+ *
23
+ * @param {Any} value - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color, texture).
24
+ * @param {String?} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.
25
+ */
13
26
  constructor( value, nodeType = null ) {
14
27
 
15
28
  super( value, nodeType );
16
29
 
30
+ /**
31
+ * This flag can be used for type testing.
32
+ *
33
+ * @type {Boolean}
34
+ * @readonly
35
+ * @default true
36
+ */
17
37
  this.isUniformNode = true;
18
38
 
39
+ /**
40
+ * The name or label of the uniform.
41
+ *
42
+ * @type {String}
43
+ * @default ''
44
+ */
19
45
  this.name = '';
46
+
47
+ /**
48
+ * The uniform group of this uniform. By default, uniforms are
49
+ * managed per object but they might belong to a shared group
50
+ * which is updated per frame or render call.
51
+ *
52
+ * @type {UniformGroupNode}
53
+ */
20
54
  this.groupNode = objectGroup;
21
55
 
22
56
  }
23
57
 
58
+ /**
59
+ * Sets the {@link UniformNode#name} property.
60
+ *
61
+ * @param {String} name - The name of the uniform.
62
+ * @return {UniformNode} A reference to this node.
63
+ */
24
64
  label( name ) {
25
65
 
26
66
  this.name = name;
@@ -29,6 +69,12 @@ class UniformNode extends InputNode {
29
69
 
30
70
  }
31
71
 
72
+ /**
73
+ * Sets the {@link UniformNode#groupNode} property.
74
+ *
75
+ * @param {UniformGroupNode} group - The uniform group.
76
+ * @return {UniformNode} A reference to this node.
77
+ */
32
78
  setGroup( group ) {
33
79
 
34
80
  this.groupNode = group;
@@ -37,12 +83,24 @@ class UniformNode extends InputNode {
37
83
 
38
84
  }
39
85
 
86
+ /**
87
+ * Returns the {@link UniformNode#groupNode}.
88
+ *
89
+ * @return {UniformGroupNode} The uniform group.
90
+ */
40
91
  getGroup() {
41
92
 
42
93
  return this.groupNode;
43
94
 
44
95
  }
45
96
 
97
+ /**
98
+ * By default, this method returns the result of {@link Node#getHash} but derived
99
+ * classes might overwrite this method with a different implementation.
100
+ *
101
+ * @param {NodeBuilder} builder - The current node builder.
102
+ * @return {String} The uniform hash.
103
+ */
46
104
  getUniformHash( builder ) {
47
105
 
48
106
  return this.getHash( builder );
@@ -100,6 +158,14 @@ class UniformNode extends InputNode {
100
158
 
101
159
  export default UniformNode;
102
160
 
161
+ /**
162
+ * TSL function for creating a uniform node.
163
+ *
164
+ * @function
165
+ * @param {Any} arg1 - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color, texture).
166
+ * @param {String?} arg2 - The node type. If no explicit type is defined, the node tries to derive the type from its value.
167
+ * @returns {UniformNode}
168
+ */
103
169
  export const uniform = ( arg1, arg2 ) => {
104
170
 
105
171
  const nodeType = getConstNodeType( arg2 || arg1 );
@@ -1,6 +1,18 @@
1
1
  import Node from './Node.js';
2
2
  import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
3
3
 
4
+ /** @module VarNode **/
5
+
6
+ /**
7
+ * Class for representing shader variables as nodes. Variables are created from
8
+ * existing nodes like the following:
9
+ *
10
+ * ```js
11
+ * const depth = sampleDepth( uvNode ).toVar( 'depth' );
12
+ * ```
13
+ *
14
+ * @augments Node
15
+ */
4
16
  class VarNode extends Node {
5
17
 
6
18
  static get type() {
@@ -9,15 +21,47 @@ class VarNode extends Node {
9
21
 
10
22
  }
11
23
 
24
+ /**
25
+ * Constructs a new variable node.
26
+ *
27
+ * @param {Node} node - The node for which a variable should be created.
28
+ * @param {String?} name - The name of the variable in the shader.
29
+ */
12
30
  constructor( node, name = null ) {
13
31
 
14
32
  super();
15
33
 
34
+ /**
35
+ * The node for which a variable should be created.
36
+ *
37
+ * @type {Node}
38
+ */
16
39
  this.node = node;
40
+
41
+ /**
42
+ * The name of the variable in the shader. If no name is defined,
43
+ * the node system auto-generates one.
44
+ *
45
+ * @type {String?}
46
+ * @default null
47
+ */
17
48
  this.name = name;
18
49
 
50
+ /**
51
+ * `VarNode` sets this property to `true` by default.
52
+ *
53
+ * @type {Boolean}
54
+ * @default true
55
+ */
19
56
  this.global = true;
20
57
 
58
+ /**
59
+ * This flag can be used for type testing.
60
+ *
61
+ * @type {Boolean}
62
+ * @readonly
63
+ * @default true
64
+ */
21
65
  this.isVarNode = true;
22
66
 
23
67
  }
@@ -54,6 +98,14 @@ class VarNode extends Node {
54
98
 
55
99
  export default VarNode;
56
100
 
101
+ /**
102
+ * TSL function for creating a var node.
103
+ *
104
+ * @function
105
+ * @param {Node} node - The node for which a variable should be created.
106
+ * @param {String?} name - The name of the variable in the shader.
107
+ * @returns {VarNode}
108
+ */
57
109
  const createVar = /*@__PURE__*/ nodeProxy( VarNode );
58
110
 
59
111
  addMethodChaining( 'toVar', ( ...params ) => createVar( ...params ).append() );
@@ -2,6 +2,18 @@ import Node from './Node.js';
2
2
  import { NodeShaderStage } from './constants.js';
3
3
  import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
4
4
 
5
+ /** @module VaryingNode **/
6
+
7
+ /**
8
+ * Class for representing shader varyings as nodes. Varyings are create from
9
+ * existing nodes like the following:
10
+ *
11
+ * ```js
12
+ * const positionLocal = positionGeometry.varying( 'vPositionLocal' );
13
+ * ```
14
+ *
15
+ * @augments Node
16
+ */
5
17
  class VaryingNode extends Node {
6
18
 
7
19
  static get type() {
@@ -10,18 +22,50 @@ class VaryingNode extends Node {
10
22
 
11
23
  }
12
24
 
25
+ /**
26
+ * Constructs a new varying node.
27
+ *
28
+ * @param {Node} node - The node for which a varying should be created.
29
+ * @param {String?} name - The name of the varying in the shader.
30
+ */
13
31
  constructor( node, name = null ) {
14
32
 
15
33
  super();
16
34
 
35
+ /**
36
+ * The node for which a varying should be created.
37
+ *
38
+ * @type {Node}
39
+ */
17
40
  this.node = node;
41
+
42
+ /**
43
+ * The name of the varying in the shader. If no name is defined,
44
+ * the node system auto-generates one.
45
+ *
46
+ * @type {String?}
47
+ * @default null
48
+ */
18
49
  this.name = name;
19
50
 
51
+ /**
52
+ * This flag can be used for type testing.
53
+ *
54
+ * @type {Boolean}
55
+ * @readonly
56
+ * @default true
57
+ */
20
58
  this.isVaryingNode = true;
21
59
 
22
60
  }
23
61
 
24
- isGlobal() {
62
+ /**
63
+ * The method is overwritten so it always returns `true`.
64
+ *
65
+ * @param {NodeBuilder} builder - The current node builder.
66
+ * @return {Boolean} Whether this node is global or not.
67
+ */
68
+ isGlobal( /*builder*/ ) {
25
69
 
26
70
  return true;
27
71
 
@@ -41,6 +85,12 @@ class VaryingNode extends Node {
41
85
 
42
86
  }
43
87
 
88
+ /**
89
+ * This method performs the setup of a varying node with the current node builder.
90
+ *
91
+ * @param {NodeBuilder} builder - The current node builder.
92
+ * @return {NodeVarying} The node varying from the node builder.
93
+ */
44
94
  setupVarying( builder ) {
45
95
 
46
96
  const properties = builder.getNodeProperties( this );
@@ -83,7 +133,9 @@ class VaryingNode extends Node {
83
133
  const properties = builder.getNodeProperties( this );
84
134
  const varying = this.setupVarying( builder );
85
135
 
86
- if ( properties.propertyName === undefined ) {
136
+ const needsReassign = builder.shaderStage === 'fragment' && properties.reassignPosition === true && builder.context.needsPositionReassign;
137
+
138
+ if ( properties.propertyName === undefined || needsReassign ) {
87
139
 
88
140
  const type = this.getNodeType( builder );
89
141
  const propertyName = builder.getPropertyName( varying, NodeShaderStage.VERTEX );
@@ -93,6 +145,17 @@ class VaryingNode extends Node {
93
145
 
94
146
  properties.propertyName = propertyName;
95
147
 
148
+ if ( needsReassign ) {
149
+
150
+ // once reassign varying in fragment stage
151
+ properties.reassignPosition = false;
152
+
153
+ } else if ( properties.reassignPosition === undefined && builder.context.isPositionNodeInput ) {
154
+
155
+ properties.reassignPosition = true;
156
+
157
+ }
158
+
96
159
  }
97
160
 
98
161
  return builder.getPropertyName( varying );
@@ -103,6 +166,24 @@ class VaryingNode extends Node {
103
166
 
104
167
  export default VaryingNode;
105
168
 
169
+ /**
170
+ * TSL function for creating a varying node.
171
+ *
172
+ * @function
173
+ * @param {Node} node - The node for which a varying should be created.
174
+ * @param {String?} name - The name of the varying in the shader.
175
+ * @returns {VaryingNode}
176
+ */
106
177
  export const varying = /*@__PURE__*/ nodeProxy( VaryingNode );
107
178
 
179
+ /**
180
+ * Computes a node in the vertex stage.
181
+ *
182
+ * @function
183
+ * @param {Node} node - The node which should be executed in the vertex stage.
184
+ * @returns {VaryingNode}
185
+ */
186
+ export const vertexStage = ( node ) => varying( node );
187
+
108
188
  addMethodChaining( 'varying', varying );
189
+ addMethodChaining( 'vertexStage', vertexStage );
@@ -1,8 +1,24 @@
1
+ /** @module NodeConstants **/
2
+
3
+ /**
4
+ * Possible shader stages.
5
+ *
6
+ * @property {string} VERTEX The vertex shader stage.
7
+ * @property {string} FRAGMENT The fragment shader stage.
8
+ */
1
9
  export const NodeShaderStage = {
2
10
  VERTEX: 'vertex',
3
11
  FRAGMENT: 'fragment'
4
12
  };
5
13
 
14
+ /**
15
+ * Update types of a node.
16
+ *
17
+ * @property {string} NONE The update method is not executed.
18
+ * @property {string} FRAME The update method is executed per frame.
19
+ * @property {string} RENDER The update method is executed per render. A frame might be produced by multiple render calls so this value allows more detailed updates than FRAME.
20
+ * @property {string} OBJECT The update method is executed per {@link Object3D} that uses the node for rendering.
21
+ */
6
22
  export const NodeUpdateType = {
7
23
  NONE: 'none',
8
24
  FRAME: 'frame',
@@ -10,6 +26,19 @@ export const NodeUpdateType = {
10
26
  OBJECT: 'object'
11
27
  };
12
28
 
29
+ /**
30
+ * Data types of a node.
31
+ *
32
+ * @property {string} BOOLEAN Boolean type.
33
+ * @property {string} INTEGER Integer type.
34
+ * @property {string} FLOAT Float type.
35
+ * @property {string} VECTOR2 Two-dimensional vector type.
36
+ * @property {string} VECTOR3 Three-dimensional vector type.
37
+ * @property {string} VECTOR4 Four-dimensional vector type.
38
+ * @property {string} MATRIX2 2x2 matrix type.
39
+ * @property {string} MATRIX3 3x3 matrix type.
40
+ * @property {string} MATRIX4 4x4 matrix type.
41
+ */
13
42
  export const NodeType = {
14
43
  BOOLEAN: 'bool',
15
44
  INTEGER: 'int',
@@ -22,6 +51,13 @@ export const NodeType = {
22
51
  MATRIX4: 'mat4'
23
52
  };
24
53
 
54
+ /**
55
+ * Access types of a node. These are relevant for compute and storage usage.
56
+ *
57
+ * @property {string} READ_ONLY Read-only access
58
+ * @property {string} WRITE_ONLY Write-only access.
59
+ * @property {string} READ_WRITE Read and write access.
60
+ */
25
61
  export const NodeAccess = {
26
62
  READ_ONLY: 'readOnly',
27
63
  WRITE_ONLY: 'writeOnly',
@@ -5,6 +5,8 @@ import { positionView } from '../accessors/Position.js';
5
5
  import { faceDirection } from './FrontFacingNode.js';
6
6
  import { Fn, nodeProxy, float, vec2 } from '../tsl/TSLBase.js';
7
7
 
8
+ /** @module BumpMapNode **/
9
+
8
10
  // Bump Mapping Unparametrized Surfaces on the GPU by Morten S. Mikkelsen
9
11
  // https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf
10
12
 
@@ -44,6 +46,15 @@ const perturbNormalArb = Fn( ( inputs ) => {
44
46
 
45
47
  } );
46
48
 
49
+ /**
50
+ * This class can be used for applying bump maps to materials.
51
+ *
52
+ * ```js
53
+ * material.normalNode = bumpMap( texture( bumpTex ) );
54
+ * ```
55
+ *
56
+ * @augments TempNode
57
+ */
47
58
  class BumpMapNode extends TempNode {
48
59
 
49
60
  static get type() {
@@ -52,11 +63,29 @@ class BumpMapNode extends TempNode {
52
63
 
53
64
  }
54
65
 
66
+ /**
67
+ * Constructs a new bump map node.
68
+ *
69
+ * @param {Node} textureNode - Represents the bump map data.
70
+ * @param {Node?} [scaleNode=null] - Controls the intensity of the bump effect.
71
+ */
55
72
  constructor( textureNode, scaleNode = null ) {
56
73
 
57
74
  super( 'vec3' );
58
75
 
76
+ /**
77
+ * Represents the bump map data.
78
+ *
79
+ * @type {Node}
80
+ */
59
81
  this.textureNode = textureNode;
82
+
83
+ /**
84
+ * Controls the intensity of the bump effect.
85
+ *
86
+ * @type {Node?}
87
+ * @default null
88
+ */
60
89
  this.scaleNode = scaleNode;
61
90
 
62
91
  }
@@ -78,4 +107,12 @@ class BumpMapNode extends TempNode {
78
107
 
79
108
  export default BumpMapNode;
80
109
 
110
+ /**
111
+ * TSL function for creating a bump map node.
112
+ *
113
+ * @function
114
+ * @param {Node} textureNode - Represents the bump map data.
115
+ * @param {Node?} [scaleNode=null] - Controls the intensity of the bump effect.
116
+ * @returns {BumpMapNode}
117
+ */
81
118
  export const bumpMap = /*@__PURE__*/ nodeProxy( BumpMapNode );