super-three 0.171.0 → 0.173.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +594 -427
  4. package/build/three.core.js +515 -81
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +79 -350
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +20 -7
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +29362 -3427
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +29361 -3427
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/jsm/Addons.js +0 -5
  15. package/examples/jsm/animation/CCDIKSolver.js +9 -7
  16. package/examples/jsm/capabilities/WebGPU.js +1 -1
  17. package/examples/jsm/controls/ArcballControls.js +48 -37
  18. package/examples/jsm/controls/OrbitControls.js +5 -4
  19. package/examples/jsm/csm/CSMShadowNode.js +16 -11
  20. package/examples/jsm/curves/NURBSCurve.js +1 -1
  21. package/examples/jsm/curves/NURBSUtils.js +3 -0
  22. package/examples/jsm/effects/OutlineEffect.js +1 -1
  23. package/examples/jsm/exporters/GLTFExporter.js +34 -29
  24. package/examples/jsm/exporters/KTX2Exporter.js +1 -1
  25. package/examples/jsm/exporters/PLYExporter.js +2 -2
  26. package/examples/jsm/geometries/TextGeometry.js +1 -12
  27. package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
  28. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  29. package/examples/jsm/interactive/InteractiveGroup.js +108 -51
  30. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  31. package/examples/jsm/lights/LightProbeGenerator.js +3 -3
  32. package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
  33. package/examples/jsm/loaders/3MFLoader.js +6 -3
  34. package/examples/jsm/loaders/BVHLoader.js +1 -1
  35. package/examples/jsm/loaders/ColladaLoader.js +5 -5
  36. package/examples/jsm/loaders/DDSLoader.js +42 -0
  37. package/examples/jsm/loaders/GCodeLoader.js +4 -2
  38. package/examples/jsm/loaders/GLTFLoader.js +22 -4
  39. package/examples/jsm/loaders/KTX2Loader.js +6 -1
  40. package/examples/jsm/loaders/KTXLoader.js +4 -4
  41. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  42. package/examples/jsm/loaders/LottieLoader.js +1 -1
  43. package/examples/jsm/loaders/MTLLoader.js +1 -0
  44. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  45. package/examples/jsm/loaders/PLYLoader.js +7 -7
  46. package/examples/jsm/loaders/PVRLoader.js +1 -1
  47. package/examples/jsm/loaders/SVGLoader.js +2 -2
  48. package/examples/jsm/loaders/TDSLoader.js +1 -2
  49. package/examples/jsm/loaders/VRMLLoader.js +7 -7
  50. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  51. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
  52. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  53. package/examples/jsm/math/ConvexHull.js +1 -1
  54. package/examples/jsm/math/OBB.js +17 -0
  55. package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
  56. package/examples/jsm/misc/ProgressiveLightMap.js +4 -3
  57. package/examples/jsm/misc/ProgressiveLightMapGPU.js +14 -13
  58. package/examples/jsm/misc/Volume.js +27 -17
  59. package/examples/jsm/misc/VolumeSlice.js +7 -5
  60. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  61. package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
  62. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  63. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  64. package/examples/jsm/objects/Sky.js +2 -2
  65. package/examples/jsm/objects/SkyMesh.js +3 -3
  66. package/examples/jsm/objects/Water2.js +1 -1
  67. package/examples/jsm/objects/Water2Mesh.js +2 -2
  68. package/examples/jsm/objects/WaterMesh.js +29 -24
  69. package/examples/jsm/physics/JoltPhysics.js +7 -7
  70. package/examples/jsm/physics/RapierPhysics.js +4 -4
  71. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  72. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  73. package/examples/jsm/postprocessing/OutlinePass.js +4 -4
  74. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  75. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  76. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  77. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  78. package/examples/jsm/postprocessing/SSRPass.js +2 -4
  79. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  80. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  81. package/examples/jsm/shaders/BokehShader2.js +1 -1
  82. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  83. package/examples/jsm/shaders/OutputShader.js +5 -1
  84. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  85. package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
  86. package/examples/jsm/transpiler/TSLEncoder.js +2 -0
  87. package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
  88. package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
  89. package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
  90. package/examples/jsm/tsl/display/BleachBypass.js +10 -0
  91. package/examples/jsm/tsl/display/BloomNode.js +233 -26
  92. package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
  93. package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
  94. package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
  95. package/examples/jsm/tsl/display/FXAANode.js +52 -3
  96. package/examples/jsm/tsl/display/FilmNode.js +47 -1
  97. package/examples/jsm/tsl/display/GTAONode.js +210 -14
  98. package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
  99. package/examples/jsm/tsl/display/LensflareNode.js +131 -13
  100. package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
  101. package/examples/jsm/tsl/display/MotionBlur.js +12 -2
  102. package/examples/jsm/tsl/display/OutlineNode.js +343 -26
  103. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
  104. package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
  105. package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
  106. package/examples/jsm/tsl/display/SMAANode.js +187 -46
  107. package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
  108. package/examples/jsm/tsl/display/SSRNode.js +194 -21
  109. package/examples/jsm/tsl/display/Sepia.js +9 -0
  110. package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
  111. package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
  112. package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
  113. package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
  114. package/examples/jsm/tsl/display/TransitionNode.js +71 -6
  115. package/examples/jsm/tsl/display/hashBlur.js +14 -3
  116. package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
  117. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  118. package/examples/jsm/utils/CameraUtils.js +4 -1
  119. package/examples/jsm/utils/GeometryUtils.js +22 -19
  120. package/examples/jsm/utils/SceneUtils.js +2 -2
  121. package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
  122. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  123. package/package.json +8 -3
  124. package/src/Three.Core.js +4 -0
  125. package/src/Three.Legacy.js +0 -21
  126. package/src/Three.TSL.js +18 -5
  127. package/src/Three.WebGPU.Nodes.js +2 -2
  128. package/src/Three.WebGPU.js +2 -2
  129. package/src/animation/PropertyBinding.js +2 -2
  130. package/src/cameras/ArrayCamera.js +1 -0
  131. package/src/cameras/PerspectiveCamera.js +18 -2
  132. package/src/constants.js +6 -1
  133. package/src/core/BufferAttribute.js +4 -0
  134. package/src/core/EventDispatcher.js +8 -6
  135. package/src/core/RenderTarget.js +18 -0
  136. package/src/core/RenderTarget3D.js +22 -0
  137. package/src/core/RenderTargetArray.js +22 -0
  138. package/src/extras/Earcut.js +1 -1
  139. package/src/extras/ImageUtils.js +1 -11
  140. package/src/extras/PMREMGenerator.js +20 -0
  141. package/src/extras/TextureUtils.js +6 -0
  142. package/src/helpers/CameraHelper.js +16 -13
  143. package/src/loaders/nodes/NodeLoader.js +59 -0
  144. package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
  145. package/src/loaders/nodes/NodeObjectLoader.js +61 -0
  146. package/src/materials/nodes/Line2NodeMaterial.js +128 -34
  147. package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
  148. package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
  149. package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
  150. package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
  151. package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
  152. package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
  153. package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
  154. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
  155. package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
  156. package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
  157. package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
  158. package/src/materials/nodes/NodeMaterial.js +476 -23
  159. package/src/materials/nodes/NodeMaterials.js +0 -1
  160. package/src/materials/nodes/PointsNodeMaterial.js +121 -10
  161. package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
  162. package/src/materials/nodes/SpriteNodeMaterial.js +78 -20
  163. package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
  164. package/src/materials/nodes/manager/NodeMaterialObserver.js +95 -0
  165. package/src/nodes/Nodes.js +5 -6
  166. package/src/nodes/TSL.js +6 -3
  167. package/src/nodes/accessors/AccessorsUtils.js +27 -0
  168. package/src/nodes/accessors/Arrays.js +47 -6
  169. package/src/nodes/accessors/BatchNode.js +42 -6
  170. package/src/nodes/accessors/Bitangent.js +37 -0
  171. package/src/nodes/accessors/BufferAttributeNode.js +178 -5
  172. package/src/nodes/accessors/BufferNode.js +63 -0
  173. package/src/nodes/accessors/BuiltinNode.js +38 -0
  174. package/src/nodes/accessors/Camera.js +113 -3
  175. package/src/nodes/accessors/ClippingNode.js +71 -2
  176. package/src/nodes/accessors/CubeTextureNode.js +64 -0
  177. package/src/nodes/accessors/InstanceNode.js +85 -2
  178. package/src/nodes/accessors/InstancedMeshNode.js +28 -3
  179. package/src/nodes/accessors/Lights.js +50 -1
  180. package/src/nodes/accessors/MaterialNode.js +306 -12
  181. package/src/nodes/accessors/MaterialProperties.js +7 -0
  182. package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
  183. package/src/nodes/accessors/ModelNode.js +100 -5
  184. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
  185. package/src/nodes/accessors/MorphNode.js +48 -4
  186. package/src/nodes/accessors/Normal.js +65 -5
  187. package/src/nodes/accessors/Object3DNode.js +101 -1
  188. package/src/nodes/accessors/PointUVNode.js +26 -0
  189. package/src/nodes/accessors/Position.js +56 -7
  190. package/src/nodes/accessors/ReferenceBaseNode.js +186 -0
  191. package/src/nodes/accessors/ReferenceNode.js +201 -2
  192. package/src/nodes/accessors/ReflectVector.js +24 -0
  193. package/src/nodes/accessors/RendererReferenceNode.js +46 -1
  194. package/src/nodes/accessors/SceneNode.js +54 -0
  195. package/src/nodes/accessors/SkinningNode.js +127 -1
  196. package/src/nodes/accessors/StorageBufferNode.js +209 -8
  197. package/src/nodes/accessors/StorageTextureNode.js +118 -0
  198. package/src/nodes/accessors/Tangent.js +38 -2
  199. package/src/nodes/accessors/Texture3DNode.js +91 -7
  200. package/src/nodes/accessors/TextureBicubic.js +12 -2
  201. package/src/nodes/accessors/TextureNode.js +316 -10
  202. package/src/nodes/accessors/TextureSizeNode.js +42 -0
  203. package/src/nodes/accessors/UV.js +10 -1
  204. package/src/nodes/accessors/UniformArrayNode.js +231 -25
  205. package/src/nodes/accessors/UserDataNode.js +46 -0
  206. package/src/nodes/accessors/VelocityNode.js +80 -0
  207. package/src/nodes/accessors/VertexColorNode.js +39 -2
  208. package/src/nodes/code/CodeNode.js +95 -1
  209. package/src/nodes/code/ExpressionNode.js +28 -0
  210. package/src/nodes/code/FunctionCallNode.js +37 -0
  211. package/src/nodes/code/FunctionNode.js +45 -0
  212. package/src/nodes/code/ScriptableNode.js +223 -1
  213. package/src/nodes/code/ScriptableValueNode.js +85 -1
  214. package/src/nodes/core/ArrayNode.js +125 -0
  215. package/src/nodes/core/AssignNode.js +48 -2
  216. package/src/nodes/core/AttributeNode.js +43 -0
  217. package/src/nodes/core/BypassNode.js +47 -2
  218. package/src/nodes/core/CacheNode.js +53 -2
  219. package/src/nodes/core/ConstNode.js +32 -0
  220. package/src/nodes/core/ContextNode.js +65 -0
  221. package/src/nodes/core/IndexNode.js +68 -7
  222. package/src/nodes/core/InputNode.js +48 -0
  223. package/src/nodes/core/LightingModel.js +60 -0
  224. package/src/nodes/core/MRTNode.js +66 -0
  225. package/src/nodes/core/Node.js +350 -12
  226. package/src/nodes/core/NodeAttribute.js +38 -0
  227. package/src/nodes/core/NodeBuilder.js +1166 -26
  228. package/src/nodes/core/NodeCache.js +41 -2
  229. package/src/nodes/core/NodeCode.js +31 -0
  230. package/src/nodes/core/NodeFrame.js +123 -2
  231. package/src/nodes/core/NodeFunction.js +46 -0
  232. package/src/nodes/core/NodeFunctionInput.js +44 -0
  233. package/src/nodes/core/NodeParser.js +11 -0
  234. package/src/nodes/core/NodeUniform.js +52 -0
  235. package/src/nodes/core/NodeUtils.js +152 -1
  236. package/src/nodes/core/NodeVar.js +47 -1
  237. package/src/nodes/core/NodeVarying.js +28 -0
  238. package/src/nodes/core/OutputStructNode.js +51 -10
  239. package/src/nodes/core/ParameterNode.js +28 -0
  240. package/src/nodes/core/PropertyNode.js +232 -0
  241. package/src/nodes/core/StackNode.js +98 -1
  242. package/src/nodes/core/StructNode.js +121 -0
  243. package/src/nodes/core/StructType.js +13 -0
  244. package/src/nodes/core/StructTypeNode.js +105 -6
  245. package/src/nodes/core/TempNode.js +31 -5
  246. package/src/nodes/core/UniformGroupNode.js +82 -7
  247. package/src/nodes/core/UniformNode.js +66 -0
  248. package/src/nodes/core/VarNode.js +146 -7
  249. package/src/nodes/core/VaryingNode.js +100 -3
  250. package/src/nodes/core/constants.js +36 -0
  251. package/src/nodes/display/BlendModes.js +88 -1
  252. package/src/nodes/display/BumpMapNode.js +37 -0
  253. package/src/nodes/display/ColorAdjustment.js +53 -11
  254. package/src/nodes/display/ColorSpaceFunctions.js +16 -0
  255. package/src/nodes/display/ColorSpaceNode.js +82 -0
  256. package/src/nodes/display/FrontFacingNode.js +29 -0
  257. package/src/nodes/display/NormalMapNode.js +43 -0
  258. package/src/nodes/display/PassNode.js +300 -7
  259. package/src/nodes/display/PosterizeNode.js +33 -0
  260. package/src/nodes/display/RenderOutputNode.js +66 -1
  261. package/src/nodes/display/ScreenNode.js +96 -0
  262. package/src/nodes/display/ToneMappingFunctions.js +58 -10
  263. package/src/nodes/display/ToneMappingNode.js +55 -2
  264. package/src/nodes/display/ToonOutlinePassNode.js +73 -0
  265. package/src/nodes/display/ViewportDepthNode.js +122 -8
  266. package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
  267. package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
  268. package/src/nodes/display/ViewportTextureNode.js +57 -0
  269. package/src/nodes/fog/Fog.js +110 -0
  270. package/src/nodes/functions/BasicLightingModel.js +24 -0
  271. package/src/nodes/functions/PhongLightingModel.js +34 -2
  272. package/src/nodes/functions/PhysicalLightingModel.js +167 -8
  273. package/src/nodes/functions/ShadowMaskModel.js +23 -0
  274. package/src/nodes/functions/ToonLightingModel.js +20 -0
  275. package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
  276. package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
  277. package/src/nodes/geometry/RangeNode.js +54 -2
  278. package/src/nodes/gpgpu/AtomicFunctionNode.js +174 -2
  279. package/src/nodes/gpgpu/BarrierNode.js +47 -0
  280. package/src/nodes/gpgpu/ComputeBuiltinNode.js +134 -0
  281. package/src/nodes/gpgpu/ComputeNode.js +106 -2
  282. package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
  283. package/src/nodes/lighting/AONode.js +18 -0
  284. package/src/nodes/lighting/AmbientLightNode.js +10 -0
  285. package/src/nodes/lighting/AnalyticLightNode.js +97 -2
  286. package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
  287. package/src/nodes/lighting/BasicLightMapNode.js +17 -0
  288. package/src/nodes/lighting/DirectionalLightNode.js +10 -0
  289. package/src/nodes/lighting/EnvironmentNode.js +18 -0
  290. package/src/nodes/lighting/HemisphereLightNode.js +31 -0
  291. package/src/nodes/lighting/IESSpotLightNode.js +11 -0
  292. package/src/nodes/lighting/IrradianceNode.js +17 -0
  293. package/src/nodes/lighting/LightProbeNode.js +20 -0
  294. package/src/nodes/lighting/LightUtils.js +12 -0
  295. package/src/nodes/lighting/LightingContextNode.js +48 -0
  296. package/src/nodes/lighting/LightingNode.js +15 -6
  297. package/src/nodes/lighting/LightsNode.js +132 -1
  298. package/src/nodes/lighting/PointLightNode.js +32 -1
  299. package/src/nodes/lighting/PointShadowNode.js +54 -1
  300. package/src/nodes/lighting/RectAreaLightNode.js +44 -6
  301. package/src/nodes/lighting/ShadowBaseNode.js +93 -0
  302. package/src/nodes/lighting/ShadowNode.js +241 -35
  303. package/src/nodes/lighting/SpotLightNode.js +43 -0
  304. package/src/nodes/math/ConditionalNode.js +78 -4
  305. package/src/nodes/math/Hash.js +9 -0
  306. package/src/nodes/math/MathNode.js +627 -11
  307. package/src/nodes/math/MathUtils.js +45 -1
  308. package/src/nodes/math/OperatorNode.js +329 -18
  309. package/src/nodes/math/TriNoise3D.js +18 -7
  310. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  311. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  312. package/src/nodes/pmrem/PMREMNode.js +133 -0
  313. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  314. package/src/nodes/procedural/Checker.js +9 -0
  315. package/src/nodes/shapes/Shapes.js +33 -0
  316. package/src/nodes/tsl/TSLBase.js +3 -2
  317. package/src/nodes/tsl/TSLCore.js +22 -2
  318. package/src/nodes/utils/ArrayElementNode.js +39 -3
  319. package/src/nodes/utils/ConvertNode.js +31 -0
  320. package/src/nodes/utils/CubeMapNode.js +78 -0
  321. package/src/nodes/utils/Discard.js +16 -0
  322. package/src/nodes/utils/EquirectUVNode.js +31 -1
  323. package/src/nodes/utils/FlipNode.js +38 -0
  324. package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
  325. package/src/nodes/utils/JoinNode.js +25 -0
  326. package/src/nodes/utils/LoopNode.js +82 -2
  327. package/src/nodes/utils/MatcapUVNode.js +17 -0
  328. package/src/nodes/utils/MaxMipLevelNode.js +49 -0
  329. package/src/nodes/utils/MemberNode.js +68 -0
  330. package/src/nodes/utils/Oscillators.js +33 -0
  331. package/src/nodes/utils/Packing.js +17 -0
  332. package/src/nodes/utils/PostProcessingUtils.js +28 -23
  333. package/src/nodes/utils/RTTNode.js +123 -2
  334. package/src/nodes/utils/ReflectorNode.js +174 -4
  335. package/src/nodes/utils/RemapNode.js +79 -0
  336. package/src/nodes/utils/RotateNode.js +41 -0
  337. package/src/nodes/utils/SetNode.js +44 -1
  338. package/src/nodes/utils/SplitNode.js +55 -3
  339. package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
  340. package/src/nodes/utils/SpriteUtils.js +17 -0
  341. package/src/nodes/utils/StorageArrayElementNode.js +54 -0
  342. package/src/nodes/utils/Timer.js +40 -0
  343. package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
  344. package/src/nodes/utils/UVUtils.js +20 -0
  345. package/src/nodes/utils/ViewportUtils.js +13 -0
  346. package/src/objects/BatchedMesh.js +2 -3
  347. package/src/objects/ClippingGroup.js +49 -0
  348. package/src/objects/Line.js +6 -6
  349. package/src/renderers/WebGLRenderer.js +30 -4
  350. package/src/renderers/common/Animation.js +85 -0
  351. package/src/renderers/common/Attributes.js +36 -0
  352. package/src/renderers/common/Backend.js +502 -44
  353. package/src/renderers/common/Background.js +48 -1
  354. package/src/renderers/common/BindGroup.js +43 -0
  355. package/src/renderers/common/Binding.js +35 -0
  356. package/src/renderers/common/Bindings.js +93 -1
  357. package/src/renderers/common/Buffer.js +49 -0
  358. package/src/renderers/common/BufferUtils.js +27 -0
  359. package/src/renderers/common/BundleGroup.js +57 -0
  360. package/src/renderers/common/ChainMap.js +45 -6
  361. package/src/renderers/common/ClippingContext.js +108 -15
  362. package/src/renderers/common/Color4.js +40 -0
  363. package/src/renderers/common/ComputePipeline.js +24 -0
  364. package/src/renderers/common/CubeRenderTarget.js +13 -0
  365. package/src/renderers/common/DataMap.js +37 -1
  366. package/src/renderers/common/Geometries.js +91 -14
  367. package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
  368. package/src/renderers/common/Info.js +78 -35
  369. package/src/renderers/common/Lighting.js +34 -6
  370. package/src/renderers/common/Pipeline.js +22 -0
  371. package/src/renderers/common/Pipelines.js +148 -5
  372. package/src/renderers/common/PostProcessing.js +99 -11
  373. package/src/renderers/common/ProgrammableStage.js +60 -2
  374. package/src/renderers/common/QuadMesh.js +54 -5
  375. package/src/renderers/common/RenderBundle.js +14 -8
  376. package/src/renderers/common/RenderBundles.js +39 -10
  377. package/src/renderers/common/RenderContext.js +201 -2
  378. package/src/renderers/common/RenderContexts.js +59 -6
  379. package/src/renderers/common/RenderList.js +178 -0
  380. package/src/renderers/common/RenderLists.js +40 -3
  381. package/src/renderers/common/RenderObject.js +400 -17
  382. package/src/renderers/common/RenderObjects.js +103 -7
  383. package/src/renderers/common/RenderPipeline.js +24 -0
  384. package/src/renderers/common/Renderer.js +1170 -86
  385. package/src/renderers/common/RendererUtils.js +193 -0
  386. package/src/renderers/common/SampledTexture.js +120 -0
  387. package/src/renderers/common/Sampler.js +30 -0
  388. package/src/renderers/common/StorageBuffer.js +24 -0
  389. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  390. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  391. package/src/renderers/common/StorageTexture.js +38 -0
  392. package/src/renderers/common/Textures.js +97 -7
  393. package/src/renderers/common/TimestampQueryPool.js +39 -0
  394. package/src/renderers/common/Uniform.js +225 -3
  395. package/src/renderers/common/UniformBuffer.js +19 -0
  396. package/src/renderers/common/UniformsGroup.js +141 -2
  397. package/src/renderers/common/XRManager.js +1193 -0
  398. package/src/renderers/common/XRRenderTarget.js +74 -0
  399. package/src/renderers/common/extras/PMREMGenerator.js +76 -10
  400. package/src/renderers/common/nodes/NodeBuilderState.js +99 -5
  401. package/src/renderers/common/nodes/NodeLibrary.js +89 -0
  402. package/src/renderers/common/nodes/NodeSampledTexture.js +90 -2
  403. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  404. package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
  405. package/src/renderers/common/nodes/NodeUniform.js +243 -2
  406. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  407. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  408. package/src/renderers/common/nodes/Nodes.js +352 -78
  409. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  410. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  411. package/src/renderers/webgl/WebGLBackground.js +4 -0
  412. package/src/renderers/webgl-fallback/WebGLBackend.js +819 -116
  413. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +347 -18
  414. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +58 -1
  415. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  416. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  417. package/src/renderers/webgl-fallback/utils/WebGLState.js +323 -11
  418. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +168 -22
  419. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +359 -0
  420. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
  421. package/src/renderers/webgpu/WebGPUBackend.js +578 -164
  422. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +36 -0
  423. package/src/renderers/webgpu/WebGPURenderer.js +36 -0
  424. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
  425. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
  426. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +674 -52
  427. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
  428. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  429. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +95 -14
  430. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +94 -1
  431. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +102 -3
  432. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +98 -1
  433. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +262 -18
  434. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +274 -0
  435. package/src/renderers/webgpu/utils/WebGPUUtils.js +116 -4
  436. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  437. package/src/renderers/webxr/WebXRManager.js +19 -2
  438. package/src/textures/Data3DTexture.js +2 -2
  439. package/src/textures/Texture.js +4 -0
  440. package/src/textures/VideoFrameTexture.js +35 -0
  441. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
  442. package/examples/jsm/animation/MMDPhysics.js +0 -1408
  443. package/examples/jsm/exporters/MMDExporter.js +0 -223
  444. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -176
  445. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  446. package/examples/jsm/loaders/MMDLoader.js +0 -2298
  447. package/examples/jsm/objects/InstancedPoints.js +0 -19
  448. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  449. package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
  450. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
  451. package/src/nodes/core/UniformGroup.js +0 -13
  452. package/src/nodes/fog/FogExp2Node.js +0 -35
  453. package/src/nodes/fog/FogNode.js +0 -50
  454. package/src/nodes/fog/FogRangeNode.js +0 -36
  455. package/src/renderers/common/PostProcessingUtils.js +0 -86
