super-three 0.171.0 → 0.172.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +157 -49
  3. package/build/three.core.js +104 -42
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +53 -8
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +10 -5
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +21191 -1008
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +21189 -1008
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/jsm/Addons.js +0 -5
  14. package/examples/jsm/animation/CCDIKSolver.js +3 -2
  15. package/examples/jsm/controls/ArcballControls.js +28 -19
  16. package/examples/jsm/controls/OrbitControls.js +5 -4
  17. package/examples/jsm/csm/CSMShadowNode.js +16 -11
  18. package/examples/jsm/curves/NURBSCurve.js +1 -1
  19. package/examples/jsm/curves/NURBSUtils.js +3 -0
  20. package/examples/jsm/effects/OutlineEffect.js +1 -1
  21. package/examples/jsm/exporters/GLTFExporter.js +11 -7
  22. package/examples/jsm/exporters/KTX2Exporter.js +1 -1
  23. package/examples/jsm/exporters/PLYExporter.js +2 -2
  24. package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
  25. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  26. package/examples/jsm/lights/LightProbeGenerator.js +3 -3
  27. package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
  28. package/examples/jsm/loaders/3MFLoader.js +6 -3
  29. package/examples/jsm/loaders/BVHLoader.js +1 -1
  30. package/examples/jsm/loaders/ColladaLoader.js +5 -5
  31. package/examples/jsm/loaders/DDSLoader.js +42 -0
  32. package/examples/jsm/loaders/GCodeLoader.js +1 -1
  33. package/examples/jsm/loaders/GLTFLoader.js +22 -2
  34. package/examples/jsm/loaders/KTX2Loader.js +6 -1
  35. package/examples/jsm/loaders/KTXLoader.js +4 -4
  36. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  37. package/examples/jsm/loaders/LottieLoader.js +1 -1
  38. package/examples/jsm/loaders/MTLLoader.js +1 -0
  39. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  40. package/examples/jsm/loaders/PLYLoader.js +7 -7
  41. package/examples/jsm/loaders/PVRLoader.js +1 -1
  42. package/examples/jsm/loaders/SVGLoader.js +2 -2
  43. package/examples/jsm/loaders/TDSLoader.js +1 -1
  44. package/examples/jsm/loaders/VRMLLoader.js +7 -7
  45. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  46. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
  47. package/examples/jsm/math/ConvexHull.js +1 -1
  48. package/examples/jsm/math/OBB.js +17 -0
  49. package/examples/jsm/misc/ProgressiveLightMapGPU.js +10 -10
  50. package/examples/jsm/misc/Volume.js +20 -12
  51. package/examples/jsm/misc/VolumeSlice.js +2 -2
  52. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  53. package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
  54. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  55. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  56. package/examples/jsm/objects/Sky.js +2 -2
  57. package/examples/jsm/objects/SkyMesh.js +3 -3
  58. package/examples/jsm/objects/Water2.js +1 -1
  59. package/examples/jsm/objects/Water2Mesh.js +2 -2
  60. package/examples/jsm/objects/WaterMesh.js +4 -4
  61. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  62. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  63. package/examples/jsm/postprocessing/OutlinePass.js +4 -4
  64. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  65. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  66. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  67. package/examples/jsm/postprocessing/SSRPass.js +2 -4
  68. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  69. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  70. package/examples/jsm/shaders/BokehShader2.js +1 -1
  71. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  72. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  73. package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
  74. package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
  75. package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
  76. package/examples/jsm/tsl/display/BleachBypass.js +10 -0
  77. package/examples/jsm/tsl/display/BloomNode.js +233 -26
  78. package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
  79. package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
  80. package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
  81. package/examples/jsm/tsl/display/FXAANode.js +52 -3
  82. package/examples/jsm/tsl/display/FilmNode.js +47 -1
  83. package/examples/jsm/tsl/display/GTAONode.js +210 -14
  84. package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
  85. package/examples/jsm/tsl/display/LensflareNode.js +131 -13
  86. package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
  87. package/examples/jsm/tsl/display/MotionBlur.js +12 -2
  88. package/examples/jsm/tsl/display/OutlineNode.js +343 -26
  89. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
  90. package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
  91. package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
  92. package/examples/jsm/tsl/display/SMAANode.js +187 -46
  93. package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
  94. package/examples/jsm/tsl/display/SSRNode.js +194 -21
  95. package/examples/jsm/tsl/display/Sepia.js +9 -0
  96. package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
  97. package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
  98. package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
  99. package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
  100. package/examples/jsm/tsl/display/TransitionNode.js +71 -6
  101. package/examples/jsm/tsl/display/hashBlur.js +14 -3
  102. package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
  103. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  104. package/examples/jsm/utils/CameraUtils.js +4 -1
  105. package/examples/jsm/utils/GeometryUtils.js +22 -19
  106. package/examples/jsm/utils/SceneUtils.js +2 -2
  107. package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
  108. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  109. package/package.json +8 -3
  110. package/src/Three.Core.js +2 -0
  111. package/src/Three.Legacy.js +0 -21
  112. package/src/Three.TSL.js +9 -4
  113. package/src/Three.WebGPU.Nodes.js +2 -2
  114. package/src/Three.WebGPU.js +2 -2
  115. package/src/animation/PropertyBinding.js +2 -2
  116. package/src/cameras/PerspectiveCamera.js +18 -2
  117. package/src/constants.js +1 -1
  118. package/src/core/RenderTarget.js +18 -0
  119. package/src/core/RenderTarget3D.js +22 -0
  120. package/src/core/RenderTargetArray.js +22 -0
  121. package/src/extras/Earcut.js +1 -1
  122. package/src/extras/PMREMGenerator.js +20 -0
  123. package/src/extras/TextureUtils.js +6 -0
  124. package/src/helpers/CameraHelper.js +16 -13
  125. package/src/loaders/nodes/NodeLoader.js +59 -0
  126. package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
  127. package/src/loaders/nodes/NodeObjectLoader.js +61 -0
  128. package/src/materials/nodes/InstancedPointsNodeMaterial.js +72 -19
  129. package/src/materials/nodes/Line2NodeMaterial.js +128 -34
  130. package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
  131. package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
  132. package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
  133. package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
  134. package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
  135. package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
  136. package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
  137. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
  138. package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
  139. package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
  140. package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
  141. package/src/materials/nodes/NodeMaterial.js +474 -21
  142. package/src/materials/nodes/PointsNodeMaterial.js +22 -13
  143. package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
  144. package/src/materials/nodes/SpriteNodeMaterial.js +77 -19
  145. package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
  146. package/src/materials/nodes/manager/NodeMaterialObserver.js +87 -0
  147. package/src/nodes/Nodes.js +1 -6
  148. package/src/nodes/TSL.js +2 -3
  149. package/src/nodes/accessors/AccessorsUtils.js +27 -0
  150. package/src/nodes/accessors/Arrays.js +24 -5
  151. package/src/nodes/accessors/BatchNode.js +39 -3
  152. package/src/nodes/accessors/Bitangent.js +37 -0
  153. package/src/nodes/accessors/BufferAttributeNode.js +178 -5
  154. package/src/nodes/accessors/BufferNode.js +63 -0
  155. package/src/nodes/accessors/BuiltinNode.js +38 -0
  156. package/src/nodes/accessors/Camera.js +49 -0
  157. package/src/nodes/accessors/ClippingNode.js +71 -2
  158. package/src/nodes/accessors/CubeTextureNode.js +64 -0
  159. package/src/nodes/accessors/InstanceNode.js +85 -2
  160. package/src/nodes/accessors/InstancedMeshNode.js +28 -3
  161. package/src/nodes/accessors/InstancedPointsMaterialNode.js +13 -0
  162. package/src/nodes/accessors/Lights.js +50 -1
  163. package/src/nodes/accessors/MaterialNode.js +302 -8
  164. package/src/nodes/accessors/MaterialProperties.js +7 -0
  165. package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
  166. package/src/nodes/accessors/ModelNode.js +100 -5
  167. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
  168. package/src/nodes/accessors/MorphNode.js +48 -4
  169. package/src/nodes/accessors/Normal.js +59 -3
  170. package/src/nodes/accessors/Object3DNode.js +102 -1
  171. package/src/nodes/accessors/PointUVNode.js +26 -0
  172. package/src/nodes/accessors/Position.js +53 -4
  173. package/src/nodes/accessors/ReferenceBaseNode.js +188 -0
  174. package/src/nodes/accessors/ReferenceNode.js +202 -2
  175. package/src/nodes/accessors/ReflectVector.js +24 -0
  176. package/src/nodes/accessors/RendererReferenceNode.js +46 -1
  177. package/src/nodes/accessors/SceneNode.js +54 -0
  178. package/src/nodes/accessors/SkinningNode.js +127 -1
  179. package/src/nodes/accessors/StorageBufferNode.js +168 -4
  180. package/src/nodes/accessors/StorageTextureNode.js +118 -0
  181. package/src/nodes/accessors/Tangent.js +36 -0
  182. package/src/nodes/accessors/Texture3DNode.js +89 -5
  183. package/src/nodes/accessors/TextureBicubic.js +12 -2
  184. package/src/nodes/accessors/TextureNode.js +309 -10
  185. package/src/nodes/accessors/TextureSizeNode.js +42 -0
  186. package/src/nodes/accessors/UV.js +10 -1
  187. package/src/nodes/accessors/UniformArrayNode.js +223 -23
  188. package/src/nodes/accessors/UserDataNode.js +46 -0
  189. package/src/nodes/accessors/VelocityNode.js +82 -0
  190. package/src/nodes/accessors/VertexColorNode.js +39 -2
  191. package/src/nodes/code/CodeNode.js +95 -1
  192. package/src/nodes/code/ExpressionNode.js +28 -0
  193. package/src/nodes/code/FunctionCallNode.js +37 -0
  194. package/src/nodes/code/FunctionNode.js +45 -0
  195. package/src/nodes/code/ScriptableNode.js +223 -1
  196. package/src/nodes/code/ScriptableValueNode.js +85 -1
  197. package/src/nodes/core/AssignNode.js +48 -2
  198. package/src/nodes/core/AttributeNode.js +43 -0
  199. package/src/nodes/core/BypassNode.js +47 -2
  200. package/src/nodes/core/CacheNode.js +53 -2
  201. package/src/nodes/core/ConstNode.js +24 -0
  202. package/src/nodes/core/ContextNode.js +65 -0
  203. package/src/nodes/core/IndexNode.js +68 -7
  204. package/src/nodes/core/InputNode.js +48 -0
  205. package/src/nodes/core/LightingModel.js +60 -0
  206. package/src/nodes/core/MRTNode.js +66 -0
  207. package/src/nodes/core/Node.js +337 -12
  208. package/src/nodes/core/NodeAttribute.js +38 -0
  209. package/src/nodes/core/NodeBuilder.js +945 -15
  210. package/src/nodes/core/NodeCache.js +41 -2
  211. package/src/nodes/core/NodeCode.js +31 -0
  212. package/src/nodes/core/NodeFrame.js +123 -2
  213. package/src/nodes/core/NodeFunction.js +46 -0
  214. package/src/nodes/core/NodeFunctionInput.js +44 -0
  215. package/src/nodes/core/NodeParser.js +11 -0
  216. package/src/nodes/core/NodeUniform.js +52 -0
  217. package/src/nodes/core/NodeUtils.js +141 -0
  218. package/src/nodes/core/NodeVar.js +30 -0
  219. package/src/nodes/core/NodeVarying.js +28 -0
  220. package/src/nodes/core/OutputStructNode.js +33 -2
  221. package/src/nodes/core/ParameterNode.js +28 -0
  222. package/src/nodes/core/PropertyNode.js +232 -0
  223. package/src/nodes/core/StackNode.js +78 -0
  224. package/src/nodes/core/StructTypeNode.js +39 -1
  225. package/src/nodes/core/TempNode.js +30 -4
  226. package/src/nodes/core/UniformGroupNode.js +82 -7
  227. package/src/nodes/core/UniformNode.js +66 -0
  228. package/src/nodes/core/VarNode.js +52 -0
  229. package/src/nodes/core/VaryingNode.js +83 -2
  230. package/src/nodes/core/constants.js +36 -0
  231. package/src/nodes/display/BumpMapNode.js +37 -0
  232. package/src/nodes/display/ColorAdjustment.js +53 -11
  233. package/src/nodes/display/ColorSpaceFunctions.js +16 -0
  234. package/src/nodes/display/ColorSpaceNode.js +82 -0
  235. package/src/nodes/display/FrontFacingNode.js +29 -0
  236. package/src/nodes/display/NormalMapNode.js +43 -0
  237. package/src/nodes/display/PassNode.js +298 -7
  238. package/src/nodes/display/PosterizeNode.js +33 -0
  239. package/src/nodes/display/RenderOutputNode.js +66 -1
  240. package/src/nodes/display/ScreenNode.js +87 -0
  241. package/src/nodes/display/ToneMappingFunctions.js +58 -10
  242. package/src/nodes/display/ToneMappingNode.js +55 -2
  243. package/src/nodes/display/ToonOutlinePassNode.js +73 -0
  244. package/src/nodes/display/ViewportDepthNode.js +122 -8
  245. package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
  246. package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
  247. package/src/nodes/display/ViewportTextureNode.js +57 -0
  248. package/src/nodes/fog/Fog.js +93 -0
  249. package/src/nodes/functions/BasicLightingModel.js +24 -0
  250. package/src/nodes/functions/PhongLightingModel.js +34 -2
  251. package/src/nodes/functions/PhysicalLightingModel.js +167 -8
  252. package/src/nodes/functions/ShadowMaskModel.js +23 -0
  253. package/src/nodes/functions/ToonLightingModel.js +20 -0
  254. package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
  255. package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
  256. package/src/nodes/geometry/RangeNode.js +54 -2
  257. package/src/nodes/gpgpu/AtomicFunctionNode.js +157 -1
  258. package/src/nodes/gpgpu/BarrierNode.js +47 -0
  259. package/src/nodes/gpgpu/ComputeBuiltinNode.js +126 -0
  260. package/src/nodes/gpgpu/ComputeNode.js +106 -2
  261. package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
  262. package/src/nodes/lighting/AONode.js +18 -0
  263. package/src/nodes/lighting/AmbientLightNode.js +10 -0
  264. package/src/nodes/lighting/AnalyticLightNode.js +97 -2
  265. package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
  266. package/src/nodes/lighting/BasicLightMapNode.js +17 -0
  267. package/src/nodes/lighting/DirectionalLightNode.js +10 -0
  268. package/src/nodes/lighting/EnvironmentNode.js +18 -0
  269. package/src/nodes/lighting/HemisphereLightNode.js +31 -0
  270. package/src/nodes/lighting/IESSpotLightNode.js +11 -0
  271. package/src/nodes/lighting/IrradianceNode.js +17 -0
  272. package/src/nodes/lighting/LightProbeNode.js +20 -0
  273. package/src/nodes/lighting/LightUtils.js +12 -0
  274. package/src/nodes/lighting/LightingContextNode.js +48 -0
  275. package/src/nodes/lighting/LightingNode.js +15 -6
  276. package/src/nodes/lighting/LightsNode.js +132 -1
  277. package/src/nodes/lighting/PointLightNode.js +32 -1
  278. package/src/nodes/lighting/PointShadowNode.js +54 -1
  279. package/src/nodes/lighting/RectAreaLightNode.js +44 -6
  280. package/src/nodes/lighting/ShadowBaseNode.js +93 -0
  281. package/src/nodes/lighting/ShadowNode.js +240 -34
  282. package/src/nodes/lighting/SpotLightNode.js +43 -0
  283. package/src/nodes/math/ConditionalNode.js +70 -3
  284. package/src/nodes/math/Hash.js +9 -0
  285. package/src/nodes/math/MathNode.js +614 -11
  286. package/src/nodes/math/MathUtils.js +45 -1
  287. package/src/nodes/math/OperatorNode.js +233 -0
  288. package/src/nodes/math/TriNoise3D.js +18 -7
  289. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  290. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  291. package/src/nodes/pmrem/PMREMNode.js +133 -0
  292. package/src/nodes/pmrem/PMREMUtils.js +1 -1
  293. package/src/nodes/procedural/Checker.js +9 -0
  294. package/src/nodes/tsl/TSLBase.js +2 -2
  295. package/src/nodes/utils/ArrayElementNode.js +38 -2
  296. package/src/nodes/utils/ConvertNode.js +31 -0
  297. package/src/nodes/utils/CubeMapNode.js +78 -0
  298. package/src/nodes/utils/Discard.js +16 -0
  299. package/src/nodes/utils/EquirectUVNode.js +31 -1
  300. package/src/nodes/utils/FlipNode.js +38 -0
  301. package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
  302. package/src/nodes/utils/JoinNode.js +25 -0
  303. package/src/nodes/utils/LoopNode.js +74 -1
  304. package/src/nodes/utils/MatcapUVNode.js +17 -0
  305. package/src/nodes/utils/MaxMipLevelNode.js +49 -0
  306. package/src/nodes/utils/Oscillators.js +33 -0
  307. package/src/nodes/utils/Packing.js +17 -0
  308. package/src/nodes/utils/PostProcessingUtils.js +28 -23
  309. package/src/nodes/utils/RTTNode.js +123 -2
  310. package/src/nodes/utils/ReflectorNode.js +174 -4
  311. package/src/nodes/utils/RemapNode.js +79 -0
  312. package/src/nodes/utils/RotateNode.js +41 -0
  313. package/src/nodes/utils/SetNode.js +44 -1
  314. package/src/nodes/utils/SplitNode.js +55 -3
  315. package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
  316. package/src/nodes/utils/SpriteUtils.js +17 -0
  317. package/src/nodes/utils/StorageArrayElementNode.js +40 -0
  318. package/src/nodes/utils/Timer.js +19 -0
  319. package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
  320. package/src/nodes/utils/UVUtils.js +20 -0
  321. package/src/nodes/utils/ViewportUtils.js +13 -0
  322. package/src/objects/BatchedMesh.js +1 -2
  323. package/src/objects/ClippingGroup.js +49 -0
  324. package/src/renderers/WebGLRenderer.js +23 -4
  325. package/src/renderers/common/Animation.js +63 -0
  326. package/src/renderers/common/Attributes.js +36 -0
  327. package/src/renderers/common/Backend.js +467 -52
  328. package/src/renderers/common/Background.js +34 -1
  329. package/src/renderers/common/BindGroup.js +43 -0
  330. package/src/renderers/common/Binding.js +35 -0
  331. package/src/renderers/common/Bindings.js +93 -1
  332. package/src/renderers/common/Buffer.js +49 -0
  333. package/src/renderers/common/BufferUtils.js +27 -0
  334. package/src/renderers/common/BundleGroup.js +57 -0
  335. package/src/renderers/common/ChainMap.js +38 -1
  336. package/src/renderers/common/ClippingContext.js +107 -14
  337. package/src/renderers/common/Color4.js +36 -0
  338. package/src/renderers/common/ComputePipeline.js +24 -0
  339. package/src/renderers/common/CubeRenderTarget.js +13 -0
  340. package/src/renderers/common/DataMap.js +37 -1
  341. package/src/renderers/common/Geometries.js +98 -0
  342. package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
  343. package/src/renderers/common/Info.js +87 -0
  344. package/src/renderers/common/Lighting.js +26 -0
  345. package/src/renderers/common/Pipeline.js +22 -0
  346. package/src/renderers/common/Pipelines.js +148 -5
  347. package/src/renderers/common/PostProcessing.js +75 -3
  348. package/src/renderers/common/ProgrammableStage.js +60 -2
  349. package/src/renderers/common/QuadMesh.js +54 -5
  350. package/src/renderers/common/RenderBundle.js +14 -8
  351. package/src/renderers/common/RenderBundles.js +33 -10
  352. package/src/renderers/common/RenderContext.js +169 -4
  353. package/src/renderers/common/RenderContexts.js +42 -2
  354. package/src/renderers/common/RenderList.js +178 -0
  355. package/src/renderers/common/RenderLists.js +31 -0
  356. package/src/renderers/common/RenderObject.js +328 -4
  357. package/src/renderers/common/RenderObjects.js +101 -7
  358. package/src/renderers/common/RenderPipeline.js +24 -0
  359. package/src/renderers/common/Renderer.js +1096 -31
  360. package/src/renderers/common/RendererUtils.js +193 -0
  361. package/src/renderers/common/SampledTexture.js +121 -0
  362. package/src/renderers/common/Sampler.js +30 -0
  363. package/src/renderers/common/StorageBuffer.js +24 -0
  364. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  365. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  366. package/src/renderers/common/StorageTexture.js +38 -0
  367. package/src/renderers/common/Textures.js +83 -0
  368. package/src/renderers/common/Uniform.js +188 -2
  369. package/src/renderers/common/UniformBuffer.js +19 -0
  370. package/src/renderers/common/UniformsGroup.js +139 -2
  371. package/src/renderers/common/extras/PMREMGenerator.js +24 -3
  372. package/src/renderers/common/nodes/NodeBuilderState.js +95 -1
  373. package/src/renderers/common/nodes/NodeLibrary.js +89 -0
  374. package/src/renderers/common/nodes/NodeSampledTexture.js +91 -2
  375. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  376. package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
  377. package/src/renderers/common/nodes/NodeUniform.js +189 -0
  378. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  379. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  380. package/src/renderers/common/nodes/Nodes.js +327 -60
  381. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  382. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  383. package/src/renderers/webgl-fallback/WebGLBackend.js +547 -29
  384. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +0 -1
  385. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
  386. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1 -1
  387. package/src/renderers/webgpu/WebGPUBackend.js +480 -49
  388. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +34 -0
  389. package/src/renderers/webgpu/WebGPURenderer.js +35 -0
  390. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
  391. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
  392. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +59 -11
  393. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
  394. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  395. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +10 -8
  396. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +9 -1
  397. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +5 -9
  398. package/src/renderers/webgpu/utils/WebGPUUtils.js +30 -0
  399. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  400. package/src/renderers/webxr/WebXRManager.js +7 -1
  401. package/src/textures/Data3DTexture.js +2 -2
  402. package/src/textures/Texture.js +4 -0
  403. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
  404. package/examples/jsm/animation/MMDPhysics.js +0 -1408
  405. package/examples/jsm/exporters/MMDExporter.js +0 -223
  406. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  407. package/examples/jsm/loaders/MMDLoader.js +0 -2298
  408. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  409. package/src/nodes/core/UniformGroup.js +0 -13
  410. package/src/nodes/fog/FogExp2Node.js +0 -35
  411. package/src/nodes/fog/FogNode.js +0 -50
  412. package/src/nodes/fog/FogRangeNode.js +0 -36
  413. package/src/renderers/common/PostProcessingUtils.js +0 -86
