super-three 0.170.1 → 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
@@ -6,18 +6,55 @@ import { DepthStencilFormat, DepthFormat, UnsignedIntType, UnsignedInt248Type, E
6
6
 
7
7
  const _size = /*@__PURE__*/ new Vector3();
8
8
 
9
+ /**
10
+ * This module manages the textures of the renderer.
11
+ *
12
+ * @private
13
+ * @augments DataMap
14
+ */
9
15
  class Textures extends DataMap {
10
16
 
17
+ /**
18
+ * Constructs a new texture management component.
19
+ *
20
+ * @param {Renderer} renderer - The renderer.
21
+ * @param {Backend} backend - The renderer's backend.
22
+ * @param {Info} info - Renderer component for managing metrics and monitoring data.
23
+ */
11
24
  constructor( renderer, backend, info ) {
12
25
 
13
26
  super();
14
27
 
28
+ /**
29
+ * The renderer.
30
+ *
31
+ * @type {Renderer}
32
+ */
15
33
  this.renderer = renderer;
34
+
35
+ /**
36
+ * The backend.
37
+ *
38
+ * @type {Backend}
39
+ */
16
40
  this.backend = backend;
41
+
42
+ /**
43
+ * Renderer component for managing metrics and monitoring data.
44
+ *
45
+ * @type {Info}
46
+ */
17
47
  this.info = info;
18
48
 
19
49
  }
20
50
 
51
+ /**
52
+ * Updates the given render target. Based on the given render target configuration,
53
+ * it updates the texture states representing the attachments of the framebuffer.
54
+ *
55
+ * @param {RenderTarget} renderTarget - The render target to update.
56
+ * @param {Number} [activeMipmapLevel=0] - The active mipmap level.
57
+ */
21
58
  updateRenderTarget( renderTarget, activeMipmapLevel = 0 ) {
22
59
 
23
60
  const renderTargetData = this.get( renderTarget );
@@ -139,6 +176,14 @@ class Textures extends DataMap {
139
176
 
140
177
  }
141
178
 
179
+ /**
180
+ * Updates the given texture. Depending on the texture state, this method
181
+ * triggers the upload of texture data to the GPU memory. If the texture data are
182
+ * not yet ready for the upload, it uses default texture data for as a placeholder.
183
+ *
184
+ * @param {Texture} texture - The texture to update.
185
+ * @param {Object} [options={}] - The options.
186
+ */
142
187
  updateTexture( texture, options = {} ) {
143
188
 
144
189
  const textureData = this.get( texture );
@@ -292,6 +337,18 @@ class Textures extends DataMap {
292
337
 
293
338
  }
294
339
 
340
+ /**
341
+ * Computes the size of the given texture and writes the result
342
+ * into the target vector. This vector is also returned by the
343
+ * method.
344
+ *
345
+ * If no texture data are available for the compute yet, the method
346
+ * returns default size values.
347
+ *
348
+ * @param {Texture} texture - The texture to compute the size for.
349
+ * @param {Vector3} target - The target vector.
350
+ * @return {Vector3} The target vector.
351
+ */
295
352
  getSize( texture, target = _size ) {
296
353
 
297
354
  let image = texture.images ? texture.images[ 0 ] : texture.image;
@@ -314,6 +371,14 @@ class Textures extends DataMap {
314
371
 
315
372
  }
316
373
 
374
+ /**
375
+ * Computes the number of mipmap levels for the given texture.
376
+ *
377
+ * @param {Texture} texture - The texture.
378
+ * @param {Number} width - The texture's width.
379
+ * @param {Number} height - The texture's height.
380
+ * @return {Number} The number of mipmap levels.
381
+ */
317
382
  getMipLevels( texture, width, height ) {
318
383
 
319
384
  let mipLevelCount;
@@ -340,12 +405,24 @@ class Textures extends DataMap {
340
405
 
341
406
  }
342
407
 
408
+ /**
409
+ * Returns `true` if the given texture requires mipmaps.
410
+ *
411
+ * @param {Texture} texture - The texture.
412
+ * @return {Boolean} Whether mipmaps are required or not.
413
+ */
343
414
  needsMipmaps( texture ) {
344
415
 
345
416
  return this.isEnvironmentTexture( texture ) || texture.isCompressedTexture === true || texture.generateMipmaps;
346
417
 
347
418
  }
348
419
 
420
+ /**
421
+ * Returns `true` if the given texture is an environment map.
422
+ *
423
+ * @param {Texture} texture - The texture.
424
+ * @return {Boolean} Whether the given texture is an environment map or not.
425
+ */
349
426
  isEnvironmentTexture( texture ) {
350
427
 
351
428
  const mapping = texture.mapping;
@@ -354,6 +431,12 @@ class Textures extends DataMap {
354
431
 
355
432
  }
356
433
 
434
+ /**
435
+ * Frees internal resource when the given texture isn't
436
+ * required anymore.
437
+ *
438
+ * @param {Texture} texture - The texture to destroy.
439
+ */
357
440
  _destroyTexture( texture ) {
358
441
 
359
442
  this.backend.destroySampler( texture );
@@ -5,26 +5,79 @@ import { Vector2 } from '../../math/Vector2.js';
5
5
  import { Vector3 } from '../../math/Vector3.js';
6
6
  import { Vector4 } from '../../math/Vector4.js';
7
7
 
8
+ /**
9
+ * Abstract base class for uniforms.
10
+ *
11
+ * @abstract
12
+ * @private
13
+ */
8
14
  class Uniform {
9
15
 
16
+ /**
17
+ * Constructs a new uniform.
18
+ *
19
+ * @param {String} name - The uniform's name.
20
+ * @param {Any} value - The uniform's value.
21
+ */
10
22
  constructor( name, value ) {
11
23
 
24
+ /**
25
+ * The uniform's name.
26
+ *
27
+ * @type {String}
28
+ */
12
29
  this.name = name;
30
+
31
+ /**
32
+ * The uniform's value.
33
+ *
34
+ * @type {Any}
35
+ */
13
36
  this.value = value;
14
37
 
15
- this.boundary = 0; // used to build the uniform buffer according to the STD140 layout
38
+ /**
39
+ * Used to build the uniform buffer according to the STD140 layout.
40
+ * Derived uniforms will set this property to a data type specific
41
+ * value.
42
+ *
43
+ * @type {Number}
44
+ */
45
+ this.boundary = 0;
46
+
47
+ /**
48
+ * The item size. Derived uniforms will set this property to a data
49
+ * type specific value.
50
+ *
51
+ * @type {Number}
52
+ */
16
53
  this.itemSize = 0;
17
54
 
18
- this.offset = 0; // this property is set by WebGPUUniformsGroup and marks the start position in the uniform buffer
55
+ /**
56
+ * This property is set by {@link UniformsGroup} and marks
57
+ * the start position in the uniform buffer.
58
+ *
59
+ * @type {Number}
60
+ */
61
+ this.offset = 0;
19
62
 
20
63
  }
21
64
 
65
+ /**
66
+ * Sets the uniform's value.
67
+ *
68
+ * @param {Any} value - The value to set.
69
+ */
22
70
  setValue( value ) {
23
71
 
24
72
  this.value = value;
25
73
 
26
74
  }
27
75
 
76
+ /**
77
+ * Returns the uniform's value.
78
+ *
79
+ * @return {Any} The value.
80
+ */
28
81
  getValue() {
29
82
 
30
83
  return this.value;
@@ -33,12 +86,31 @@ class Uniform {
33
86
 
34
87
  }
35
88
 
89
+ /**
90
+ * Represents a Number uniform.
91
+ *
92
+ * @private
93
+ * @augments Uniform
94
+ */
36
95
  class NumberUniform extends Uniform {
37
96
 
97
+ /**
98
+ * Constructs a new Number uniform.
99
+ *
100
+ * @param {String} name - The uniform's name.
101
+ * @param {Number} value - The uniform's value.
102
+ */
38
103
  constructor( name, value = 0 ) {
39
104
 
40
105
  super( name, value );
41
106
 
107
+ /**
108
+ * This flag can be used for type testing.
109
+ *
110
+ * @type {Boolean}
111
+ * @readonly
112
+ * @default true
113
+ */
42
114
  this.isNumberUniform = true;
43
115
 
44
116
  this.boundary = 4;
@@ -48,12 +120,31 @@ class NumberUniform extends Uniform {
48
120
 
49
121
  }
50
122
 
123
+ /**
124
+ * Represents a Vector2 uniform.
125
+ *
126
+ * @private
127
+ * @augments Uniform
128
+ */
51
129
  class Vector2Uniform extends Uniform {
52
130
 
131
+ /**
132
+ * Constructs a new Number uniform.
133
+ *
134
+ * @param {String} name - The uniform's name.
135
+ * @param {Vector2} value - The uniform's value.
136
+ */
53
137
  constructor( name, value = new Vector2() ) {
54
138
 
55
139
  super( name, value );
56
140
 
141
+ /**
142
+ * This flag can be used for type testing.
143
+ *
144
+ * @type {Boolean}
145
+ * @readonly
146
+ * @default true
147
+ */
57
148
  this.isVector2Uniform = true;
58
149
 
59
150
  this.boundary = 8;
@@ -63,12 +154,31 @@ class Vector2Uniform extends Uniform {
63
154
 
64
155
  }
65
156
 
157
+ /**
158
+ * Represents a Vector3 uniform.
159
+ *
160
+ * @private
161
+ * @augments Uniform
162
+ */
66
163
  class Vector3Uniform extends Uniform {
67
164
 
165
+ /**
166
+ * Constructs a new Number uniform.
167
+ *
168
+ * @param {String} name - The uniform's name.
169
+ * @param {Vector3} value - The uniform's value.
170
+ */
68
171
  constructor( name, value = new Vector3() ) {
69
172
 
70
173
  super( name, value );
71
174
 
175
+ /**
176
+ * This flag can be used for type testing.
177
+ *
178
+ * @type {Boolean}
179
+ * @readonly
180
+ * @default true
181
+ */
72
182
  this.isVector3Uniform = true;
73
183
 
74
184
  this.boundary = 16;
@@ -78,12 +188,31 @@ class Vector3Uniform extends Uniform {
78
188
 
79
189
  }
80
190
 
191
+ /**
192
+ * Represents a Vector4 uniform.
193
+ *
194
+ * @private
195
+ * @augments Uniform
196
+ */
81
197
  class Vector4Uniform extends Uniform {
82
198
 
199
+ /**
200
+ * Constructs a new Number uniform.
201
+ *
202
+ * @param {String} name - The uniform's name.
203
+ * @param {Vector4} value - The uniform's value.
204
+ */
83
205
  constructor( name, value = new Vector4() ) {
84
206
 
85
207
  super( name, value );
86
208
 
209
+ /**
210
+ * This flag can be used for type testing.
211
+ *
212
+ * @type {Boolean}
213
+ * @readonly
214
+ * @default true
215
+ */
87
216
  this.isVector4Uniform = true;
88
217
 
89
218
  this.boundary = 16;
@@ -93,12 +222,31 @@ class Vector4Uniform extends Uniform {
93
222
 
94
223
  }
95
224
 
225
+ /**
226
+ * Represents a Color uniform.
227
+ *
228
+ * @private
229
+ * @augments Uniform
230
+ */
96
231
  class ColorUniform extends Uniform {
97
232
 
233
+ /**
234
+ * Constructs a new Number uniform.
235
+ *
236
+ * @param {String} name - The uniform's name.
237
+ * @param {Color} value - The uniform's value.
238
+ */
98
239
  constructor( name, value = new Color() ) {
99
240
 
100
241
  super( name, value );
101
242
 
243
+ /**
244
+ * This flag can be used for type testing.
245
+ *
246
+ * @type {Boolean}
247
+ * @readonly
248
+ * @default true
249
+ */
102
250
  this.isColorUniform = true;
103
251
 
104
252
  this.boundary = 16;
@@ -108,12 +256,31 @@ class ColorUniform extends Uniform {
108
256
 
109
257
  }
110
258
 
259
+ /**
260
+ * Represents a Matrix3 uniform.
261
+ *
262
+ * @private
263
+ * @augments Uniform
264
+ */
111
265
  class Matrix3Uniform extends Uniform {
112
266
 
267
+ /**
268
+ * Constructs a new Number uniform.
269
+ *
270
+ * @param {String} name - The uniform's name.
271
+ * @param {Matrix3} value - The uniform's value.
272
+ */
113
273
  constructor( name, value = new Matrix3() ) {
114
274
 
115
275
  super( name, value );
116
276
 
277
+ /**
278
+ * This flag can be used for type testing.
279
+ *
280
+ * @type {Boolean}
281
+ * @readonly
282
+ * @default true
283
+ */
117
284
  this.isMatrix3Uniform = true;
118
285
 
119
286
  this.boundary = 48;
@@ -123,12 +290,31 @@ class Matrix3Uniform extends Uniform {
123
290
 
124
291
  }
125
292
 
293
+ /**
294
+ * Represents a Matrix4 uniform.
295
+ *
296
+ * @private
297
+ * @augments Uniform
298
+ */
126
299
  class Matrix4Uniform extends Uniform {
127
300
 
301
+ /**
302
+ * Constructs a new Number uniform.
303
+ *
304
+ * @param {String} name - The uniform's name.
305
+ * @param {Matrix4} value - The uniform's value.
306
+ */
128
307
  constructor( name, value = new Matrix4() ) {
129
308
 
130
309
  super( name, value );
131
310
 
311
+ /**
312
+ * This flag can be used for type testing.
313
+ *
314
+ * @type {Boolean}
315
+ * @readonly
316
+ * @default true
317
+ */
132
318
  this.isMatrix4Uniform = true;
133
319
 
134
320
  this.boundary = 64;
@@ -1,11 +1,30 @@
1
1
  import Buffer from './Buffer.js';
2
2
 
3
+ /**
4
+ * Represents a uniform buffer binding type.
5
+ *
6
+ * @private
7
+ * @augments Buffer
8
+ */
3
9
  class UniformBuffer extends Buffer {
4
10
 
11
+ /**
12
+ * Constructs a new uniform buffer.
13
+ *
14
+ * @param {String} name - The buffer's name.
15
+ * @param {TypedArray} [buffer=null] - The buffer.
16
+ */
5
17
  constructor( name, buffer = null ) {
6
18
 
7
19
  super( name, buffer );
8
20
 
21
+ /**
22
+ * This flag can be used for type testing.
23
+ *
24
+ * @type {Boolean}
25
+ * @readonly
26
+ * @default true
27
+ */
9
28
  this.isUniformBuffer = true;
10
29
 
11
30
  }