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
@@ -2,6 +2,13 @@ import Node from '../core/Node.js';
2
2
  import { NodeUpdateType } from '../core/constants.js';
3
3
  import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
4
4
 
5
+ /** @module ComputeNode **/
6
+
7
+ /**
8
+ * TODO
9
+ *
10
+ * @augments Node
11
+ */
5
12
  class ComputeNode extends Node {
6
13
 
7
14
  static get type() {
@@ -10,39 +17,116 @@ class ComputeNode extends Node {
10
17
 
11
18
  }
12
19
 
20
+ /**
21
+ * Constructs a new compute node.
22
+ *
23
+ * @param {Node} computeNode - TODO
24
+ * @param {Number} count - TODO.
25
+ * @param {Array<Number>} [workgroupSize=[64]] - TODO.
26
+ */
13
27
  constructor( computeNode, count, workgroupSize = [ 64 ] ) {
14
28
 
15
29
  super( 'void' );
16
30
 
31
+ /**
32
+ * This flag can be used for type testing.
33
+ *
34
+ * @type {Boolean}
35
+ * @readonly
36
+ * @default true
37
+ */
17
38
  this.isComputeNode = true;
18
39
 
40
+ /**
41
+ * TODO
42
+ *
43
+ * @type {Node}
44
+ */
19
45
  this.computeNode = computeNode;
20
46
 
47
+ /**
48
+ * TODO
49
+ *
50
+ * @type {Number}
51
+ */
21
52
  this.count = count;
53
+
54
+ /**
55
+ * TODO
56
+ *
57
+ * @type {Array<Number>}
58
+ * @default [64]
59
+ */
22
60
  this.workgroupSize = workgroupSize;
61
+
62
+ /**
63
+ * TODO
64
+ *
65
+ * @type {Number}
66
+ */
23
67
  this.dispatchCount = 0;
24
68
 
69
+ /**
70
+ * TODO
71
+ *
72
+ * @type {Number}
73
+ */
25
74
  this.version = 1;
75
+
76
+ /**
77
+ * The name or label of the uniform.
78
+ *
79
+ * @type {String}
80
+ * @default ''
81
+ */
82
+ this.name = '';
83
+
84
+ /**
85
+ * The `updateBeforeType` is set to `NodeUpdateType.OBJECT` since {@link ComputeNode#updateBefore}
86
+ * is executed once per object by default.
87
+ *
88
+ * @type {String}
89
+ * @default 'object'
90
+ */
26
91
  this.updateBeforeType = NodeUpdateType.OBJECT;
27
92
 
93
+ /**
94
+ * TODO
95
+ *
96
+ * @type {Function}
97
+ */
28
98
  this.onInitFunction = null;
29
99
 
30
100
  this.updateDispatchCount();
31
101
 
32
102
  }
33
103
 
104
+ /**
105
+ * Executes the `dispose` event for this node.
106
+ */
34
107
  dispose() {
35
108
 
36
109
  this.dispatchEvent( { type: 'dispose' } );
37
110
 
38
111
  }
39
112
 
40
- set needsUpdate( value ) {
113
+ /**
114
+ * Sets the {@link ComputeNode#name} property.
115
+ *
116
+ * @param {String} name - The name of the uniform.
117
+ * @return {ComputeNode} A reference to this node.
118
+ */
119
+ label( name ) {
120
+
121
+ this.name = name;
41
122
 
42
- if ( value === true ) this.version ++;
123
+ return this;
43
124
 
44
125
  }
45
126
 
127
+ /**
128
+ * TODO
129
+ */
46
130
  updateDispatchCount() {
47
131
 
48
132
  const { count, workgroupSize } = this;
@@ -56,6 +140,12 @@ class ComputeNode extends Node {
56
140
 
57
141
  }
58
142
 
143
+ /**
144
+ * TODO
145
+ *
146
+ * @param {Function} callback - TODO.
147
+ * @return {ComputeNode} A reference to this node.
148
+ */
59
149
  onInit( callback ) {
60
150
 
61
151
  this.onInitFunction = callback;
@@ -64,6 +154,11 @@ class ComputeNode extends Node {
64
154
 
65
155
  }
66
156
 
157
+ /**
158
+ * The method execute the compute for this node.
159
+ *
160
+ * @param {NodeFrame} frame - A reference to the current node frame.
161
+ */
67
162
  updateBefore( { renderer } ) {
68
163
 
69
164
  renderer.compute( this );
@@ -92,6 +187,15 @@ class ComputeNode extends Node {
92
187
 
93
188
  export default ComputeNode;
94
189
 
190
+ /**
191
+ * TSL function for creating a compute node.
192
+ *
193
+ * @function
194
+ * @param {Node} node - TODO
195
+ * @param {Number} count - TODO.
196
+ * @param {Array<Number>} [workgroupSize=[64]] - TODO.
197
+ * @returns {AtomicFunctionNode}
198
+ */
95
199
  export const compute = ( node, count, workgroupSize ) => nodeObject( new ComputeNode( nodeObject( node ), count, workgroupSize ) );
96
200
 
97
201
  addMethodChaining( 'compute', compute );
@@ -2,12 +2,32 @@ import ArrayElementNode from '../utils/ArrayElementNode.js';
2
2
  import { nodeObject } from '../tsl/TSLCore.js';
3
3
  import Node from '../core/Node.js';
4
4
 
5
+ /** @module WorkgroupInfoNode **/
6
+
7
+ /**
8
+ * Represents an element of a 'workgroup' scoped buffer.
9
+ *
10
+ * @augments ArrayElementNode
11
+ */
5
12
  class WorkgroupInfoElementNode extends ArrayElementNode {
6
13
 
14
+ /**
15
+ * Constructs a new workgroup info element node.
16
+ *
17
+ * @param {Node} workgroupInfoNode - The workgroup info node.
18
+ * @param {Node} indexNode - The index node that defines the element access.
19
+ */
7
20
  constructor( workgroupInfoNode, indexNode ) {
8
21
 
9
22
  super( workgroupInfoNode, indexNode );
10
23
 
24
+ /**
25
+ * This flag can be used for type testing.
26
+ *
27
+ * @type {Boolean}
28
+ * @readonly
29
+ * @default true
30
+ */
11
31
  this.isWorkgroupInfoElementNode = true;
12
32
 
13
33
  }
@@ -35,22 +55,77 @@ class WorkgroupInfoElementNode extends ArrayElementNode {
35
55
 
36
56
  }
37
57
 
38
-
58
+ /**
59
+ * A node allowing the user to create a 'workgroup' scoped buffer within the
60
+ * context of a compute shader. Typically, workgroup scoped buffers are
61
+ * created to hold data that is transfered from a global storage scope into
62
+ * a local workgroup scope. For invocations within a workgroup, data
63
+ * access speeds on 'workgroup' scoped buffers can be significantly faster
64
+ * than similar access operations on globally accessible storage buffers.
65
+ *
66
+ * This node can only be used with a WebGPU backend.
67
+ *
68
+ * @augments Node
69
+ */
39
70
  class WorkgroupInfoNode extends Node {
40
71
 
72
+ /**
73
+ * Constructs a new buffer scoped to type scope.
74
+ *
75
+ * @param {String} scope - TODO.
76
+ * @param {String} bufferType - The data type of a 'workgroup' scoped buffer element.
77
+ * @param {Number} [bufferCount=0] - The number of elements in the buffer.
78
+ */
41
79
  constructor( scope, bufferType, bufferCount = 0 ) {
42
80
 
43
81
  super( bufferType );
44
82
 
83
+ /**
84
+ * The buffer type.
85
+ *
86
+ * @type {String}
87
+ */
45
88
  this.bufferType = bufferType;
89
+
90
+ /**
91
+ * The buffer count.
92
+ *
93
+ * @type {Number}
94
+ * @default 0
95
+ */
46
96
  this.bufferCount = bufferCount;
47
97
 
98
+ /**
99
+ * This flag can be used for type testing.
100
+ *
101
+ * @type {Boolean}
102
+ * @readonly
103
+ * @default true
104
+ */
48
105
  this.isWorkgroupInfoNode = true;
49
106
 
107
+ /**
108
+ * The data type of the array buffer.
109
+ *
110
+ * @type {String}
111
+ */
112
+ this.elementType = bufferType;
113
+
114
+ /**
115
+ * TODO.
116
+ *
117
+ * @type {String}
118
+ */
50
119
  this.scope = scope;
51
120
 
52
121
  }
53
122
 
123
+ /**
124
+ * Sets the name/label of this node.
125
+ *
126
+ * @param {String} name - The name to set.
127
+ * @return {WorkgroupInfoNode} A reference to this node.
128
+ */
54
129
  label( name ) {
55
130
 
56
131
  this.name = name;
@@ -59,26 +134,51 @@ class WorkgroupInfoNode extends Node {
59
134
 
60
135
  }
61
136
 
62
- getHash() {
137
+ /**
138
+ * Sets the scope of this node.
139
+ *
140
+ * @param {String} scope - The scope to set.
141
+ * @return {WorkgroupInfoNode} A reference to this node.
142
+ */
143
+ setScope( scope ) {
144
+
145
+ this.scope = scope;
63
146
 
64
- return this.uuid;
147
+ return this;
65
148
 
66
149
  }
67
150
 
68
- setScope( scope ) {
69
151
 
70
- this.scope = scope;
152
+ /**
153
+ * The data type of the array buffer.
154
+ *
155
+ * @return {String} The element type.
156
+ */
157
+ getElementType() {
71
158
 
72
- return this;
159
+ return this.elementType;
73
160
 
74
161
  }
75
162
 
163
+ /**
164
+ * Overwrites the default implementation since the input type
165
+ * is inferred from the scope.
166
+ *
167
+ * @param {NodeBuilder} builder - The current node builder.
168
+ * @return {String} The input type.
169
+ */
76
170
  getInputType( /*builder*/ ) {
77
171
 
78
172
  return `${this.scope}Array`;
79
173
 
80
174
  }
81
175
 
176
+ /**
177
+ * This method can be used to access elements via an index node.
178
+ *
179
+ * @param {IndexNode} indexNode - indexNode.
180
+ * @return {WorkgroupInfoElementNode} A reference to an element.
181
+ */
82
182
  element( indexNode ) {
83
183
 
84
184
  return nodeObject( new WorkgroupInfoElementNode( this, indexNode ) );
@@ -95,6 +195,15 @@ class WorkgroupInfoNode extends Node {
95
195
 
96
196
  export default WorkgroupInfoNode;
97
197
 
198
+ /**
199
+ * TSL function for creating a workgroup info node.
200
+ * Creates a new 'workgroup' scoped array buffer.
201
+ *
202
+ * @function
203
+ * @param {String} type - The data type of a 'workgroup' scoped buffer element.
204
+ * @param {Number} [count=0] - The number of elements in the buffer.
205
+ * @returns {WorkgroupInfoNode}
206
+ */
98
207
  export const workgroupArray = ( type, count ) => nodeObject( new WorkgroupInfoNode( 'Workgroup', type, count ) );
99
208
 
100
209
 
@@ -1,5 +1,12 @@
1
1
  import LightingNode from './LightingNode.js';
2
2
 
3
+ /**
4
+ * A generic class that can be used by nodes which contribute
5
+ * ambient occlusion to the scene. E.g. an ambient occlusion map
6
+ * node can be used as input for this module. Used in {@link NodeMaterial}.
7
+ *
8
+ * @augments LightingNode
9
+ */
3
10
  class AONode extends LightingNode {
4
11
 
5
12
  static get type() {
@@ -8,10 +15,21 @@ class AONode extends LightingNode {
8
15
 
9
16
  }
10
17
 
18
+ /**
19
+ * Constructs a new AO node.
20
+ *
21
+ * @param {Node<float>?} [aoNode=null] - The ambient occlusion node.
22
+ */
11
23
  constructor( aoNode = null ) {
12
24
 
13
25
  super();
14
26
 
27
+ /**
28
+ * The ambient occlusion node.
29
+ *
30
+ * @type {Node<float>?}
31
+ * @default null
32
+ */
15
33
  this.aoNode = aoNode;
16
34
 
17
35
  }
@@ -1,5 +1,10 @@
1
1
  import AnalyticLightNode from './AnalyticLightNode.js';
2
2
 
3
+ /**
4
+ * Module for representing ambient lights as nodes.
5
+ *
6
+ * @augments AnalyticLightNode
7
+ */
3
8
  class AmbientLightNode extends AnalyticLightNode {
4
9
 
5
10
  static get type() {
@@ -8,6 +13,11 @@ class AmbientLightNode extends AnalyticLightNode {
8
13
 
9
14
  }
10
15
 
16
+ /**
17
+ * Constructs a new ambient light node.
18
+ *
19
+ * @param {AmbientLight?} [light=null] - The ambient light source.
20
+ */
11
21
  constructor( light = null ) {
12
22
 
13
23
  super( light );
@@ -7,6 +7,11 @@ import { hash } from '../core/NodeUtils.js';
7
7
  import { shadow } from './ShadowNode.js';
8
8
  import { nodeObject } from '../tsl/TSLCore.js';
9
9
 
10
+ /**
11
+ * Base class for analytic light nodes.
12
+ *
13
+ * @augments LightingNode
14
+ */
10
15
  class AnalyticLightNode extends LightingNode {
11
16
 
12
17
  static get type() {
@@ -15,29 +20,92 @@ class AnalyticLightNode extends LightingNode {
15
20
 
16
21
  }
17
22
 
23
+ /**
24
+ * Constructs a new analytic light node.
25
+ *
26
+ * @param {Light?} [light=null] - The light source.
27
+ */
18
28
  constructor( light = null ) {
19
29
 
20
30
  super();
21
31
 
32
+ /**
33
+ * The light source.
34
+ *
35
+ * @type {Light?}
36
+ * @default null
37
+ */
22
38
  this.light = light;
23
39
 
40
+ /**
41
+ * The light's color value.
42
+ *
43
+ * @type {Color}
44
+ */
24
45
  this.color = new Color();
46
+
47
+ /**
48
+ * The light's color node. Points to `colorNode` of the light source, if set. Otherwise
49
+ * it creates a uniform node based on {@link AnalyticLightNode#color}.
50
+ *
51
+ * @type {Node}
52
+ */
25
53
  this.colorNode = ( light && light.colorNode ) || uniform( this.color ).setGroup( renderGroup );
26
54
 
55
+ /**
56
+ * This property is used to retain a reference to the original value of {@link AnalyticLightNode#colorNode}.
57
+ * The final color node is represented by a different node when using shadows.
58
+ *
59
+ * @type {Node?}
60
+ * @default null
61
+ */
27
62
  this.baseColorNode = null;
28
63
 
64
+ /**
65
+ * Represents the light's shadow.
66
+ *
67
+ * @type {ShadowNode?}
68
+ * @default null
69
+ */
29
70
  this.shadowNode = null;
71
+
72
+ /**
73
+ * Represents the light's shadow color.
74
+ *
75
+ * @type {Node?}
76
+ * @default null
77
+ */
30
78
  this.shadowColorNode = null;
31
79
 
80
+ /**
81
+ * This flag can be used for type testing.
82
+ *
83
+ * @type {Boolean}
84
+ * @readonly
85
+ * @default true
86
+ */
32
87
  this.isAnalyticLightNode = true;
33
88
 
89
+ /**
90
+ * Overwritten since analytic light nodes are updated
91
+ * once per frame.
92
+ *
93
+ * @type {String}
94
+ * @default 'frame'
95
+ */
34
96
  this.updateType = NodeUpdateType.FRAME;
35
97
 
36
98
  }
37
99
 
38
- getCacheKey() {
100
+ /**
101
+ * Overwrites the default {@link Node#customCacheKey} implementation by including the
102
+ * `light.id` and `light.castShadow` into the cache key.
103
+ *
104
+ * @return {Number} The custom cache key.
105
+ */
106
+ customCacheKey() {
39
107
 
40
- return hash( super.getCacheKey(), this.light.id, this.light.castShadow ? 1 : 0 );
108
+ return hash( this.light.id, this.light.castShadow ? 1 : 0 );
41
109
 
42
110
  }
43
111
 
@@ -47,12 +115,25 @@ class AnalyticLightNode extends LightingNode {
47
115
 
48
116
  }
49
117
 
118
+ /**
119
+ * Setups the shadow node for this light. The method exists so concrete light classes
120
+ * can setup different types of shadow nodes.
121
+ *
122
+ * @return {ShadowNode} The created shadow node.
123
+ */
50
124
  setupShadowNode() {
51
125
 
52
126
  return shadow( this.light );
53
127
 
54
128
  }
55
129
 
130
+ /**
131
+ * Setups the shadow for this light. This method is only executed if the light
132
+ * cast shadows and the current build object receives shadows. It incorporates
133
+ * shadows into the lighting computation.
134
+ *
135
+ * @param {NodeBuilder} builder - The current node builder.
136
+ */
56
137
  setupShadow( builder ) {
57
138
 
58
139
  const { renderer } = builder;
@@ -91,6 +172,13 @@ class AnalyticLightNode extends LightingNode {
91
172
 
92
173
  }
93
174
 
175
+ /**
176
+ * Unlike most other nodes, lighting nodes do not return a output node in {@link Node#setup}.
177
+ * The main purpose of lighting nodes is to configure the current {@link LightingModel} and/or
178
+ * invocate the respective interface methods.
179
+ *
180
+ * @param {NodeBuilder} builder - The current node builder.
181
+ */
94
182
  setup( builder ) {
95
183
 
96
184
  this.colorNode = this.baseColorNode || this.colorNode;
@@ -113,6 +201,13 @@ class AnalyticLightNode extends LightingNode {
113
201
 
114
202
  }
115
203
 
204
+ /**
205
+ * The update method is used to update light uniforms per frame.
206
+ * Potentially overwritten in concrete light nodes to update light
207
+ * specific uniforms.
208
+ *
209
+ * @param {NodeFrame} frame - A reference to the current node frame.
210
+ */
116
211
  update( /*frame*/ ) {
117
212
 
118
213
  const { light } = this;
@@ -1,6 +1,14 @@
1
1
  import LightingNode from './LightingNode.js';
2
2
  import { cubeMapNode } from '../utils/CubeMapNode.js';
3
3
 
4
+ /**
5
+ * Represents a basic model for Image-based lighting (IBL). The environment
6
+ * is defined via environment maps in the equirectangular or cube map format.
7
+ * `BasicEnvironmentNode` is intended for non-PBR materials like {@link MeshBasicNodeMaterial}
8
+ * or {@link MeshPhongNodeMaterial}.
9
+ *
10
+ * @augments LightingNode
11
+ */
4
12
  class BasicEnvironmentNode extends LightingNode {
5
13
 
6
14
  static get type() {
@@ -9,10 +17,21 @@ class BasicEnvironmentNode extends LightingNode {
9
17
 
10
18
  }
11
19
 
20
+ /**
21
+ * Constructs a new basic environment node.
22
+ *
23
+ * @param {Node} [envNode=null] - A node representing the environment.
24
+ */
12
25
  constructor( envNode = null ) {
13
26
 
14
27
  super();
15
28
 
29
+ /**
30
+ * A node representing the environment.
31
+ *
32
+ * @type {Node}
33
+ * @default null
34
+ */
16
35
  this.envNode = envNode;
17
36
 
18
37
  }
@@ -1,6 +1,13 @@
1
1
  import LightingNode from './LightingNode.js';
2
2
  import { float } from '../tsl/TSLBase.js';
3
3
 
4
+ /**
5
+ * A specific version of {@link IrradianceNode} that is only relevant
6
+ * for {@link MeshBasicNodeMaterial}. Since the material is unlit, it
7
+ * requires a special scaling factor for the light map.
8
+ *
9
+ * @augments LightingNode
10
+ */
4
11
  class BasicLightMapNode extends LightingNode {
5
12
 
6
13
  static get type() {
@@ -9,10 +16,20 @@ class BasicLightMapNode extends LightingNode {
9
16
 
10
17
  }
11
18
 
19
+ /**
20
+ * Constructs a new basic light map node.
21
+ *
22
+ * @param {Node<vec3>?} [lightMapNode=null] - The light map node.
23
+ */
12
24
  constructor( lightMapNode = null ) {
13
25
 
14
26
  super();
15
27
 
28
+ /**
29
+ * The light map node.
30
+ *
31
+ * @type {Node<vec3>?}
32
+ */
16
33
  this.lightMapNode = lightMapNode;
17
34
 
18
35
  }
@@ -1,6 +1,11 @@
1
1
  import AnalyticLightNode from './AnalyticLightNode.js';
2
2
  import { lightTargetDirection } from '../accessors/Lights.js';
3
3
 
4
+ /**
5
+ * Module for representing directional lights as nodes.
6
+ *
7
+ * @augments AnalyticLightNode
8
+ */
4
9
  class DirectionalLightNode extends AnalyticLightNode {
5
10
 
6
11
  static get type() {
@@ -9,6 +14,11 @@ class DirectionalLightNode extends AnalyticLightNode {
9
14
 
10
15
  }
11
16
 
17
+ /**
18
+ * Constructs a new directional light node.
19
+ *
20
+ * @param {DirectionalLight?} [light=null] - The directional light source.
21
+ */
12
22
  constructor( light = null ) {
13
23
 
14
24
  super( light );
@@ -11,6 +11,13 @@ import { pmremTexture } from '../pmrem/PMREMNode.js';
11
11
 
12
12
  const _envNodeCache = new WeakMap();
13
13
 
14
+ /**
15
+ * Represents a physical model for Image-based lighting (IBL). The environment
16
+ * is defined via environment maps in the equirectangular, cube map or cubeUV (PMREM) format.
17
+ * `EnvironmentNode` is intended for PBR materials like {@link MeshStandardNodeMaterial}.
18
+ *
19
+ * @augments LightingNode
20
+ */
14
21
  class EnvironmentNode extends LightingNode {
15
22
 
16
23
  static get type() {
@@ -19,10 +26,21 @@ class EnvironmentNode extends LightingNode {
19
26
 
20
27
  }
21
28
 
29
+ /**
30
+ * Constructs a new environment node.
31
+ *
32
+ * @param {Node} [envNode=null] - A node representing the environment.
33
+ */
22
34
  constructor( envNode = null ) {
23
35
 
24
36
  super();
25
37
 
38
+ /**
39
+ * A node representing the environment.
40
+ *
41
+ * @type {Node?}
42
+ * @default null
43
+ */
26
44
  this.envNode = envNode;
27
45
 
28
46
  }