@types/three 0.182.0 → 0.183.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 (312) hide show
  1. three/README.md +1 -1
  2. three/examples/jsm/Addons.d.ts +0 -3
  3. three/examples/jsm/controls/OrbitControls.d.ts +39 -0
  4. three/examples/jsm/effects/AnaglyphEffect.d.ts +4 -0
  5. three/examples/jsm/environments/ColorEnvironment.d.ts +9 -0
  6. three/examples/jsm/gpgpu/BitonicSort.d.ts +5 -5
  7. three/examples/jsm/helpers/AnimationPathHelper.d.ts +38 -0
  8. three/examples/jsm/helpers/ViewHelper.d.ts +4 -1
  9. three/examples/jsm/inspector/tabs/Parameters.d.ts +3 -0
  10. three/examples/jsm/inspector/ui/Item.d.ts +5 -0
  11. three/examples/jsm/libs/meshopt_decoder.module.d.ts +1 -1
  12. three/examples/jsm/lights/LightProbeGenerator.d.ts +11 -5
  13. three/examples/jsm/loaders/ColladaLoader.d.ts +27 -4
  14. three/examples/jsm/objects/SkyMesh.d.ts +11 -6
  15. three/examples/jsm/objects/Water2Mesh.d.ts +7 -7
  16. three/examples/jsm/objects/WaterMesh.d.ts +6 -6
  17. three/examples/jsm/postprocessing/EffectComposer.d.ts +9 -10
  18. three/examples/jsm/postprocessing/UnrealBloomPass.d.ts +4 -9
  19. three/examples/jsm/tsl/display/AnaglyphPassNode.d.ts +30 -0
  20. three/examples/jsm/tsl/display/AnamorphicNode.d.ts +1 -1
  21. three/examples/jsm/tsl/display/BilateralBlurNode.d.ts +27 -0
  22. three/examples/jsm/tsl/display/BloomNode.d.ts +5 -5
  23. three/examples/jsm/tsl/display/CRT.d.ts +22 -0
  24. three/examples/jsm/tsl/display/DenoiseNode.d.ts +5 -5
  25. three/examples/jsm/tsl/display/DotScreenNode.d.ts +4 -6
  26. three/examples/jsm/tsl/display/GTAONode.d.ts +8 -8
  27. three/examples/jsm/tsl/display/GaussianBlurNode.d.ts +4 -2
  28. three/examples/jsm/tsl/display/GodraysNode.d.ts +20 -0
  29. three/examples/jsm/tsl/display/LensflareNode.d.ts +6 -6
  30. three/examples/jsm/tsl/display/Lut3DNode.d.ts +5 -5
  31. three/examples/jsm/tsl/display/MotionBlur.d.ts +1 -1
  32. three/examples/jsm/tsl/display/OutlineNode.d.ts +6 -6
  33. three/examples/jsm/tsl/display/PixelationPassNode.d.ts +10 -10
  34. three/examples/jsm/tsl/display/RGBShiftNode.d.ts +2 -2
  35. three/examples/jsm/tsl/display/RetroPassNode.d.ts +17 -0
  36. three/examples/jsm/tsl/display/SSAAPassNode.d.ts +1 -1
  37. three/examples/jsm/tsl/display/SSGINode.d.ts +11 -11
  38. three/examples/jsm/tsl/display/SSRNode.d.ts +6 -6
  39. three/examples/jsm/tsl/display/SSSNode.d.ts +5 -5
  40. three/examples/jsm/tsl/display/Shape.d.ts +3 -0
  41. three/examples/jsm/tsl/display/TransitionNode.d.ts +3 -3
  42. three/examples/jsm/tsl/display/boxBlur.d.ts +1 -1
  43. three/examples/jsm/tsl/display/depthAwareBlend.d.ts +15 -0
  44. three/examples/jsm/tsl/display/hashBlur.d.ts +1 -1
  45. three/examples/jsm/tsl/math/Bayer.d.ts +2 -0
  46. three/examples/jsm/tsl/utils/Raymarching.d.ts +2 -2
  47. three/package.json +3 -3
  48. three/src/Three.Core.d.ts +1 -1
  49. three/src/Three.TSL.d.ts +6 -11
  50. three/src/Three.WebGPU.Nodes.d.ts +2 -0
  51. three/src/Three.WebGPU.d.ts +3 -0
  52. three/src/Three.d.ts +2 -2
  53. three/src/animation/AnimationClip.d.ts +1 -1
  54. three/src/animation/KeyframeTrack.d.ts +19 -5
  55. three/src/animation/PropertyMixer.d.ts +5 -4
  56. three/src/audio/Audio.d.ts +224 -157
  57. three/src/audio/AudioAnalyser.d.ts +32 -27
  58. three/src/audio/AudioContext.d.ts +12 -12
  59. three/src/audio/AudioListener.d.ts +44 -65
  60. three/src/audio/PositionalAudio.d.ts +69 -62
  61. three/src/cameras/ArrayCamera.d.ts +21 -24
  62. three/src/cameras/Camera.d.ts +14 -53
  63. three/src/cameras/CubeCamera.d.ts +32 -28
  64. three/src/cameras/OrthographicCamera.d.ts +70 -100
  65. three/src/cameras/PerspectiveCamera.d.ts +133 -146
  66. three/src/cameras/StereoCamera.d.ts +24 -30
  67. three/src/constants.d.ts +14 -2
  68. three/src/core/Clock.d.ts +3 -0
  69. three/src/core/Object3D.d.ts +31 -7
  70. three/src/geometries/TorusGeometry.d.ts +22 -3
  71. three/src/helpers/ArrowHelper.d.ts +34 -50
  72. three/src/helpers/AxesHelper.d.ts +22 -36
  73. three/src/helpers/Box3Helper.d.ts +14 -25
  74. three/src/helpers/BoxHelper.d.ts +28 -39
  75. three/src/helpers/CameraHelper.d.ts +31 -52
  76. three/src/helpers/DirectionalLightHelper.d.ts +32 -53
  77. three/src/helpers/GridHelper.d.ts +15 -29
  78. three/src/helpers/HemisphereLightHelper.d.ts +26 -49
  79. three/src/helpers/PlaneHelper.d.ts +21 -33
  80. three/src/helpers/PointLightHelper.d.ts +25 -50
  81. three/src/helpers/PolarGridHelper.d.ts +19 -32
  82. three/src/helpers/SkeletonHelper.d.ts +26 -50
  83. three/src/helpers/SpotLightHelper.d.ts +28 -55
  84. three/src/lights/AmbientLight.d.ts +15 -23
  85. three/src/lights/DirectionalLight.d.ts +40 -82
  86. three/src/lights/DirectionalLightShadow.d.ts +6 -61
  87. three/src/lights/HemisphereLight.d.ts +20 -47
  88. three/src/lights/Light.d.ts +18 -48
  89. three/src/lights/LightProbe.d.ts +24 -29
  90. three/src/lights/LightShadow.d.ts +107 -91
  91. three/src/lights/PointLight.d.ts +36 -77
  92. three/src/lights/PointLightShadow.d.ts +9 -6
  93. three/src/lights/RectAreaLight.d.ts +39 -59
  94. three/src/lights/SpotLight.d.ts +62 -116
  95. three/src/lights/SpotLightShadow.d.ts +17 -59
  96. three/src/lights/webgpu/IESSpotLight.d.ts +13 -1
  97. three/src/lights/webgpu/ProjectorLight.d.ts +9 -10
  98. three/src/materials/MeshLambertMaterial.d.ts +6 -0
  99. three/src/materials/MeshPhongMaterial.d.ts +6 -0
  100. three/src/materials/nodes/Line2NodeMaterial.d.ts +0 -6
  101. three/src/materials/nodes/LineBasicNodeMaterial.d.ts +0 -4
  102. three/src/materials/nodes/MeshBasicNodeMaterial.d.ts +1 -2
  103. three/src/materials/nodes/MeshLambertNodeMaterial.d.ts +0 -2
  104. three/src/materials/nodes/MeshNormalNodeMaterial.d.ts +0 -2
  105. three/src/materials/nodes/MeshSSSNodeMaterial.d.ts +5 -8
  106. three/src/materials/nodes/MeshToonNodeMaterial.d.ts +0 -4
  107. three/src/materials/nodes/NodeMaterial.d.ts +9 -3
  108. three/src/materials/nodes/SpriteNodeMaterial.d.ts +0 -3
  109. three/src/materials/nodes/VolumeNodeMaterial.d.ts +0 -2
  110. three/src/materials/nodes/manager/NodeMaterialObserver.d.ts +39 -93
  111. three/src/math/Color.d.ts +1 -0
  112. three/src/math/Vector3.d.ts +2 -2
  113. three/src/math/interpolants/BezierInterpolant.d.ts +7 -0
  114. three/src/nodes/Nodes.d.ts +55 -35
  115. three/src/nodes/TSL.d.ts +2 -5
  116. three/src/nodes/accessors/Arrays.d.ts +19 -10
  117. three/src/nodes/accessors/BufferAttributeNode.d.ts +99 -33
  118. three/src/nodes/accessors/BufferNode.d.ts +21 -7
  119. three/src/nodes/accessors/Camera.d.ts +10 -10
  120. three/src/nodes/accessors/CubeTextureNode.d.ts +1 -1
  121. three/src/nodes/accessors/InstanceNode.d.ts +6 -0
  122. three/src/nodes/accessors/Lights.d.ts +9 -6
  123. three/src/nodes/accessors/MaterialNode.d.ts +1 -3
  124. three/src/nodes/accessors/MaterialProperties.d.ts +4 -4
  125. three/src/nodes/accessors/MaterialReferenceNode.d.ts +1 -1
  126. three/src/nodes/accessors/ModelNode.d.ts +34 -17
  127. three/src/nodes/accessors/MorphNode.d.ts +1 -1
  128. three/src/nodes/accessors/Normal.d.ts +13 -15
  129. three/src/nodes/accessors/Object3DNode.d.ts +35 -16
  130. three/src/nodes/accessors/Position.d.ts +9 -7
  131. three/src/nodes/accessors/ReferenceNode.d.ts +16 -7
  132. three/src/nodes/accessors/ReflectVector.d.ts +4 -5
  133. three/src/nodes/accessors/RendererReferenceNode.d.ts +1 -1
  134. three/src/nodes/accessors/SceneProperties.d.ts +5 -0
  135. three/src/nodes/accessors/SkinningNode.d.ts +5 -3
  136. three/src/nodes/accessors/StorageBufferNode.d.ts +49 -22
  137. three/src/nodes/accessors/StorageTextureNode.d.ts +1 -1
  138. three/src/nodes/accessors/Tangent.d.ts +5 -7
  139. three/src/nodes/accessors/Texture3DNode.d.ts +1 -1
  140. three/src/nodes/accessors/TextureBicubic.d.ts +3 -2
  141. three/src/nodes/accessors/TextureNode.d.ts +19 -18
  142. three/src/nodes/accessors/UV.d.ts +1 -1
  143. three/src/nodes/accessors/UniformArrayNode.d.ts +10 -8
  144. three/src/nodes/accessors/UserDataNode.d.ts +1 -1
  145. three/src/nodes/accessors/VelocityNode.d.ts +3 -3
  146. three/src/nodes/accessors/VertexColorNode.d.ts +1 -1
  147. three/src/nodes/code/FunctionCallNode.d.ts +0 -1
  148. three/src/nodes/code/FunctionNode.d.ts +7 -3
  149. three/src/nodes/core/ArrayNode.d.ts +2 -3
  150. three/src/nodes/core/AttributeNode.d.ts +12 -6
  151. three/src/nodes/core/BypassNode.d.ts +2 -3
  152. three/src/nodes/core/ConstNode.d.ts +10 -3
  153. three/src/nodes/core/ContextNode.d.ts +23 -28
  154. three/src/nodes/core/IndexNode.d.ts +1 -1
  155. three/src/nodes/core/InputNode.d.ts +12 -4
  156. three/src/nodes/core/InspectorNode.d.ts +2 -3
  157. three/src/nodes/core/IsolateNode.d.ts +2 -7
  158. three/src/nodes/core/MRTNode.d.ts +7 -0
  159. three/src/nodes/core/Node.d.ts +258 -39
  160. three/src/nodes/core/NodeAttribute.d.ts +30 -5
  161. three/src/nodes/core/NodeBuilder.d.ts +5 -3
  162. three/src/nodes/core/NodeCache.d.ts +24 -48
  163. three/src/nodes/core/NodeError.d.ts +9 -0
  164. three/src/nodes/core/NodeParser.d.ts +2 -0
  165. three/src/nodes/core/NodeUniform.d.ts +33 -9
  166. three/src/nodes/core/NodeVar.d.ts +33 -5
  167. three/src/nodes/core/NodeVarying.d.ts +32 -4
  168. three/src/nodes/core/ParameterNode.d.ts +11 -4
  169. three/src/nodes/core/PropertyNode.d.ts +45 -35
  170. three/src/nodes/core/StackTrace.d.ts +9 -0
  171. three/src/nodes/core/StructType.d.ts +3 -1
  172. three/src/nodes/core/StructTypeNode.d.ts +19 -5
  173. three/src/nodes/core/TempNode.d.ts +9 -3
  174. three/src/nodes/core/UniformNode.d.ts +53 -15
  175. three/src/nodes/core/VarNode.d.ts +15 -14
  176. three/src/nodes/core/VaryingNode.d.ts +14 -19
  177. three/src/nodes/core/constants.d.ts +9 -4
  178. three/src/nodes/display/BlendModes.d.ts +7 -27
  179. three/src/nodes/display/ColorAdjustment.d.ts +8 -9
  180. three/src/nodes/display/ColorSpaceNode.d.ts +2 -8
  181. three/src/nodes/display/FrontFacingNode.d.ts +1 -1
  182. three/src/nodes/display/PassNode.d.ts +9 -5
  183. three/src/nodes/display/RenderOutputNode.d.ts +3 -7
  184. three/src/nodes/display/ScreenNode.d.ts +25 -17
  185. three/src/nodes/display/ToneMappingNode.d.ts +3 -7
  186. three/src/nodes/display/ViewportDepthNode.d.ts +11 -7
  187. three/src/nodes/display/ViewportTextureNode.d.ts +2 -0
  188. three/src/nodes/fog/Fog.d.ts +5 -3
  189. three/src/nodes/geometry/RangeNode.d.ts +51 -9
  190. three/src/nodes/gpgpu/AtomicFunctionNode.d.ts +2 -0
  191. three/src/nodes/gpgpu/BarrierNode.d.ts +2 -0
  192. three/src/nodes/gpgpu/ComputeNode.d.ts +2 -7
  193. three/src/nodes/lighting/AnalyticLightNode.d.ts +1 -1
  194. three/src/nodes/lighting/HemisphereLightNode.d.ts +3 -2
  195. three/src/nodes/lighting/LightProbeNode.d.ts +1 -1
  196. three/src/nodes/lighting/LightUtils.d.ts +1 -1
  197. three/src/nodes/lighting/LightingContextNode.d.ts +1 -1
  198. three/src/nodes/lighting/SpotLightNode.d.ts +0 -6
  199. three/src/nodes/materialx/MaterialXNodes.d.ts +11 -11
  200. three/src/nodes/math/BitcountNode.d.ts +2 -0
  201. three/src/nodes/math/ConditionalNode.d.ts +43 -22
  202. three/src/nodes/math/Hash.d.ts +1 -1
  203. three/src/nodes/math/MathNode.d.ts +603 -267
  204. three/src/nodes/math/MathUtils.d.ts +9 -5
  205. three/src/nodes/math/OperatorNode.d.ts +490 -227
  206. three/src/nodes/math/TriNoise3D.d.ts +3 -3
  207. three/src/nodes/pmrem/PMREMNode.d.ts +1 -1
  208. three/src/nodes/procedural/Checker.d.ts +1 -1
  209. three/src/nodes/tsl/TSLCore.d.ts +1683 -224
  210. three/src/nodes/utils/ArrayElementNode.d.ts +9 -4
  211. three/src/nodes/utils/DebugNode.d.ts +2 -5
  212. three/src/nodes/utils/Discard.d.ts +2 -3
  213. three/src/nodes/utils/FlipNode.d.ts +11 -0
  214. three/src/nodes/utils/LoopNode.d.ts +17 -13
  215. three/src/nodes/utils/MaxMipLevelNode.d.ts +1 -1
  216. three/src/nodes/utils/Oscillators.d.ts +4 -4
  217. three/src/nodes/utils/Packing.d.ts +3 -3
  218. three/src/nodes/utils/PostProcessingUtils.d.ts +5 -5
  219. three/src/nodes/utils/RemapNode.d.ts +33 -39
  220. three/src/nodes/utils/RotateNode.d.ts +17 -8
  221. three/src/nodes/utils/SplitNode.d.ts +1 -2
  222. three/src/nodes/utils/SpriteSheetUV.d.ts +7 -0
  223. three/src/nodes/utils/StorageArrayElementNode.d.ts +18 -9
  224. three/src/nodes/utils/Timer.d.ts +4 -4
  225. three/src/nodes/utils/TriplanarTextures.d.ts +2 -2
  226. three/src/nodes/utils/UVUtils.d.ts +6 -4
  227. three/src/objects/BatchedMesh.d.ts +6 -4
  228. three/src/objects/InstancedMesh.d.ts +32 -24
  229. three/src/renderers/WebGLRenderer.d.ts +4 -93
  230. three/src/renderers/common/Animation.d.ts +46 -9
  231. three/src/renderers/common/Attributes.d.ts +11 -13
  232. three/src/renderers/common/Backend.d.ts +0 -2
  233. three/src/renderers/common/Background.d.ts +17 -15
  234. three/src/renderers/common/BindGroup.d.ts +27 -13
  235. three/src/renderers/common/Binding.d.ts +15 -3
  236. three/src/renderers/common/Bindings.d.ts +41 -17
  237. three/src/renderers/common/BlendMode.d.ts +22 -0
  238. three/src/renderers/common/Buffer.d.ts +35 -11
  239. three/src/renderers/common/BufferUtils.d.ts +3 -4
  240. three/src/renderers/common/BundleGroup.d.ts +16 -6
  241. three/src/renderers/common/CanvasTarget.d.ts +76 -13
  242. three/src/renderers/common/ChainMap.d.ts +12 -9
  243. three/src/renderers/common/ClippingContext.d.ts +61 -10
  244. three/src/renderers/common/Color4.d.ts +10 -5
  245. three/src/renderers/common/ComputePipeline.d.ts +16 -2
  246. three/src/renderers/common/Constants.d.ts +5 -3
  247. three/src/renderers/common/CubeRenderTarget.d.ts +24 -7
  248. three/src/renderers/common/DataMap.d.ts +10 -18
  249. three/src/renderers/common/Geometries.d.ts +39 -20
  250. three/src/renderers/common/Info.d.ts +62 -9
  251. three/src/renderers/common/InspectorBase.d.ts +19 -7
  252. three/src/renderers/common/Lighting.d.ts +2 -6
  253. three/src/renderers/common/Pipeline.d.ts +14 -2
  254. three/src/renderers/common/Pipelines.d.ts +58 -60
  255. three/src/renderers/common/PostProcessing.d.ts +14 -17
  256. three/src/renderers/common/ProgrammableStage.d.ts +48 -8
  257. three/src/renderers/common/RenderBundle.d.ts +4 -2
  258. three/src/renderers/common/RenderBundles.d.ts +6 -3
  259. three/src/renderers/common/RenderContext.d.ts +175 -7
  260. three/src/renderers/common/RenderContexts.d.ts +20 -25
  261. three/src/renderers/common/RenderList.d.ts +77 -11
  262. three/src/renderers/common/RenderLists.d.ts +16 -4
  263. three/src/renderers/common/RenderObject.d.ts +223 -47
  264. three/src/renderers/common/{RenderPipeline.d.ts → RenderObjectPipeline.d.ts} +17 -5
  265. three/src/renderers/common/RenderObjects.d.ts +55 -22
  266. three/src/renderers/common/Renderer.d.ts +625 -207
  267. three/src/renderers/common/Textures.d.ts +24 -46
  268. three/src/renderers/common/TimestampQueryPool.d.ts +62 -8
  269. three/src/renderers/common/Uniform.d.ts +143 -58
  270. three/src/renderers/common/UniformBuffer.d.ts +7 -5
  271. three/src/renderers/common/UniformsGroup.d.ts +50 -35
  272. three/src/renderers/common/XRManager.d.ts +321 -83
  273. three/src/renderers/common/XRRenderTarget.d.ts +49 -6
  274. three/src/renderers/common/nodes/NodeBuilderState.d.ts +75 -15
  275. three/src/renderers/common/nodes/NodeLibrary.d.ts +25 -5
  276. three/src/renderers/common/nodes/{Nodes.d.ts → NodeManager.d.ts} +54 -73
  277. three/src/renderers/common/nodes/NodeUniform.d.ts +60 -70
  278. three/src/renderers/common/nodes/NodeUniformsGroup.d.ts +23 -4
  279. three/src/renderers/shaders/UniformsLib.d.ts +0 -3
  280. three/src/renderers/webgl/WebGLAttributes.d.ts +9 -7
  281. three/src/renderers/webgl/WebGLEnvironments.d.ts +8 -0
  282. three/src/renderers/webgl/WebGLExtensions.d.ts +1 -1
  283. three/src/renderers/webgl/WebGLIndexedBufferRenderer.d.ts +9 -5
  284. three/src/renderers/webgl/WebGLLights.d.ts +19 -18
  285. three/src/renderers/webgl/WebGLObjects.d.ts +15 -2
  286. three/src/renderers/webgl/WebGLProgram.d.ts +2 -10
  287. three/src/renderers/webgl/WebGLPrograms.d.ts +2 -2
  288. three/src/renderers/webgl/WebGLRenderLists.d.ts +1 -3
  289. three/src/renderers/webgl/WebGLShadowMap.d.ts +0 -5
  290. three/src/renderers/webgl/WebGLState.d.ts +305 -28
  291. three/src/renderers/webgl/WebGLTextures.d.ts +10 -9
  292. three/src/renderers/webgl/WebGLUniforms.d.ts +0 -7
  293. three/src/renderers/webgpu/WebGPUBackend.d.ts +0 -1
  294. three/src/renderers/webgpu/nodes/BasicNodeLibrary.d.ts +2 -4
  295. three/src/renderers/webgpu/nodes/StandardNodeLibrary.d.ts +15 -4
  296. three/src/renderers/webgpu/nodes/WGSLNodeBuilder.d.ts +1 -1
  297. three/src/scenes/Fog.d.ts +31 -37
  298. three/src/scenes/FogExp2.d.ts +26 -31
  299. three/src/scenes/Scene.d.ts +51 -65
  300. three/src/textures/CompressedArrayTexture.d.ts +1 -1
  301. three/src/textures/DataArrayTexture.d.ts +1 -1
  302. three/src/utils.d.ts +5 -0
  303. three/examples/jsm/materials/MeshGouraudMaterial.d.ts +0 -18
  304. three/examples/jsm/materials/MeshPostProcessingMaterial.d.ts +0 -13
  305. three/examples/jsm/shaders/GodRaysShader.d.ts +0 -44
  306. three/src/nodes/accessors/SceneNode.d.ts +0 -21
  307. three/src/nodes/code/ScriptableNode.d.ts +0 -21
  308. three/src/nodes/code/ScriptableValueNode.d.ts +0 -9
  309. three/src/nodes/display/PosterizeNode.d.ts +0 -13
  310. three/src/nodes/utils/SpriteSheetUVNode.d.ts +0 -15
  311. three/src/renderers/webgl/WebGLCubeMaps.d.ts +0 -8
  312. three/src/renderers/webgl/WebGLCubeUVMaps.d.ts +0 -9