@@ -1,24 +1,69 @@
1
1
  import { SampledTexture } from '../SampledTexture.js';
2
2
 
3
+ /**
4
+ * A special form of sampled texture binding type.
5
+ * It's texture value is managed by a node object.
6
+ *
7
+ * @private
8
+ * @augments SampledTexture
9
+ */
3
10
  class NodeSampledTexture extends SampledTexture {
4
11
 
12
+ /**
13
+ * Constructs a new node-based sampled texture.
14
+ *
15
+ * @param {String} name - The textures's name.
16
+ * @param {TextureNode} textureNode - The texture node.
17
+ * @param {UniformGroupNode} groupNode - The uniform group node.
18
+ * @param {String?} [access=null] - The access type.
19
+ */
5
20
  constructor( name, textureNode, groupNode, access = null ) {
6
21
 
7
22
  super( name, textureNode ? textureNode.value : null );
8
23
 
24
+ /**
25
+ * The texture node.
26
+ *
27
+ * @type {TextureNode}
28
+ */
9
29
  this.textureNode = textureNode;
30
+
31
+ /**
32
+ * The uniform group node.
33
+ *
34
+ * @type {UniformGroupNode}
35
+ */
10
36
  this.groupNode = groupNode;
11
37
 
38
+ /**
39
+ * The access type.
40
+ *
41
+ * @type {String?}
42
+ * @default null
43
+ */
12
44
  this.access = access;
13
45
 
14
46
  }
15
47
 
48
+ /**
49
+ * Overwrites the default to additionally check if the node value has changed.
50
+ *
51
+ * @param {Number} generation - The generation.
52
+ * @return {Boolean} Whether an update is required or not.
53
+ */
16
54
  needsBindingsUpdate( generation ) {
17
55
 
18
56
  return this.textureNode.value !== this.texture || super.needsBindingsUpdate( generation );
19
57
 
20
58
  }
21
59
 
60
+ /**
61
+ * Updates the binding.
62
+ *
63
+ * @param {Number} generation - The generation.
64
+ * @return {Boolean} Whether the texture has been updated and must be
65
+ * uploaded to the GPU.
66
+ */
22
67
  update() {
23
68
 
24
69
  const { textureNode } = this;
@@ -37,24 +82,68 @@ class NodeSampledTexture extends SampledTexture {
37
82
 
38
83
  }
39
84
 
85
+ /**
86
+ * A special form of sampled cube texture binding type.
87
+ * It's texture value is managed by a node object.
88
+ *
89
+ * @private
90
+ * @augments NodeSampledTexture
91
+ */
40
92
  class NodeSampledCubeTexture extends NodeSampledTexture {
41
93
 
42
- constructor( name, textureNode, groupNode, access ) {
94
+ /**
95
+ * Constructs a new node-based sampled cube texture.
96
+ *
97
+ * @param {String} name - The textures's name.
98
+ * @param {TextureNode} textureNode - The texture node.
99
+ * @param {UniformGroupNode} groupNode - The uniform group node.
100
+ * @param {String?} [access=null] - The access type.
101
+ */
102
+ constructor( name, textureNode, groupNode, access = null ) {
43
103
 
44
104
  super( name, textureNode, groupNode, access );
45
105
 
106
+ /**
107
+ * This flag can be used for type testing.
108
+ *
109
+ * @type {Boolean}
110
+ * @readonly
111
+ * @default true
112
+ */
46
113
  this.isSampledCubeTexture = true;
47
114
 
48
115
  }
49
116
 
50
117
  }
51
118
 
119
+ /**
120
+ * A special form of sampled 3D texture binding type.
121
+ * It's texture value is managed by a node object.
122
+ *
123
+ * @private
124
+ * @augments NodeSampledTexture
125
+ */
52
126
  class NodeSampledTexture3D extends NodeSampledTexture {
53
127
 
54
- constructor( name, textureNode, groupNode, access ) {
128
+ /**
129
+ * Constructs a new node-based sampled 3D texture.
130
+ *
131
+ * @param {String} name - The textures's name.
132
+ * @param {TextureNode} textureNode - The texture node.
133
+ * @param {UniformGroupNode} groupNode - The uniform group node.
134
+ * @param {String?} [access=null] - The access type.
135
+ */
136
+ constructor( name, textureNode, groupNode, access = null ) {
55
137
 
56
138
  super( name, textureNode, groupNode, access );
57
139
 
140
+ /**
141
+ * This flag can be used for type testing.
142
+ *
143
+ * @type {Boolean}
144
+ * @readonly
145
+ * @default true
146
+ */
58
147
  this.isSampledTexture3D = true;
59
148
 
60
149
  }
@@ -1,16 +1,44 @@
1
1
  import Sampler from '../Sampler.js';
2
2
 
3
+ /**
4
+ * A special form of sampler binding type.
5
+ * It's texture value is managed by a node object.
6
+ *
7
+ * @private
8
+ * @augments Sampler
9
+ */
3
10
  class NodeSampler extends Sampler {
4
11
 
12
+ /**
13
+ * Constructs a new node-based sampler.
14
+ *
15
+ * @param {String} name - The samplers's name.
16
+ * @param {TextureNode} textureNode - The texture node.
17
+ * @param {UniformGroupNode} groupNode - The uniform group node.
18
+ */
5
19
  constructor( name, textureNode, groupNode ) {
6
20
 
7
21
  super( name, textureNode ? textureNode.value : null );
8
22
 
23
+ /**
24
+ * The texture node.
25
+ *
26
+ * @type {TextureNode}
27
+ */
9
28
  this.textureNode = textureNode;
29
+
30
+ /**
31
+ * The uniform group node.
32
+ *
33
+ * @type {UniformGroupNode}
34
+ */
10
35
  this.groupNode = groupNode;
11
36
 
12
37
  }
13
38
 
39
+ /**
40
+ * Updates the texture value of this sampler.
41
+ */
14
42
  update() {
15
43
 
16
44
  this.texture = this.textureNode.value;
@@ -3,18 +3,53 @@ import { NodeAccess } from '../../../nodes/core/constants.js';
3
3
 
4
4
  let _id = 0;
5
5
 
6
+ /**
7
+ * A special form of storage buffer binding type.
8
+ * It's buffer value is managed by a node object.
9
+ *
10
+ * @private
11
+ * @augments StorageBuffer
12
+ */
6
13
  class NodeStorageBuffer extends StorageBuffer {
7
14
 
15
+ /**
16
+ * Constructs a new node-based storage buffer.
17
+ *
18
+ * @param {StorageBufferNode} nodeUniform - The storage buffer node.
19
+ * @param {UniformGroupNode} groupNode - The uniform group node.
20
+ */
8
21
  constructor( nodeUniform, groupNode ) {
9
22
 
10
23
  super( 'StorageBuffer_' + _id ++, nodeUniform ? nodeUniform.value : null );
11
24
 
25
+ /**
26
+ * The node uniform.
27
+ *
28
+ * @type {StorageBufferNode}
29
+ */
12
30
  this.nodeUniform = nodeUniform;
31
+
32
+ /**
33
+ * The access type.
34
+ *
35
+ * @type {String}
36
+ */
13
37
  this.access = nodeUniform ? nodeUniform.access : NodeAccess.READ_WRITE;
38
+
39
+ /**
40
+ * The uniform group node.
41
+ *
42
+ * @type {UniformGroupNode}
43
+ */
14
44
  this.groupNode = groupNode;
15
45
 
16
46
  }
17
47
 
48
+ /**
49
+ * The storage buffer.
50
+ *
51
+ * @type {BufferAttribute}
52
+ */
18
53
  get buffer() {
19
54
 
20
55
  return this.nodeUniform.value;
@@ -3,22 +3,49 @@ import {
3
3
  ColorUniform, Matrix3Uniform, Matrix4Uniform
4
4
  } from '../Uniform.js';
5
5
 
6
+ /**
7
+ * A special form of Number uniform binding type.
8
+ * It's value is managed by a node object.
9
+ *
10
+ * @private
11
+ * @augments NumberUniform
12
+ */
6
13
  class NumberNodeUniform extends NumberUniform {
7
14
 
15
+ /**
16
+ * Constructs a new node-based Number uniform.
17
+ *
18
+ * @param {NodeUniform} nodeUniform - The node uniform.
19
+ */
8
20
  constructor( nodeUniform ) {
9
21
 
10
22
  super( nodeUniform.name, nodeUniform.value );
11
23
 
24
+ /**
25
+ * The node uniform.
26
+ *
27
+ * @type {NodeUniform}
28
+ */
12
29
  this.nodeUniform = nodeUniform;
13
30
 
14
31
  }
15
32
 
33
+ /**
34
+ * Overwritten to return the value of the node uniform.
35
+ *
36
+ * @return {Number} The value.
37
+ */
16
38
  getValue() {
17
39
 
18
40
  return this.nodeUniform.value;
19
41
 
20
42
  }
21
43
 
44
+ /**
45
+ * Returns the node uniform data type.
46
+ *
47
+ * @return {String} The data type.
48
+ */
22
49
  getType() {
23
50
 
24
51
  return this.nodeUniform.type;
@@ -27,22 +54,49 @@ class NumberNodeUniform extends NumberUniform {
27
54
 
28
55
  }
29
56
 
57
+ /**
58
+ * A special form of Vector2 uniform binding type.
59
+ * It's value is managed by a node object.
60
+ *
61
+ * @private
62
+ * @augments Vector2Uniform
63
+ */
30
64
  class Vector2NodeUniform extends Vector2Uniform {
31
65
 
66
+ /**
67
+ * Constructs a new node-based Vector2 uniform.
68
+ *
69
+ * @param {NodeUniform} nodeUniform - The node uniform.
70
+ */
32
71
  constructor( nodeUniform ) {
33
72
 
34
73
  super( nodeUniform.name, nodeUniform.value );
35
74
 
75
+ /**
76
+ * The node uniform.
77
+ *
78
+ * @type {NodeUniform}
79
+ */
36
80
  this.nodeUniform = nodeUniform;
37
81
 
38
82
  }
39
83
 
84
+ /**
85
+ * Overwritten to return the value of the node uniform.
86
+ *
87
+ * @return {Vector2} The value.
88
+ */
40
89
  getValue() {
41
90
 
42
91
  return this.nodeUniform.value;
43
92
 
44
93
  }
45
94
 
95
+ /**
96
+ * Returns the node uniform data type.
97
+ *
98
+ * @return {String} The data type.
99
+ */
46
100
  getType() {
47
101
 
48
102
  return this.nodeUniform.type;
@@ -51,22 +105,49 @@ class Vector2NodeUniform extends Vector2Uniform {
51
105
 
52
106
  }
53
107
 
108
+ /**
109
+ * A special form of Vector3 uniform binding type.
110
+ * It's value is managed by a node object.
111
+ *
112
+ * @private
113
+ * @augments Vector3Uniform
114
+ */
54
115
  class Vector3NodeUniform extends Vector3Uniform {
55
116
 
117
+ /**
118
+ * Constructs a new node-based Vector3 uniform.
119
+ *
120
+ * @param {NodeUniform} nodeUniform - The node uniform.
121
+ */
56
122
  constructor( nodeUniform ) {
57
123
 
58
124
  super( nodeUniform.name, nodeUniform.value );
59
125
 
126
+ /**
127
+ * The node uniform.
128
+ *
129
+ * @type {NodeUniform}
130
+ */
60
131
  this.nodeUniform = nodeUniform;
61
132
 
62
133
  }
63
134
 
135
+ /**
136
+ * Overwritten to return the value of the node uniform.
137
+ *
138
+ * @return {Vector3} The value.
139
+ */
64
140
  getValue() {
65
141
 
66
142
  return this.nodeUniform.value;
67
143
 
68
144
  }
69
145
 
146
+ /**
147
+ * Returns the node uniform data type.
148
+ *
149
+ * @return {String} The data type.
150
+ */
70
151
  getType() {
71
152
 
72
153
  return this.nodeUniform.type;
@@ -75,22 +156,49 @@ class Vector3NodeUniform extends Vector3Uniform {
75
156
 
76
157
  }
77
158
 
159
+ /**
160
+ * A special form of Vector4 uniform binding type.
161
+ * It's value is managed by a node object.
162
+ *
163
+ * @private
164
+ * @augments Vector4Uniform
165
+ */
78
166
  class Vector4NodeUniform extends Vector4Uniform {
79
167
 
168
+ /**
169
+ * Constructs a new node-based Vector4 uniform.
170
+ *
171
+ * @param {NodeUniform} nodeUniform - The node uniform.
172
+ */
80
173
  constructor( nodeUniform ) {
81
174
 
82
175
  super( nodeUniform.name, nodeUniform.value );
83
176
 
177
+ /**
178
+ * The node uniform.
179
+ *
180
+ * @type {NodeUniform}
181
+ */
84
182
  this.nodeUniform = nodeUniform;
85
183
 
86
184
  }
87
185
 
186
+ /**
187
+ * Overwritten to return the value of the node uniform.
188
+ *
189
+ * @return {Vector4} The value.
190
+ */
88
191
  getValue() {
89
192
 
90
193
  return this.nodeUniform.value;
91
194
 
92
195
  }
93
196
 
197
+ /**
198
+ * Returns the node uniform data type.
199
+ *
200
+ * @return {String} The data type.
201
+ */
94
202
  getType() {
95
203
 
96
204
  return this.nodeUniform.type;
@@ -99,22 +207,49 @@ class Vector4NodeUniform extends Vector4Uniform {
99
207
 
100
208
  }
101
209
 
210
+ /**
211
+ * A special form of Color uniform binding type.
212
+ * It's value is managed by a node object.
213
+ *
214
+ * @private
215
+ * @augments ColorUniform
216
+ */
102
217
  class ColorNodeUniform extends ColorUniform {
103
218
 
219
+ /**
220
+ * Constructs a new node-based Color uniform.
221
+ *
222
+ * @param {NodeUniform} nodeUniform - The node uniform.
223
+ */
104
224
  constructor( nodeUniform ) {
105
225
 
106
226
  super( nodeUniform.name, nodeUniform.value );
107
227
 
228
+ /**
229
+ * The node uniform.
230
+ *
231
+ * @type {NodeUniform}
232
+ */
108
233
  this.nodeUniform = nodeUniform;
109
234
 
110
235
  }
111
236
 
237
+ /**
238
+ * Overwritten to return the value of the node uniform.
239
+ *
240
+ * @return {Color} The value.
241
+ */
112
242
  getValue() {
113
243
 
114
244
  return this.nodeUniform.value;
115
245
 
116
246
  }
117
247
 
248
+ /**
249
+ * Returns the node uniform data type.
250
+ *
251
+ * @return {String} The data type.
252
+ */
118
253
  getType() {
119
254
 
120
255
  return this.nodeUniform.type;
@@ -123,22 +258,49 @@ class ColorNodeUniform extends ColorUniform {
123
258
 
124
259
  }
125
260
 
261
+ /**
262
+ * A special form of Matrix3 uniform binding type.
263
+ * It's value is managed by a node object.
264
+ *
265
+ * @private
266
+ * @augments Matrix3Uniform
267
+ */
126
268
  class Matrix3NodeUniform extends Matrix3Uniform {
127
269
 
270
+ /**
271
+ * Constructs a new node-based Matrix3 uniform.
272
+ *
273
+ * @param {NodeUniform} nodeUniform - The node uniform.
274
+ */
128
275
  constructor( nodeUniform ) {
129
276
 
130
277
  super( nodeUniform.name, nodeUniform.value );
131
278
 
279
+ /**
280
+ * The node uniform.
281
+ *
282
+ * @type {NodeUniform}
283
+ */
132
284
  this.nodeUniform = nodeUniform;
133
285
 
134
286
  }
135
287
 
288
+ /**
289
+ * Overwritten to return the value of the node uniform.
290
+ *
291
+ * @return {Matrix3} The value.
292
+ */
136
293
  getValue() {
137
294
 
138
295
  return this.nodeUniform.value;
139
296
 
140
297
  }
141
298
 
299
+ /**
300
+ * Returns the node uniform data type.
301
+ *
302
+ * @return {String} The data type.
303
+ */
142
304
  getType() {
143
305
 
144
306
  return this.nodeUniform.type;
@@ -147,22 +309,49 @@ class Matrix3NodeUniform extends Matrix3Uniform {
147
309
 
148
310
  }
149
311
 
312
+ /**
313
+ * A special form of Matrix4 uniform binding type.
314
+ * It's value is managed by a node object.
315
+ *
316
+ * @private
317
+ * @augments Matrix4Uniform
318
+ */
150
319
  class Matrix4NodeUniform extends Matrix4Uniform {
151
320
 
321
+ /**
322
+ * Constructs a new node-based Matrix4 uniform.
323
+ *
324
+ * @param {NodeUniform} nodeUniform - The node uniform.
325
+ */
152
326
  constructor( nodeUniform ) {
153
327
 
154
328
  super( nodeUniform.name, nodeUniform.value );
155
329
 
330
+ /**
331
+ * The node uniform.
332
+ *
333
+ * @type {NodeUniform}
334
+ */
156
335
  this.nodeUniform = nodeUniform;
157
336
 
158
337
  }
159
338
 
339
+ /**
340
+ * Overwritten to return the value of the node uniform.
341
+ *
342
+ * @return {Matrix4} The value.
343
+ */
160
344
  getValue() {
161
345
 
162
346
  return this.nodeUniform.value;
163
347
 
164
348
  }
165
349
 
350
+ /**
351
+ * Returns the node uniform data type.
352
+ *
353
+ * @return {String} The data type.
354
+ */
166
355
  getType() {
167
356
 
168
357
  return this.nodeUniform.type;
@@ -2,17 +2,46 @@ import UniformBuffer from '../UniformBuffer.js';
2
2
 
3
3
  let _id = 0;
4
4
 
5
+ /**
6
+ * A special form of uniform buffer binding type.
7
+ * It's buffer value is managed by a node object.
8
+ *
9
+ * @private
10
+ * @augments UniformBuffer
11
+ */
5
12
  class NodeUniformBuffer extends UniformBuffer {
6
13
 
14
+ /**
15
+ * Constructs a new node-based uniform buffer.
16
+ *
17
+ * @param {BufferNode} nodeUniform - The uniform buffer node.
18
+ * @param {UniformGroupNode} groupNode - The uniform group node.
19
+ */
7
20
  constructor( nodeUniform, groupNode ) {
8
21
 
9
22
  super( 'UniformBuffer_' + _id ++, nodeUniform ? nodeUniform.value : null );
10
23
 
24
+ /**
25
+ * The uniform buffer node.
26
+ *
27
+ * @type {BufferNode}
28
+ */
11
29
  this.nodeUniform = nodeUniform;
30
+
31
+ /**
32
+ * The uniform group node.
33
+ *
34
+ * @type {UniformGroupNode}
35
+ */
12
36
  this.groupNode = groupNode;
13
37
 
14
38
  }
15
39
 
40
+ /**
41
+ * The uniform buffer.
42
+ *
43
+ * @type {Float32Array}
44
+ */
16
45
  get buffer() {
17
46
 
18
47
  return this.nodeUniform.value;
@@ -2,37 +2,50 @@ import UniformsGroup from '../UniformsGroup.js';
2
2
 
3
3
  let _id = 0;
4
4
 
5
+ /**
6
+ * A special form of uniforms group that represents
7
+ * the individual uniforms as node-based uniforms.
8
+ *
9
+ * @private
10
+ * @augments UniformsGroup
11
+ */
5
12
  class NodeUniformsGroup extends UniformsGroup {
6
13
 
14
+ /**
15
+ * Constructs a new node-based uniforms group.
16
+ *
17
+ * @param {String} name - The group's name.
18
+ * @param {UniformGroupNode} groupNode - The uniform group node.
19
+ */
7
20
  constructor( name, groupNode ) {
8
21
 
9
22
  super( name );
10
23
 
24
+ /**
25
+ * The group's ID.
26
+ *
27
+ * @type {Number}
28
+ */
11
29
  this.id = _id ++;
30
+
31
+ /**
32
+ * The uniform group node.
33
+ *
34
+ * @type {UniformGroupNode}
35
+ */
12
36
  this.groupNode = groupNode;
13
37
 
38
+ /**
39
+ * This flag can be used for type testing.
40
+ *
41
+ * @type {Boolean}
42
+ * @readonly
43
+ * @default true
44
+ */
14
45
  this.isNodeUniformsGroup = true;
15
46
 
16
47
  }
17
48
 
18
- getNodes() {
19
-
20
- const nodes = [];
21
-
22
- for ( const uniform of this.uniforms ) {
23
-
24
- const node = uniform.nodeUniform.node;
25
-
26
- if ( ! node ) throw new Error( 'NodeUniformsGroup: Uniform has no node.' );
27
-
28
- nodes.push( node );
29
-
30
- }
31
-
32
- return nodes;
33
-
34
- }
35
-
36
49
  }
37
50
 
38
51
  export default NodeUniformsGroup;