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
@@ -102,6 +102,12 @@ class PMREMGenerator {
102
102
  * in radians to be applied to the scene before PMREM generation. Optional near
103
103
  * and far planes ensure the scene is rendered in its entirety (the cubeCamera
104
104
  * is placed at the origin).
105
+ *
106
+ * @param {Scene} scene
107
+ * @param {number} sigma
108
+ * @param {number} near
109
+ * @param {number} far
110
+ * @return {WebGLRenderTarget}
105
111
  */
106
112
  fromScene( scene, sigma = 0, near = 0.1, far = 100 ) {
107
113
 
@@ -137,6 +143,10 @@ class PMREMGenerator {
137
143
  * or HDR. The ideal input image size is 1k (1024 x 512),
138
144
  * as this matches best with the 256 x 256 cubemap output.
139
145
  * The smallest supported equirectangular image size is 64 x 32.
146
+ *
147
+ * @param {Texture} equirectangular
148
+ * @param {WebGLRenderTarget} [renderTarget=null] - Optional render target.
149
+ * @return {WebGLRenderTarget}
140
150
  */
141
151
  fromEquirectangular( equirectangular, renderTarget = null ) {
142
152
 
@@ -149,6 +159,10 @@ class PMREMGenerator {
149
159
  * or HDR. The ideal input cube size is 256 x 256,
150
160
  * as this matches best with the 256 x 256 cubemap output.
151
161
  * The smallest supported cube size is 16 x 16.
162
+ *
163
+ * @param {Texture} cubemap
164
+ * @param {null} [renderTarget=null] - Optional render target.
165
+ * @return {WebGLRenderTarget}
152
166
  */
153
167
  fromCubemap( cubemap, renderTarget = null ) {
154
168
 
@@ -466,6 +480,12 @@ class PMREMGenerator {
466
480
  * the blur latitudinally (around the poles), and then longitudinally (towards
467
481
  * the poles) to approximate the orthogonally-separable blur. It is least
468
482
  * accurate at the poles, but still does a decent job.
483
+ *
484
+ * @param {WebGLRenderTarget} cubeUVRenderTarget
485
+ * @param {number} lodIn
486
+ * @param {number} lodOut
487
+ * @param {number} sigma
488
+ * @param {Vector3} [poleAxis]
469
489
  */
470
490
  _blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {
471
491
 
@@ -69,6 +69,12 @@ function fill( texture ) {
69
69
  /**
70
70
  * Given the width, height, format, and type of a texture. Determines how many
71
71
  * bytes must be used to represent the texture.
72
+ *
73
+ * @param {Number} width
74
+ * @param {Number} height
75
+ * @param {Number} format
76
+ * @param {Number} type
77
+ * @return {Number} The number of bytes required to represent the texture.
72
78
  */
73
79
  function getByteLength( width, height, format, type ) {
74
80
 
@@ -5,6 +5,7 @@ import { Color } from '../math/Color.js';
5
5
  import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
6
6
  import { BufferGeometry } from '../core/BufferGeometry.js';
7
7
  import { Float32BufferAttribute } from '../core/BufferAttribute.js';
8
+ import { WebGLCoordinateSystem } from '../constants.js';
8
9
 
9
10
  const _vector = /*@__PURE__*/ new Vector3();
10
11
  const _camera = /*@__PURE__*/ new Camera();
@@ -195,17 +196,19 @@ class CameraHelper extends LineSegments {
195
196
 
196
197
  _camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );
197
198
 
198
- // center / target
199
+ // Adjust z values based on coordinate system
200
+ const nearZ = this.camera.coordinateSystem === WebGLCoordinateSystem ? - 1 : 0;
199
201
 
200
- setPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );
202
+ // center / target
203
+ setPoint( 'c', pointMap, geometry, _camera, 0, 0, nearZ );
201
204
  setPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );
202
205
 
203
206
  // near
204
207
 
205
- setPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );
206
- setPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );
207
- setPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );
208
- setPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );
208
+ setPoint( 'n1', pointMap, geometry, _camera, - w, - h, nearZ );
209
+ setPoint( 'n2', pointMap, geometry, _camera, w, - h, nearZ );
210
+ setPoint( 'n3', pointMap, geometry, _camera, - w, h, nearZ );
211
+ setPoint( 'n4', pointMap, geometry, _camera, w, h, nearZ );
209
212
 
210
213
  // far
211
214
 
@@ -216,9 +219,9 @@ class CameraHelper extends LineSegments {
216
219
 
217
220
  // up
218
221
 
219
- setPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );
220
- setPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );
221
- setPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );
222
+ setPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, nearZ );
223
+ setPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, nearZ );
224
+ setPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, nearZ );
222
225
 
