@types/three 0.184.0 → 0.185.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 (208) hide show
  1. three/README.md +1 -1
  2. three/examples/jsm/Addons.d.ts +2 -0
  3. three/examples/jsm/controls/FirstPersonControls.d.ts +9 -0
  4. three/examples/jsm/controls/OrbitControls.d.ts +2 -2
  5. three/examples/jsm/controls/TransformControls.d.ts +32 -1
  6. three/examples/jsm/csm/CSMFrustum.d.ts +73 -13
  7. three/examples/jsm/exporters/DRACOExporter.d.ts +1 -1
  8. three/examples/jsm/exporters/GLTFExporter.d.ts +2 -2
  9. three/examples/jsm/exporters/PLYExporter.d.ts +5 -4
  10. three/examples/jsm/exporters/USDZExporter.d.ts +5 -1
  11. three/examples/jsm/generators/CityGenerator.d.ts +75 -0
  12. three/examples/jsm/generators/ForestGenerator.d.ts +79 -0
  13. three/examples/jsm/generators/TerrainGenerator.d.ts +67 -0
  14. three/examples/jsm/generators/TreeGenerator.d.ts +97 -0
  15. three/examples/jsm/generators/city/SidewalkGenerator.d.ts +40 -0
  16. three/examples/jsm/generators/city/SkyscraperGenerator.d.ts +83 -0
  17. three/examples/jsm/geometries/LoftGeometry.d.ts +83 -0
  18. three/examples/jsm/inspector/tabs/Parameters.d.ts +5 -2
  19. three/examples/jsm/lighting/ClusteredLighting.d.ts +45 -0
  20. three/examples/jsm/lighting/LightProbeGrid.d.ts +131 -13
  21. three/examples/jsm/loaders/DRACOLoader.d.ts +20 -6
  22. three/examples/jsm/loaders/EXRLoader.d.ts +2 -12
  23. three/examples/jsm/loaders/GLTFLoader.d.ts +1 -1
  24. three/examples/jsm/loaders/HDRLoader.d.ts +2 -12
  25. three/examples/jsm/loaders/KTX2Loader.d.ts +1 -1
  26. three/examples/jsm/loaders/LWOLoader.d.ts +6 -0
  27. three/examples/jsm/loaders/RGBELoader.d.ts +1 -7
  28. three/examples/jsm/loaders/SVGLoader.d.ts +9 -6
  29. three/examples/jsm/loaders/TGALoader.d.ts +2 -2
  30. three/examples/jsm/loaders/TIFFLoader.d.ts +2 -11
  31. three/examples/jsm/loaders/USDLoader.d.ts +6 -1
  32. three/examples/jsm/misc/TileCreasedNormalsPlugin.d.ts +49 -0
  33. three/examples/jsm/objects/MarchingCubes.d.ts +2 -2
  34. three/examples/jsm/objects/Reflector.d.ts +38 -5
  35. three/examples/jsm/objects/SkyMesh.d.ts +1 -1
  36. three/examples/jsm/physics/RapierPhysics.d.ts +1 -0
  37. three/examples/jsm/tsl/display/BloomNode.d.ts +23 -6
  38. three/examples/jsm/tsl/display/ImportanceSampledEnvironment.d.ts +84 -0
  39. three/examples/jsm/tsl/display/RecurrentDenoiseNode.d.ts +89 -0
  40. three/examples/jsm/tsl/display/SSAAPassNode.d.ts +0 -2
  41. three/examples/jsm/tsl/display/SSGINode.d.ts +4 -1
  42. three/examples/jsm/tsl/display/SSRNode.d.ts +303 -30
  43. three/examples/jsm/tsl/display/TRAANode.d.ts +1 -1
  44. three/examples/jsm/tsl/display/TemporalReprojectNode.d.ts +64 -0
  45. three/examples/jsm/tsl/lighting/ClusteredLightsNode.d.ts +54 -0
  46. three/examples/jsm/tsl/math/curlNoise.d.ts +38 -0
  47. three/examples/jsm/tsl/utils/GroundedSkybox.d.ts +17 -0
  48. three/examples/jsm/tsl/utils/RNoise.d.ts +12 -0
  49. three/examples/jsm/tsl/utils/SpecularHelpers.d.ts +20 -0
  50. three/examples/jsm/webxr/WebGLXRFallback.d.ts +14 -0
  51. three/package.json +3 -3
  52. three/src/Three.TSL.d.ts +10 -3
  53. three/src/Three.WebGPU.Nodes.d.ts +2 -2
  54. three/src/Three.WebGPU.d.ts +5 -3
  55. three/src/animation/AnimationClip.d.ts +0 -10
  56. three/src/cameras/Camera.d.ts +1 -1
  57. three/src/core/InterleavedBuffer.d.ts +1 -1
  58. three/src/core/Object3D.d.ts +8 -4
  59. three/src/core/RenderTarget.d.ts +11 -0
  60. three/src/core/Timer.d.ts +1 -1
  61. three/src/core/UniformsGroup.d.ts +1 -1
  62. three/src/extras/Controls.d.ts +6 -5
  63. three/src/extras/core/ShapePath.d.ts +61 -65
  64. three/src/loaders/DataTextureLoader.d.ts +37 -3
  65. three/src/loaders/MaterialLoader.d.ts +8 -0
  66. three/src/materials/LineBasicMaterial.d.ts +5 -0
  67. three/src/materials/Material.d.ts +9 -1
  68. three/src/materials/MeshBasicMaterial.d.ts +30 -0
  69. three/src/materials/MeshDepthMaterial.d.ts +13 -0
  70. three/src/materials/MeshDistanceMaterial.d.ts +13 -0
  71. three/src/materials/MeshLambertMaterial.d.ts +50 -1
  72. three/src/materials/MeshMatcapMaterial.d.ts +31 -1
  73. three/src/materials/MeshNormalMaterial.d.ts +11 -1
  74. three/src/materials/MeshPhongMaterial.d.ts +50 -1
  75. three/src/materials/MeshPhysicalMaterial.d.ts +50 -0
  76. three/src/materials/MeshStandardMaterial.d.ts +53 -1
  77. three/src/materials/MeshToonMaterial.d.ts +43 -1
  78. three/src/materials/PointsMaterial.d.ts +9 -0
  79. three/src/materials/ShaderMaterial.d.ts +2 -0
  80. three/src/materials/SpriteMaterial.d.ts +9 -0
  81. three/src/materials/nodes/Line2NodeMaterial.d.ts +18 -13
  82. three/src/materials/nodes/NodeMaterial.d.ts +33 -13
  83. three/src/materials/nodes/manager/NodeMaterialObserver.d.ts +0 -84
  84. three/src/math/Box2.d.ts +3 -3
  85. three/src/math/Box3.d.ts +255 -19
  86. three/src/math/Color.d.ts +10 -10
  87. three/src/math/FrustumArray.d.ts +75 -16
  88. three/src/math/Interpolant.d.ts +111 -8
  89. three/src/math/Matrix2.d.ts +1 -1
  90. three/src/math/Matrix3.d.ts +10 -1
  91. three/src/math/Matrix4.d.ts +329 -105
  92. three/src/math/Vector2.d.ts +1 -2
  93. three/src/math/Vector3.d.ts +3 -4
  94. three/src/math/Vector4.d.ts +1 -2
  95. three/src/math/interpolants/BezierInterpolant.d.ts +19 -3
  96. three/src/math/interpolants/CubicInterpolant.d.ts +18 -3
  97. three/src/math/interpolants/DiscreteInterpolant.d.ts +8 -3
  98. three/src/math/interpolants/LinearInterpolant.d.ts +7 -3
  99. three/src/math/interpolants/QuaternionLinearInterpolant.d.ts +7 -3
  100. three/src/nodes/Nodes.d.ts +4 -13
  101. three/src/nodes/TSL.d.ts +7 -5
  102. three/src/nodes/accessors/Batch.d.ts +19 -0
  103. three/src/nodes/accessors/Instance.d.ts +34 -0
  104. three/src/nodes/accessors/MaterialNode.d.ts +86 -79
  105. three/src/nodes/accessors/Morph.d.ts +11 -0
  106. three/src/nodes/accessors/Skinning.d.ts +23 -0
  107. three/src/nodes/accessors/StorageBufferNode.d.ts +22 -23
  108. three/src/nodes/accessors/StorageTexture3DNode.d.ts +17 -0
  109. three/src/nodes/accessors/StorageTextureNode.d.ts +6 -4
  110. three/src/nodes/accessors/TextureNode.d.ts +15 -10
  111. three/src/nodes/core/ArrayNode.d.ts +16 -8
  112. three/src/nodes/core/ContextNode.d.ts +5 -6
  113. three/src/nodes/core/LightingModel.d.ts +2 -0
  114. three/src/nodes/core/Node.d.ts +50 -51
  115. three/src/nodes/core/NodeBuilder.d.ts +1 -133
  116. three/src/nodes/core/OverrideContextNode.d.ts +92 -0
  117. three/src/nodes/core/PropertyNode.d.ts +13 -2
  118. three/src/nodes/core/StructNode.d.ts +0 -2
  119. three/src/nodes/core/StructTypeNode.d.ts +5 -4
  120. three/src/nodes/core/UniformNode.d.ts +48 -9
  121. three/src/nodes/display/BlendModes.d.ts +72 -11
  122. three/src/nodes/display/FrontFacingNode.d.ts +62 -3
  123. three/src/nodes/display/PassNode.d.ts +0 -2
  124. three/src/nodes/display/PremultiplyAlphaFunctions.d.ts +37 -0
  125. three/src/nodes/gpgpu/AtomicFunctionNode.d.ts +53 -45
  126. three/src/nodes/lighting/LightingContextNode.d.ts +9 -2
  127. three/src/nodes/lighting/LightsNode.d.ts +4 -4
  128. three/src/nodes/math/MathNode.d.ts +358 -304
  129. three/src/nodes/math/OperatorNode.d.ts +253 -82
  130. three/src/nodes/tsl/TSLCore.d.ts +16 -9
  131. three/src/nodes/utils/ArrayElementNode.d.ts +5 -4
  132. three/src/nodes/utils/EquirectUV.d.ts +31 -1
  133. three/src/nodes/utils/Packing.d.ts +50 -3
  134. three/src/nodes/utils/RTTNode.d.ts +7 -12
  135. three/src/nodes/utils/Remap.d.ts +216 -29
  136. three/src/nodes/utils/SampleNode.d.ts +18 -8
  137. three/src/objects/BatchedMesh.d.ts +1 -1
  138. three/src/objects/InstancedMesh.d.ts +0 -8
  139. three/src/objects/Skeleton.d.ts +0 -2
  140. three/src/renderers/common/Backend.d.ts +0 -3
  141. three/src/renderers/common/CanvasTarget.d.ts +0 -49
  142. three/src/renderers/common/ClippingContext.d.ts +6 -1
  143. three/src/renderers/common/CubeRenderTarget.d.ts +2 -1
  144. three/src/renderers/common/Info.d.ts +26 -66
  145. three/src/renderers/common/InspectorBase.d.ts +0 -7
  146. three/src/renderers/common/Lighting.d.ts +49 -5
  147. three/src/renderers/common/Renderer.d.ts +34 -458
  148. three/src/renderers/common/RendererUtils.d.ts +1 -2
  149. three/src/renderers/common/TimestampQueryPool.d.ts +1 -1
  150. three/src/renderers/common/XRManager.d.ts +32 -299
  151. three/src/renderers/common/nodes/NodeLibrary.d.ts +0 -117
  152. three/src/renderers/webgl/WebGLPrograms.d.ts +2 -0
  153. three/src/renderers/webgl/WebGLRenderLists.d.ts +5 -1
  154. three/src/renderers/webgl/WebGLState.d.ts +2 -0
  155. three/src/renderers/webgl-fallback/WebGLBackend.d.ts +1 -1
  156. three/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.d.ts +0 -10
  157. three/src/renderers/webgpu/nodes/StandardNodeLibrary.d.ts +0 -1
  158. three/src/renderers/webgpu/nodes/WGSLNodeBuilder.d.ts +5 -121
  159. three/src/textures/CubeDepthTexture.d.ts +2 -3
  160. three/src/textures/DataTexture.d.ts +2 -1
  161. three/src/textures/DepthTexture.d.ts +5 -5
  162. three/examples/jsm/lighting/TiledLighting.d.ts +0 -9
  163. three/examples/jsm/tsl/display/AnamorphicNode.d.ts +0 -31
  164. three/examples/jsm/tsl/lighting/TiledLightsNode.d.ts +0 -22
  165. three/src/nodes/accessors/BatchNode.d.ts +0 -12
  166. three/src/nodes/accessors/InstanceNode.d.ts +0 -30
  167. three/src/nodes/accessors/InstancedMeshNode.d.ts +0 -10
  168. three/src/nodes/accessors/MorphNode.d.ts +0 -14
  169. three/src/nodes/accessors/SkinningNode.d.ts +0 -32
  170. three/src/renderers/common/Animation.d.ts +0 -102
  171. three/src/renderers/common/Attributes.d.ts +0 -59
  172. three/src/renderers/common/Background.d.ts +0 -47
  173. three/src/renderers/common/BindGroup.d.ts +0 -39
  174. three/src/renderers/common/Binding.d.ts +0 -50
  175. three/src/renderers/common/Bindings.d.ts +0 -132
  176. three/src/renderers/common/Buffer.d.ts +0 -90
  177. three/src/renderers/common/ChainMap.d.ts +0 -49
  178. three/src/renderers/common/Color4.d.ts +0 -55
  179. three/src/renderers/common/ComputePipeline.d.ts +0 -34
  180. three/src/renderers/common/DataMap.d.ts +0 -42
  181. three/src/renderers/common/Geometries.d.ts +0 -111
  182. three/src/renderers/common/Pipeline.d.ts +0 -29
  183. three/src/renderers/common/Pipelines.d.ts +0 -186
  184. three/src/renderers/common/ProgrammableStage.d.ts +0 -73
  185. three/src/renderers/common/RenderBundle.d.ts +0 -25
  186. three/src/renderers/common/RenderBundles.d.ts +0 -34
  187. three/src/renderers/common/RenderContext.d.ts +0 -235
  188. three/src/renderers/common/RenderContexts.d.ts +0 -47
  189. three/src/renderers/common/RenderList.d.ts +0 -226
  190. three/src/renderers/common/RenderLists.d.ts +0 -46
  191. three/src/renderers/common/RenderObject.d.ts +0 -448
  192. three/src/renderers/common/RenderObjectPipeline.d.ts +0 -33
  193. three/src/renderers/common/RenderObjects.d.ts +0 -151
  194. three/src/renderers/common/SampledTexture.d.ts +0 -28
  195. three/src/renderers/common/Sampler.d.ts +0 -19
  196. three/src/renderers/common/Textures.d.ts +0 -125
  197. three/src/renderers/common/Uniform.d.ts +0 -262
  198. three/src/renderers/common/UniformBuffer.d.ts +0 -20
  199. three/src/renderers/common/UniformsGroup.d.ts +0 -152
  200. three/src/renderers/common/XRRenderTarget.d.ts +0 -67
  201. three/src/renderers/common/nodes/NodeBuilderState.d.ts +0 -121
  202. three/src/renderers/common/nodes/NodeManager.d.ts +0 -309
  203. three/src/renderers/common/nodes/NodeSampledTexture.d.ts +0 -29
  204. three/src/renderers/common/nodes/NodeSampler.d.ts +0 -12
  205. three/src/renderers/common/nodes/NodeUniform.d.ts +0 -250
  206. three/src/renderers/common/nodes/NodeUniformsGroup.d.ts +0 -41
  207. three/src/renderers/webgpu/nodes/WGSLNodeFunction.d.ts +0 -6
  208. three/src/renderers/webgpu/nodes/WGSLNodeParser.d.ts +0 -6
