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
@@ -9,6 +9,13 @@ import { NodeUpdateType } from '../core/constants.js';
9
9
 
10
10
  import { IntType, UnsignedIntType } from '../../constants.js';
11
11
 
12
+ /** @module TextureNode **/
13
+
14
+ /**
15
+ * This type of uniform node represents a 2D texture.
16
+ *
17
+ * @augments module:UniformNode~UniformNode
18
+ */
12
19
  class TextureNode extends UniformNode {
13
20
 
14
21
  static get type() {
@@ -17,26 +24,125 @@ class TextureNode extends UniformNode {
17
24
 
18
25
  }
19
26
 
27
+ /**
28
+ * Constructs a new texture node.
29
+ *
30
+ * @param {Texture} value - The texture.
31
+ * @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.
32
+ * @param {Node<int>?} [levelNode=null] - The level node.
33
+ * @param {Node<float>?} [biasNode=null] - The bias node.
34
+ */
20
35
  constructor( value, uvNode = null, levelNode = null, biasNode = null ) {
21
36
 
22
37
  super( value );
23
38
 
39
+ /**
40
+ * This flag can be used for type testing.
41
+ *
42
+ * @type {Boolean}
43
+ * @readonly
44
+ * @default true
45
+ */
24
46
  this.isTextureNode = true;
25
47
 
48
+ /**
49
+ * Represents the texture coordinates.
50
+ *
51
+ * @type {Node<vec2|vec3>?}
52
+ * @default null
53
+ */
26
54
  this.uvNode = uvNode;
55
+
56
+ /**
57
+ * Represents the mip level that should be selected.
58
+ *
59
+ * @type {Node<int>?}
60
+ * @default null
61
+ */
27
62
  this.levelNode = levelNode;
63
+
64
+ /**
65
+ * Represents the bias to be applied during level-of-detail computation.
66
+ *
67
+ * @type {Node<float>?}
68
+ * @default null
69
+ */
28
70
  this.biasNode = biasNode;
71
+
72
+ /**
73
+ * Represents a reference value a texture sample is compared to.
74
+ *
75
+ * @type {Node<float>?}
76
+ * @default null
77
+ */
29
78
  this.compareNode = null;
79
+
80
+ /**
81
+ * When using texture arrays, the depth node defines the layer to select.
82
+ *
83
+ * @type {Node<int>?}
84
+ * @default null
85
+ */
30
86
  this.depthNode = null;
87
+
88
+ /**
89
+ * When defined, a texture is sampled using explicit gradients.
90
+ *
91
+ * @type {Array<Node<vec2>>?}
92
+ * @default null
93
+ */
31
94
  this.gradNode = null;
32
95
 
96
+ /**
97
+ * Whether texture values should be sampled or fetched.
98
+ *
99
+ * @type {Boolean}
100
+ * @default true
101
+ */
33
102
  this.sampler = true;
103
+
104
+ /**
105
+ * Whether the uv transformation matrix should be
106
+ * automatically updated or not. Use `setUpdateMatrix()`
107
+ * if you want to change the value of the property.
108
+ *
109
+ * @type {Boolean}
110
+ * @default false
111
+ */
34
112
  this.updateMatrix = false;
113
+
114
+ /**
115
+ * By default the `update()` method is not executed. `setUpdateMatrix()`
116
+ * sets the value to `frame` when the uv transformation matrix should
117
+ * automatically be updated.
118
+ *
119
+ * @type {String}
120
+ * @default 'none'
121
+ */
35
122
  this.updateType = NodeUpdateType.NONE;
36
123
 
124
+ /**
125
+ * The reference node.
126
+ *
127
+ * @type {Node?}
128
+ * @default null
129
+ */
37
130
  this.referenceNode = null;
38
131
 
132
+ /**
133
+ * The texture value is stored in a private property.
134
+ *
135
+ * @private
136
+ * @type {Texture}
137
+ */
39
138
  this._value = value;
139
+
140
+ /**
141
+ * The uniform node that represents the uv transformation matrix.
142
+ *
143
+ * @private
144
+ * @type {UniformNode<mat3>?}
145
+ */
40
146
  this._matrixUniform = null;
41
147
 
42
148
  this.setUpdateMatrix( uvNode === null );
@@ -57,18 +163,35 @@ class TextureNode extends UniformNode {
57
163
 
58
164
  }
59
165
 
166
+ /**
167
+ * The texture value.
168
+ *
169
+ * @type {Texture}
170
+ */
60
171
  get value() {
61
172
 
62
173
  return this.referenceNode ? this.referenceNode.value : this._value;
63
174
 
64
175
  }
65
176
 
177
+ /**
178
+ * Overwritten since the uniform hash is defined by the texture's UUID.
179
+ *
180
+ * @param {NodeBuilder} builder - The current node builder.
181
+ * @return {String} The uniform hash.
182
+ */
66
183
  getUniformHash( /*builder*/ ) {
67
184
 
68
185
  return this.value.uuid;
69
186
 
70
187
  }
71
188
 
189
+ /**
190
+ * Overwritten since the node type is inferred from the texture type.
191
+ *
192
+ * @param {NodeBuilder} builder - The current node builder.
193
+ * @return {String} The node type.
194
+ */
72
195
  getNodeType( /*builder*/ ) {
73
196
 
74
197
  if ( this.value.isDepthTexture === true ) return 'float';
@@ -87,24 +210,47 @@ class TextureNode extends UniformNode {
87
210
 
88
211
  }
89
212
 
213
+ /**
214
+ * Overwrites the default implementation to return a fixed value `'texture'`.
215
+ *
216
+ * @param {NodeBuilder} builder - The current node builder.
217
+ * @return {String} The input type.
218
+ */
90
219
  getInputType( /*builder*/ ) {
91
220
 
92
221
  return 'texture';
93
222
 
94
223
  }
95
224
 
225
+ /**
226
+ * Returns a default uvs based on the current texture's channel.
227
+ *
228
+ * @return {AttributeNode<vec2>} The default uvs.
229
+ */
96
230
  getDefaultUV() {
97
231
 
98
232
  return uv( this.value.channel );
99
233
 
100
234
  }
101
235
 
236
+ /**
237
+ * Overwritten to always return the texture reference of the node.
238
+ *
239
+ * @param {Any} state - This method can be invocated in different contexts so `state` can refer to any object type.
240
+ * @return {Texture} The texture reference.
241
+ */
102
242
  updateReference( /*state*/ ) {
103
243
 
104
244
  return this.value;
105
245
 
106
246
  }
107
247
 
248
+ /**
249
+ * Transforms the given uv node with the texture transformation matrix.
250
+ *
251
+ * @param {Node} uvNode - The uv node to transform.
252
+ * @return {Node} The transformed uv node.
253
+ */
108
254
  getTransformedUV( uvNode ) {
109
255
 
110
256
  if ( this._matrixUniform === null ) this._matrixUniform = uniform( this.value.matrix );
@@ -113,15 +259,29 @@ class TextureNode extends UniformNode {
113
259
 
114
260
  }
115
261
 
262
+ /**
263
+ * Defines whether the uv transformation matrix should automatically be updated or not.
264
+ *
265
+ * @param {Boolean} value - The update toggle.
266
+ * @return {TextureNode} A reference to this node.
267
+ */
116
268
  setUpdateMatrix( value ) {
117
269
 
118
270
  this.updateMatrix = value;
119
- this.updateType = value ? NodeUpdateType.FRAME : NodeUpdateType.NONE;
271
+ this.updateType = value ? NodeUpdateType.RENDER : NodeUpdateType.NONE;
120
272
 
121
273
  return this;
122
274
 
123
275
  }
124
276
 
277
+ /**
278
+ * Setups the uv node. Depending on the backend as well as texture's image and type, it might be necessary
279
+ * to modify the uv node for correct sampling.
280
+ *
281
+ * @param {NodeBuilder} builder - The current node builder.
282
+ * @param {Node} uvNode - The uv node to setup.
283
+ * @return {Node} The updated uv node.
284
+ */
125
285
  setupUV( builder, uvNode ) {
126
286
 
127
287
  const texture = this.value;
@@ -144,6 +304,11 @@ class TextureNode extends UniformNode {
144
304
 
145
305
  }
146
306
 
307
+ /**
308
+ * Setups texture node by preparing the internal nodes for code generation.
309
+ *
310
+ * @param {NodeBuilder} builder - The current node builder.
311
+ */
147
312
  setup( builder ) {
148
313
 
149
314
  const properties = builder.getNodeProperties( this );
@@ -151,6 +316,16 @@ class TextureNode extends UniformNode {
151
316
 
152
317
  //
153
318
 
319
+ const texture = this.value;
320
+
321
+ if ( ! texture || texture.isTexture !== true ) {
322
+
323
+ throw new Error( 'THREE.TSL: `texture( value )` function expects a valid instance of THREE.Texture().' );
324
+
325
+ }
326
+
327
+ //
328
+
154
329
  let uvNode = this.uvNode;
155
330
 
156
331
  if ( ( uvNode === null || builder.context.forceUVContext === true ) && builder.context.getUV ) {
@@ -190,12 +365,32 @@ class TextureNode extends UniformNode {
190
365
 
191
366
  }
192
367
 
368
+ /**
369
+ * Generates the uv code snippet.
370
+ *
371
+ * @param {NodeBuilder} builder - The current node builder.
372
+ * @param {Node} uvNode - The uv node to generate code for.
373
+ * @return {String} The generated code snippet.
374
+ */
193
375
  generateUV( builder, uvNode ) {
194
376
 
195
377
  return uvNode.build( builder, this.sampler === true ? 'vec2' : 'ivec2' );
196
378
 
197
379
  }
198
380
 
381
+ /**
382
+ * Generates the snippet for the texture sampling.
383
+ *
384
+ * @param {NodeBuilder} builder - The current node builder.
385
+ * @param {String} textureProperty - The texture property.
386
+ * @param {String} uvSnippet - The uv snippet.
387
+ * @param {String} levelSnippet - The level snippet.
388
+ * @param {String} biasSnippet - The bias snippet.
389
+ * @param {String} depthSnippet - The depth snippet.
390
+ * @param {String} compareSnippet - The compare snippet.
391
+ * @param {String} gradSnippet - The grad snippet.
392
+ * @return {String} The generated code snippet.
393
+ */
199
394
  generateSnippet( builder, textureProperty, uvSnippet, levelSnippet, biasSnippet, depthSnippet, compareSnippet, gradSnippet ) {
200
395
 
201
396
  const texture = this.value;
@@ -232,18 +427,18 @@ class TextureNode extends UniformNode {
232
427
 
233
428
  }
234
429
 
430
+ /**
431
+ * Generates the code snippet of the texture node.
432
+ *
433
+ * @param {NodeBuilder} builder - The current node builder.
434
+ * @param {String} output - The current output.
435
+ * @return {String} The generated code snippet.
436
+ */
235
437
  generate( builder, output ) {
236
438
 
237
- const properties = builder.getNodeProperties( this );
238
-
239
439
  const texture = this.value;
240
440
 
241
- if ( ! texture || texture.isTexture !== true ) {
242
-
243
- throw new Error( 'TextureNode: Need a three.js texture.' );
244
-
245
- }
246
-
441
+ const properties = builder.getNodeProperties( this );
247
442
  const textureProperty = super.generate( builder, 'property' );
248
443
 
249
444
  if ( output === 'sampler' ) {
@@ -299,6 +494,12 @@ class TextureNode extends UniformNode {
299
494
 
300
495
  }
301
496
 
497
+ /**
498
+ * Sets the sampler value.
499
+ *
500
+ * @param {Boolean} value - The sampler value to set.
501
+ * @return {TextureNode} A reference to this texture node.
502
+ */
302
503
  setSampler( value ) {
303
504
 
304
505
  this.sampler = value;
@@ -307,6 +508,11 @@ class TextureNode extends UniformNode {
307
508
 
308
509
  }
309
510
 
511
+ /**
512
+ * Returns the sampler value.
513
+ *
514
+ * @return {Boolean} The sampler value.
515
+ */
310
516
  getSampler() {
311
517
 
312
518
  return this.sampler;
@@ -315,7 +521,21 @@ class TextureNode extends UniformNode {
315
521
 
316
522
  // @TODO: Move to TSL
317
523
 
318
- uv( uvNode ) {
524
+ uv( uvNode ) { // @deprecated, r172
525
+
526
+ console.warn( 'THREE.TextureNode: .uv() has been renamed. Use .sample() instead.' );
527
+
528
+ return this.sample( uvNode );
529
+
530
+ }
531
+
532
+ /**
533
+ * Samples the texture with the given uv node.
534
+ *
535
+ * @param {Node} uvNode - The uv node.
536
+ * @return {TextureNode} A texture node representing the texture sample.
537
+ */
538
+ sample( uvNode ) {
319
539
 
320
540
  const textureNode = this.clone();
321
541
  textureNode.uvNode = nodeObject( uvNode );
@@ -325,6 +545,12 @@ class TextureNode extends UniformNode {
325
545
 
326
546
  }
327
547
 
548
+ /**
549
+ * Samples a blurred version of the texture by defining an internal bias.
550
+ *
551
+ * @param {Node<float>} amountNode - How blurred the texture should be.
552
+ * @return {TextureNode} A texture node representing the texture sample.
553
+ */
328
554
  blur( amountNode ) {
329
555
 
330
556
  const textureNode = this.clone();
@@ -335,6 +561,12 @@ class TextureNode extends UniformNode {
335
561
 
336
562
  }
337
563
 
564
+ /**
565
+ * Samples a specific mip of the texture.
566
+ *
567
+ * @param {Node<int>} levelNode - The mip level to sample.
568
+ * @return {TextureNode} A texture node representing the texture sample.
569
+ */
338
570
  level( levelNode ) {
339
571
 
340
572
  const textureNode = this.clone();
@@ -345,12 +577,24 @@ class TextureNode extends UniformNode {
345
577
 
346
578
  }
347
579
 
580
+ /**
581
+ * Returns the texture size of the requested level.
582
+ *
583
+ * @param {Node<int>} levelNode - The level to compute the size for.
584
+ * @return {TextureSizeNode} The texture size.
585
+ */
348
586
  size( levelNode ) {
349
587
 
350
588
  return textureSize( this, levelNode );
351
589
 
352
590
  }
353
591
 
592
+ /**
593
+ * Samples the texture with the given bias.
594
+ *
595
+ * @param {Node<float>} biasNode - The bias node.
596
+ * @return {TextureNode} A texture node representing the texture sample.
597
+ */
354
598
  bias( biasNode ) {
355
599
 
356
600
  const textureNode = this.clone();
@@ -361,6 +605,12 @@ class TextureNode extends UniformNode {
361
605
 
362
606
  }
363
607
 
608
+ /**
609
+ * Samples the texture by executing a compare operation.
610
+ *
611
+ * @param {Node<float>} compareNode - The node that defines the compare value.
612
+ * @return {TextureNode} A texture node representing the texture sample.
613
+ */
364
614
  compare( compareNode ) {
365
615
 
366
616
  const textureNode = this.clone();
@@ -371,6 +621,13 @@ class TextureNode extends UniformNode {
371
621
 
372
622
  }
373
623
 
624
+ /**
625
+ * Samples the texture using an explicit gradient.
626
+ *
627
+ * @param {Node<vec2>} gradNodeX - The gradX node.
628
+ * @param {Node<vec2>} gradNodeY - The gradY node.
629
+ * @return {TextureNode} A texture node representing the texture sample.
630
+ */
374
631
  grad( gradNodeX, gradNodeY ) {
375
632
 
376
633
  const textureNode = this.clone();
@@ -381,6 +638,12 @@ class TextureNode extends UniformNode {
381
638
 
382
639
  }
383
640
 
641
+ /**
642
+ * Samples the texture by defining a depth node.
643
+ *
644
+ * @param {Node<int>} depthNode - The depth node.
645
+ * @return {TextureNode} A texture node representing the texture sample.
646
+ */
384
647
  depth( depthNode ) {
385
648
 
386
649
  const textureNode = this.clone();
@@ -415,6 +678,9 @@ class TextureNode extends UniformNode {
415
678
 
416
679
  }
417
680
 
681
+ /**
682
+ * The update is used to implement the update of the uv transformation matrix.
683
+ */
418
684
  update() {
419
685
 
420
686
  const texture = this.value;
@@ -430,6 +696,11 @@ class TextureNode extends UniformNode {
430
696
 
431
697
  }
432
698
 
699
+ /**
700
+ * Clones the texture node.
701
+ *
702
+ * @return {TextureNode} The cloned texture node.
703
+ */
433
704
  clone() {
434
705
 
435
706
  const newNode = new this.constructor( this.value, this.uvNode, this.levelNode, this.biasNode );
@@ -443,9 +714,37 @@ class TextureNode extends UniformNode {
443
714
 
444
715
  export default TextureNode;
445
716
 
717
+ /**
718
+ * TSL function for creating a texture node.
719
+ *
720
+ * @function
721
+ * @param {Texture} value - The texture.
722
+ * @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.
723
+ * @param {Node<int>?} [levelNode=null] - The level node.
724
+ * @param {Node<float>?} [biasNode=null] - The bias node.
725
+ * @returns {TextureNode}
726
+ */
446
727
  export const texture = /*@__PURE__*/ nodeProxy( TextureNode );
728
+
729
+ /**
730
+ * TSL function for creating a texture node that fetches/loads texels without interpolation.
731
+ *
732
+ * @function
733
+ * @param {Texture} value - The texture.
734
+ * @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.
735
+ * @param {Node<int>?} [levelNode=null] - The level node.
736
+ * @param {Node<float>?} [biasNode=null] - The bias node.
737
+ * @returns {TextureNode}
738
+ */
447
739
  export const textureLoad = ( ...params ) => texture( ...params ).setSampler( false );
448
740
 
449
741
  //export const textureLevel = ( value, uv, level ) => texture( value, uv ).level( level );
450
742
 
743
+ /**
744
+ * Converts a texture or texture node to a sampler.
745
+ *
746
+ * @function
747
+ * @param {TextureNode|Texture} aTexture - The texture or texture node to convert.
748
+ * @returns {Node}
749
+ */
451
750
  export const sampler = ( aTexture ) => ( aTexture.isNode === true ? aTexture : texture( aTexture ) ).convert( 'sampler' );
@@ -1,6 +1,15 @@
1
1
  import Node from '../core/Node.js';
2
2
  import { nodeProxy } from '../tsl/TSLBase.js';
3
3
 
4
+ /** @module TextureSizeNode **/
5
+
6
+ /**
7
+ * A node that represents the dimensions of a texture. The texture size is
8
+ * retrieved in the shader via built-in shader functions like `textureDimensions()`
9
+ * or `textureSize()`.
10
+ *
11
+ * @augments Node
12
+ */
4
13
  class TextureSizeNode extends Node {
5
14
 
6
15
  static get type() {
@@ -9,13 +18,38 @@ class TextureSizeNode extends Node {
9
18
 
10
19
  }
11
20
 
21
+ /**
22
+ * Constructs a new texture size node.
23
+ *
24
+ * @param {TextureNode} textureNode - A texture node which size should be retrieved.
25
+ * @param {Node<int>?} [levelNode=null] - A level node which defines the requested mip.
26
+ */
12
27
  constructor( textureNode, levelNode = null ) {
13
28
 
14
29
  super( 'uvec2' );
15
30
 
31
+ /**
32
+ * This flag can be used for type testing.
33
+ *
34
+ * @type {Boolean}
35
+ * @readonly
36
+ * @default true
37
+ */
16
38
  this.isTextureSizeNode = true;
17
39
 
40
+ /**
41
+ * A texture node which size should be retrieved.
42
+ *
43
+ * @type {TextureNode}
44
+ */
18
45
  this.textureNode = textureNode;
46
+
47
+ /**
48
+ * A level node which defines the requested mip.
49
+ *
50
+ * @type {Node<int>}
51
+ * @default null
52
+ */
19
53
  this.levelNode = levelNode;
20
54
 
21
55
  }
@@ -33,4 +67,12 @@ class TextureSizeNode extends Node {
33
67
 
34
68
  export default TextureSizeNode;
35
69
 
70
+ /**
71
+ * TSL function for creating a texture size node.
72
+ *
73
+ * @function
74
+ * @param {TextureNode} textureNode - A texture node which size should be retrieved.
75
+ * @param {Node<int>?} [levelNode=null] - A level node which defines the requested mip.
76
+ * @returns {TextureSizeNode}
77
+ */
36
78
  export const textureSize = /*@__PURE__*/ nodeProxy( TextureSizeNode );
@@ -1,3 +1,12 @@
1
1
  import { attribute } from '../core/AttributeNode.js';
2
2
 
3
- export const uv = ( index ) => attribute( 'uv' + ( index > 0 ? index : '' ), 'vec2' );
3
+ /** @module UV **/
4
+
5
+ /**
6
+ * TSL function for creating an uv attribute node with the given index.
7
+ *
8
+ * @function
9
+ * @param {Number} [index=0] - The uv index.
10
+ * @return {AttributeNode<vec2>} The uv attribute node.
11
+ */
12
+ export const uv = ( index = 0 ) => attribute( 'uv' + ( index > 0 ? index : '' ), 'vec2' );