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
@@ -58,6 +58,7 @@ const wgslTypeLib = {
58
58
  'texture_multisampled_2d': 'cubeTexture',
59
59
 
60
60
  'texture_depth_2d': 'depthTexture',
61
+ 'texture_depth_multisampled_2d': 'depthTexture',
61
62
 
62
63
  'texture_3d': 'texture3D',
63
64
 
@@ -140,8 +141,18 @@ const parse = ( source ) => {
140
141
 
141
142
  };
142
143
 
144
+ /**
145
+ * This class represents a WSL node function.
146
+ *
147
+ * @augments NodeFunction
148
+ */
143
149
  class WGSLNodeFunction extends NodeFunction {
144
150
 
151
+ /**
152
+ * Constructs a new WGSL node function.
153
+ *
154
+ * @param {String} source - The WGSL source.
155
+ */
145
156
  constructor( source ) {
146
157
 
147
158
  const { type, inputs, name, inputsCode, blockCode, outputType } = parse( source );
@@ -154,6 +165,12 @@ class WGSLNodeFunction extends NodeFunction {
154
165
 
155
166
  }
156
167
 
168
+ /**
169
+ * This method returns the WGSL code of the node function.
170
+ *
171
+ * @param {String} [name=this.name] - The function's name.
172
+ * @return {String} The shader code.
173
+ */
157
174
  getCode( name = this.name ) {
158
175
 
159
176
  const outputType = this.outputType !== 'void' ? '-> ' + this.outputType : '';
@@ -1,8 +1,19 @@
1
1
  import NodeParser from '../../../nodes/core/NodeParser.js';
2
2
  import WGSLNodeFunction from './WGSLNodeFunction.js';
3
3
 
4
+ /**
5
+ * A WGSL node parser.
6
+ *
7
+ * @augments NodeParser
8
+ */
4
9
  class WGSLNodeParser extends NodeParser {
5
10
 
11
+ /**
12
+ * The method parses the given WGSL code an returns a node function.
13
+ *
14
+ * @param {String} source - The WGSL code.
15
+ * @return {WGSLNodeFunction} A node function.
16
+ */
6
17
  parseFunction( source ) {
7
18
 
8
19
  return new WGSLNodeFunction( source );
@@ -24,14 +24,35 @@ const typeArraysToVertexFormatPrefixForItemSize1 = new Map( [
24
24
  [ Float32Array, 'float32' ]
25
25
  ] );
26
26
 
27
+ /**
28
+ * A WebGPU backend utility module for managing shader attributes.
29
+ *
30
+ * @private
31
+ */
27
32
  class WebGPUAttributeUtils {
28
33
 
34
+ /**
35
+ * Constructs a new utility object.
36
+ *
37
+ * @param {WebGPUBackend} backend - The WebGPU backend.
38
+ */
29
39
  constructor( backend ) {
30
40
 
41
+ /**
42
+ * A reference to the WebGPU backend.
43
+ *
44
+ * @type {WebGPUBackend}
45
+ */
31
46
  this.backend = backend;
32
47
 
33
48
  }
34
49
 
50
+ /**
51
+ * Creates the GPU buffer for the given buffer attribute.
52
+ *
53
+ * @param {BufferAttribute} attribute - The buffer attribute.
54
+ * @param {GPUBufferUsage} usage - A flag that indicates how the buffer may be used after its creation.
55
+ */
35
56
  createAttribute( attribute, usage ) {
36
57
 
37
58
  const bufferAttribute = this._getBufferAttribute( attribute );
@@ -48,16 +69,27 @@ class WebGPUAttributeUtils {
48
69
  let array = bufferAttribute.array;
49
70
 
50
71
  // patch for INT16 and UINT16
51
- if ( attribute.normalized === false && ( array.constructor === Int16Array || array.constructor === Uint16Array ) ) {
72
+ if ( attribute.normalized === false ) {
52
73
 
53
- const tempArray = new Uint32Array( array.length );
54
- for ( let i = 0; i < array.length; i ++ ) {
74
+ if ( array.constructor === Int16Array ) {
55
75
 
56
- tempArray[ i ] = array[ i ];
76
+ array = new Int32Array( array );
57
77
 
58
- }
78
+ } else if ( array.constructor === Uint16Array ) {
79
+
80
+ array = new Uint32Array( array );
81
+
82
+ if ( usage & GPUBufferUsage.INDEX ) {
83
+
84
+ for ( let i = 0; i < array.length; i ++ ) {
59
85
 
60
- array = tempArray;
86
+ if ( array[ i ] === 0xffff ) array[ i ] = 0xffffffff; // use correct primitive restart index
87
+
88
+ }
89
+
90
+ }
91
+
92
+ }
61
93
 
62
94
  }
63
95
 
@@ -98,6 +130,11 @@ class WebGPUAttributeUtils {
98
130
 
99
131
  }
100
132
 
133
+ /**
134
+ * Updates the GPU buffer of the given buffer attribute.
135
+ *
136
+ * @param {BufferAttribute} attribute - The buffer attribute.
137
+ */
101
138
  updateAttribute( attribute ) {
102
139
 
103
140
  const bufferAttribute = this._getBufferAttribute( attribute );
@@ -149,6 +186,13 @@ class WebGPUAttributeUtils {
149
186
 
150
187
  }
151
188
 
189
+ /**
190
+ * This method creates the vertex buffer layout data which are
191
+ * require when creating a render pipeline for the given render object.
192
+ *
193
+ * @param {RenderObject} renderObject - The render object.
194
+ * @return {Array<Object>} An array holding objects which describe the vertex buffer layout.
195
+ */
152
196
  createShaderVertexBuffers( renderObject ) {
153
197
 
154
198
  const attributes = renderObject.getAttributes();
@@ -210,6 +254,11 @@ class WebGPUAttributeUtils {
210
254
 
211
255
  }
212
256
 
257
+ /**
258
+ * Destroys the GPU buffer of the given buffer attribute.
259
+ *
260
+ * @param {BufferAttribute} attribute - The buffer attribute.
261
+ */
213
262
  destroyAttribute( attribute ) {
214
263
 
215
264
  const backend = this.backend;
@@ -221,24 +270,32 @@ class WebGPUAttributeUtils {
221
270
 
222
271
  }
223
272
 
273
+ /**
274
+ * This method performs a readback operation by moving buffer data from
275
+ * a storage buffer attribute from the GPU to the CPU.
276
+ *
277
+ * @async
278
+ * @param {StorageBufferAttribute} attribute - The storage buffer attribute.
279
+ * @return {Promise<ArrayBuffer>} A promise that resolves with the buffer data when the data are ready.
280
+ */
224
281
  async getArrayBufferAsync( attribute ) {
225
282
 
226
283
  const backend = this.backend;
227
284
  const device = backend.device;
228
285
 
229
286
  const data = backend.get( this._getBufferAttribute( attribute ) );
230
-
231
287
  const bufferGPU = data.buffer;
232
288
  const size = bufferGPU.size;
233
289
 
234
290
  const readBufferGPU = device.createBuffer( {
235
- label: attribute.name,
291
+ label: `${ attribute.name }_readback`,
236
292
  size,
237
293
  usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ
238
294
  } );
239
295
 
240
-
241
- const cmdEncoder = device.createCommandEncoder( {} );
296
+ const cmdEncoder = device.createCommandEncoder( {
297
+ label: `readback_encoder_${ attribute.name }`
298
+ } );
242
299
 
243
300
  cmdEncoder.copyBufferToBuffer(
244
301
  bufferGPU,
@@ -248,8 +305,6 @@ class WebGPUAttributeUtils {
248
305
  size
249
306
  );
250
307
 
251
- readBufferGPU.unmap();
252
-
253
308
  const gpuCommands = cmdEncoder.finish();
254
309
  device.queue.submit( [ gpuCommands ] );
255
310
 
@@ -257,10 +312,21 @@ class WebGPUAttributeUtils {
257
312
 
258
313
  const arrayBuffer = readBufferGPU.getMappedRange();
259
314
 
260
- return arrayBuffer;
315
+ const dstBuffer = new attribute.array.constructor( arrayBuffer.slice( 0 ) );
316
+
317
+ readBufferGPU.unmap();
318
+
319
+ return dstBuffer.buffer;
261
320
 
262
321
  }
263
322
 
323
+ /**
324
+ * Returns the vertex format of the given buffer attribute.
325
+ *
326
+ * @private
327
+ * @param {BufferAttribute} geometryAttribute - The buffer attribute.
328
+ * @return {String} The vertex format (e.g. 'float32x3').
329
+ */
264
330
  _getVertexFormat( geometryAttribute ) {
265
331
 
266
332
  const { itemSize, normalized } = geometryAttribute;
@@ -269,7 +335,7 @@ class WebGPUAttributeUtils {
269
335
 
270
336
  let format;
271
337
 
272
- if ( itemSize == 1 ) {
338
+ if ( itemSize === 1 ) {
273
339
 
274
340
  format = typeArraysToVertexFormatPrefixForItemSize1.get( ArrayType );
275
341
 
@@ -306,12 +372,27 @@ class WebGPUAttributeUtils {
306
372
 
307
373
  }
308
374
 
375
+ /**
376
+ * Returns `true` if the given array is a typed array.
377
+ *
378
+ * @private
379
+ * @param {Any} array - The array.
380
+ * @return {Boolean} Whether the given array is a typed array or not.
381
+ */
309
382
  _isTypedArray( array ) {
310
383
 
311
384
  return ArrayBuffer.isView( array ) && ! ( array instanceof DataView );
312
385
 
313
386
  }
314
387
 
388
+ /**
389
+ * Utility method for handling interleaved buffer attributes correctly.
390
+ * To process them, their `InterleavedBuffer` is returned.
391
+ *
392
+ * @private
393
+ * @param {BufferAttribute} attribute - The attribute.
394
+ * @return {BufferAttribute|InterleavedBuffer}
395
+ */
315
396
  _getBufferAttribute( attribute ) {
316
397
 
317
398
  if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
@@ -5,15 +5,47 @@ import {
5
5
  import { FloatType, IntType, UnsignedIntType } from '../../../constants.js';
6
6
  import { NodeAccess } from '../../../nodes/core/constants.js';
7
7
 
8
+ /**
9
+ * A WebGPU backend utility module for managing bindings.
10
+ *
11
+ * When reading the documentation it's helpful to keep in mind that
12
+ * all class definitions starting with 'GPU*' are modules from the
13
+ * WebGPU API. So for example `BindGroup` is a class from the engine
14
+ * whereas `GPUBindGroup` is a class from WebGPU.
15
+ *
16
+ * @private
17
+ */
8
18
  class WebGPUBindingUtils {
9
19
 
20
+ /**
21
+ * Constructs a new utility object.
22
+ *
23
+ * @param {WebGPUBackend} backend - The WebGPU backend.
24
+ */
10
25
  constructor( backend ) {
11
26
 
27
+ /**
28
+ * A reference to the WebGPU backend.
29
+ *
30
+ * @type {WebGPUBackend}
31
+ */
12
32
  this.backend = backend;
33
+
34
+ /**
35
+ * A cache for managing bind group layouts.
36
+ *
37
+ * @type {WeakMap<Array<Binding>,GPUBindGroupLayout>}
38
+ */
13
39
  this.bindGroupLayoutCache = new WeakMap();
14
40
 
15
41
  }
16
42
 
43
+ /**
44
+ * Creates a GPU bind group layout for the given bind group.
45
+ *
46
+ * @param {BindGroup} bindGroup - The bind group.
47
+ * @return {GPUBindGroupLayout} The GPU bind group layout.
48
+ */
17
49
  createBindingsLayout( bindGroup ) {
18
50
 
19
51
  const backend = this.backend;
@@ -107,10 +139,18 @@ class WebGPUBindingUtils {
107
139
 
108
140
  const texture = {}; // GPUTextureBindingLayout
109
141
 
110
- if ( binding.texture.isMultisampleRenderTargetTexture === true ) {
142
+ const { primarySamples } = backend.utils.getTextureSampleData( binding.texture );
143
+
144
+ if ( primarySamples > 1 ) {
111
145
 
112
146
  texture.multisampled = true;
113
147
 
148
+ if ( ! binding.texture.isDepthTexture ) {
149
+
150
+ texture.sampleType = GPUTextureSampleType.UnfilterableFloat;
151
+
152
+ }
153
+
114
154
  }
115
155
 
116
156
  if ( binding.texture.isDepthTexture ) {
@@ -175,6 +215,14 @@ class WebGPUBindingUtils {
175
215
 
176
216
  }
177
217
 
218
+ /**
219
+ * Creates bindings from the given bind group definition.
220
+ *
221
+ * @param {BindGroup} bindGroup - The bind group.
222
+ * @param {Array<BindGroup>} bindings - Array of bind groups.
223
+ * @param {Number} cacheIndex - The cache index.
224
+ * @param {Number} version - The version.
225
+ */
178
226
  createBindings( bindGroup, bindings, cacheIndex, version = 0 ) {
179
227
 
180
228
  const { backend, bindGroupLayoutCache } = this;
@@ -228,6 +276,11 @@ class WebGPUBindingUtils {
228
276
 
229
277
  }
230
278
 
279
+ /**
280
+ * Updates a buffer binding.
281
+ *
282
+ * @param {Buffer} binding - The buffer binding to update.
283
+ */
231
284
  updateBinding( binding ) {
232
285
 
233
286
  const backend = this.backend;
@@ -240,6 +293,46 @@ class WebGPUBindingUtils {
240
293
 
241
294
  }
242
295
 
296
+ /**
297
+ * Creates a GPU bind group for the camera index.
298
+ *
299
+ * @param {Uint32Array} data - The index data.
300
+ * @param {GPUBindGroupLayout} layout - The GPU bind group layout.
301
+ * @return {GPUBindGroup} The GPU bind group.
302
+ */
303
+ createBindGroupIndex( data, layout ) {
304
+
305
+ const backend = this.backend;
306
+ const device = backend.device;
307
+
308
+ const usage = GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST;
309
+ const index = data[ 0 ];
310
+
311
+ const buffer = device.createBuffer( {
312
+ label: 'bindingCameraIndex_' + index,
313
+ size: 16, // uint(4) * 4
314
+ usage: usage
315
+ } );
316
+
317
+ device.queue.writeBuffer( buffer, 0, data, 0 );
318
+
319
+ const entries = [ { binding: 0, resource: { buffer } } ];
320
+
321
+ return device.createBindGroup( {
322
+ label: 'bindGroupCameraIndex_' + index,
323
+ layout,
324
+ entries
325
+ } );
326
+
327
+ }
328
+
329
+ /**
330
+ * Creates a GPU bind group for the given bind group and GPU layout.
331
+ *
332
+ * @param {BindGroup} bindGroup - The bind group.
333
+ * @param {GPUBindGroupLayout} layoutGPU - The GPU bind group layout.
334
+ * @return {GPUBindGroup} The GPU bind group.
335
+ */
243
336
  createBindGroup( bindGroup, layoutGPU ) {
244
337
 
245
338
  const backend = this.backend;
@@ -15,20 +15,48 @@ import {
15
15
  NeverStencilFunc, AlwaysStencilFunc, LessStencilFunc, LessEqualStencilFunc, EqualStencilFunc, GreaterEqualStencilFunc, GreaterStencilFunc, NotEqualStencilFunc
16
16
  } from '../../../constants.js';
17
17
 
18
+ /**
19
+ * A WebGPU backend utility module for managing pipelines.
20
+ *
21
+ * @private
22
+ */
18
23
  class WebGPUPipelineUtils {
19
24
 
25
+ /**
26
+ * Constructs a new utility object.
27
+ *
28
+ * @param {WebGPUBackend} backend - The WebGPU backend.
29
+ */
20
30
  constructor( backend ) {
21
31
 
32
+ /**
33
+ * A reference to the WebGPU backend.
34
+ *
35
+ * @type {WebGPUBackend}
36
+ */
22
37
  this.backend = backend;
23
38
 
24
39
  }
25
40
 
26
- _getSampleCount( renderObjectContext ) {
41
+ /**
42
+ * Returns the sample count derived from the given render context.
43
+ *
44
+ * @private
45
+ * @param {RenderContext} renderContext - The render context.
46
+ * @return {Number} The sample count.
47
+ */
48
+ _getSampleCount( renderContext ) {
27
49
 
28
- return this.backend.utils.getSampleCountRenderContext( renderObjectContext );
50
+ return this.backend.utils.getSampleCountRenderContext( renderContext );
29
51
 
30
52
  }
31
53
 
54
+ /**
55
+ * Creates a render pipeline for the given render object.
56
+ *
57
+ * @param {RenderObject} renderObject - The render object.
58
+ * @param {Array<Promise>} promises - An array of compilation promises which are used in `compileAsync()`.
59
+ */
32
60
  createRenderPipeline( renderObject, promises ) {
33
61
 
34
62
  const { object, material, geometry, pipeline } = renderObject;
@@ -188,6 +216,12 @@ class WebGPUPipelineUtils {
188
216
 
189
217
  }
190
218
 
219
+ /**
220
+ * Creates GPU render bundle encoder for the given render context.
221
+ *
222
+ * @param {RenderContext} renderContext - The render context.
223
+ * @return {GPURenderBundleEncoder} The GPU render bundle encoder.
224
+ */
191
225
  createBundleEncoder( renderContext ) {
192
226
 
193
227
  const backend = this.backend;
@@ -208,6 +242,12 @@ class WebGPUPipelineUtils {
208
242
 
209
243
  }
210
244
 
245
+ /**
246
+ * Creates a compute pipeline for the given compute node.
247
+ *
248
+ * @param {ComputePipeline} pipeline - The compute pipeline.
249
+ * @param {Array<BindGroup>} bindings - The bindings.
250
+ */
211
251
  createComputePipeline( pipeline, bindings ) {
212
252
 
213
253
  const backend = this.backend;
@@ -238,6 +278,14 @@ class WebGPUPipelineUtils {
238
278
 
239
279
  }
240
280
 
281
+ /**
282
+ * Returns the blending state as a descriptor object required
283
+ * for the pipeline creation.
284
+ *
285
+ * @private
286
+ * @param {Material} material - The material.
287
+ * @return {Object} The blending state.
288
+ */
241
289
  _getBlending( material ) {
242
290
 
243
291
  let color, alpha;
@@ -345,7 +393,13 @@ class WebGPUPipelineUtils {
345
393
  }
346
394
 
347
395
  }
348
-
396
+ /**
397
+ * Returns the GPU blend factor which is required for the pipeline creation.
398
+ *
399
+ * @private
400
+ * @param {Number} blend - The blend factor as a three.js constant.
401
+ * @return {String} The GPU blend factor.
402
+ */
349
403
  _getBlendFactor( blend ) {
350
404
 
351
405
  let blendFactor;
@@ -413,6 +467,13 @@ class WebGPUPipelineUtils {
413
467
 
414
468
  }
415
469
 
470
+ /**
471
+ * Returns the GPU stencil compare function which is required for the pipeline creation.
472
+ *
473
+ * @private
474
+ * @param {Material} material - The material.
475
+ * @return {String} The GPU stencil compare function.
476
+ */
416
477
  _getStencilCompare( material ) {
417
478
 
418
479
  let stencilCompare;
@@ -462,6 +523,13 @@ class WebGPUPipelineUtils {
462
523
 
463
524
  }
464
525
 
526
+ /**
527
+ * Returns the GPU stencil operation which is required for the pipeline creation.
528
+ *
529
+ * @private
530
+ * @param {Number} op - A three.js constant defining the stencil operation.
531
+ * @return {String} The GPU stencil operation.
532
+ */
465
533
  _getStencilOperation( op ) {
466
534
 
467
535
  let stencilOperation;
@@ -509,6 +577,13 @@ class WebGPUPipelineUtils {
509
577
 
510
578
  }
511
579
 
580
+ /**
581
+ * Returns the GPU blend operation which is required for the pipeline creation.
582
+ *
583
+ * @private
584
+ * @param {Number} blendEquation - A three.js constant defining the blend equation.
585
+ * @return {String} The GPU blend operation.
586
+ */
512
587
  _getBlendOperation( blendEquation ) {
513
588
 
514
589
  let blendOperation;
@@ -544,6 +619,16 @@ class WebGPUPipelineUtils {
544
619
 
545
620
  }
546
621
 
622
+ /**
623
+ * Returns the primitive state as a descriptor object required
624
+ * for the pipeline creation.
625
+ *
626
+ * @private
627
+ * @param {Object3D} object - The 3D object.
628
+ * @param {BufferGeometry} geometry - The geometry.
629
+ * @param {Material} material - The material.
630
+ * @return {Object} The primitive state.
631
+ */
547
632
  _getPrimitiveState( object, geometry, material ) {
548
633
 
549
634
  const descriptor = {};
@@ -584,12 +669,26 @@ class WebGPUPipelineUtils {
584
669
 
585
670
  }
586
671
 
672
+ /**
673
+ * Returns the GPU color write mask which is required for the pipeline creation.
674
+ *
675
+ * @private
676
+ * @param {Material} material - The material.
677
+ * @return {String} The GPU color write mask.
678
+ */
587
679
  _getColorWriteMask( material ) {
588
680
 
589
681
  return ( material.colorWrite === true ) ? GPUColorWriteFlags.All : GPUColorWriteFlags.None;
590
682
 
591
683
  }
592
684
 
685
+ /**
686
+ * Returns the GPU depth compare function which is required for the pipeline creation.
687
+ *
688
+ * @private
689
+ * @param {Material} material - The material.
690
+ * @return {String} The GPU depth compare function.
691
+ */
593
692
  _getDepthCompare( material ) {
594
693
 
595
694
  let depthCompare;