@@ -1,3 +1,10 @@
1
+ import { Color } from "../../math/Color.js";
2
+ import { Matrix2 } from "../../math/Matrix2.js";
3
+ import { Matrix3 } from "../../math/Matrix3.js";
4
+ import { Matrix4 } from "../../math/Matrix4.js";
5
+ import { Vector2 } from "../../math/Vector2.js";
6
+ import { Vector3 } from "../../math/Vector3.js";
7
+ import { Vector4 } from "../../math/Vector4.js";
1
8
  import Node, { IntegerType, NumType } from "../core/Node.js";
2
9
  import TempNode from "../core/TempNode.js";
3
10
 
@@ -32,9 +39,27 @@ export default class OperatorNode extends TempNode {
32
39
  constructor(op: OperatorNodeOp, ...params: [Node, Node, ...Node[]]);
33
40
  }
34
41
 
35
- type Vec2OrLess = Node<"vec2">;
36
- type Vec3OrLess = Vec2OrLess | Node<"vec3">;
37
- type Vec4OrLess = Vec3OrLess | Node<"vec4">;
42
+ type FloatOrNumber = Node<"float"> | number;
43
+
44
+ type AnyNumber = Node<"float"> | Node<"int"> | Node<"uint"> | number;
45
+
46
+ type Vec2 = Node<"vec2"> | Vector2;
47
+ type Vec3 = Node<"vec3"> | Vector3 | Node<"color"> | Color;
48
+ type Vec4 = Node<"vec4"> | Vector4;
49
+
50
+ type Vec2OrFloat = Vec2 | FloatOrNumber;
51
+ type Vec3OrFloat = Vec3 | FloatOrNumber;
52
+ type Vec4OrFloat = Vec4 | FloatOrNumber;
53
+
54
+ type Vec2OrLess = Vec2;
55
+ type Vec3OrLess = Vec2OrLess | Vec3;
56
+ type Vec4OrLess = Vec3OrLess | Vec4;
57
+
58
+ type Mat2 = Node<"mat2"> | Matrix2;
59
+ type Mat3 = Node<"mat3"> | Matrix3;
60
+ type Mat4 = Node<"mat4"> | Matrix4;
61
+
62
+ type Bool = Node<"bool"> | boolean;
38
63
 