223
226
  // cross
224
227
 
@@ -227,10 +230,10 @@ class CameraHelper extends LineSegments {
227
230
  setPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );
228
231
  setPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );
229
232
 
230
- setPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );
231
- setPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );
232
- setPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );
233
- setPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );
233
+ setPoint( 'cn1', pointMap, geometry, _camera, - w, 0, nearZ );
234
+ setPoint( 'cn2', pointMap, geometry, _camera, w, 0, nearZ );
235
+ setPoint( 'cn3', pointMap, geometry, _camera, 0, - h, nearZ );
236
+ setPoint( 'cn4', pointMap, geometry, _camera, 0, h, nearZ );
234
237
 
235
238
  geometry.getAttribute( 'position' ).needsUpdate = true;
236
239
 
@@ -3,17 +3,46 @@ import { nodeObject, float } from '../../nodes/tsl/TSLBase.js';
3
3
  import { Loader } from '../Loader.js';
4
4
  import { FileLoader } from '../../loaders/FileLoader.js';
5
5
 
6
+ /**
7
+ * A loader for loading node objects in the three.js JSON Object/Scene format.
8
+ *
9
+ * @augments Loader
10
+ */
6
11
  class NodeLoader extends Loader {
7
12
 
13
+ /**
14
+ * Constructs a new node loader.
15
+ *
16
+ * @param {LoadingManager?} manager - A reference to a loading manager.
17
+ */
8
18
  constructor( manager ) {
9
19
 
10
20
  super( manager );
11
21
 
22
+ /**
23
+ * Represents a dictionary of textures.
24
+ *
25
+ * @type {Object<String,Texture>}
26
+ */
12
27
  this.textures = {};
28
+
29
+ /**
30
+ * Represents a dictionary of node types.
31
+ *
32
+ * @type {Object<String,Node.constructor>}
33
+ */
13
34
  this.nodes = {};
14
35
 
15
36
  }
16
37
 
38
+ /**
39
+ * Loads the node definitions from the given URL.
40
+ *
41
+ * @param {String} url - The path/URL of the file to be loaded.
42
+ * @param {Function} onLoad - Will be called when load completes.
43
+ * @param {Function} onProgress - Will be called while load progresses.
44
+ * @param {Function} onError - Will be called when errors are thrown during the loading process.
45
+ */
17
46
  load( url, onLoad, onProgress, onError ) {
18
47
 
19
48
  const loader = new FileLoader( this.manager );
@@ -46,6 +75,12 @@ class NodeLoader extends Loader {
46
75
 
47
76
  }
48
77
 
78
+ /**
79
+ * Parse the node dependencies for the loaded node.
80
+ *
81
+ * @param {Object} json - The JSON definition
82
+ * @return {Object<String,Node>} A dictionary with node dependencies.
83
+ */
49
84
  parseNodes( json ) {
50
85
 
51
86
  const nodes = {};
@@ -80,6 +115,12 @@ class NodeLoader extends Loader {
80
115
 
81
116
  }
82
117
 
118
+ /**
119
+ * Parses the node from the given JSON.
120
+ *
121
+ * @param {Object} json - The JSON definition
122
+ * @return {Node} The parsed node.
123
+ */
83
124
  parse( json ) {
84
125
 
85
126
  const node = this.createNodeFromType( json.type );
@@ -98,6 +139,12 @@ class NodeLoader extends Loader {
98
139
 
99
140
  }
100
141
 
142
+ /**
143
+ * Defines the dictionary of textures.
144
+ *
145
+ * @param {Object<String,Texture>} value - The texture library defines as `<uuid,texture>`.
146
+ * @return {NodeLoader} A reference to this loader.
147
+ */
101
148
  setTextures( value ) {
102
149
 
103
150
  this.textures = value;
@@ -105,6 +152,12 @@ class NodeLoader extends Loader {
105
152
 
106
153
  }
107
154
 
155
+ /**
156
+ * Defines the dictionary of node types.
157
+ *
158
+ * @param {Object<String,Node.constructor>} value - The node library defined as `<classname,class>`.
159
+ * @return {NodeLoader} A reference to this loader.
160
+ */
108
161
  setNodes( value ) {
109
162
 
110
163
  this.nodes = value;
@@ -112,6 +165,12 @@ class NodeLoader extends Loader {
112
165
 
113
166
  }
114
167
 
168
+ /**
169
+ * Creates a node object from the given type.
170
+ *
171
+ * @param {String} type - The node type.
172
+ * @return {Node} The created node instance.
173
+ */
115
174
  createNodeFromType( type ) {
116
175
 
117
176
  if ( this.nodes[ type ] === undefined ) {
@@ -1,16 +1,43 @@
1
1
  import { MaterialLoader } from '../../loaders/MaterialLoader.js';
2
2
 
3
+ /**
4
+ * A special type of material loader for loading node materials.
5
+ *
6
+ * @augments MaterialLoader
7
+ */
3
8
  class NodeMaterialLoader extends MaterialLoader {
4
9
 
10
+ /**
11
+ * Constructs a new node material loader.
12
+ *
13
+ * @param {LoadingManager?} manager - A reference to a loading manager.
14
+ */
5
15
  constructor( manager ) {
6
16
 
7
17
  super( manager );
8
18
 
19
+ /**
20
+ * Represents a dictionary of node types.
21
+ *
22
+ * @type {Object<String,Node.constructor>}
23
+ */
9
24
  this.nodes = {};
25
+
26
+ /**
27
+ * Represents a dictionary of node material types.
28
+ *
29
+ * @type {Object<String,NodeMaterial.constructor>}
30
+ */
10
31
  this.nodeMaterials = {};
11
32
 
12
33
  }
13
34
 
35
+ /**
36
+ * Parses the node material from the given JSON.
37
+ *
38
+ * @param {Object} json - The JSON definition
39
+ * @return {NodeMaterial}. The parsed material.
40
+ */
14
41
  parse( json ) {
15
42
 
16
43
  const material = super.parse( json );
@@ -30,6 +57,12 @@ class NodeMaterialLoader extends MaterialLoader {
30
57
 
31
58
  }
32
59
 
60
+ /**
61
+ * Defines the dictionary of node types.
62
+ *
63
+ * @param {Object<String,Node.constructor>} value - The node library defined as `<classname,class>`.
64
+ * @return {NodeLoader} A reference to this loader.
65
+ */
33
66
  setNodes( value ) {
34
67
 
35
68
  this.nodes = value;
@@ -37,6 +70,12 @@ class NodeMaterialLoader extends MaterialLoader {
37
70
 
38
71
  }
39
72
 
73
+ /**
74
+ * Defines the dictionary of node material types.
75
+ *
76
+ * @param {Object<String,NodeMaterial.constructor>} value - The node material library defined as `<classname,class>`.
77
+ * @return {NodeLoader} A reference to this loader.
78
+ */
40
79
  setNodeMaterials( value ) {
41
80
 
42
81
  this.nodeMaterials = value;
@@ -44,6 +83,12 @@ class NodeMaterialLoader extends MaterialLoader {
44
83
 
45
84
  }
46
85
 
86
+ /**
87
+ * Creates a node material from the given type.
88
+ *
89
+ * @param {String} type - The node material type.
90
+ * @return {Node} The created node material instance.
91
+ */
47
92
  createMaterialFromType( type ) {
48
93
 
49
94
  const materialClass = this.nodeMaterials[ type ];
@@ -3,19 +3,53 @@ import NodeMaterialLoader from './NodeMaterialLoader.js';
3
3
 
4
4
  import { ObjectLoader } from '../../loaders/ObjectLoader.js';
5
5
 
6
+ /**
7
+ * A special type of object loader for loading 3D objects using
8
+ * node materials.
9
+ *
10
+ * @augments ObjectLoader
11
+ */
6
12
  class NodeObjectLoader extends ObjectLoader {
7
13
 
14
+ /**
15
+ * Constructs a new node object loader.
16
+ *
17
+ * @param {LoadingManager?} manager - A reference to a loading manager.
18
+ */
8
19
  constructor( manager ) {
9
20
 
10
21
  super( manager );
11
22
 
23
+ /**
24
+ * Represents a dictionary of node types.
25
+ *
26
+ * @type {Object<String,Node.constructor>}
27
+ */
12
28
  this.nodes = {};
29
+
30
+ /**
31
+ * Represents a dictionary of node material types.
32
+ *
33
+ * @type {Object<String,NodeMaterial.constructor>}
34
+ */
13
35
  this.nodeMaterials = {};
14
36
 
37
+ /**
38
+ * A reference for holdng the `nodes` JSON property.
39
+ *
40
+ * @private
41
+ * @type {Object?}
42
+ */
15
43
  this._nodesJSON = null;
16
44
 
17
45
  }
18
46
 
47
+ /**
48
+ * Defines the dictionary of node types.
49
+ *
50
+ * @param {Object<String,Node.constructor>} value - The node library defined as `<classname,class>`.
51
+ * @return {NodeLoader} A reference to this loader.
52
+ */
19
53
  setNodes( value ) {
20
54
 
21
55
  this.nodes = value;
@@ -23,6 +57,12 @@ class NodeObjectLoader extends ObjectLoader {
23
57
 
24
58
  }
25
59
 
60
+ /**
61
+ * Defines the dictionary of node material types.
62
+ *
63
+ * @param {Object<String,NodeMaterial.constructor>} value - The node material library defined as `<classname,class>`.
64
+ * @return {NodeLoader} A reference to this loader.
65
+ */
26
66
  setNodeMaterials( value ) {
27
67
 
28
68
  this.nodeMaterials = value;
@@ -30,6 +70,13 @@ class NodeObjectLoader extends ObjectLoader {
30
70
 
31
71
  }
32
72
 
73
+ /**
74
+ * Parses the node objects from the given JSON.
75
+ *
76
+ * @param {Object} json - The JSON definition
77
+ * @param {Function} onLoad - The onLoad callback function.
78
+ * @return {Object3D}. The parsed 3D object.
79
+ */
33
80
  parse( json, onLoad ) {
34
81
 
35
82
  this._nodesJSON = json.nodes;
@@ -42,6 +89,13 @@ class NodeObjectLoader extends ObjectLoader {
42
89
 
43
90
  }
44
91
 
92
+ /**
93
+ * Parses the node objects from the given JSON and textures.
94
+ *
95
+ * @param {Object} json - The JSON definition
96
+ * @param {Object<String,Texture>} textures - The texture library.
97
+ * @return {Object<String,Node>}. The parsed nodes.
98
+ */
45
99
  parseNodes( json, textures ) {
46
100
 
47
101
  if ( json !== undefined ) {
@@ -58,6 +112,13 @@ class NodeObjectLoader extends ObjectLoader {
58
112
 
59
113
  }
60
114
 
115
+ /**
116
+ * Parses the node objects from the given JSON and textures.
117
+ *
118
+ * @param {Object} json - The JSON definition
119
+ * @param {Object<String,Texture>} textures - The texture library.
120
+ * @return {Object<String,NodeMaterial>}. The parsed materials.
121
+ */
61
122
  parseMaterials( json, textures ) {
62
123
 
63
124
  const materials = {};
@@ -13,6 +13,15 @@ import { PointsMaterial } from '../PointsMaterial.js';
13
13
 
14
14
  const _defaultValues = /*@__PURE__*/ new PointsMaterial();
15
15
 
16
+ /**
17
+ * Unlike WebGL, WebGPU can render point primitives only with a size
18
+ * of one pixel. This type node material can be used to mimic the WebGL
19
+ * points rendering by rendering small planes via instancing.
20
+ *
21
+ * This material should be used with {@link InstancedPointsGeometry}.
22
+ *
23
+ * @augments NodeMaterial
24
+ */
16
25
  class InstancedPointsNodeMaterial extends NodeMaterial {
17
26
 
18
27
  static get type() {
@@ -21,39 +30,75 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
21
30
 
22
31
  }
23
32
 
24
- constructor( params = {} ) {
33
+ /**
34
+ * Constructs a new instanced points node material.
35
+ *
36
+ * @param {Object?} parameters - The configuration parameter.
37
+ */
38
+ constructor( parameters = {} ) {
25
39
 
26
40
  super();
27
41
 
28
- this.lights = false;
29
-
30
- this.useAlphaToCoverage = true;
31
-
32
- this.useColor = params.vertexColors;
33
-
42
+ /**
43
+ * This flag can be used for type testing.
44
+ *
45
+ * @type {Boolean}
46
+ * @readonly
47
+ * @default true
48
+ */
49
+ this.isInstancedPointsNodeMaterial = true;
50
+
51
+ /**
52
+ * Whether vertex colors should be used or not. If set to `true`,
53
+ * each point instance can receive a custom color value.
54
+ *
55
+ * @type {Boolean}
56
+ * @default false
57
+ */
58
+ this.useColor = parameters.vertexColors;
59
+
60
+ /**
61
+ * The points width in pixels.
62
+ *
63
+ * @type {Number}
64
+ * @default 1
65
+ */
34
66
  this.pointWidth = 1;
35
67
 
68
+ /**
69
+ * This node can be used to define the colors for each instance.
70
+ *
71
+ * @type {Node<vec3>?}
72
+ * @default null
73
+ */
36
74
  this.pointColorNode = null;
37
75
 
76
+ /**
77
+ * This node can be used to define the width for each point instance.
78
+ *
79
+ * @type {Node<float>?}
80
+ * @default null
81
+ */
38
82
  this.pointWidthNode = null;
39
83
 
84
+ this._useAlphaToCoverage = true;
85
+
40
86
  this.setDefaultValues( _defaultValues );
41
87
 
42
- this.setValues( params );
88
+ this.setValues( parameters );
43
89
 
44
90
  }
45
91
 
92
+ /**
93
+ * Setups the vertex and fragment stage of this node material.
94
+ *
95
+ * @param {NodeBuilder} builder - The current node builder.
96
+ */
46
97
  setup( builder ) {
47
98
 
48
- this.setupShaders( builder );
49
-
50
- super.setup( builder );
99
+ const { renderer } = builder;
51
100
 
52
- }
53
-
54
- setupShaders( { renderer } ) {
55
-
56
- const useAlphaToCoverage = this.alphaToCoverage;
101
+ const useAlphaToCoverage = this._useAlphaToCoverage;
57
102
  const useColor = this.useColor;
58
103
 
59
104
  this.vertexNode = Fn( () => {
@@ -132,19 +177,27 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
132
177
 
133
178
  } )();
134
179
 
180
+ super.setup( builder );
181
+
135
182
  }
136
183
 
184
+ /**
185
+ * Whether alpha to coverage should be used or not.
186
+ *
187
+ * @type {Boolean}
188
+ * @default true
189
+ */
137
190
  get alphaToCoverage() {
138
191
 
139
- return this.useAlphaToCoverage;
192
+ return this._useAlphaToCoverage;
140
193
 
141
194
  }
142
195
 
143
196
  set alphaToCoverage( value ) {
144
197
 
145
- if ( this.useAlphaToCoverage !== value ) {
198
+ if ( this._useAlphaToCoverage !== value ) {
146
199
 
147
- this.useAlphaToCoverage = value;
200
+ this._useAlphaToCoverage = value;
148
201
  this.needsUpdate = true;
149
202
 
150
203
  }