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
@@ -4,41 +4,110 @@ import { Vector4 } from '../../math/Vector4.js';
4
4
 
5
5
  const _plane = /*@__PURE__*/ new Plane();
6
6
 
7
+ /**
8
+ * Represents the state that is used to perform clipping via clipping planes.
9
+ * There is a default clipping context for each render context. When the
10
+ * scene holds instances of `ClippingGroup`, there will be a context for each
11
+ * group.
12
+ *
13
+ * @private
14
+ */
7
15
  class ClippingContext {
8
16
 
17
+ /**
18
+ * Constructs a new clipping context.
19
+ *
20
+ * @param {ClippingContext?} [parentContext=null] - A reference to the parent clipping context.
21
+ */
9
22
  constructor( parentContext = null ) {
10
23
 
24
+ /**
25
+ * The clipping context's version.
26
+ *
27
+ * @type {Number}
28
+ * @readonly
29
+ */
11
30
  this.version = 0;
12
31
 
32
+ /**
33
+ * Whether the intersection of the clipping planes is used to clip objects, rather than their union.
34
+ *
35
+ * @type {Boolean?}
36
+ * @default null
37
+ */
13
38
  this.clipIntersection = null;
14
- this.cacheKey = '';
15
-
16
-
17
- if ( parentContext === null ) {
18
39
 
19
- this.intersectionPlanes = [];
20
- this.unionPlanes = [];
21
-
22
- this.viewNormalMatrix = new Matrix3();
23
- this.clippingGroupContexts = new WeakMap();
40
+ /**
41
+ * The clipping context's cache key.
42
+ *
43
+ * @type {String}
44
+ */
45
+ this.cacheKey = '';
24
46
 
25
- this.shadowPass = false;
47
+ /**
48
+ * Whether the shadow pass is active or not.
49
+ *
50
+ * @type {Boolean}
51
+ * @default false
52
+ */
53
+ this.shadowPass = false;
54
+
55
+ /**
56
+ * The view normal matrix.
57
+ *
58
+ * @type {Matrix3}
59
+ */
60
+ this.viewNormalMatrix = new Matrix3();
61
+
62
+ /**
63
+ * Internal cache for maintaining clipping contexts.
64
+ *
65
+ * @type {WeakMap<ClippingGroup,ClippingContext>}
66
+ */
67
+ this.clippingGroupContexts = new WeakMap();
68
+
69
+ /**
70
+ * The intersection planes.
71
+ *
72
+ * @type {Array<Vector4>}
73
+ */
74
+ this.intersectionPlanes = [];
75
+
76
+ /**
77
+ * The intersection planes.
78
+ *
79
+ * @type {Array<Vector4>}
80
+ */
81
+ this.unionPlanes = [];
82
+
83
+ /**
84
+ * The version of the clipping context's parent context.
85
+ *
86
+ * @type {Number?}
87
+ * @readonly
88
+ */
89
+ this.parentVersion = null;
26
90
 
27
- } else {
91
+ if ( parentContext !== null ) {
28
92
 
29
93
  this.viewNormalMatrix = parentContext.viewNormalMatrix;
30
94
  this.clippingGroupContexts = parentContext.clippingGroupContexts;
31
95
 
32
96
  this.shadowPass = parentContext.shadowPass;
33
-
34
97
  this.viewMatrix = parentContext.viewMatrix;
35
98
 
36
99
  }
37
100
 
38
- this.parentVersion = null;
39
-
40
101
  }
41
102
 
103
+ /**
104
+ * Projects the given source clipping planes and writes the result into the
105
+ * destination array.
106
+ *
107
+ * @param {Array<Plane>} source - The source clipping planes.
108
+ * @param {Array<Vector4>} destination - The destination.
109
+ * @param {Number} offset - The offset.
110
+ */
42
111
  projectPlanes( source, destination, offset ) {
43
112
 
44
113
  const l = source.length;
@@ -59,15 +128,27 @@ class ClippingContext {
59
128
 
60
129
  }
61
130
 
131
+ /**
132
+ * Updates the root clipping context of a scene.
133
+ *
134
+ * @param {Scene} scene - The scene.
135
+ * @param {Camera} camera - The camera that is used to render the scene.
136
+ */
62
137
  updateGlobal( scene, camera ) {
63
138
 
64
- this.shadowPass = ( scene.overrideMaterial !== null && scene.overrideMaterial.isShadowNodeMaterial );
139
+ this.shadowPass = ( scene.overrideMaterial !== null && scene.overrideMaterial.isShadowPassMaterial );
65
140
  this.viewMatrix = camera.matrixWorldInverse;
66
141
 
67
142
  this.viewNormalMatrix.getNormalMatrix( this.viewMatrix );
68
143
 
69
144
  }
70
145
 
146
+ /**
147
+ * Updates the clipping context.
148
+ *
149
+ * @param {ClippingContext} parentContext - The parent context.
150
+ * @param {ClippingGroup} clippingGroup - The clipping group this context belongs to.
151
+ */
71
152
  update( parentContext, clippingGroup ) {
72
153
 
73
154
  let update = false;
@@ -139,6 +220,12 @@ class ClippingContext {
139
220
 
140
221
  }
141
222
 
223
+ /**
224
+ * Returns a clipping context for the given clipping group.
225
+ *
226
+ * @param {ClippingGroup} clippingGroup - The clipping group.
227
+ * @return {ClippingContext} The clipping context.
228
+ */
142
229
  getGroupContext( clippingGroup ) {
143
230
 
144
231
  if ( this.shadowPass && ! clippingGroup.clipShadows ) return this;
@@ -158,6 +245,12 @@ class ClippingContext {
158
245
 
159
246
  }
160
247
 
248
+ /**
249
+ * The count of union clipping planes.
250
+ *
251
+ * @type {Number}
252
+ * @readonly
253
+ */
161
254
  get unionClippingCount() {
162
255
 
163
256
  return this.unionPlanes.length;
@@ -1,7 +1,25 @@
1
1
  import { Color } from '../../math/Color.js';
2
2
 
3
+ /**
4
+ * A four-component version of {@link Color} which is internally
5
+ * used by the renderer to represents clear color with alpha as
6
+ * one object.
7
+ *
8
+ * @private
9
+ * @augments Color
10
+ */
3
11
  class Color4 extends Color {
4
12
 
13
+ /**
14
+ * Constructs a new four-component color.
15
+ * You can also pass a single THREE.Color, hex or
16
+ * string argument to this constructor.
17
+ *
18
+ * @param {Number|String} [r=1] - The red value.
19
+ * @param {Number} [g=1] - The green value.
20
+ * @param {Number} [b=1] - The blue value.
21
+ * @param {Number} [a=1] - The alpha value.
22
+ */
5
23
  constructor( r, g, b, a = 1 ) {
6
24
 
7
25
  super( r, g, b );
@@ -10,6 +28,17 @@ class Color4 extends Color {
10
28
 
11
29
  }
12
30
 
31
+ /**
32
+ * Overwrites the default to honor alpha.
33
+ * You can also pass a single THREE.Color, hex or
34
+ * string argument to this method.
35
+ *
36
+ * @param {Number|String} r - The red value.
37
+ * @param {Number} g - The green value.
38
+ * @param {Number} b - The blue value.
39
+ * @param {Number} [a=1] - The alpha value.
40
+ * @return {Color4} A reference to this object.
41
+ */
13
42
  set( r, g, b, a = 1 ) {
14
43
 
15
44
  this.a = a;
@@ -18,6 +47,12 @@ class Color4 extends Color {
18
47
 
19
48
  }
20
49
 
50
+ /**
51
+ * Overwrites the default to honor alpha.
52
+ *
53
+ * @param {Color4} color - The color to copy.
54
+ * @return {Color4} A reference to this object.
55
+ */
21
56
  copy( color ) {
22
57
 
23
58
  if ( color.a !== undefined ) this.a = color.a;
@@ -26,6 +61,11 @@ class Color4 extends Color {
26
61
 
27
62
  }
28
63
 
64
+ /**
65
+ * Overwrites the default to honor alpha.
66
+ *
67
+ * @return {Color4} The cloned color.
68
+ */
29
69
  clone() {
30
70
 
31
71
  return new this.constructor( this.r, this.g, this.b, this.a );
@@ -1,13 +1,37 @@
1
1
  import Pipeline from './Pipeline.js';
2
2
 
3
+ /**
4
+ * Class for representing compute pipelines.
5
+ *
6
+ * @private
7
+ * @augments Pipeline
8
+ */
3
9
  class ComputePipeline extends Pipeline {
4
10
 
11
+ /**
12
+ * Constructs a new render pipeline.
13
+ *
14
+ * @param {String} cacheKey - The pipeline's cache key.
15
+ * @param {ProgrammableStage} computeProgram - The pipeline's compute shader.
16
+ */
5
17
  constructor( cacheKey, computeProgram ) {
6
18
 
7
19
  super( cacheKey );
8
20
 
21
+ /**
22
+ * The pipeline's compute shader.
23
+ *
24
+ * @type {ProgrammableStage}
25
+ */
9
26
  this.computeProgram = computeProgram;
10
27
 
28
+ /**
29
+ * This flag can be used for type testing.
30
+ *
31
+ * @type {Boolean}
32
+ * @readonly
33
+ * @default true
34
+ */
11
35
  this.isComputePipeline = true;
12
36
 
13
37
  }
@@ -12,6 +12,12 @@ import { BackSide, NoBlending, LinearFilter, LinearMipmapLinearFilter } from '..
12
12
 
13
13
  // @TODO: Consider rename WebGLCubeRenderTarget to just CubeRenderTarget
14
14
 
15
+ /**
16
+ * This class represents a cube render target. It is a special version
17
+ * of `WebGLCubeRenderTarget` which is compatible with `WebGPURenderer`.
18
+ *
19
+ * @augments WebGLCubeRenderTarget
20
+ */
15
21
  class CubeRenderTarget extends WebGLCubeRenderTarget {
16
22
 
17
23
  constructor( size = 1, options = {} ) {
@@ -22,6 +28,13 @@ class CubeRenderTarget extends WebGLCubeRenderTarget {
22
28
 
23
29
  }
24
30
 
31
+ /**
32
+ * Converts the given equirectangular texture to a cube map.
33
+ *
34
+ * @param {Renderer} renderer - The renderer.
35
+ * @param {Texture} texture - The equirectangular texture.
36
+ * @return {CubeRenderTarget} A reference to this cube render target.
37
+ */
25
38
  fromEquirectangularTexture( renderer, texture ) {
26
39
 
27
40
  const currentMinFilter = texture.minFilter;
@@ -1,11 +1,32 @@
1
+ /**
2
+ * Data structure for the renderer. It is intended to manage
3
+ * data of objects in dictionaries.
4
+ *
5
+ * @private
6
+ */
1
7
  class DataMap {
2
8
 
9
+ /**
10
+ * Constructs a new data map.
11
+ */
3
12
  constructor() {
4
13
 
14
+ /**
15
+ * `DataMap` internally uses a weak map
16
+ * to manage its data.
17
+ *
18
+ * @type {WeakMap}
19
+ */
5
20
  this.data = new WeakMap();
6
21
 
7
22
  }
8
23
 
24
+ /**
25
+ * Returns the dictionary for the given object.
26
+ *
27
+ * @param {Object} object - The object.
28
+ * @return {Object} The dictionary.
29
+ */
9
30
  get( object ) {
10
31
 
11
32
  let map = this.data.get( object );
@@ -21,9 +42,15 @@ class DataMap {
21
42
 
22
43
  }
23
44
 
45
+ /**
46
+ * Deletes the dictionary for the given object.
47
+ *
48
+ * @param {Object} object - The object.
49
+ * @return {Object?} The deleted dictionary.
50
+ */
24
51
  delete( object ) {
25
52
 
26
- let map;
53
+ let map = null;
27
54
 
28
55
  if ( this.data.has( object ) ) {
29
56
 
@@ -37,12 +64,21 @@ class DataMap {
37
64
 
38
65
  }
39
66
 
67
+ /**
68
+ * Returns `true` if the given object has a dictionary defined.
69
+ *
70
+ * @param {Object} object - The object to test.
71
+ * @return {Boolean} Whether a dictionary is defined or not.
72
+ */
40
73
  has( object ) {
41
74
 
42
75
  return this.data.has( object );
43
76
 
44
77
  }
45
78
 
79
+ /**
80
+ * Frees internal resources.
81
+ */
46
82
  dispose() {
47
83
 
48
84
  this.data = new WeakMap();
@@ -1,28 +1,31 @@
1
1
  import DataMap from './DataMap.js';
2
2
  import { AttributeType } from './Constants.js';
3
+ import { arrayNeedsUint32 } from '../../utils.js';
3
4
 
4
5
  import { Uint16BufferAttribute, Uint32BufferAttribute } from '../../core/BufferAttribute.js';
5
6
 
6
- function arrayNeedsUint32( array ) {
7
-
8
- // assumes larger values usually on last
9
-
10
- for ( let i = array.length - 1; i >= 0; -- i ) {
11
-
12
- if ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565
13
-
14
- }
15
-
16
- return false;
17
-
18
- }
19
-
7
+ /**
8
+ * Returns the wireframe version for the given geometry.
9
+ *
10
+ * @private
11
+ * @function
12
+ * @param {BufferGeometry} geometry - The geometry.
13
+ * @return {Number} The version.
14
+ */
20
15
  function getWireframeVersion( geometry ) {
21
16
 
22
17
  return ( geometry.index !== null ) ? geometry.index.version : geometry.attributes.position.version;
23
18
 
24
19
  }
25
20
 
21
+ /**
22
+ * Returns a wireframe index attribute for the given geometry.
23
+ *
24
+ * @private
25
+ * @function
26
+ * @param {BufferGeometry} geometry - The geometry.
27
+ * @return {BufferAttribute} The wireframe index attribute.
28
+ */
26
29
  function getWireframeIndex( geometry ) {
27
30
 
28
31
  const indices = [];
@@ -67,21 +70,61 @@ function getWireframeIndex( geometry ) {
67
70
 
68
71
  }
69
72
 
73
+ /**
74
+ * This renderer module manages geometries.
75
+ *
76
+ * @private
77
+ * @augments DataMap
78
+ */
70
79
  class Geometries extends DataMap {
71
80
 
81
+ /**
82
+ * Constructs a new geometry management component.
83
+ *
84
+ * @param {Attributes} attributes - Renderer component for managing attributes.
85
+ * @param {Info} info - Renderer component for managing metrics and monitoring data.
86
+ */
72
87
  constructor( attributes, info ) {
73
88
 
74
89
  super();
75
90
 
91
+ /**
92
+ * Renderer component for managing attributes.
93
+ *
94
+ * @type {Attributes}
95
+ */
76
96
  this.attributes = attributes;
97
+
98
+ /**
99
+ * Renderer component for managing metrics and monitoring data.
100
+ *
101
+ * @type {Info}
102
+ */
77
103
  this.info = info;
78
104
 
105
+ /**
106
+ * Weak Map for managing attributes for wireframe rendering.
107
+ *
108
+ * @type {WeakMap<BufferGeometry,BufferAttribute>}
109
+ */
79
110
  this.wireframes = new WeakMap();
80
111
 
112
+ /**
113
+ * This Weak Map is used to make sure buffer attributes are
114
+ * updated only once per render call.
115
+ *
116
+ * @type {WeakMap<BufferAttribute,Number>}
117
+ */
81
118
  this.attributeCall = new WeakMap();
82
119
 
83
120
  }
84
121
 
122
+ /**
123
+ * Returns `true` if the given render object has an initialized geometry.
124
+ *
125
+ * @param {RenderObject} renderObject - The render object.
126
+ * @return {Boolean} Whether if the given render object has an initialized geometry or not.
127
+ */
85
128
  has( renderObject ) {
86
129
 
87
130
  const geometry = renderObject.geometry;
@@ -90,6 +133,11 @@ class Geometries extends DataMap {
90
133
 
91
134
  }
92
135
 
136
+ /**
137
+ * Prepares the geometry of the given render object for rendering.
138
+ *
139
+ * @param {RenderObject} renderObject - The render object.
140
+ */
93
141
  updateForRender( renderObject ) {
94
142
 
95
143
  if ( this.has( renderObject ) === false ) this.initGeometry( renderObject );
@@ -98,6 +146,11 @@ class Geometries extends DataMap {
98
146
 
99
147
  }
100
148
 
149
+ /**
150
+ * Initializes the geometry of the given render object.
151
+ *
152
+ * @param {RenderObject} renderObject - The render object.
153
+ */
101
154
  initGeometry( renderObject ) {
102
155
 
103
156
  const geometry = renderObject.geometry;
@@ -142,6 +195,11 @@ class Geometries extends DataMap {
142
195
 
143
196
  }
144
197
 
198
+ /**
199
+ * Updates the geometry attributes of the given render object.
200
+ *
201
+ * @param {RenderObject} renderObject - The render object.
202
+ */
145
203
  updateAttributes( renderObject ) {
146
204
 
147
205
  // attributes
@@ -184,6 +242,12 @@ class Geometries extends DataMap {
184
242
 
185
243
  }
186
244
 
245
+ /**
246
+ * Updates the given attribute.
247
+ *
248
+ * @param {BufferAttribute} attribute - The attribute to update.
249
+ * @param {Number} type - The attribute type.
250
+ */
187
251
  updateAttribute( attribute, type ) {
188
252
 
189
253
  const callId = this.info.render.calls;
@@ -220,12 +284,25 @@ class Geometries extends DataMap {
220
284
 
221
285
  }
222
286
 
287
+ /**
288
+ * Returns the indirect buffer attribute of the given render object.
289
+ *
290
+ * @param {RenderObject} renderObject - The render object.
291
+ * @return {BufferAttribute?} The indirect attribute. `null` if no indirect drawing is used.
292
+ */
223
293
  getIndirect( renderObject ) {
224
294
 
225
295
  return renderObject.geometry.indirect;
226
296
 
227
297
  }
228
298
 
299
+ /**
300
+ * Returns the index of the given render object's geometry. This is implemented
301
+ * in a method to return a wireframe index if necessary.
302
+ *
303
+ * @param {RenderObject} renderObject - The render object.
304
+ * @return {BufferAttribute?} The index. Returns `null` for non-indexed geometries.
305
+ */
229
306
  getIndex( renderObject ) {
230
307
 
231
308
  const { geometry, material } = renderObject;
@@ -1,11 +1,34 @@
1
1
  import StorageBufferAttribute from './StorageBufferAttribute.js';
2
2
 
3
+ /**
4
+ * This special type of buffer attribute is intended for compute shaders.
5
+ * It can be used to encode draw parameters for indirect draw calls.
6
+ *
7
+ * Note: This type of buffer attribute can only be used with `WebGPURenderer`
8
+ * and a WebGPU backend.
9
+ *
10
+ * @augments StorageBufferAttribute
11
+ */
3
12
  class IndirectStorageBufferAttribute extends StorageBufferAttribute {
4
13
 
5
- constructor( array, itemSize ) {
14
+ /**
15
+ * Constructs a new storage buffer attribute.
16
+ *
17
+ * @param {Number|Uint32Array} count - The item count. It is also valid to pass a `Uint32Array` as an argument.
18
+ * The subsequent parameter is then obsolete.
19
+ * @param {Number} itemSize - The item size.
20
+ */
21
+ constructor( count, itemSize ) {
6
22
 
7
- super( array, itemSize, Uint32Array );
23
+ super( count, itemSize, Uint32Array );
8
24
 
25
+ /**
26
+ * This flag can be used for type testing.
27
+ *
28
+ * @type {Boolean}
29
+ * @readonly
30
+ * @default true
31
+ */
9
32
  this.isIndirectStorageBufferAttribute = true;
10
33
 
11
34
  }