@@ -3,6 +3,13 @@ import { nodeImmutable, float } from '../tsl/TSLBase.js';
3
3
 
4
4
  import { BackSide, WebGLCoordinateSystem } from '../../constants.js';
5
5
 
6
+ /** @module FrontFacingNode **/
7
+
8
+ /**
9
+ * This node can be used to evaluate whether a primitive is front or back facing.
10
+ *
11
+ * @augments Node
12
+ */
6
13
  class FrontFacingNode extends Node {
7
14
 
8
15
  static get type() {
@@ -11,10 +18,20 @@ class FrontFacingNode extends Node {
11
18
 
12
19
  }
13
20
 
21
+ /**
22
+ * Constructs a new front facing node.
23
+ */
14
24
  constructor() {
15
25
 
16
26
  super( 'bool' );
17
27
 
28
+ /**
29
+ * This flag can be used for type testing.
30
+ *
31
+ * @type {Boolean}
32
+ * @readonly
33
+ * @default true
34
+ */
18
35
  this.isFrontFacingNode = true;
19
36
 
20
37
  }
@@ -41,5 +58,17 @@ class FrontFacingNode extends Node {
41
58
 
42
59
  export default FrontFacingNode;
43
60
 
61
+ /**
62
+ * TSL object that represents whether a primitive is front or back facing
63
+ *
64
+ * @type {FrontFacingNode<bool>}
65
+ */
44
66
  export const frontFacing = /*@__PURE__*/ nodeImmutable( FrontFacingNode );
67
+
68
+ /**
69
+ * TSL object that represents the front facing status as a number instead of a bool.
70
+ * `1` means front facing, `-1` means back facing.
71
+ *
72
+ * @type {Node<float>}
73
+ */
45
74
  export const faceDirection = /*@__PURE__*/ float( frontFacing ).mul( 2.0 ).sub( 1.0 );
@@ -10,6 +10,8 @@ import { Fn, nodeProxy, vec3 } from '../tsl/TSLBase.js';
10
10
 
11
11
  import { TangentSpaceNormalMap, ObjectSpaceNormalMap } from '../../constants.js';
12
12
 
13
+ /** @module NormalMapNode **/
14
+
13
15
  // Normal Mapping Without Precomputed Tangents
14
16
  // http://www.thetenthplanet.de/archives/1180
15
17
 
@@ -37,6 +39,15 @@ const perturbNormal2Arb = /*@__PURE__*/ Fn( ( inputs ) => {
37
39
 
38
40
  } );
39
41
 
42
+ /**
43
+ * This class can be used for applying normals maps to materials.
44
+ *
45
+ * ```js
46
+ * material.normalNode = normalMap( texture( normalTex ) );
47
+ * ```
48
+ *
49
+ * @augments TempNode
50
+ */
40
51
  class NormalMapNode extends TempNode {
41
52
 
42
53
  static get type() {
@@ -45,13 +56,37 @@ class NormalMapNode extends TempNode {
45
56
 
46
57
  }
47
58
 
59
+ /**
60
+ * Constructs a new normal map node.
61
+ *
62
+ * @param {Node<vec3>} node - Represents the normal map data.
63
+ * @param {Node<vec2>?} [scaleNode=null] - Controls the intensity of the effect.
64
+ */
48
65
  constructor( node, scaleNode = null ) {
49
66
 
50
67
  super( 'vec3' );
51
68
 
69
+ /**
70
+ * Represents the normal map data.
71
+ *
72
+ * @type {Node<vec3>}
73
+ */
52
74
  this.node = node;
75
+
76
+ /**
77
+ * Controls the intensity of the effect.
78
+ *
79
+ * @type {Node<vec2>?}
80
+ * @default null
81
+ */
53
82
  this.scaleNode = scaleNode;
54
83
 
84
+ /**
85
+ * The normal map type.
86
+ *
87
+ * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}
88
+ * @default TangentSpaceNormalMap
89
+ */
55
90
  this.normalMapType = TangentSpaceNormalMap;
56
91
 
57
92
  }
@@ -103,4 +138,12 @@ class NormalMapNode extends TempNode {
103
138
 
104
139
  export default NormalMapNode;
105
140
 
141
+ /**
142
+ * TSL function for creating a normal map node.
143
+ *
144
+ * @function
145
+ * @param {Node<vec3>} node - Represents the normal map data.
146
+ * @param {Node<vec2>?} [scaleNode=null] - Controls the intensity of the effect.
147
+ * @returns {NormalMapNode}
148
+ */
106
149
  export const normalMap = /*@__PURE__*/ nodeProxy( NormalMapNode );
@@ -10,8 +10,15 @@ import { Vector2 } from '../../math/Vector2.js';
10
10
  import { DepthTexture } from '../../textures/DepthTexture.js';
11
11
  import { RenderTarget } from '../../core/RenderTarget.js';
12
12
 
13
+ /** @module PassNode **/
14
+
13
15
  const _size = /*@__PURE__*/ new Vector2();
14
16
 
17
+ /**
18
+ * Represents the texture of a pass node.
19
+ *
20
+ * @augments module:TextureNode~TextureNode
21
+ */
15
22
  class PassTextureNode extends TextureNode {
16
23
 
17
24
  static get type() {
@@ -20,10 +27,21 @@ class PassTextureNode extends TextureNode {
20
27
 
21
28
  }
22
29
 
30
+ /**
31
+ * Constructs a new pass texture node.
32
+ *
33
+ * @param {PassNode} passNode - The pass node.
34
+ * @param {Texture} texture - The output texture.
35
+ */
23
36
  constructor( passNode, texture ) {
24
37
 
25
38
  super( texture );
26
39
 
40
+ /**
41
+ * A reference to the pass node.
42
+ *
43
+ * @type {PassNode}
44
+ */
27
45
  this.passNode = passNode;
28
46
 
29
47
  this.setUpdateMatrix( false );
@@ -46,6 +64,12 @@ class PassTextureNode extends TextureNode {
46
64
 
47
65
  }
48
66
 
67
+ /**
68
+ * An extension of `PassTextureNode` which allows to manage more than one
69
+ * internal texture. Relevant for the `getPreviousTexture()` related API.
70
+ *
71
+ * @augments module:PassTextureNode~PassTextureNode
72
+ */
49
73
  class PassMultipleTextureNode extends PassTextureNode {
50
74
 
51
75
  static get type() {
@@ -54,15 +78,40 @@ class PassMultipleTextureNode extends PassTextureNode {
54
78
 
55
79
  }
56
80
 
81
+ /**
82
+ * Constructs a new pass texture node.
83
+ *
84
+ * @param {PassNode} passNode - The pass node.
85
+ * @param {String} textureName - The output texture name.
86
+ * @param {Boolean} [previousTexture=false] - Whether previous frame data should be used or not.
87
+ */
57
88
  constructor( passNode, textureName, previousTexture = false ) {
58
89
 
90
+ // null is passed to the super call since this class does not
91
+ // use an external texture for rendering pass data into. Instead
92
+ // the texture is managed by the pass node itself
93
+
59
94
  super( passNode, null );
60
95
 
96
+ /**
97
+ * The output texture name.
98
+ *
99
+ * @type {String}
100
+ */
61
101
  this.textureName = textureName;
102
+
103
+ /**
104
+ * Whether previous frame data should be used or not.
105
+ *
106
+ * @type {Boolean}
107
+ */
62
108
  this.previousTexture = previousTexture;
63
109
 
64
110
  }
65
111
 
112
+ /**
113
+ * Updates the texture reference of this node.
114
+ */
66
115
  updateTexture() {
67
116
 
68
117
  this.value = this.previousTexture ? this.passNode.getPreviousTexture( this.textureName ) : this.passNode.getTexture( this.textureName );
@@ -85,6 +134,21 @@ class PassMultipleTextureNode extends PassTextureNode {
85
134
 
86
135
  }
87
136
 
137
+ /**
138
+ * Represents a render pass (sometimes called beauty pass) in context of post processing.
139
+ * This pass produces a render for the given scene and camera and can provide multiple outputs
140
+ * via MRT for further processing.
141
+ *
142
+ * ```js
143
+ * const postProcessing = new PostProcessing( renderer );
144
+ *
145
+ * const scenePass = pass( scene, camera );
146
+ *
147
+ * postProcessing.outputNode = scenePass;
148
+ * ```
149
+ *
150
+ * @augments TempNode
151
+ */
88
152
  class PassNode extends TempNode {
89
153
 
90
154
  static get type() {
@@ -93,17 +157,69 @@ class PassNode extends TempNode {
93
157
 
94
158
  }
95
159
 
160
+ /**
161
+ * Constructs a new pass node.
162
+ *
163
+ * @param {('color'|'depth')} scope - The scope of the pass. The scope determines whether the node outputs color or depth.
164
+ * @param {Scene} scene - A reference to the scene.
165
+ * @param {Camera} camera - A reference to the camera.
166
+ * @param {Object} options - Options for the internal render target.
167
+ */
96
168
  constructor( scope, scene, camera, options = {} ) {
97
169
 
98
170
  super( 'vec4' );
99
171
 
172
+ /**
173
+ * The scope of the pass. The scope determines whether the node outputs color or depth.
174
+ *
175
+ * @type {('color'|'depth')}
176
+ */
100
177
  this.scope = scope;
178
+
179
+ /**
180
+ * A reference to the scene.
181
+ *
182
+ * @type {Scene}
183
+ */
101
184
  this.scene = scene;
185
+
186
+ /**
187
+ * A reference to the camera.
188
+ *
189
+ * @type {Camera}
190
+ */
102
191
  this.camera = camera;
192
+
193
+ /**
194
+ * Options for the internal render target.
195
+ *
196
+ * @type {Object}
197
+ */
103
198
  this.options = options;
104
199
 
200
+ /**
201
+ * The pass's pixel ratio. Will be kept automatically kept in sync with the renderer's pixel ratio.
202
+ *
203
+ * @private
204
+ * @type {Number}
205
+ * @default 1
206
+ */
105
207
  this._pixelRatio = 1;
208
+
209
+ /**
210
+ * The pass's pixel width. Will be kept automatically kept in sync with the renderer's width.
211
+ * @private
212
+ * @type {Number}
213
+ * @default 1
214
+ */
106
215
  this._width = 1;
216
+
217
+ /**
218
+ * The pass's pixel height. Will be kept automatically kept in sync with the renderer's height.
219
+ * @private
220
+ * @type {Number}
221
+ * @default 1
222
+ */
107
223
  this._height = 1;
108
224
 
109
225
  const depthTexture = new DepthTexture();
@@ -115,31 +231,117 @@ class PassNode extends TempNode {
115
231
  renderTarget.texture.name = 'output';
116
232
  renderTarget.depthTexture = depthTexture;
117
233
 
234
+ /**
235
+ * The pass's render target.
236
+ *
237
+ * @type {RenderTarget}
238
+ */
118
239
  this.renderTarget = renderTarget;
119
240
 
120
- this.updateBeforeType = NodeUpdateType.FRAME;
121
-
241
+ /**
242
+ * A dictionary holding the internal result textures.
243
+ *
244
+ * @private
245
+ * @type {Object<String, Texture>}
246
+ */
122
247
  this._textures = {
123
248
  output: renderTarget.texture,
124
249
  depth: depthTexture
125
250
  };
126
251
 
252
+ /**
253
+ * A dictionary holding the internal texture nodes.
254
+ *
255
+ * @private
256
+ * @type {Object<String, TextureNode>}
257
+ */
127
258
  this._textureNodes = {};
259
+
260
+ /**
261
+ * A dictionary holding the internal depth nodes.
262
+ *
263
+ * @private
264
+ * @type {Object}
265
+ */
128
266
  this._linearDepthNodes = {};
267
+
268
+ /**
269
+ * A dictionary holding the internal viewZ nodes.
270
+ *
271
+ * @private
272
+ * @type {Object}
273
+ */
129
274
  this._viewZNodes = {};
130
275
 
276
+ /**
277
+ * A dictionary holding the texture data of the previous frame.
278
+ * Used for computing velocity/motion vectors.
279
+ *
280
+ * @private
281
+ * @type {Object<String, Texture>}
282
+ */
131
283
  this._previousTextures = {};
284
+
285
+ /**
286
+ * A dictionary holding the texture nodes of the previous frame.
287
+ * Used for computing velocity/motion vectors.
288
+ *
289
+ * @private
290
+ * @type {Object<String, TextureNode>}
291
+ */
132
292
  this._previousTextureNodes = {};
133
293
 
294
+ /**
295
+ * The `near` property of the camera as a uniform.
296
+ *
297
+ * @private
298
+ * @type {UniformNode}
299
+ */
134
300
  this._cameraNear = uniform( 0 );
301
+
302
+ /**
303
+ * The `far` property of the camera as a uniform.
304
+ *
305
+ * @private
306
+ * @type {UniformNode}
307
+ */
135
308
  this._cameraFar = uniform( 0 );
136
309
 
310
+ /**
311
+ * A MRT node configuring the MRT settings.
312
+ *
313
+ * @private
314
+ * @type {MRTNode?}
315
+ * @default null
316
+ */
137
317
  this._mrt = null;
138
318
 
319
+ /**
320
+ * This flag can be used for type testing.
321
+ *
322
+ * @type {Boolean}
323
+ * @readonly
324
+ * @default true
325
+ */
139
326
  this.isPassNode = true;
140
327
 
328
+ /**
329
+ * The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders the
330
+ * scene once per frame in its {@link PassNode#updateBefore} method.
331
+ *
332
+ * @type {String}
333
+ * @default 'frame'
334
+ */
335
+ this.updateBeforeType = NodeUpdateType.FRAME;
336
+
141
337
  }
142
338
 
339
+ /**
340
+ * Sets the given MRT node to setup MRT for this pass.
341
+ *
342
+ * @param {MRTNode} mrt - The MRT object.
343
+ * @return {PassNode} A reference to this pass.
344
+ */
143
345
  setMRT( mrt ) {
144
346
 
145
347
  this._mrt = mrt;
@@ -148,18 +350,34 @@ class PassNode extends TempNode {
148
350
 
149
351
  }
150
352
 
353
+ /**
354
+ * Returns the current MRT node.
355
+ *
356
+ * @return {MRTNode} The current MRT node.
357
+ */
151
358
  getMRT() {
152
359
 
153
360
  return this._mrt;
154
361
 
155
362
  }
156
363
 
364
+ /**
365
+ * The method is overwritten so it always returns `true`.
366
+ *
367
+ * @return {Boolean} Whether this node is global or not.
368
+ */
157
369
  isGlobal() {
158
370
 
159
371
  return true;
160
372
 
161
373
  }
162
374
 
375
+ /**
376
+ * Returns the texture for the given output name.
377
+ *
378
+ * @param {String} name - The output name to get the texture for.
379
+ * @return {Texture} The texture.
380
+ */
163
381
  getTexture( name ) {
164
382
 
165
383
  let texture = this._textures[ name ];
@@ -169,7 +387,6 @@ class PassNode extends TempNode {
169
387
  const refTexture = this.renderTarget.texture;
170
388
 
171
389
  texture = refTexture.clone();
172
- texture.isRenderTargetTexture = true;
173
390
  texture.name = name;
174
391
 
175
392
  this._textures[ name ] = texture;
@@ -182,6 +399,12 @@ class PassNode extends TempNode {
182
399
 
183
400
  }
184
401
 
402
+ /**
403
+ * Returns the texture holding the data of the previous frame for the given output name.
404
+ *
405
+ * @param {String} name - The output name to get the texture for.
406
+ * @return {Texture} The texture holding the data of the previous frame.
407
+ */
185
408
  getPreviousTexture( name ) {
186
409
 
187
410
  let texture = this._previousTextures[ name ];
@@ -189,7 +412,6 @@ class PassNode extends TempNode {
189
412
  if ( texture === undefined ) {
190
413
 
191
414
  texture = this.getTexture( name ).clone();
192
- texture.isRenderTargetTexture = true;
193
415
 
194
416
  this._previousTextures[ name ] = texture;
195
417
 
@@ -199,6 +421,11 @@ class PassNode extends TempNode {
199
421
 
200
422
  }
201
423
 
424
+ /**
425
+ * Switches current and previous textures for the given output name.
426
+ *
427
+ * @param {String} name - The output name.
428
+ */
202
429
  toggleTexture( name ) {
203
430
 
204
431
  const prevTexture = this._previousTextures[ name ];
@@ -220,6 +447,12 @@ class PassNode extends TempNode {
220
447
 
221
448
  }
222
449
 
450
+ /**
451
+ * Returns the texture node for the given output name.
452
+ *
453
+ * @param {String} [name='output'] - The output name to get the texture node for.
454
+ * @return {TextureNode} The texture node.
455
+ */
223
456
  getTextureNode( name = 'output' ) {
224
457
 
225
458
  let textureNode = this._textureNodes[ name ];
@@ -236,6 +469,12 @@ class PassNode extends TempNode {
236
469
 
237
470
  }
238
471
 
472
+ /**
473
+ * Returns the previous texture node for the given output name.
474
+ *
475
+ * @param {String} [name='output'] - The output name to get the previous texture node for.
476
+ * @return {TextureNode} The previous texture node.
477
+ */
239
478
  getPreviousTextureNode( name = 'output' ) {
240
479
 
241
480
  let textureNode = this._previousTextureNodes[ name ];
@@ -254,6 +493,12 @@ class PassNode extends TempNode {
254
493
 
255
494
  }
256
495
 
496
+ /**
497
+ * Returns a viewZ node of this pass.
498
+ *
499
+ * @param {String} [name='depth'] - The output name to get the viewZ node for. In most cases the default `'depth'` can be used however the parameter exists for custom depth outputs.
500
+ * @return {Node} The viewZ node.
501
+ */
257
502
  getViewZNode( name = 'depth' ) {
258
503
 
259
504
  let viewZNode = this._viewZNodes[ name ];
@@ -271,6 +516,12 @@ class PassNode extends TempNode {
271
516
 
272
517
  }
273
518
 
519
+ /**
520
+ * Returns a linear depth node of this pass.
521
+ *
522
+ * @param {String} [name='depth'] - The output name to get the linear depth node for. In most cases the default `'depth'` can be used however the parameter exists for custom depth outputs.
523
+ * @return {Node} The linear depth node.
524
+ */
274
525
  getLinearDepthNode( name = 'depth' ) {
275
526
 
276
527
  let linearDepthNode = this._linearDepthNodes[ name ];
@@ -295,14 +546,14 @@ class PassNode extends TempNode {
295
546
 
296
547
  this.renderTarget.samples = this.options.samples === undefined ? renderer.samples : this.options.samples;
297
548
 
298
- // Disable MSAA for WebGL backend for now
549
+ // TODO: Disable MSAA for WebGL backend for now
299
550
  if ( renderer.backend.isWebGLBackend === true ) {
300
551
 
301
552
  this.renderTarget.samples = 0;
302
553
 
303
554
  }
304
555
 
305
- this.renderTarget.depthTexture.isMultisampleRenderTargetTexture = this.renderTarget.samples > 1;
556
+ this.renderTarget.texture.type = renderer.getColorBufferType();
306
557
 
307
558
  return this.scope === PassNode.COLOR ? this.getTextureNode() : this.getLinearDepthNode();
308
559
 
@@ -341,6 +592,12 @@ class PassNode extends TempNode {
341
592
 
342
593
  }
343
594
 
595
+ /**
596
+ * Sets the size of the pass's render target. Honors the pixel ratio.
597
+ *
598
+ * @param {Number} width - The width to set.
599
+ * @param {Number} height - The height to set.
600
+ */
344
601
  setSize( width, height ) {
345
602
 
346
603
  this._width = width;
@@ -353,6 +610,11 @@ class PassNode extends TempNode {
353
610
 
354
611
  }
355
612
 
613
+ /**
614
+ * Sets the pixel ratio the pass's render target and updates the size.
615
+ *
616
+ * @param {Number} pixelRatio - The pixel ratio to set.
617
+ */
356
618
  setPixelRatio( pixelRatio ) {
357
619
 
358
620
  this._pixelRatio = pixelRatio;
@@ -361,6 +623,9 @@ class PassNode extends TempNode {
361
623
 
362
624
  }
363
625
 
626
+ /**
627
+ * Frees internal resources. Should be called when the node is no longer in use.
628
+ */
364
629
  dispose() {
365
630
 
366
631
  this.renderTarget.dispose();
@@ -375,6 +640,34 @@ PassNode.DEPTH = 'depth';
375
640
 
376
641
  export default PassNode;
377
642
 
643
+ /**
644
+ * TSL function for creating a pass node.
645
+ *
646
+ * @function
647
+ * @param {Scene} scene - A reference to the scene.
648
+ * @param {Camera} camera - A reference to the camera.
649
+ * @param {Object} options - Options for the internal render target.
650
+ * @returns {PassNode}
651
+ */
378
652
  export const pass = ( scene, camera, options ) => nodeObject( new PassNode( PassNode.COLOR, scene, camera, options ) );
653
+
654
+ /**
655
+ * TSL function for creating a pass texture node.
656
+ *
657
+ * @function
658
+ * @param {PassNode} pass - The pass node.
659
+ * @param {Texture} texture - The output texture.
660
+ * @returns {PassTextureNode}
661
+ */
379
662
  export const passTexture = ( pass, texture ) => nodeObject( new PassTextureNode( pass, texture ) );
380
- export const depthPass = ( scene, camera ) => nodeObject( new PassNode( PassNode.DEPTH, scene, camera ) );
663
+
664
+ /**
665
+ * TSL function for creating a depth pass node.
666
+ *
667
+ * @function
668
+ * @param {Scene} scene - A reference to the scene.
669
+ * @param {Camera} camera - A reference to the camera.
670
+ * @param {Object} options - Options for the internal render target.
671
+ * @returns {PassNode}
672
+ */
673
+ export const depthPass = ( scene, camera, options ) => nodeObject( new PassNode( PassNode.DEPTH, scene, camera, options ) );
@@ -1,6 +1,14 @@
1
1
  import TempNode from '../core/TempNode.js';
2
2
  import { nodeProxy } from '../tsl/TSLBase.js';
3
3
 
4
+ /** @module PosterizeNode **/
5
+
6
+ /**
7
+ * Represents a posterize effect which reduces the number of colors
8
+ * in an image, resulting in a more blocky and stylized appearance.
9
+ *
10
+ * @augments TempNode
11
+ */
4
12
  class PosterizeNode extends TempNode {
5
13
 
6
14
  static get type() {
@@ -9,11 +17,28 @@ class PosterizeNode extends TempNode {
9
17
 
10
18
  }
11
19
 
20
+ /**
21
+ * Constructs a new posterize node.
22
+ *
23
+ * @param {Node} sourceNode - The input color.
24
+ * @param {Node} stepsNode - Controls the intensity of the posterization effect. A lower number results in a more blocky appearance.
25
+ */
12
26
  constructor( sourceNode, stepsNode ) {
13
27
 
14
28
  super();
15
29
 
30
+ /**
31
+ * The input color.
32
+ *
33
+ * @type {Node}
34
+ */
16
35
  this.sourceNode = sourceNode;
36
+
37
+ /**
38
+ * Controls the intensity of the posterization effect. A lower number results in a more blocky appearance.
39
+ *
40
+ * @type {Node}
41
+ */
17
42
  this.stepsNode = stepsNode;
18
43
 
19
44
  }
@@ -30,4 +55,12 @@ class PosterizeNode extends TempNode {
30
55
 
31
56
  export default PosterizeNode;
32
57
 
58
+ /**
59
+ * TSL function for creating a posterize node.
60
+ *
61
+ * @function
62
+ * @param {Node} sourceNode - The input color.
63
+ * @param {Node} stepsNode - Controls the intensity of the posterization effect. A lower number results in a more blocky appearance.
64
+ * @returns {PosterizeNode}
65
+ */
33
66
  export const posterize = /*@__PURE__*/ nodeProxy( PosterizeNode );