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
@@ -9,8 +9,18 @@ import { RenderTarget } from '../../core/RenderTarget.js';
9
9
  import { Vector2 } from '../../math/Vector2.js';
10
10
  import { HalfFloatType } from '../../constants.js';
11
11
 
12
+ /** @module RTTNode **/
13
+
12
14
  const _size = /*@__PURE__*/ new Vector2();
13
15
 
16
+ /**
17
+ * `RTTNode` takes another node and uses it with a `QuadMesh` to render into a texture (RTT).
18
+ * This module is especially relevant in context of post processing where certain nodes require
19
+ * texture input for their effects. With the helper function `convertToTexture()` which is based
20
+ * on this module, the node system can automatically ensure texture input if required.
21
+ *
22
+ * @augments module:TextureNode~TextureNode
23
+ */
14
24
  class RTTNode extends TextureNode {
15
25
 
16
26
  static get type() {
@@ -19,30 +29,110 @@ class RTTNode extends TextureNode {
19
29
 
20
30
  }
21
31
 
32
+ /**
33
+ * Constructs a new RTT node.
34
+ *
35
+ * @param {Node} node - The node to render a texture with.
36
+ * @param {Number?} [width=null] - The width of the internal render target. If not width is applied, the render target is automatically resized.
37
+ * @param {Number?} [height=null] - The height of the internal render target.
38
+ * @param {Object} [options={type:HalfFloatType}] - The options for the internal render target.
39
+ */
22
40
  constructor( node, width = null, height = null, options = { type: HalfFloatType } ) {
23
41
 
24
42
  const renderTarget = new RenderTarget( width, height, options );
25
43
 
26
44
  super( renderTarget.texture, uv() );
27
45
 
46
+ /**
47
+ * The node to render a texture with.
48
+ *
49
+ * @type {Node}
50
+ */
28
51
  this.node = node;
52
+
53
+ /**
54
+ * The width of the internal render target.
55
+ * If not width is applied, the render target is automatically resized.
56
+ *
57
+ * @type {Number?}
58
+ * @default null
59
+ */
29
60
  this.width = width;
61
+
62
+ /**
63
+ * The height of the internal render target.
64
+ *
65
+ * @type {Number?}
66
+ * @default null
67
+ */
30
68
  this.height = height;
31
69
 
70
+ /**
71
+ * The pixel ratio
72
+ *
73
+ * @type {Number}
74
+ * @default 1
75
+ */
76
+ this.pixelRatio = 1;
77
+
78
+ /**
79
+ * The render target
80
+ *
81
+ * @type {RenderTarget}
82
+ */
32
83
  this.renderTarget = renderTarget;
33
84
 
85
+ /**
86
+ * Whether the texture requires an update or not.
87
+ *
88
+ * @type {Boolean}
89
+ * @default true
90
+ */
34
91
  this.textureNeedsUpdate = true;
35
- this.autoUpdate = true;
36
92
 
37
- this.updateMap = new WeakMap();
93
+ /**
94
+ * Whether the texture should automatically be updated or not.
95
+ *
96
+ * @type {Boolean}
97
+ * @default true
98
+ */
99
+ this.autoUpdate = true;
38
100
 
101
+ /**
102
+ * The node which is used with the quad mesh for RTT.
103
+ *
104
+ * @private
105
+ * @type {Node}
106
+ * @default null
107
+ */
39
108
  this._rttNode = null;
109
+
110
+ /**
111
+ * The internal quad mesh for RTT.
112
+ *
113
+ * @private
114
+ * @type {QuadMesh}
115
+ */
40
116
  this._quadMesh = new QuadMesh( new NodeMaterial() );
41
117
 
118
+ /**
119
+ * The `updateBeforeType` is set to `NodeUpdateType.RENDER` since the node updates
120
+ * the texture once per render in its {@link RTTNode#updateBefore} method.
121
+ *
122
+ * @type {String}
123
+ * @default 'render'
124
+ */
42
125
  this.updateBeforeType = NodeUpdateType.RENDER;
43
126
 
44
127
  }
45
128
 
129
+ /**
130
+ * Whether the internal render target should automatically be resized or not.
131
+ *
132
+ * @type {Boolean}
133
+ * @readonly
134
+ * @default true
135
+ */
46
136
  get autoSize() {
47
137
 
48
138
  return this.width === null;
@@ -59,6 +149,12 @@ class RTTNode extends TextureNode {
59
149
 
60
150
  }
61
151
 
152
+ /**
153
+ * Sets the size of the internal render target
154
+ *
155
+ * @param {Number} width - The width to set.
156
+ * @param {Number} height - The width to set.
157
+ */
62
158
  setSize( width, height ) {
63
159
 
64
160
  this.width = width;
@@ -73,6 +169,11 @@ class RTTNode extends TextureNode {
73
169
 
74
170
  }
75
171
 
172
+ /**
173
+ * Sets the pixel ratio. This will also resize the render target.
174
+ *
175
+ * @param {Number} pixelRatio - The pixel ratio to set.
176
+ */
76
177
  setPixelRatio( pixelRatio ) {
77
178
 
78
179
  this.pixelRatio = pixelRatio;
@@ -129,8 +230,28 @@ class RTTNode extends TextureNode {
129
230
 
130
231
  export default RTTNode;
131
232
 
233
+ /**
234
+ * TSL function for creating a RTT node.
235
+ *
236
+ * @function
237
+ * @param {Node} node - The node to render a texture with.
238
+ * @param {Number?} [width=null] - The width of the internal render target. If not width is applied, the render target is automatically resized.
239
+ * @param {Number?} [height=null] - The height of the internal render target.
240
+ * @param {Object} [options={type:HalfFloatType}] - The options for the internal render target.
241
+ * @returns {RTTNode}
242
+ */
132
243
  export const rtt = ( node, ...params ) => nodeObject( new RTTNode( nodeObject( node ), ...params ) );
133
244
 
245
+ /**
246
+ * TSL function for converting nodes to textures nodes.
247
+ *
248
+ * @function
249
+ * @param {Node} node - The node to render a texture with.
250
+ * @param {Number?} [width=null] - The width of the internal render target. If not width is applied, the render target is automatically resized.
251
+ * @param {Number?} [height=null] - The height of the internal render target.
252
+ * @param {Object} [options={type:HalfFloatType}] - The options for the internal render target.
253
+ * @returns {RTTNode}
254
+ */
134
255
  export const convertToTexture = ( node, ...params ) => {
135
256
 
136
257
  if ( node.isTextureNode ) return node;
@@ -14,6 +14,8 @@ import { Matrix4 } from '../../math/Matrix4.js';
14
14
  import { RenderTarget } from '../../core/RenderTarget.js';
15
15
  import { DepthTexture } from '../../textures/DepthTexture.js';
16
16
 
17
+ /** @module ReflectorNode **/
18
+
17
19
  const _reflectorPlane = new Plane();
18
20
  const _normal = new Vector3();
19
21
  const _reflectorWorldPosition = new Vector3();
@@ -35,6 +37,19 @@ _defaultRT.depthTexture = new DepthTexture( 1, 1 );
35
37
 
36
38
  let _inReflector = false;
37
39
 
40
+ /**
41
+ * This node can be used to implement mirror-like flat reflective surfaces.
42
+ *
43
+ * ```js
44
+ * const groundReflector = reflector();
45
+ * material.colorNode = groundReflector;
46
+ *
47
+ * const plane = new Mesh( geometry, material );
48
+ * plane.add( groundReflector.target );
49
+ * ```
50
+ *
51
+ * @augments module:TextureNode~TextureNode
52
+ */
38
53
  class ReflectorNode extends TextureNode {
39
54
 
40
55
  static get type() {
@@ -43,29 +58,72 @@ class ReflectorNode extends TextureNode {
43
58
 
44
59
  }
45
60
 
61
+ /**
62
+ * Constructs a new reflector node.
63
+ *
64
+ * @param {Object} [parameters={}] - An object holding configuration parameters.
65
+ * @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
66
+ * @param {Number} [parameters.resolution=1] - The resolution scale.
67
+ * @param {Boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
68
+ * @param {Boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
69
+ * @param {Boolean} [parameters.depth=false] - Whether depth data should be generated or not.
70
+ * @param {TextureNode} [parameters.defaultTexture] - The default texture node.
71
+ * @param {ReflectorBaseNode} [parameters.reflector] - The reflector base node.
72
+ */
46
73
  constructor( parameters = {} ) {
47
74
 
48
75
  super( parameters.defaultTexture || _defaultRT.texture, _defaultUV );
49
76
 
77
+ /**
78
+ * A reference to the internal reflector base node which holds the actual implementation.
79
+ *
80
+ * @private
81
+ * @type {ReflectorBaseNode?}
82
+ * @default null
83
+ */
50
84
  this._reflectorBaseNode = parameters.reflector || new ReflectorBaseNode( this, parameters );
85
+
86
+ /**
87
+ * A reference to the internal depth node.
88
+ *
89
+ * @private
90
+ * @type {Node?}
91
+ * @default null
92
+ */
51
93
  this._depthNode = null;
52
94
 
53
95
  this.setUpdateMatrix( false );
54
96
 
55
97
  }
56
98
 
99
+ /**
100
+ * A reference to the internal reflector node.
101
+ *
102
+ * @type {ReflectorBaseNode}
103
+ */
57
104
  get reflector() {
58
105
 
59
106
  return this._reflectorBaseNode;
60
107
 
61
108
  }
62
109
 
110
+ /**
111
+ * A reference to 3D object the reflector is linked to.
112
+ *
113
+ * @type {Object3D}
114
+ */
63
115
  get target() {
64
116
 
65
117
  return this._reflectorBaseNode.target;
66
118
 
67
119
  }
68
120
 
121
+ /**
122
+ * Returns a node representing the mirror's depth. That can be used
123
+ * to implement more advanced reflection effects like distance attenuation.
124
+ *
125
+ * @return {Node} The depth node.
126
+ */
69
127
  getDepthNode() {
70
128
 
71
129
  if ( this._depthNode === null ) {
@@ -107,7 +165,15 @@ class ReflectorNode extends TextureNode {
107
165
 
108
166
  }
109
167
 
110
-
168
+ /**
169
+ * Holds the actual implementation of the reflector.
170
+ *
171
+ * TODO: Explain why `ReflectorBaseNode`. Originally the entire logic was implemented
172
+ * in `ReflectorNode`, see #29619.
173
+ *
174
+ * @private
175
+ * @augments Node
176
+ */
111
177
  class ReflectorBaseNode extends Node {
112
178
 
113
179
  static get type() {
@@ -116,6 +182,17 @@ class ReflectorBaseNode extends Node {
116
182
 
117
183
  }
118
184
 
185
+ /**
186
+ * Constructs a new reflector base node.
187
+ *
188
+ * @param {TextureNode} textureNode - Represents the rendered reflections as a texture node.
189
+ * @param {Object} [parameters={}] - An object holding configuration parameters.
190
+ * @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
191
+ * @param {Number} [parameters.resolution=1] - The resolution scale.
192
+ * @param {Boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
193
+ * @param {Boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
194
+ * @param {Boolean} [parameters.depth=false] - Whether depth data should be generated or not.
195
+ */
119
196
  constructor( textureNode, parameters = {} ) {
120
197
 
121
198
  super();
@@ -128,23 +205,85 @@ class ReflectorBaseNode extends Node {
128
205
  depth = false
129
206
  } = parameters;
130
207
 
131
- //
132
-
208
+ /**
209
+ * Represents the rendered reflections as a texture node.
210
+ *
211
+ * @type {TextureNode}
212
+ */
133
213
  this.textureNode = textureNode;
134
214
 
215
+ /**
216
+ * The 3D object the reflector is linked to.
217
+ *
218
+ * @type {Object3D}
219
+ * @default {new Object3D()}
220
+ */
135
221
  this.target = target;
222
+
223
+ /**
224
+ * The resolution scale.
225
+ *
226
+ * @type {Number}
227
+ * @default {1}
228
+ */
136
229
  this.resolution = resolution;
230
+
231
+ /**
232
+ * Whether mipmaps should be generated or not.
233
+ *
234
+ * @type {Boolean}
235
+ * @default {false}
236
+ */
137
237
  this.generateMipmaps = generateMipmaps;
238
+
239
+ /**
240
+ * Whether reflectors can render other reflector nodes or not.
241
+ *
242
+ * @type {Boolean}
243
+ * @default {true}
244
+ */
138
245
  this.bounces = bounces;
246
+
247
+ /**
248
+ * Whether depth data should be generated or not.
249
+ *
250
+ * @type {Boolean}
251
+ * @default {false}
252
+ */
139
253
  this.depth = depth;
140
254
 
255
+ /**
256
+ * The `updateBeforeType` is set to `NodeUpdateType.RENDER` when {@link ReflectorBaseNode#bounces}
257
+ * is `true`. Otherwise it's `NodeUpdateType.FRAME`.
258
+ *
259
+ * @type {String}
260
+ * @default 'render'
261
+ */
141
262
  this.updateBeforeType = bounces ? NodeUpdateType.RENDER : NodeUpdateType.FRAME;
142
263
 
264
+ /**
265
+ * Weak map for managing virtual cameras.
266
+ *
267
+ * @type {WeakMap<Camera, Camera>}
268
+ */
143
269
  this.virtualCameras = new WeakMap();
270
+
271
+ /**
272
+ * Weak map for managing render targets.
273
+ *
274
+ * @type {WeakMap<Camera, RenderTarget>}
275
+ */
144
276
  this.renderTargets = new WeakMap();
145
277
 
146
278
  }
147
279
 
280
+ /**
281
+ * Updates the resolution of the internal render target.
282
+ *
283
+ * @private
284
+ * @param {RenderTarget} renderTarget - The render target to resize.
285
+ * @param {Renderer} renderer - The renderer that is used to determine the new size.
286
+ */
148
287
  _updateResolution( renderTarget, renderer ) {
149
288
 
150
289
  const resolution = this.resolution;
@@ -163,6 +302,13 @@ class ReflectorBaseNode extends Node {
163
302
 
164
303
  }
165
304
 
305
+ /**
306
+ * Returns a virtual camera for the given camera. The virtual camera is used to
307
+ * render the scene from the reflector's view so correct reflections can be produced.
308
+ *
309
+ * @param {Camera} camera - The scene's camera.
310
+ * @return {Camera} The corresponding virtual camera.
311
+ */
166
312
  getVirtualCamera( camera ) {
167
313
 
168
314
  let virtualCamera = this.virtualCameras.get( camera );
@@ -179,6 +325,13 @@ class ReflectorBaseNode extends Node {
179
325
 
180
326
  }
181
327
 
328
+ /**
329
+ * Returns a render target for the given camera. The reflections are rendered
330
+ * into this render target.
331
+ *
332
+ * @param {Camera} camera - The scene's camera.
333
+ * @return {RenderTarget} The render target.
334
+ */
182
335
  getRenderTarget( camera ) {
183
336
 
184
337
  let renderTarget = this.renderTargets.get( camera );
@@ -210,7 +363,7 @@ class ReflectorBaseNode extends Node {
210
363
 
211
364
  updateBefore( frame ) {
212
365
 
213
- if ( this.bounces === false && _inReflector ) return;
366
+ if ( this.bounces === false && _inReflector ) return false;
214
367
 
215
368
  _inReflector = true;
216
369
 
@@ -307,14 +460,17 @@ class ReflectorBaseNode extends Node {
307
460
 
308
461
  const currentRenderTarget = renderer.getRenderTarget();
309
462
  const currentMRT = renderer.getMRT();
463
+ const currentAutoClear = renderer.autoClear;
310
464
 
311
465
  renderer.setMRT( null );
312
466
  renderer.setRenderTarget( renderTarget );
467
+ renderer.autoClear = true;
313
468
 
314
469
  renderer.render( scene, virtualCamera );
315
470
 
316
471
  renderer.setMRT( currentMRT );
317
472
  renderer.setRenderTarget( currentRenderTarget );
473
+ renderer.autoClear = currentAutoClear;
318
474
 
319
475
  material.visible = true;
320
476
 
@@ -324,6 +480,20 @@ class ReflectorBaseNode extends Node {
324
480
 
325
481
  }
326
482
 
483
+ /**
484
+ * TSL function for creating a reflector node.
485
+ *
486
+ * @function
487
+ * @param {Object} [parameters={}] - An object holding configuration parameters.
488
+ * @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
489
+ * @param {Number} [parameters.resolution=1] - The resolution scale.
490
+ * @param {Boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
491
+ * @param {Boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
492
+ * @param {Boolean} [parameters.depth=false] - Whether depth data should be generated or not.
493
+ * @param {TextureNode} [parameters.defaultTexture] - The default texture node.
494
+ * @param {ReflectorBaseNode} [parameters.reflector] - The reflector base node.
495
+ * @returns {ReflectorNode}
496
+ */
327
497
  export const reflector = ( parameters ) => nodeObject( new ReflectorNode( parameters ) );
328
498
 
329
499
  export default ReflectorNode;
@@ -1,6 +1,15 @@
1
1
  import Node from '../core/Node.js';
2
2
  import { float, addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
3
3
 
4
+ /** @module RemapNode **/
5
+
6
+ /**
7
+ * This node allows to remap a node value from one range into another. E.g a value of
8
+ * `0.4` in the range `[ 0.3, 0.5 ]` should be remapped into the normalized range `[ 0, 1 ]`.
9
+ * `RemapNode` takes care of that and converts the original value of `0.4` to `0.5`.
10
+ *
11
+ * @augments Node
12
+ */
4
13
  class RemapNode extends Node {
5
14
 
6
15
  static get type() {
@@ -9,16 +18,63 @@ class RemapNode extends Node {
9
18
 
10
19
  }
11
20
 
21
+ /**
22
+ * Constructs a new remap node.
23
+ *
24
+ * @param {Node} node - The node that should be remapped.
25
+ * @param {Node} inLowNode - The source or current lower bound of the range.
26
+ * @param {Node} inHighNode - The source or current upper bound of the range.
27
+ * @param {Node} [outLowNode=float(0)] - The target lower bound of the range.
28
+ * @param {Node} [outHighNode=float(1)] - The target upper bound of the range.
29
+ */
12
30
  constructor( node, inLowNode, inHighNode, outLowNode = float( 0 ), outHighNode = float( 1 ) ) {
13
31
 
14
32
  super();
15
33
 
34
+ /**
35
+ * The node that should be remapped.
36
+ *
37
+ * @type {Node}
38
+ */
16
39
  this.node = node;
40
+
41
+ /**
42
+ * The source or current lower bound of the range.
43
+ *
44
+ * @type {Node}
45
+ */
17
46
  this.inLowNode = inLowNode;
47
+
48
+ /**
49
+ * The source or current upper bound of the range.
50
+ *
51
+ * @type {Node}
52
+ */
18
53
  this.inHighNode = inHighNode;
54
+
55
+ /**
56
+ * The target lower bound of the range.
57
+ *
58
+ * @type {Node}
59
+ * @default float(0)
60
+ */
19
61
  this.outLowNode = outLowNode;
62
+
63
+ /**
64
+ * The target upper bound of the range.
65
+ *
66
+ * @type {Node}
67
+ * @default float(1)
68
+ */
20
69
  this.outHighNode = outHighNode;
21
70
 
71
+ /**
72
+ * Whether the node value should be clamped before
73
+ * remapping it to the target range.
74
+ *
75
+ * @type {Boolean}
76
+ * @default true
77
+ */
22
78
  this.doClamp = true;
23
79
 
24
80
  }
@@ -39,7 +95,30 @@ class RemapNode extends Node {
39
95
 
40
96
  export default RemapNode;
41
97
 
98
+ /**
99
+ * TSL function for creating a remap node.
100
+ *
101
+ * @function
102
+ * @param {Node} node - The node that should be remapped.
103
+ * @param {Node} inLowNode - The source or current lower bound of the range.
104
+ * @param {Node} inHighNode - The source or current upper bound of the range.
105
+ * @param {Node} [outLowNode=float(0)] - The target lower bound of the range.
106
+ * @param {Node} [outHighNode=float(1)] - The target upper bound of the range.
107
+ * @returns {RemapNode}
108
+ */
42
109
  export const remap = /*@__PURE__*/ nodeProxy( RemapNode, null, null, { doClamp: false } );
110
+
111
+ /**
112
+ * TSL function for creating a remap node, but with enabled clamping.
113
+ *
114
+ * @function
115
+ * @param {Node} node - The node that should be remapped.
116
+ * @param {Node} inLowNode - The source or current lower bound of the range.
117
+ * @param {Node} inHighNode - The source or current upper bound of the range.
118
+ * @param {Node} [outLowNode=float(0)] - The target lower bound of the range.
119
+ * @param {Node} [outHighNode=float(1)] - The target upper bound of the range.
120
+ * @returns {RemapNode}
121
+ */
43
122
  export const remapClamp = /*@__PURE__*/ nodeProxy( RemapNode );
44
123
 
45
124
  addMethodChaining( 'remap', remap );
@@ -2,6 +2,13 @@ import TempNode from '../core/TempNode.js';
2
2
  import { nodeProxy, vec4, mat2, mat4 } from '../tsl/TSLBase.js';
3
3
  import { cos, sin } from '../math/MathNode.js';
4
4
 
5
+ /** @module RotateNode **/
6
+
7
+ /**
8
+ * Applies a rotation to the given position node.
9
+ *
10
+ * @augments TempNode
11
+ */
5
12
  class RotateNode extends TempNode {
6
13
 
7
14
  static get type() {
@@ -10,15 +17,40 @@ class RotateNode extends TempNode {
10
17
 
11
18
  }
12
19
 
20
+ /**
21
+ * Constructs a new rotate node.
22
+ *
23
+ * @param {Node} positionNode - The position node.
24
+ * @param {Node} rotationNode - Represents the rotation that is applied to the position node. Depending
25
+ * on whether the position data are 2D or 3D, the rotation is expressed a single float value or an Euler value.
26
+ */
13
27
  constructor( positionNode, rotationNode ) {
14
28
 
15
29
  super();
16
30
 
31
+ /**
32
+ * The position node.
33
+ *
34
+ * @type {Node}
35
+ */
17
36
  this.positionNode = positionNode;
37
+
38
+ /**
39
+ * Represents the rotation that is applied to the position node.
40
+ * Depending on whether the position data are 2D or 3D, the rotation is expressed a single float value or an Euler value.
41
+ *
42
+ * @type {Node}
43
+ */
18
44
  this.rotationNode = rotationNode;
19
45
 
20
46
  }
21
47
 
48
+ /**
49
+ * The type of the {@link RotateNode#positionNode} defines the node's type.
50
+ *
51
+ * @param {NodeBuilder} builder - The current node builder.
52
+ * @return {String} The node's type.
53
+ */
22
54
  getNodeType( builder ) {
23
55
 
24
56
  return this.positionNode.getNodeType( builder );
@@ -60,4 +92,13 @@ class RotateNode extends TempNode {
60
92
 
61
93
  export default RotateNode;
62
94
 
95
+ /**
96
+ * TSL function for creating a rotate node.
97
+ *
98
+ * @function
99
+ * @param {Node} positionNode - The position node.
100
+ * @param {Node} rotationNode - Represents the rotation that is applied to the position node. Depending
101
+ * on whether the position data are 2D or 3D, the rotation is expressed a single float value or an Euler value.
102
+ * @returns {RotateNode}
103
+ */
63
104
  export const rotate = /*@__PURE__*/ nodeProxy( RotateNode );