@@ -1,9 +1,14 @@
1
1
  import Node from "../core/Node.js";
2
- import { TempNode } from "../Nodes.js";
3
2
 
4
- export default class ArrayElementNode extends TempNode {
3
+ interface ArrayElementNodeInterface {
5
4
  node: Node;
6
5
  indexNode: Node;
7
-
8
- constructor(node: Node, indexNode: Node);
9
6
  }
7
+
8
+ declare const ArrayElementNode: {
9
+ new<TNodeType>(node: Node<TNodeType>, indexNode: Node): ArrayElementNode<TNodeType>;
10
+ };
11
+
12
+ type ArrayElementNode<TNodeType> = Node<TNodeType> & ArrayElementNodeInterface;
13
+
14
+ export default ArrayElementNode;
@@ -13,13 +13,10 @@ export const debug: (
13
13
  callback?: ((node: NodeBuilder, code: string) => void) | null,
14
14
  ) => DebugNode;
15
15
 
16
- declare module "../Nodes.js" {
17
- interface Node {
16
+ declare module "../core/Node.js" {
17
+ interface NodeElements {
18
18
  debug: (
19
19
  callback?: ((node: NodeBuilder, code: string) => void) | null,
20
20
  ) => DebugNode;
21
- debugAssign: (
22
- callback?: ((node: NodeBuilder, code: string) => void) | null,
23
- ) => this;
24
21
  }
25
22
  }
@@ -3,9 +3,8 @@ import Node from "../core/Node.js";
3
3
  export const Discard: (conditional?: Node) => Node;
4
4
  export const Return: () => Node;
5
5
 
6
- declare module "../Nodes.js" {
7
- interface Node {
6
+ declare module "../core/Node.js" {
7
+ interface NodeElements {
8
8
  discard: () => Node;
9
- discardAssign: () => this;
10
9
  }
11
10
  }
@@ -0,0 +1,11 @@
1
+ import Node from "../core/Node.js";
2
+ import TempNode from "../core/TempNode.js";
3
+
4
+ declare class FlipNode extends TempNode {
5
+ sourceNode: Node;
6
+ components: string;
7
+
8
+ constructor(sourceNode: Node, components: string);
9
+ }
10
+
11
+ export default FlipNode;
@@ -2,20 +2,20 @@ import Node from "../core/Node.js";
2
2
  import NodeBuilder from "../core/NodeBuilder.js";
3
3
  import { VarNode } from "../Nodes.js";
4
4
 
5
- interface LoopNodeObjectParameter {
5
+ type LoopNodeType = "int" | "uint" | "float";
6
+
7
+ interface LoopNodeObjectParameter<TNodeType extends LoopNodeType> {
6
8
  // TODO Expand to other types and update loop function types appropriately
7
- type?: "int" | "uint" | "float";
9
+ type?: TNodeType;
8
10
  // TODO The variable name should affect the type of the loop function
9
11
  // name?: string;
10
- start: number | Node;
11
- end: number | Node;
12
+ start: Node<TNodeType> | number;
13
+ end: Node<TNodeType> | number;
12
14
  condition?: string;
13
15
  update?: VarNode | number | string;
14
16
  }
15
17
 
16
- type LoopNodeParameter = Node | number | LoopNodeObjectParameter;
17
-
18
- declare class LoopNode extends Node {
18
+ declare class LoopNode extends Node<"void"> {
19
19
  params: unknown[];
20
20
 
21
21
  constructor(params?: unknown[]);
@@ -26,12 +26,16 @@ declare class LoopNode extends Node {
26
26
  export default LoopNode;
27
27
 
28
28
  interface Loop {
29
- (i: LoopNodeParameter, func: (inputs: { readonly i: Node }) => void): Node;
30
- (
31
- i: LoopNodeParameter,
32
- j: LoopNodeParameter,
33
- func: (inputs: { readonly i: Node; readonly j: Node }) => void,
34
- ): Node;
29
+ (i: number, func: (inputs: { readonly i: Node<"int"> }) => void): LoopNode;
30
+ <TNodeType extends LoopNodeType>(
31
+ i: LoopNodeObjectParameter<TNodeType>,
32
+ func: (inputs: { readonly i: Node<TNodeType> }) => void,
33
+ ): LoopNode;
34
+ <TNodeType extends LoopNodeType>(
35
+ i: LoopNodeObjectParameter<TNodeType>,
36
+ j: LoopNodeObjectParameter<TNodeType>,
37
+ func: (inputs: { readonly i: Node<TNodeType>; readonly j: Node<TNodeType> }) => void,
38
+ ): LoopNode;
35
39
  }
36
40
 
37
41
  export const Loop: Loop;
@@ -2,7 +2,7 @@ import { Texture } from "../../textures/Texture.js";
2
2
  import TextureNode from "../accessors/TextureNode.js";
3
3
  import UniformNode from "../core/UniformNode.js";
4
4
 
5
- export default class MaxMipLevelNode extends UniformNode<0> {
5
+ export default class MaxMipLevelNode extends UniformNode<"float", number> {
6
6
  constructor(textureNode: TextureNode);
7
7
 
8
8
  get textureNode(): TextureNode;
@@ -1,6 +1,6 @@
1
1
  import Node from "../core/Node.js";
2
2
 
3
- export const oscSine: (timeNode?: Node) => Node;
4
- export const oscSquare: (timeNode?: Node) => Node;
5
- export const oscTriangle: (timeNode?: Node) => Node;
6
- export const oscSawtooth: (timeNode?: Node) => Node;
3
+ export const oscSine: (timeNode?: Node) => Node<"float">;
4
+ export const oscSquare: (timeNode?: Node) => Node<"float">;
5
+ export const oscTriangle: (timeNode?: Node) => Node<"float">;
6
+ export const oscSawtooth: (timeNode?: Node) => Node<"float">;
@@ -1,5 +1,5 @@
1
1
  import Node from "../core/Node.js";
2
2
 
3
- export const directionToColor: (node: Node) => Node;
4
- export const colorToDirection: (node: Node) => Node;
5
- export const unpackNormal: (xy: Node) => Node;
3
+ export const directionToColor: (node: Node) => Node<"vec3">;
4
+ export const colorToDirection: (node: Node) => Node<"vec3">;
5
+ export const unpackNormal: (xy: Node) => Node<"vec3">;
@@ -13,7 +13,7 @@ export const getViewPosition: (
13
13
  screenPosition: Node,
14
14
  depth: Node,
15
15
  projectionMatrixInverse: Node,
16
- ) => Node;
16
+ ) => Node<"vec3">;
17
17
 
18
18
  /**
19
19
  * Computes a screen position expressed as uv coordinates based on a fragment's position in view space and the camera's
@@ -26,7 +26,7 @@ export const getViewPosition: (
26
26
  export const getScreenPosition: (
27
27
  viewPosition: Node,
28
28
  projectionMatrix: Node,
29
- ) => Node;
29
+ ) => Node<"vec2">;
30
30
 
31
31
  /**
32
32
  * Computes a normal vector based on depth data. Can be used as a fallback when no normal render target is available or
@@ -41,8 +41,8 @@ export const getNormalFromDepth: (
41
41
  uv: Node,
42
42
  depthTexture: Node,
43
43
  projectionMatrixInverse: Node,
44
- ) => Node;
44
+ ) => Node<"vec3">;
45
45
 
46
- export const interleavedGradientNoise: (position: Node) => Node;
46
+ export const interleavedGradientNoise: (position: Node) => Node<"float">;
47
47
 
48
- export const vogelDiskSample: (sampleIndex: Node, samplesCount: Node, phi: Node) => Node;
48
+ export const vogelDiskSample: (sampleIndex: Node, samplesCount: Node, phi: Node) => Node<"vec2">;
@@ -1,58 +1,52 @@
1
1
  import Node from "../core/Node.js";
2
2
 
3
- export default class RemapNode extends Node {
4
- node: Node;
5
- inLowNode: Node;
6
- inHighNode: Node;
7
- outLowNode: Node;
8
- outHighNode: Node;
3
+ export default class RemapNode extends Node<"float"> {
4
+ node: Node<"float">;
5
+ inLowNode: Node<"float">;
6
+ inHighNode: Node<"float">;
7
+ outLowNode: Node<"float">;
8
+ outHighNode: Node<"float">;
9
9
 
10
10
  doClamp: boolean;
11
11
 
12
- constructor(node: Node, inLowNode: Node, inHighNode: Node, outLowNode?: Node, outHighNode?: Node);
12
+ constructor(
13
+ node: Node<"float">,
14
+ inLowNode: Node<"float">,
15
+ inHighNode: Node<"float">,
16
+ outLowNode?: Node<"float">,
17
+ outHighNode?: Node<"float">,
18
+ );
13
19
  }
14
20
 
15
21
  export const remap: (
16
- node: Node,
17
- inLowNode: Node | number,
18
- inHighNode: Node | number,
19
- outLowNode?: Node | number,
20
- outHighNode?: Node | number,
22
+ node: Node<"float">,
23
+ inLowNode: Node<"float"> | number,
24
+ inHighNode: Node<"float"> | number,
25
+ outLowNode?: Node<"float"> | number,
26
+ outHighNode?: Node<"float"> | number,
21
27
  ) => RemapNode;
22
28
  export const remapClamp: (
23
- node: Node,
24
- inLowNode: Node | number,
25
- inHighNode: Node | number,
26
- outLowNode?: Node | number,
27
- outHighNode?: Node | number,
29
+ node: Node<"float">,
30
+ inLowNode: Node<"float"> | number,
31
+ inHighNode: Node<"float"> | number,
32
+ outLowNode?: Node<"float"> | number,
33
+ outHighNode?: Node<"float"> | number,
28
34
  ) => RemapNode;
29
35
 
30
- declare module "../Nodes.js" {
31
- interface Node {
36
+ declare module "../core/Node.js" {
37
+ interface FloatExtensions {
32
38
  remap: (
33
- inLowNode: Node | number,
34
- inHighNode: Node | number,
35
- outLowNode?: Node | number,
36
- outHighNode?: Node | number,
39
+ inLowNode: Node<"float"> | number,
40
+ inHighNode: Node<"float"> | number,
41
+ outLowNode?: Node<"float"> | number,
42
+ outHighNode?: Node<"float"> | number,
37
43
  ) => RemapNode;
38
- remapAssign: (
39
- inLowNode: Node | number,
40
- inHighNode: Node | number,
41
- outLowNode?: Node | number,
42
- outHighNode?: Node | number,
43
- ) => this;
44
44
 
45
45
  remapClamp: (
46
- inLowNode: Node | number,
47
- inHighNode: Node | number,
48
- outLowNode?: Node | number,
49
- outHighNode?: Node | number,
46
+ inLowNode: Node<"float"> | number,
47
+ inHighNode: Node<"float"> | number,
48
+ outLowNode?: Node<"float"> | number,
49
+ outHighNode?: Node<"float"> | number,
50
50
  ) => RemapNode;
51
- remapClampAssign: (
52
- inLowNode: Node | number,
53
- inHighNode: Node | number,
54
- outLowNode?: Node | number,
55
- outHighNode?: Node | number,
56
- ) => this;
57
51
  }
58
52
  }
@@ -1,14 +1,23 @@
1
1
  import Node from "../core/Node.js";
2
2
  import TempNode from "../core/TempNode.js";
3
3
 
4
- export default class RotateNode extends TempNode {
5
- positionNode: Node;
6
- rotationNode: Node;
4
+ interface RotateNodeInterface<TNodeType> {
5
+ positionNode: Node<TNodeType>;
6
+ rotationNode: Node<"vec3"> | Node<"float">;
7
+ }
8
+
9
+ declare const RotateNode: {
10
+ new(positionNode: Node<"vec2">, rotationNode: Node<"float"> | number): RotateNode<"vec2">;
11
+ new(positionNode: Node<"vec3">, rotationNode: Node<"vec3">): RotateNode<"vec3">;
12
+ };
13
+
14
+ type RotateNode<TNodeType> = RotateNodeInterface<TNodeType> & TempNode<TNodeType>;
15
+
16
+ export default RotateNode;
7
17
 
8
- constructor(positionNode: Node, rotationNode: Node);
18
+ interface Rotate {
19
+ (positionNode: Node<"vec2">, rotationNode: Node<"float"> | number): RotateNode<"vec2">;
20
+ (positionNode: Node<"vec3">, rotationNode: Node<"vec3">): RotateNode<"vec3">;
9
21
  }
10
22
 
11
- export const rotate: (
12
- positionNode: Node,
13
- rotationNode: Node | number,
14
- ) => RotateNode;
23
+ export const rotate: Rotate;
@@ -1,5 +1,4 @@
1
1
  import Node from "../core/Node.js";
2
- import { SwizzleOption } from "../tsl/TSLCore.js";
3
2
 
4
3
  export default class SplitNode extends Node {
5
4
  node: Node;
@@ -9,7 +8,7 @@ export default class SplitNode extends Node {
9
8
  * @param node the input node
10
9
  * @param components swizzle like string, default = "x"
11
10
  */
12
- constructor(node: Node, components?: SwizzleOption);
11
+ constructor(node: Node, components?: string);
13
12
 
14
13
  getVectorLength(): number;
15
14
  }
@@ -0,0 +1,7 @@
1
+ import Node from "../core/Node.js";
2
+
3
+ export const spritesheetUV: (
4
+ countNode: Node,
5
+ uvNode?: Node,
6
+ frameNode?: Node,
7
+ ) => Node;
@@ -2,18 +2,27 @@ import StorageBufferNode from "../accessors/StorageBufferNode.js";
2
2
  import Node from "../core/Node.js";
3
3
  import ArrayElementNode from "./ArrayElementNode.js";
4
4
 
5
- export default class StorageArrayElementNode extends ArrayElementNode {
6
- node: StorageBufferNode;
5
+ interface StorageArrayElementNodeInterface<TNodeType> {
6
+ node: StorageBufferNode<TNodeType>;
7
7
 
8
8
  readonly isStorageArrayElementNode: true;
9
9
 
10
- constructor(storageBufferNode: StorageBufferNode, indexNode: Node);
11
-
12
- get storageBufferNode(): StorageBufferNode;
13
- set storageBufferNode(value: StorageBufferNode);
10
+ get storageBufferNode(): StorageBufferNode<TNodeType>;
11
+ set storageBufferNode(value: StorageBufferNode<TNodeType>);
14
12
  }
15
13
 
16
- export const storageElement: (
17
- storageBufferNode: Node,
14
+ declare const StorageArrayElementNode: {
15
+ new<TNodeType>(
16
+ storageBufferNode: StorageBufferNode<TNodeType>,
17
+ indexNode: Node,
18
+ ): StorageArrayElementNode<TNodeType>;
19
+ };
20
+
21
+ type StorageArrayElementNode<TNodeType> = ArrayElementNode<TNodeType> & StorageArrayElementNodeInterface<TNodeType>;
22
+
23
+ export default StorageArrayElementNode;
24
+
25
+ export const storageElement: <TNodeType>(
26
+ storageBufferNode: Node<TNodeType>,
18
27
  indexNode: Node,
19
- ) => StorageArrayElementNode;
28
+ ) => StorageArrayElementNode<TNodeType>;
@@ -1,5 +1,5 @@
1
- import Node from "../core/Node.js";
1
+ import UniformNode from "../core/UniformNode.js";
2
2
 
3
- export const time: Node;
4
- export const deltaTime: Node;
5
- export const frameId: Node;
3
+ export const time: UniformNode<"float", number>;
4
+ export const deltaTime: UniformNode<"float", number>;
5
+ export const frameId: UniformNode<"uint", number>;
@@ -7,7 +7,7 @@ export const triplanarTextures: (
7
7
  scaleNode?: Node,
8
8
  positionNode?: Node,
9
9
  normalNode?: Node,
10
- ) => Node;
10
+ ) => Node<"vec4">;
11
11
 
12
12
  export const triplanarTexture: (
13
13
  textureXNode: Node,
@@ -16,4 +16,4 @@ export const triplanarTexture: (
16
16
  scaleNode?: Node,
17
17
  positionNode?: Node,
18
18
  normalNode?: Node,
19
- ) => Node;
19
+ ) => Node<"vec4">;
@@ -1,17 +1,19 @@
1
1
  import ContextNode from "../core/ContextNode.js";
2
2
  import Node from "../core/Node.js";
3
- import OperatorNode from "../math/OperatorNode.js";
4
3
 
5
- export function replaceDefaultUV(callback: (node: Node) => Node, node?: Node | null): ContextNode;
4
+ export function replaceDefaultUV<TNodeType>(
5
+ callback: ((node: Node) => Node<"vec2">) | Node<"vec2">,
6
+ node?: Node<TNodeType> | null,
7
+ ): ContextNode<TNodeType>;
6
8
 
7
9
  export const rotateUV: (
8
10
  uv: Node,
9
11
  rotation: Node,
10
12
  center?: Node,
11
- ) => OperatorNode;
13
+ ) => Node<"vec2">;
12
14
 
13
15
  export const spherizeUV: (
14
16
  uv: Node,
15
17
  strength: Node | number,
16
18
  center?: Node,
17
- ) => OperatorNode;
19
+ ) => Node<"vec2">;
@@ -5,6 +5,7 @@ import { Box3 } from "../math/Box3.js";
5
5
  import { Color } from "../math/Color.js";
6
6
  import { Matrix4 } from "../math/Matrix4.js";
7
7
  import { Sphere } from "../math/Sphere.js";
8
+ import { Vector4 } from "../math/Vector4.js";
8
9
  import { Mesh } from "./Mesh.js";
9
10
 
10
11
  export interface BatchedMeshGeometryRange {
@@ -141,9 +142,10 @@ declare class BatchedMesh extends Mesh<BufferGeometry, Material> {
141
142
  /**
142
143
  * Get the color of the defined geometry.
143
144
  * @param instanceId The id of an instance to get the color of.
144
- * @param target The target object to copy the color in to.
145
+ * @param color - The target object that is used to store the method's result.
146
+ * @return The instance's color. Use a `Vector4` to also retrieve alpha.
145
147
  */
146
- getColorAt(instanceId: number, target: Color): void;
148
+ getColorAt(instanceId: number, color: Color | Vector4): Color | Vector4;
147
149
 
148
150
  /**
149
151
  * Get the local transformation matrix of the defined instance.
@@ -180,9 +182,9 @@ declare class BatchedMesh extends Mesh<BufferGeometry, Material> {
180
182
  /**
181
183
  * Sets the given color to the defined geometry instance.
182
184
  * @param instanceId The id of the instance to set the color of.
183
- * @param color The color to set the instance to.
185
+ * @param color The color to set the instance to. Use a `Vector4` to also define alpha.
184
186
  */
185
- setColorAt(instanceId: number, color: Color): void;
187
+ setColorAt(instanceId: number, color: Color | Vector4): void;
186
188
 
187
189
  /**
188
190
  * Sets the given local transformation matrix to the defined instance.
@@ -41,14 +41,6 @@ export class InstancedMesh<
41
41
  TMaterial extends Material | Material[] = Material | Material[],
42
42
  TEventMap extends InstancedMeshEventMap = InstancedMeshEventMap,
43
43
  > extends Mesh<TGeometry, TMaterial, TEventMap> {
44
- /**
45
- * Create a new instance of {@link InstancedMesh}
46
- * @param geometry An instance of {@link BufferGeometry}.
47
- * @param material A single or an array of {@link Material}. Default is a new {@link MeshBasicMaterial}.
48
- * @param count The **maximum** number of instances of this Mesh. Expects a `Integer`
49
- */
50
- constructor(geometry: TGeometry | undefined, material: TMaterial | undefined, count: number);
51
-
52
44
  /**
53
45
  * Read-only flag to check if a given object is of type {@link InstancedMesh}.
54
46
  * @remarks This is a _constant_ value
@@ -57,18 +49,31 @@ export class InstancedMesh<
57
49
  readonly isInstancedMesh: true;
58
50
 
59
51
  /**
60
- * This bounding box encloses all instances of the {@link InstancedMesh},, which can be calculated with {@link computeBoundingBox | .computeBoundingBox()}.
61
- * @remarks Bounding boxes aren't computed by default. They need to be explicitly computed, otherwise they are `null`.
62
- * @defaultValue `null`
52
+ * Represents the local transformation of all instances.
53
+ * You have to set {@link InstancedBufferAttribute.needsUpdate | .instanceMatrix.needsUpdate()} flag to `true` if you modify instanced data via {@link setMatrixAt | .setMatrixAt()}.
63
54
  */
64
- boundingBox: Box3 | null;
55
+ instanceMatrix: InstancedBufferAttribute;
65
56
 
66
57
  /**
67
- * This bounding sphere encloses all instances of the {@link InstancedMesh}, which can be calculated with {@link computeBoundingSphere | .computeBoundingSphere()}.
68
- * @remarks bounding spheres aren't computed by default. They need to be explicitly computed, otherwise they are `null`.
58
+ * Represents the local transformation of all instances of the previous frame.
59
+ * Required for computing velocity. Maintained in {@link InstanceNode}.
60
+ *
61
+ * @default null
62
+ */
63
+ previousInstancedMatrix: InstancedBufferAttribute | null;
64
+
65
+ /**
66
+ * Represents the colors of all instances.
67
+ * You have to set {@link InstancedBufferAttribute.needsUpdate | .instanceColor.needsUpdate()} flag to `true` if you modify instanced data via {@link setColorAt | .setColorAt()}.
69
68
  * @defaultValue `null`
70
69
  */
71
- boundingSphere: Sphere | null;
70
+ instanceColor: InstancedBufferAttribute | null;
71
+
72
+ /**
73
+ * Represents the morph target weights of all instances. You have to set its {@link .needsUpdate} flag to true if
74
+ * you modify instanced data via {@link .setMorphAt}.
75
+ */
76
+ morphTexture: DataTexture | null;
72
77
 
73
78
  /**
74
79
  * The number of instances.
@@ -81,23 +86,26 @@ export class InstancedMesh<
81
86
  count: number;
82
87
 
83
88
  /**
84
- * Represents the colors of all instances.
85
- * You have to set {@link InstancedBufferAttribute.needsUpdate | .instanceColor.needsUpdate()} flag to `true` if you modify instanced data via {@link setColorAt | .setColorAt()}.
89
+ * This bounding box encloses all instances of the {@link InstancedMesh},, which can be calculated with {@link computeBoundingBox | .computeBoundingBox()}.
90
+ * @remarks Bounding boxes aren't computed by default. They need to be explicitly computed, otherwise they are `null`.
86
91
  * @defaultValue `null`
87
92
  */
88
- instanceColor: InstancedBufferAttribute | null;
93
+ boundingBox: Box3 | null;
89
94
 
90
95
  /**
91
- * Represents the local transformation of all instances.
92
- * You have to set {@link InstancedBufferAttribute.needsUpdate | .instanceMatrix.needsUpdate()} flag to `true` if you modify instanced data via {@link setMatrixAt | .setMatrixAt()}.
96
+ * This bounding sphere encloses all instances of the {@link InstancedMesh}, which can be calculated with {@link computeBoundingSphere | .computeBoundingSphere()}.
97
+ * @remarks bounding spheres aren't computed by default. They need to be explicitly computed, otherwise they are `null`.
98
+ * @defaultValue `null`
93
99
  */
94
- instanceMatrix: InstancedBufferAttribute;
100
+ boundingSphere: Sphere | null;
95
101
 
96
102
  /**
97
- * Represents the morph target weights of all instances. You have to set its {@link .needsUpdate} flag to true if
98
- * you modify instanced data via {@link .setMorphAt}.
103
+ * Create a new instance of {@link InstancedMesh}
104
+ * @param geometry An instance of {@link BufferGeometry}.
105
+ * @param material A single or an array of {@link Material}. Default is a new {@link MeshBasicMaterial}.
106
+ * @param count The **maximum** number of instances of this Mesh. Expects a `Integer`
99
107
  */
100
- morphTexture: DataTexture | null;
108
+ constructor(geometry: TGeometry | undefined, material: TMaterial | undefined, count: number);
101
109
 
102
110
  /**
103
111
  * Computes the bounding box of the instanced mesh, and updates the {@link .boundingBox} attribute. The bounding box