39
64
  interface NumberToVec {
40
65
  float: "vec";
@@ -46,122 +71,221 @@ type NumberToVec2<TNum extends NumType> = `${NumberToVec[TNum]}2`;
46
71
  type NumberToVec3<TNum extends NumType> = `${NumberToVec[TNum]}3`;
47
72
  type NumberToVec4<TNum extends NumType> = `${NumberToVec[TNum]}4`;
48
73
 
49
- type Number<TNum extends NumType> = AnyNumber; // FIXME Number<TNum> | number
74
+ type Number<TNum extends NumType> = Node<TNum> | number;
50
75
  type Vec2OrLessOrNumber<TNum extends NumType> = Number<TNum> | Node<NumberToVec2<TNum>>;
51
76
  type Vec3OrLessOrNumber<TNum extends NumType> = Vec2OrLessOrNumber<TNum> | Node<NumberToVec3<TNum>>;
52
77
  type Vec4OrLessOrNumber<TNum extends NumType> = Vec3OrLessOrNumber<TNum> | Node<NumberToVec4<TNum>>;
53
78
 
54
- type AnyNumber = Node<"float"> | Node<"int"> | Node<"uint"> | number;
79
+ interface NodeParameterForNumType {
80
+ float: Node<"float"> | Node<"int"> | Node<"uint">;
81
+ int: Node<"int">;
82
+ uint: Node<"uint">;
83
+ }
84
+ type NumberParameterForNumType<TNum extends NumType> = NodeParameterForNumType[TNum] | number;
85
+
86
+ interface Vec2NodeParameterForNumType {
87
+ float: Node<"vec2"> | Node<"ivec2"> | Node<"uvec2">;
88
+ int: Node<"ivec2">;
89
+ uint: Node<"uvec2">;
90
+ }
91
+ type Vec2OrLessOrNumberParameterForNumType<TNum extends NumType> =
92
+ | Vec2NodeParameterForNumType[TNum]
93
+ | NumberParameterForNumType<TNum>;
94
+
95
+ interface Vec3NodeParameterForNumType {
96
+ float: Node<"vec3"> | Node<"ivec3"> | Node<"uvec3">;
97
+ int: Node<"ivec3">;
98
+ uint: Node<"uvec3">;
99
+ }
100
+ type Vec3OrLessOrNumberParameterForNumType<TNum extends NumType> =
101
+ | Vec3NodeParameterForNumType[TNum]
102
+ | Vec2OrLessOrNumberParameterForNumType<TNum>;
103
+
104
+ interface Vec4NodeParameterForNumType {
105
+ float: Node<"vec4"> | Node<"ivec4"> | Node<"uvec4">;
106
+ int: Node<"ivec4">;
107
+ uint: Node<"uvec4">;
108
+ }
109
+ type Vec4OrLessOrNumberParameterForNumType<TNum extends NumType> =
110
+ | Vec4NodeParameterForNumType[TNum]
111
+ | Vec3OrLessOrNumberParameterForNumType<TNum>;
55
112
 
56
113
  // add/sub/mul/div
57
114
 
58
115
  // add/sub/mul/div numbers and/or vecs
59
116
  // Every parameter gets converted to the longest type
60
117
  // If the parameters are the same length, it gets converted to the first type
61
- // FIXME We handle the case of converting number types, but not converting between vectors of different number types
62
118
 
63
119
  interface AddSubMulDivNumberVec<TNum extends NumType> {
64
- (a: Number<TNum>, b: AnyNumber, ...params: AnyNumber[]): Node<TNum>;
120
+ (a: Number<TNum>, b: NumberParameterForNumType<TNum>, ...params: NumberParameterForNumType<TNum>[]): Node<TNum>;
65
121
  (
66
122
  a: Vec2OrLessOrNumber<TNum>,
67
- b: Vec2OrLessOrNumber<TNum>,
68
- ...params: Vec2OrLessOrNumber<TNum>[]
123
+ b: Vec2OrLessOrNumberParameterForNumType<TNum>,
124
+ ...params: Vec2OrLessOrNumberParameterForNumType<TNum>[]
69
125
  ): Node<NumberToVec2<TNum>>;
70
126
  (
71
127
  a: Vec3OrLessOrNumber<TNum>,
72
- b: Vec3OrLessOrNumber<TNum>,
73
- ...params: Vec3OrLessOrNumber<TNum>[]
128
+ b: Vec3OrLessOrNumberParameterForNumType<TNum>,
129
+ ...params: Vec3OrLessOrNumberParameterForNumType<TNum>[]
74
130
  ): Node<NumberToVec3<TNum>>;
75
131
  (
76
132
  a: Vec4OrLessOrNumber<TNum>,
77
- b: Vec4OrLessOrNumber<TNum>,
78
- ...params: Vec4OrLessOrNumber<TNum>[]
133
+ b: Vec4OrLessOrNumberParameterForNumType<TNum>,
134
+ ...params: Vec4OrLessOrNumberParameterForNumType<TNum>[]
79
135
  ): Node<NumberToVec4<TNum>>;
80
136
  }
81
137
 
82
138
  interface AddSubMulDivNumberVecNumExtensions<TNum extends NumType> {
83
- (b: AnyNumber, ...params: AnyNumber[]): Node<TNum>;
84
- (b: Vec2OrLessOrNumber<TNum>, ...params: Vec2OrLessOrNumber<TNum>[]): Node<NumberToVec2<TNum>>;
85
- (b: Vec3OrLessOrNumber<TNum>, ...params: Vec3OrLessOrNumber<TNum>[]): Node<NumberToVec3<TNum>>;
86
- (b: Vec4OrLessOrNumber<TNum>, ...params: Vec4OrLessOrNumber<TNum>[]): Node<NumberToVec4<TNum>>;
139
+ (b: NumberParameterForNumType<TNum>, ...params: NumberParameterForNumType<TNum>[]): Node<TNum>;
140
+ (
141
+ b: Vec2OrLessOrNumberParameterForNumType<TNum>,
142
+ ...params: Vec2OrLessOrNumberParameterForNumType<TNum>[]
143
+ ): Node<NumberToVec2<TNum>>;
144
+ (
145
+ b: Vec3OrLessOrNumberParameterForNumType<TNum>,
146
+ ...params: Vec3OrLessOrNumberParameterForNumType<TNum>[]
147
+ ): Node<NumberToVec3<TNum>>;
148
+ (
149
+ b: Vec4OrLessOrNumberParameterForNumType<TNum>,
150
+ ...params: Vec4OrLessOrNumberParameterForNumType<TNum>[]
151
+ ): Node<NumberToVec4<TNum>>;
87
152
  }
88
153
 
89
- interface AddSubMulDivNumberVecNumberAssignExtensions {
154
+ interface AddSubMulDivNumberVecNumberAssignExtensions<TNum extends NumType> {
90
155
  (
91
- b: Vec4OrLessOrNumber<"float"> | Vec4OrLessOrNumber<"int"> | Vec4OrLessOrNumber<"uint">,
92
- ...params: (Vec4OrLessOrNumber<"float"> | Vec4OrLessOrNumber<"int"> | Vec4OrLessOrNumber<"uint">)[]
156
+ b: Vec4OrLessOrNumberParameterForNumType<TNum>,
157
+ ...params: Vec4OrLessOrNumberParameterForNumType<TNum>[]
93
158
  ): this;
94
159
  }
95
160
 
96
161
  interface AddSubMulDivNumberVecVec2Extensions<TNum extends NumType> {
97
- (b: Vec2OrLessOrNumber<TNum>, ...params: Vec2OrLessOrNumber<TNum>[]): Node<NumberToVec2<TNum>>;
98
- (b: Vec3OrLessOrNumber<TNum>, ...params: Vec3OrLessOrNumber<TNum>[]): Node<NumberToVec3<TNum>>;
99
- (b: Vec4OrLessOrNumber<TNum>, ...params: Vec4OrLessOrNumber<TNum>[]): Node<NumberToVec4<TNum>>;
162
+ (
163
+ b: Vec2OrLessOrNumberParameterForNumType<TNum>,
164
+ ...params: Vec2OrLessOrNumberParameterForNumType<TNum>[]
165
+ ): Node<NumberToVec2<TNum>>;
166
+ (
167
+ b: Vec3OrLessOrNumberParameterForNumType<TNum>,
168
+ ...params: Vec3OrLessOrNumberParameterForNumType<TNum>[]
169
+ ): Node<NumberToVec3<TNum>>;
170
+ (
171
+ b: Vec4OrLessOrNumberParameterForNumType<TNum>,
172
+ ...params: Vec4OrLessOrNumberParameterForNumType<TNum>[]
173
+ ): Node<NumberToVec4<TNum>>;
100
174
  }
101
175
 
102
176
  interface AddSubMulDivNumberVecVec2AssignExtensions<TNum extends NumType> {
103
- (b: Vec4OrLessOrNumber<TNum>, ...params: Vec4OrLessOrNumber<TNum>[]): this;
177
+ (b: Vec4OrLessOrNumberParameterForNumType<TNum>, ...params: Vec4OrLessOrNumberParameterForNumType<TNum>[]): this;
104
178
  }
105
179
 
106
180
  interface AddSubMulDivNumberVecVec3Extensions<TNum extends NumType> {
107
- (b: Vec3OrLessOrNumber<TNum>, ...params: Vec3OrLessOrNumber<TNum>[]): Node<NumberToVec3<TNum>>;
108
- (b: Vec4OrLessOrNumber<TNum>, ...params: Vec4OrLessOrNumber<TNum>[]): Node<NumberToVec4<TNum>>;
181
+ (
182
+ b: Vec3OrLessOrNumberParameterForNumType<TNum>,
183
+ ...params: Vec3OrLessOrNumberParameterForNumType<TNum>[]
184
+ ): Node<NumberToVec3<TNum>>;
185
+ (
186
+ b: Vec4OrLessOrNumberParameterForNumType<TNum>,
187
+ ...params: Vec4OrLessOrNumberParameterForNumType<TNum>[]
188
+ ): Node<NumberToVec4<TNum>>;
109
189
  }
110
190
 
111
191
  interface AddSubMulDivNumberVecVec3AssignExtensions<TNum extends NumType> {
112
- (b: Vec4OrLessOrNumber<TNum>, ...params: Vec4OrLessOrNumber<TNum>[]): this;
192
+ (b: Vec4OrLessOrNumberParameterForNumType<TNum>, ...params: Vec4OrLessOrNumberParameterForNumType<TNum>[]): this;
113
193
  }
114
194
 
115
195
  interface AddSubMulDivNumberVecVec4Extensions<TNum extends NumType> {
116
- (b: Vec4OrLessOrNumber<TNum>, ...params: Vec4OrLessOrNumber<TNum>[]): Node<NumberToVec4<TNum>>;
196
+ (
197
+ b: Vec4OrLessOrNumberParameterForNumType<TNum>,
198
+ ...params: Vec4OrLessOrNumberParameterForNumType<TNum>[]
199
+ ): Node<NumberToVec4<TNum>>;
117
200
  }
118
201
 
119
202
  interface AddSubMulDivNumberVecVec4AssignExtensions<TNum extends NumType> {
120
- (b: Vec4OrLessOrNumber<TNum>, ...params: Vec4OrLessOrNumber<TNum>[]): this;
203
+ (b: Vec4OrLessOrNumberParameterForNumType<TNum>, ...params: Vec4OrLessOrNumberParameterForNumType<TNum>[]): this;
121
204
  }
122
205
 
123
206
  // add/sub/mul mats
124
207
 
125
208
  interface AddSubMulMat {
126
- (a: Node<"mat2">, b: Node<"mat2">): Node<"mat2">;
127
- (a: Node<"mat3">, b: Node<"mat3">): Node<"mat3">;
128
- (a: Node<"mat4">, b: Node<"mat4">): Node<"mat4">;
209
+ (a: Mat2, b: Mat2, ...params: Mat2[]): Node<"mat2">;
210
+ (a: Mat3, b: Mat3, ...params: Mat3[]): Node<"mat3">;
211
+ (a: Mat4, b: Mat4, ...params: Mat4[]): Node<"mat4">;
129
212
  }
130
213
 
131
214
  interface AddSubMulMat2Extensions {
132
- (b: Node<"mat2">): Node<"mat2">;
215
+ (b: Mat2): Node<"mat2">;
133
216
  }
134
217
 
135
218
  interface AddSubMulMat2AssignExtensions {
136
- (b: Node<"mat2">): this;
219
+ (b: Mat2): this;
137
220
  }
138
221
 
139
222
  interface AddSubMulMat3Extensions {
140
- (b: Node<"mat3">): Node<"mat3">;
223
+ (b: Mat3): Node<"mat3">;
141
224
  }
142
225
 
143
226
  interface AddSubMulMat3AssignExtensions {
144
- (b: Node<"mat3">): this;
227
+ (b: Mat3): this;
145
228
  }
146
229
 
147
230
  interface AddSubMulMat4Extensions {
148
- (b: Node<"mat4">): Node<"mat4">;
231
+ (b: Mat4): Node<"mat4">;
149
232
  }
150
233
 
151
234
  interface AddSubMulMat4AssignExtensions {
152
- (b: Node<"mat3">): this;
235
+ (b: Mat3): this;
236
+ }
237
+
238
+ // mut mats and nums
239
+
240
+ interface MulMatNum {
241
+ (a: Mat2, b: AnyNumber): Node<"mat2">;
242
+ (a: Mat3, b: AnyNumber): Node<"mat3">;
243
+ (a: Mat4, b: AnyNumber): Node<"mat4">;
244
+ (a: AnyNumber, b: Mat2): Node<"mat2">;
245
+ (a: AnyNumber, b: Mat3): Node<"mat3">;
246
+ (a: AnyNumber, b: Mat4): Node<"mat4">;
247
+ }
248
+
249
+ interface MulMatNumNumExtensions {
250
+ (b: Mat2): Node<"mat2">;
251
+ (b: Mat3): Node<"mat3">;
252
+ (b: Mat4): Node<"mat4">;
253
+ }
254
+
255
+ interface MulMatNumMat2Extensions {
256
+ (b: AnyNumber): Node<"mat2">;
257
+ }
258
+
259
+ interface MulMatNumMat3Extensions {
260
+ (b: AnyNumber): Node<"mat3">;
261
+ }
262
+
263
+ interface MulMatNumMat4Extensions {
264
+ (b: AnyNumber): Node<"mat4">;
265
+ }
266
+
267
+ interface MulMatNumMat2AssignExtensions {
268
+ (b: AnyNumber): this;
269
+ }
270
+
271
+ interface MulMatNumMat3AssignExtensions {
272
+ (b: AnyNumber): this;
273
+ }
274
+
275
+ interface MulMatNumMat4AssignExtensions {
276
+ (b: AnyNumber): this;
153
277
  }
154
278
 
155
279
  // mut mats and vecs
156
280
  // The vec parameter gets converted to matrix length
157
281
 
158
282
  interface MulMatVec {
159
- (a: Node<"mat2">, b: Vec4OrLess): Node<"vec2">;
160
- (a: Node<"mat3">, b: Vec4OrLess): Node<"vec3">;
161
- (a: Node<"mat4">, b: Vec4OrLess): Node<"vec4">;
162
- (a: Vec4OrLess, b: Node<"mat2">): Node<"vec2">;
163
- (a: Vec4OrLess, b: Node<"mat3">): Node<"vec3">;
164
- (a: Vec4OrLess, b: Node<"mat4">): Node<"vec4">;
283
+ (a: Mat2, b: Vec4OrLess): Node<"vec2">;
284
+ (a: Mat3, b: Vec4OrLess): Node<"vec3">;
285
+ (a: Mat4, b: Vec4OrLess): Node<"vec4">;
286
+ (a: Vec4OrLess, b: Mat2): Node<"vec2">;
287
+ (a: Vec4OrLess, b: Mat3): Node<"vec3">;
288
+ (a: Vec4OrLess, b: Mat4): Node<"vec4">;
165
289
  }
166
290
 
167
291
  interface MulVecMatMat2Extensions {
@@ -177,9 +301,9 @@ interface MulVecMatMat4Extensions {
177
301
  }
178
302
 
179
303
  interface MulVecMatVecExtensions {
180
- (b: Node<"mat2">): Node<"vec2">;
181
- (b: Node<"mat3">): Node<"vec3">;
182
- (b: Node<"mat4">): Node<"vec4">;
304
+ (b: Mat2): Node<"vec2">;
305
+ (b: Mat3): Node<"vec3">;
306
+ (b: Mat4): Node<"vec4">;
183
307
  }
184
308
 
185
309
  // Exports
@@ -197,10 +321,16 @@ interface Mul
197
321
  AddSubMulDivNumberVec<"int">,
198
322
  AddSubMulDivNumberVec<"uint">,
199
323
  AddSubMulMat,
324
+ MulMatNum,
200
325
  MulMatVec
201
326
  {
202
327
  }
203
328
 
329
+ interface MulNumExtension<TNum extends NumType>
330
+ extends AddSubMulDivNumberVecNumExtensions<TNum>, MulMatNumNumExtensions
331
+ {
332
+ }
333
+
204
334
  interface MulVec2Extensions<TNum extends NumType>
205
335
  extends AddSubMulDivNumberVecVec2Extensions<TNum>, MulVecMatVecExtensions
206
336
  {
@@ -216,13 +346,22 @@ interface MulVec4Extensions<TNum extends NumType>
216
346
  {
217
347
  }
218
348
 
219
- interface MulMat2Extensions extends AddSubMulMat2Extensions, MulVecMatMat2Extensions {
349
+ interface MulMat2Extensions extends AddSubMulMat2Extensions, MulMatNumMat2Extensions, MulVecMatMat2Extensions {
350
+ }
351
+
352
+ interface MulMat3Extensions extends AddSubMulMat3Extensions, MulMatNumMat3Extensions, MulVecMatMat3Extensions {
353
+ }
354
+
355
+ interface MulMat4Extensions extends AddSubMulMat4Extensions, MulMatNumMat4Extensions, MulVecMatMat4Extensions {
356
+ }
357
+
358
+ interface MulMat2AssignExtensions extends AddSubMulMat2AssignExtensions, MulMatNumMat2AssignExtensions {
220
359
  }
221
360
 
222
- interface MulMat3Extensions extends AddSubMulMat3Extensions, MulVecMatMat3Extensions {
361
+ interface MulMat3AssignExtensions extends AddSubMulMat3AssignExtensions, MulMatNumMat3AssignExtensions {
223
362
  }
224
363
 
225
- interface MulMat4Extensions extends AddSubMulMat4Extensions, MulVecMatMat4Extensions {
364
+ interface MulMat4AssignExtensions extends AddSubMulMat4AssignExtensions, MulMatNumMat4AssignExtensions {
226
365
  }
227
366
 
228
367
  export const mul: Mul;
@@ -239,13 +378,13 @@ declare module "../core/Node.js" {
239
378
  interface NumExtensions<TNum extends NumType> {
240
379
  add: AddSubMulDivNumberVecNumExtensions<TNum>;
241
380
  sub: AddSubMulDivNumberVecNumExtensions<TNum>;
242
- mul: AddSubMulDivNumberVecNumExtensions<TNum>;
381
+ mul: MulNumExtension<TNum>;
243
382
  div: AddSubMulDivNumberVecNumExtensions<TNum>;
244
383
 
245
- addAssign: AddSubMulDivNumberVecNumberAssignExtensions;
246
- subAssign: AddSubMulDivNumberVecNumberAssignExtensions;
247
- mulAssign: AddSubMulDivNumberVecNumberAssignExtensions;
248
- divAssign: AddSubMulDivNumberVecNumberAssignExtensions;
384
+ addAssign: AddSubMulDivNumberVecNumberAssignExtensions<TNum>;
385
+ subAssign: AddSubMulDivNumberVecNumberAssignExtensions<TNum>;
386
+ mulAssign: AddSubMulDivNumberVecNumberAssignExtensions<TNum>;
387
+ divAssign: AddSubMulDivNumberVecNumberAssignExtensions<TNum>;
249
388
  }
250
389
 
251
390
  interface Vec2Extensions {
@@ -313,7 +452,7 @@ declare module "../core/Node.js" {
313
452
 
314
453
  addAssign: AddSubMulMat2AssignExtensions;
315
454
  subAssign: AddSubMulMat2AssignExtensions;
316
- mulAssign: AddSubMulMat2AssignExtensions;
455
+ mulAssign: MulMat2AssignExtensions;
317
456
  }
318
457
 
319
458
  interface Mat3Extensions {
@@ -323,7 +462,7 @@ declare module "../core/Node.js" {
323
462
 
324
463
  addAssign: AddSubMulMat3AssignExtensions;
325
464
  subAssign: AddSubMulMat3AssignExtensions;
326
- mulAssign: AddSubMulMat3AssignExtensions;
465
+ mulAssign: MulMat3AssignExtensions;
327
466
  }
328
467
 
329
468
  interface Mat4Extensions {
@@ -333,7 +472,7 @@ declare module "../core/Node.js" {
333
472
 
334
473
  addAssign: AddSubMulMat4AssignExtensions;
335
474
  subAssign: AddSubMulMat4AssignExtensions;
336
- mulAssign: AddSubMulMat4AssignExtensions;
475
+ mulAssign: MulMat4AssignExtensions;
337
476
  }
338
477
  }
339
478
 
@@ -382,6 +521,10 @@ declare module "../core/Node.js" {
382
521
  interface ComparisonOperator {
383
522
  (a: Number<"float">, b: Number<"float">): Node<"bool">;
384
523
  (a: Number<"int"> | Number<"uint">, b: Number<"int"> | Number<"uint">): Node<"bool">;
524
+ // TODO Accept non-float vectors
525
+ (a: Vec2OrFloat, b: Vec2OrFloat): Node<"bvec2">;
526
+ (a: Vec3OrFloat, b: Vec3OrFloat): Node<"bvec3">;
527
+ (a: Vec4OrFloat, b: Vec4OrFloat): Node<"bvec4">;
385
528
  }
386
529
  export const equal: ComparisonOperator;
387
530
  export const notEqual: ComparisonOperator;
@@ -393,6 +536,15 @@ export const greaterThanEqual: ComparisonOperator;
393
536
  interface ComparisonOperatorNumExtensions<TNum extends NumType> {
394
537
  (b: Number<TNum>): Node<"bool">;
395
538
  }
539
+ interface ComparisonOperatorVec2Extensions {
540
+ (b: Vec2OrFloat): Node<"bvec2">;
541
+ }
542
+ interface ComparisonOperatorVec3Extensions {
543
+ (b: Vec3OrFloat): Node<"bvec3">;
544
+ }
545
+ interface ComparisonOperatorVec4Extensions {
546
+ (b: Vec4OrFloat): Node<"bvec4">;
547
+ }
396
548
 
397
549
  declare module "../core/Node.js" {
398
550
  interface FloatExtensions {
@@ -421,29 +573,66 @@ declare module "../core/Node.js" {
421
573
  lessThanEqual: (b: Number<"int"> | Number<"uint">) => Node<"bool">;
422
574
  greaterThanEqual: (b: Number<"int"> | Number<"uint">) => Node<"bool">;
423
575
  }
576
+
577
+ interface Vec2Extensions {
578
+ equal: ComparisonOperatorVec2Extensions;
579
+ notEqual: ComparisonOperatorVec2Extensions;
580
+ lessThan: ComparisonOperatorVec2Extensions;
581
+ greaterThan: ComparisonOperatorVec2Extensions;
582
+ lessThanEqual: ComparisonOperatorVec2Extensions;
583
+ greaterThanEqual: ComparisonOperatorVec2Extensions;
584
+ }
585
+
586
+ interface Vec3Extensions {
587
+ equal: ComparisonOperatorVec3Extensions;
588
+ notEqual: ComparisonOperatorVec3Extensions;
589
+ lessThan: ComparisonOperatorVec3Extensions;
590
+ greaterThan: ComparisonOperatorVec3Extensions;
591
+ lessThanEqual: ComparisonOperatorVec3Extensions;
592
+ greaterThanEqual: ComparisonOperatorVec3Extensions;
593
+ }
594
+
595
+ interface Vec4Extensions {
596
+ equal: ComparisonOperatorVec4Extensions;
597
+ notEqual: ComparisonOperatorVec4Extensions;
598
+ lessThan: ComparisonOperatorVec4Extensions;
599
+ greaterThan: ComparisonOperatorVec4Extensions;
600
+ lessThanEqual: ComparisonOperatorVec4Extensions;
601
+ greaterThanEqual: ComparisonOperatorVec4Extensions;
602
+ }
424
603
  }
425
604
 
426
605
  // and/or/not/xor
427
606
 
428
607
  interface AndOr {
429
- (a: Node<"bool">, b: Node<"bool">, ...params: Node<"bool">[]): Node<"bool">;
608
+ (a: Bool, b: Bool, ...params: Bool[]): Node<"bool">;
430
609
  }
431
610
  export const and: AndOr;
432
611
  export const or: AndOr;
433
612
 
434
613
  interface AndOrBoolExtensions {
435
- (b: Node<"bool">, ...params: Node<"bool">[]): Node<"bool">;
614
+ (b: Bool, ...params: Bool[]): Node<"bool">;
436
615
  }
437
616
 
438
- export const not: (a: Node<"bool">) => Node<"bool">;
439
- export const xor: (a: Node<"bool">, b: Node<"bool">) => Node<"bool">;
617
+ interface NotFunction {
618
+ (a: Bool): Node<"bool">;
619
+ (a: Node<"bvec2">): Node<"bvec2">;
620
+ (a: Node<"bvec3">): Node<"bvec3">;
621
+ (a: Node<"bvec4">): Node<"bvec4">;
622
+ }
623
+ export const not: NotFunction;
624
+
625
+ export const xor: (a: Bool, b: Bool) => Node<"bool">;
440
626
 
441
627
  declare module "../core/Node.js" {
442
628
  interface BoolExtensions {
443
629
  and: AndOrBoolExtensions;
444
630
  or: AndOrBoolExtensions;
445
- not: () => Node<"bool">;
446
- xor: (b: Node<"bool">) => Node<"bool">;
631
+ xor: (b: Bool) => Node<"bool">;
632
+ }
633
+
634
+ interface BoolOrVecExtensions<TNodeType> {
635
+ not: () => Node<TNodeType>;
447
636
  }
448
637
  }
449
638
 
@@ -517,22 +706,4 @@ declare module "../core/Node.js" {
517
706
  }
518
707
  }
519
708
 
520
- /**
521
- * @deprecated "modInt()" is deprecated. Use "mod( int( ... ) )" instead.
522
- */
523
- export const modInt: Mod;
524
-
525
- declare module "../core/Node.js" {
526
- interface NumExtensions<TNum extends NumType> {
527
- /**
528
- * @deprecated "modInt()" is deprecated. Use "mod( int( ... ) )" instead.
529
- */
530
- modInt: (b: Number<TNum>) => Node<TNum>;
531
- /**
532
- * @deprecated "modInt()" is deprecated. Use "mod( int( ... ) )" instead.
533
- */
534
- modIntAssign: (b: Number<TNum>) => this;
535
- }
536
- }
537
-
538
709
  export {};
@@ -5,11 +5,13 @@ import { Matrix4 } from "../../math/Matrix4.js";
5
5
  import { Vector2 } from "../../math/Vector2.js";
6
6
  import { Vector3 } from "../../math/Vector3.js";
7
7
  import { Vector4 } from "../../math/Vector4.js";
8
+ import ArrayNode from "../core/ArrayNode.js";
8
9
  import ConstNode from "../core/ConstNode.js";
9
- import Node, { MatType, NumOrBoolType } from "../core/Node.js";
10
+ import Node, { NumOrBoolType } from "../core/Node.js";
10
11
  import NodeBuilder from "../core/NodeBuilder.js";
11
12
  import StackNode from "../core/StackNode.js";
12
13
  import VarNode from "../core/VarNode.js";
14
+ import ArrayElementNode from "../utils/ArrayElementNode.js";
13
15
  import ConvertNode from "../utils/ConvertNode.js";
14
16
  import JoinNode from "../utils/JoinNode.js";
15
17
 
@@ -1743,6 +1745,8 @@ export function nodeProxyIntent<T, S extends GetPossibleScopes<T>>(
1743
1745
  factor: unknown,
1744
1746
  ): (...params: ProxiedTuple<RemoveHeadAndTail<GetConstructorsByScope<T, S>>>) => ConstructedNode<T>;
1745
1747
 
1748
+ export const nodeProxyConstructor: unknown;
1749
+
1746
1750
  interface FullLayout {
1747
1751
  name: string;
1748
1752
  type: string;
@@ -1977,7 +1981,9 @@ interface Vec3Function {
1977
1981
  (value: Vector3): VarNode<"vec3", ConstNode<"vec3", Vector3>>;
1978
1982
  // ConvertNode
1979
1983
  (node: ScalarNode): VarNode<"vec3", ConvertNode<"vec3">>;
1980
- (node: Node<"vec3"> | Node<"ivec3"> | Node<"uvec3"> | Node<"bvec3">): VarNode<"vec3", ConvertNode<"vec3">>;
1984
+ (
1985
+ node: Node<"vec3"> | Node<"ivec3"> | Node<"uvec3"> | Node<"bvec3"> | Node<"vec4">,
1986
+ ): VarNode<"vec3", ConvertNode<"vec3">>;
1981
1987
 
1982
1988
  // The fall-through branch will be triggered if there is more than one parameter, and one of the parameters is an
1983
1989
  // object
@@ -2082,7 +2088,7 @@ interface Vec4Function {
2082
2088
  (x: Scalar, y: Scalar, zw: Node<"vec2"> | Vector2): VarNode<"vec4", JoinNode<"vec4">>;
2083
2089
  (xy: Node<"vec2"> | Vector2, zw: Node<"vec2"> | Vector2): VarNode<"vec4", JoinNode<"vec4">>;
2084
2090
  (xy: Node<"vec2"> | Vector2, z: Scalar, w: Scalar): VarNode<"vec4", JoinNode<"vec4">>;
2085
- (xyz: Node<"vec3"> | Node<"color"> | Vector3 | Color, w: Scalar): VarNode<"vec4", JoinNode<"vec4">>;
2091
+ (xyz: Node<"vec3"> | Node<"color"> | Vector3 | Color | Node<"vec4">, w: Scalar): VarNode<"vec4", JoinNode<"vec4">>;
2086
2092
  (x: Scalar, yzw: Node<"vec3"> | Node<"color"> | Vector3 | Color): VarNode<"vec4", JoinNode<"vec4">>;
2087
2093
  }
2088
2094
 
@@ -2354,9 +2360,6 @@ interface Mat4Function {
2354
2360
 
2355
2361
  export const mat4: Mat4Function;
2356
2362
 
2357
- export const string: unknown;
2358
- export const arrayBuffer: unknown;
2359
-
2360
2363
  declare module "../core/Node.js" {
2361
2364
  interface ColorExtensions {
2362
2365
  toColor: () => VarNode<"color", ConvertNode<"color">>;
@@ -2398,14 +2401,18 @@ declare module "../core/Node.js" {
2398
2401
  }
2399
2402
  }
2400
2403
 
2401
- export const element: (node: Node, indexNode: Node) => Node;
2404
+ export const element: <TNodeType>(node: ArrayNode<TNodeType>, indexNode: Node | number) => ArrayElementNode<TNodeType>;
2402
2405
  export const convert: (node: Node, types: string) => Node;
2403
2406
  export const split: (node: Node, channels?: string) => Node;
2404
2407
 
2408
+ declare module "../core/ArrayNode.js" {
2409
+ interface ArrayNodeInterface<TNodeType> {
2410
+ element: (indexNode: Node | number) => ArrayElementNode<TNodeType>;
2411
+ }
2412
+ }
2413
+
2405
2414
  declare module "../core/Node.js" {
2406
2415
  interface NodeElements {
2407
- element: (indexNode: Node) => Node;
2408
-
2409
2416
  convert: (types: string) => Node;
2410
2417
  }
2411
2418
  }
@@ -1,14 +1,15 @@
1
+ import ArrayNode from "../core/ArrayNode.js";
1
2
  import Node from "../core/Node.js";
2
3
 
3
- interface ArrayElementNodeInterface {
4
- node: Node;
4
+ interface ArrayElementNodeInterface<TNodeType> {
5
+ node: ArrayNode<TNodeType>;
5
6
  indexNode: Node;
6
7
  }
7
8
 
8
9
  declare const ArrayElementNode: {
9
- new<TNodeType>(node: Node<TNodeType>, indexNode: Node): ArrayElementNode<TNodeType>;
10
+ new<TNodeType>(node: ArrayNode<TNodeType>, indexNode: Node): ArrayElementNode<TNodeType>;
10
11
  };
11
12
 
12
- type ArrayElementNode<TNodeType> = Node<TNodeType> & ArrayElementNodeInterface;
13
+ type ArrayElementNode<TNodeType> = Node<TNodeType> & ArrayElementNodeInterface<TNodeType>;
13
14
 
14
15
  export default ArrayElementNode;
@@ -1,3 +1,33 @@
1
+ import { Vector2 } from "../../math/Vector2.js";
2
+ import { Vector3 } from "../../math/Vector3.js";
1
3
  import Node from "../core/Node.js";
2
4
 
3
- export const equirectUV: (dirNode?: Node) => Node;
5
+ /**
6
+ * TSL function for creating an equirect uv node.
7
+ *
8
+ * Can be used to compute texture coordinates for projecting an
9
+ * equirectangular texture onto a mesh for using it as the scene's
10
+ * background.
11
+ *
12
+ * ```js
13
+ * scene.backgroundNode = texture( equirectTexture, equirectUV() );
14
+ * ```
15
+ *
16
+ * @tsl
17
+ * @function
18
+ * @param {?Node<vec3>} [direction=positionWorldDirection] - A direction vector for sampling which is by default `positionWorldDirection`.
19
+ * @returns {Node<vec2>}
20
+ */
21
+ export const equirectUV: (direction?: Node<"vec3"> | Vector3) => Node<"vec2">;
22
+ /**
23
+ * TSL function for creating an equirect direction node.
24
+ *
25
+ * Can be used to compute a direction vector from the given equirectangular
26
+ * UV coordinates.
27
+ *
28
+ * @tsl
29
+ * @function
30
+ * @param {?Node<vec2>} [uv=UV()] - The equirectangular UV coordinates.
31
+ * @returns {Node<vec3>} The computed direction vector.
32
+ */
33
+ export const equirectDirection: (uv?: Node<"vec2"> | Vector2) => Node<"vec3">;