@types/three 0.178.1 → 0.180.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 (129) hide show
  1. three/README.md +1 -1
  2. three/examples/jsm/Addons.d.ts +2 -3
  3. three/examples/jsm/controls/DragControls.d.ts +0 -30
  4. three/examples/jsm/controls/PointerLockControls.d.ts +0 -5
  5. three/examples/jsm/exporters/DRACOExporter.d.ts +1 -1
  6. three/examples/jsm/exporters/EXRExporter.d.ts +2 -2
  7. three/examples/jsm/exporters/KTX2Exporter.d.ts +2 -2
  8. three/examples/jsm/exporters/STLExporter.d.ts +2 -2
  9. three/examples/jsm/exporters/USDZExporter.d.ts +3 -2
  10. three/examples/jsm/loaders/EXRLoader.d.ts +18 -5
  11. three/examples/jsm/loaders/HDRCubeTextureLoader.d.ts +2 -2
  12. three/examples/jsm/loaders/HDRLoader.d.ts +22 -0
  13. three/examples/jsm/loaders/LDrawLoader.d.ts +5 -1
  14. three/examples/jsm/loaders/RGBELoader.d.ts +9 -15
  15. three/examples/jsm/loaders/USDLoader.d.ts +9 -0
  16. three/examples/jsm/loaders/USDZLoader.d.ts +11 -8
  17. three/examples/jsm/materials/WoodNodeMaterial.d.ts +75 -0
  18. three/examples/jsm/math/ColorSpaces.d.ts +4 -0
  19. three/examples/jsm/postprocessing/SSRPass.d.ts +6 -29
  20. three/examples/jsm/tsl/display/AnamorphicNode.d.ts +10 -1
  21. three/examples/jsm/tsl/display/DepthOfFieldNode.d.ts +14 -8
  22. three/examples/jsm/tsl/display/GaussianBlurNode.d.ts +26 -6
  23. three/examples/jsm/tsl/display/SSRNode.d.ts +8 -3
  24. three/examples/jsm/tsl/display/TRAANode.d.ts +22 -0
  25. three/examples/jsm/tsl/display/boxBlur.d.ts +11 -0
  26. three/examples/jsm/tsl/display/hashBlur.d.ts +1 -1
  27. three/package.json +4 -4
  28. three/src/Three.Core.d.ts +2 -0
  29. three/src/Three.TSL.d.ts +84 -17
  30. three/src/animation/AnimationClip.d.ts +5 -0
  31. three/src/animation/KeyframeTrack.d.ts +7 -2
  32. three/src/animation/tracks/BooleanKeyframeTrack.d.ts +2 -2
  33. three/src/animation/tracks/StringKeyframeTrack.d.ts +2 -2
  34. three/src/cameras/Camera.d.ts +15 -8
  35. three/src/constants.d.ts +6 -2
  36. three/{examples/jsm/misc → src/core}/Timer.d.ts +3 -17
  37. three/src/helpers/SkeletonHelper.d.ts +7 -12
  38. three/src/loaders/FileLoader.d.ts +2 -2
  39. three/src/loaders/ImageBitmapLoader.d.ts +9 -9
  40. three/src/loaders/Loader.d.ts +1 -0
  41. three/src/loaders/LoadingManager.d.ts +23 -19
  42. three/src/materials/LineBasicMaterial.d.ts +1 -0
  43. three/src/materials/LineDashedMaterial.d.ts +1 -0
  44. three/src/materials/MeshBasicMaterial.d.ts +1 -0
  45. three/src/materials/MeshDepthMaterial.d.ts +1 -0
  46. three/src/materials/MeshDistanceMaterial.d.ts +2 -1
  47. three/src/materials/MeshLambertMaterial.d.ts +1 -0
  48. three/src/materials/MeshMatcapMaterial.d.ts +1 -0
  49. three/src/materials/MeshNormalMaterial.d.ts +1 -0
  50. three/src/materials/MeshPhongMaterial.d.ts +1 -0
  51. three/src/materials/MeshToonMaterial.d.ts +1 -0
  52. three/src/materials/PointsMaterial.d.ts +1 -0
  53. three/src/materials/ShaderMaterial.d.ts +1 -0
  54. three/src/materials/ShadowMaterial.d.ts +1 -0
  55. three/src/materials/SpriteMaterial.d.ts +1 -0
  56. three/src/materials/nodes/Line2NodeMaterial.d.ts +1 -6
  57. three/src/materials/nodes/LineBasicNodeMaterial.d.ts +1 -0
  58. three/src/materials/nodes/LineDashedNodeMaterial.d.ts +1 -0
  59. three/src/materials/nodes/MeshBasicNodeMaterial.d.ts +1 -0
  60. three/src/materials/nodes/MeshLambertNodeMaterial.d.ts +1 -0
  61. three/src/materials/nodes/MeshMatcapNodeMaterial.d.ts +1 -0
  62. three/src/materials/nodes/MeshNormalNodeMaterial.d.ts +1 -0
  63. three/src/materials/nodes/MeshPhongNodeMaterial.d.ts +1 -0
  64. three/src/materials/nodes/MeshPhysicalNodeMaterial.d.ts +1 -0
  65. three/src/materials/nodes/MeshSSSNodeMaterial.d.ts +1 -0
  66. three/src/materials/nodes/MeshStandardNodeMaterial.d.ts +1 -0
  67. three/src/materials/nodes/MeshToonNodeMaterial.d.ts +1 -0
  68. three/src/materials/nodes/NodeMaterial.d.ts +1 -0
  69. three/src/materials/nodes/PointsNodeMaterial.d.ts +22 -0
  70. three/src/materials/nodes/ShadowNodeMaterial.d.ts +1 -0
  71. three/src/materials/nodes/SpriteNodeMaterial.d.ts +1 -0
  72. three/src/materials/nodes/VolumeNodeMaterial.d.ts +1 -0
  73. three/src/materials/nodes/manager/NodeMaterialObserver.d.ts +22 -1
  74. three/src/math/ColorManagement.d.ts +1 -1
  75. three/src/math/Frustum.d.ts +1 -1
  76. three/src/math/Line3.d.ts +1 -0
  77. three/src/math/Matrix4.d.ts +2 -0
  78. three/src/nodes/Nodes.d.ts +4 -0
  79. three/src/nodes/TSL.d.ts +4 -0
  80. three/src/nodes/accessors/Camera.d.ts +2 -0
  81. three/src/nodes/accessors/TextureNode.d.ts +4 -0
  82. three/src/nodes/core/ContextNode.d.ts +11 -1
  83. three/src/nodes/core/Node.d.ts +13 -13
  84. three/src/nodes/core/UniformNode.d.ts +13 -4
  85. three/src/nodes/core/VarNode.d.ts +11 -15
  86. three/src/nodes/display/PassNode.d.ts +10 -0
  87. three/src/nodes/display/ScreenNode.d.ts +4 -1
  88. three/src/nodes/display/ToneMappingNode.d.ts +2 -2
  89. three/src/nodes/display/ViewportDepthTextureNode.d.ts +3 -0
  90. three/src/nodes/display/ViewportSharedTextureNode.d.ts +3 -0
  91. three/src/nodes/display/ViewportTextureNode.d.ts +4 -0
  92. three/src/nodes/gpgpu/ComputeNode.d.ts +15 -6
  93. three/src/nodes/gpgpu/SubgroupFunctionNode.d.ts +100 -0
  94. three/src/nodes/materialx/MaterialXNodes.d.ts +85 -20
  95. three/src/nodes/materialx/lib/mx_noise.d.ts +28 -0
  96. three/src/nodes/math/BitcastNode.d.ts +25 -0
  97. three/src/nodes/math/MathNode.d.ts +10 -5
  98. three/src/nodes/tsl/TSLCore.d.ts +16 -0
  99. three/src/nodes/utils/EventNode.d.ts +21 -0
  100. three/src/nodes/utils/RTTNode.d.ts +2 -0
  101. three/src/nodes/utils/ReflectorNode.d.ts +16 -1
  102. three/src/nodes/utils/SampleNode.d.ts +3 -2
  103. three/src/nodes/utils/Timer.d.ts +0 -15
  104. three/src/objects/InstancedMesh.d.ts +2 -3
  105. three/src/renderers/WebGLRenderer.d.ts +0 -25
  106. three/src/renderers/common/Attributes.d.ts +1 -1
  107. three/src/renderers/common/Color4.d.ts +2 -2
  108. three/src/renderers/common/Renderer.d.ts +17 -9
  109. three/src/renderers/common/SampledTexture.d.ts +2 -9
  110. three/src/renderers/common/Sampler.d.ts +9 -3
  111. three/src/renderers/common/Storage3DTexture.d.ts +2 -0
  112. three/src/renderers/common/StorageArrayTexture.d.ts +2 -0
  113. three/src/renderers/common/StorageTexture.d.ts +2 -0
  114. three/src/renderers/common/Textures.d.ts +1 -1
  115. three/src/renderers/common/TimestampQueryPool.d.ts +3 -4
  116. three/src/renderers/common/XRManager.d.ts +11 -0
  117. three/src/renderers/common/nodes/NodeLibrary.d.ts +5 -5
  118. three/src/renderers/webgl/WebGLCapabilities.d.ts +2 -2
  119. three/src/renderers/webgpu/nodes/WGSLNodeBuilder.d.ts +0 -1
  120. three/src/renderers/webgpu/utils/WebGPUConstants.d.ts +1 -1
  121. three/src/renderers/webxr/WebXRDepthSensing.d.ts +4 -5
  122. three/src/renderers/webxr/WebXRManager.d.ts +4 -2
  123. three/src/textures/CompressedTexture.d.ts +4 -4
  124. three/src/textures/Data3DTexture.d.ts +2 -1
  125. three/src/textures/DataTexture.d.ts +3 -2
  126. three/src/textures/ExternalTexture.d.ts +11 -0
  127. three/src/textures/Texture.d.ts +1 -1
  128. three/examples/jsm/loaders/RGBMLoader.d.ts +0 -37
  129. three/examples/jsm/tsl/display/TRAAPassNode.d.ts +0 -15
@@ -139,13 +139,6 @@ declare class Node extends EventDispatcher<{
139
139
  * @return {Node} A reference to this node.
140
140
  */
141
141
  onReference(callback: (this: this, frame: NodeBuilder | NodeFrame) => unknown): this;
142
- /**
143
- * The `this` reference might point to a Proxy so this method can be used
144
- * to get the reference to the actual node instance.
145
- *
146
- * @return {Node} A reference to the node.
147
- */
148
- getSelf(): this;
149
142
  /**
150
143
  * Nodes might refer to other objects like materials. This method allows to dynamically update the reference
151
144
  * to such objects based on a given state (e.g. the current node frame or builder).
@@ -267,10 +260,17 @@ declare class Node extends EventDispatcher<{
267
260
  * @return {Node} The shared node if possible. Otherwise `this` is returned.
268
261
  */
269
262
  getShared(builder: NodeBuilder): Node;
263
+ /**
264
+ * Returns the number of elements in the node array.
265
+ *
266
+ * @param {NodeBuilder} builder - The current node builder.
267
+ * @return {?number} The number of elements in the node array.
268
+ */
269
+ getArrayCount(builder: NodeBuilder): number | null;
270
270
  /**
271
271
  * Represents the setup stage which is the first step of the build process, see {@link Node#build} method.
272
- * This method is often overwritten in derived modules to prepare the node which is used as the output/result.
273
- * The output node must be returned in the `return` statement.
272
+ * This method is often overwritten in derived modules to prepare the node which is used as a node's output/result.
273
+ * If an output node is prepared, then it must be returned in the `return` statement of the derived module's setup function.
274
274
  *
275
275
  * @param {NodeBuilder} builder - The current node builder.
276
276
  * @return {?Node} The output node.
@@ -289,7 +289,7 @@ declare class Node extends EventDispatcher<{
289
289
  * This state builds the output node and returns the resulting shader string.
290
290
  *
291
291
  * @param {NodeBuilder} builder - The current node builder.
292
- * @param {?string} output - Can be used to define the output type.
292
+ * @param {?string} [output] - Can be used to define the output type.
293
293
  * @return {?string} The generated shader string.
294
294
  */
295
295
  generate(builder: NodeBuilder, output?: string | null): string | null | undefined;
@@ -327,14 +327,14 @@ declare class Node extends EventDispatcher<{
327
327
  * - **generate**: Generates the shader code for the node. Returns the generated shader string.
328
328
  *
329
329
  * @param {NodeBuilder} builder - The current node builder.
330
- * @param {string|Node|null} [output=null] - Can be used to define the output type.
331
- * @return {Node|string|null} The result of the build process, depending on the build stage.
330
+ * @param {?(string|Node)} [output=null] - Can be used to define the output type.
331
+ * @return {?(Node|string)} The result of the build process, depending on the build stage.
332
332
  */
333
333
  build(builder: NodeBuilder, output?: string | Node | null): Node | string | null;
334
334
  /**
335
335
  * Returns the child nodes as a JSON object.
336
336
  *
337
- * @return {Array<Object>} An iterable list of serialized child objects as JSON.
337
+ * @return {Generator<Object>} An iterable list of serialized child objects as JSON.
338
338
  */
339
339
  getSerializeChildren(): Generator<import("./NodeUtils.js").NodeChild, void, unknown>;
340
340
  /**
@@ -27,6 +27,14 @@ declare class UniformNode<TValue> extends InputNode<TValue> {
27
27
  * @param {string} name - The name of the uniform.
28
28
  * @return {UniformNode} A reference to this node.
29
29
  */
30
+ setName(name: string): this;
31
+ /**
32
+ * Sets the {@link UniformNode#name} property.
33
+ *
34
+ * @deprecated
35
+ * @param {string} name - The name of the uniform.
36
+ * @return {UniformNode} A reference to this node.
37
+ */
30
38
  label(name: string): this;
31
39
  /**
32
40
  * Sets the {@link UniformNode#groupNode} property.
@@ -50,6 +58,7 @@ declare class UniformNode<TValue> extends InputNode<TValue> {
50
58
  */
51
59
  getUniformHash(builder: NodeBuilder): string;
52
60
  onUpdate(callback: (frame: NodeFrame, self: this) => TValue | undefined, updateType: NodeUpdateType): this;
61
+ getInputType(builder: NodeBuilder): string | null;
53
62
  generate(builder: NodeBuilder, output: string | null): string;
54
63
  }
55
64
  export default UniformNode;
@@ -58,11 +67,11 @@ export default UniformNode;
58
67
  *
59
68
  * @tsl
60
69
  * @function
61
- * @param {any} arg1 - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color, texture).
62
- * @param {string} [arg2] - The node type. If no explicit type is defined, the node tries to derive the type from its value.
70
+ * @param {any|string} value - The value of this uniform or your type. Usually a JS primitive or three.js object (vector, matrix, color, texture).
71
+ * @param {string} [type] - The node type. If no explicit type is defined, the node tries to derive the type from its value.
63
72
  * @returns {UniformNode}
64
73
  */
65
74
  export declare const uniform: <TValue>(
66
- arg1: InputNode<TValue> | TValue,
67
- arg2?: Node | string,
75
+ value: InputNode<TValue> | TValue,
76
+ type?: Node | string,
68
77
  ) => import("../tsl/TSLCore.js").ShaderNodeObject<UniformNode<TValue>>;
@@ -1,7 +1,7 @@
1
1
  import { ShaderNodeObject } from "../tsl/TSLCore.js";
2
2
  import Node from "./Node.js";
3
3
 
4
- export default class VarNode extends Node {
4
+ declare class VarNode extends Node {
5
5
  node: Node;
6
6
  name: string | null;
7
7
 
@@ -9,30 +9,26 @@ export default class VarNode extends Node {
9
9
 
10
10
  readOnly: boolean;
11
11
 
12
+ intent: boolean;
13
+
12
14
  constructor(node: Node, name?: string | null, readOnly?: boolean);
15
+
16
+ setIntent(value: boolean): this;
17
+ getIntent(): boolean;
13
18
  }
14
19
 
20
+ export default VarNode;
21
+
15
22
  export const Var: (node: Node, name?: string | null) => ShaderNodeObject<VarNode>;
16
23
 
17
24
  export const Const: (node: Node, name?: string | null) => ShaderNodeObject<VarNode>;
18
25
 
26
+ export const VarIntent: (node: Node) => Node;
27
+
19
28
  declare module "../tsl/TSLCore.js" {
20
29
  interface NodeElements {
21
30
  toVar: (node: Node, name?: string | null) => ShaderNodeObject<VarNode>;
22
31
  toConst: (node: Node, name?: string | null) => ShaderNodeObject<VarNode>;
23
- }
24
- }
25
-
26
- /**
27
- * @deprecated Use ".toVar()" instead.
28
- */
29
- export const temp: (node: Node, name?: string | null) => ShaderNodeObject<VarNode>;
30
-
31
- declare module "../tsl/TSLCore.js" {
32
- interface NodeElements {
33
- /**
34
- * @deprecated Use ".toVar()" instead.
35
- */
36
- temp: typeof temp;
32
+ toVarIntent: (node: Node) => Node;
37
33
  }
38
34
  }
@@ -1,6 +1,8 @@
1
1
  import { Camera } from "../../cameras/Camera.js";
2
2
  import { Layers } from "../../core/Layers.js";
3
3
  import { RenderTarget, RenderTargetOptions } from "../../core/RenderTarget.js";
4
+ import { Vector4 } from "../../math/Vector4.js";
5
+ import Renderer from "../../renderers/common/Renderer.js";
4
6
  import { Scene } from "../../scenes/Scene.js";
5
7
  import { Texture } from "../../textures/Texture.js";
6
8
  import TextureNode from "../accessors/TextureNode.js";
@@ -61,8 +63,16 @@ declare class PassNode extends TempNode {
61
63
 
62
64
  getLinearDepthNode(name?: string): ShaderNodeObject<Node>;
63
65
 
66
+ compileAsync(renderer: Renderer): Promise<void>;
67
+
64
68
  setSize(width: number, height: number): void;
65
69
 
70
+ setScissor(x: number, y: number, width: number, height: number): void;
71
+ setScissor(x: Vector4): void;
72
+
73
+ setViewport(x: number, y: number, width: number, height: number): void;
74
+ setViewport(x: Vector4): void;
75
+
66
76
  setPixelRatio(pixelRatio: number): void;
67
77
 
68
78
  dispose(): void;
@@ -5,7 +5,8 @@ export type ScreenNodeScope =
5
5
  | typeof ScreenNode.COORDINATE
6
6
  | typeof ScreenNode.VIEWPORT
7
7
  | typeof ScreenNode.SIZE
8
- | typeof ScreenNode.UV;
8
+ | typeof ScreenNode.UV
9
+ | typeof ScreenNode.DPR;
9
10
 
10
11
  declare class ScreenNode extends Node {
11
12
  scope: ScreenNodeScope;
@@ -18,12 +19,14 @@ declare class ScreenNode extends Node {
18
19
  static VIEWPORT: "viewport";
19
20
  static SIZE: "size";
20
21
  static UV: "uv";
22
+ static DPR: "dpr";
21
23
  }
22
24
 
23
25
  export default ScreenNode;
24
26
 
25
27
  // Screen
26
28
 
29
+ export const screenDPR: ShaderNodeObject<ScreenNode>;
27
30
  export const screenUV: ShaderNodeObject<ScreenNode>;
28
31
  export const screenSize: ShaderNodeObject<ScreenNode>;
29
32
  export const screenCoordinate: ShaderNodeObject<ScreenNode>;
@@ -16,7 +16,7 @@ export default ToneMappingNode;
16
16
 
17
17
  export const toneMapping: (
18
18
  mapping: ToneMapping,
19
- exposure: Node,
19
+ exposure: Node | number,
20
20
  color?: Node,
21
21
  ) => ShaderNodeObject<ToneMappingNode>;
22
22
  export const toneMappingExposure: ShaderNodeObject<RendererReferenceNode>;
@@ -26,7 +26,7 @@ declare module "../tsl/TSLCore.js" {
26
26
  toneMapping: (
27
27
  color: Node,
28
28
  mapping?: ToneMapping,
29
- exposure?: Node,
29
+ exposure?: Node | number,
30
30
  ) => ShaderNodeObject<ToneMappingNode>;
31
31
  }
32
32
  }
@@ -1,9 +1,12 @@
1
+ import { DepthTexture } from "../../textures/DepthTexture.js";
1
2
  import Node from "../core/Node.js";
2
3
  import { ShaderNodeObject } from "../tsl/TSLCore.js";
3
4
  import ViewportTextureNode from "./ViewportTextureNode.js";
4
5
 
5
6
  declare class ViewportDepthTextureNode extends ViewportTextureNode {
6
7
  constructor(uvNode?: Node, levelNode?: Node | null);
8
+
9
+ getTextureForReference(): DepthTexture;
7
10
  }
8
11
 
9
12
  export default ViewportDepthTextureNode;
@@ -1,9 +1,12 @@
1
+ import { FramebufferTexture } from "../../textures/FramebufferTexture.js";
1
2
  import Node from "../core/Node.js";
2
3
  import { ShaderNodeObject } from "../tsl/TSLCore.js";
3
4
  import ViewportTextureNode from "./ViewportTextureNode.js";
4
5
 
5
6
  declare class ViewportSharedTextureNode extends ViewportTextureNode {
6
7
  constructor(uvNode?: Node, levelNode?: Node | null);
8
+
9
+ getTextureForReference(): FramebufferTexture;
7
10
  }
8
11
 
9
12
  export default ViewportSharedTextureNode;
@@ -1,4 +1,6 @@
1
+ import { RenderTarget } from "../../core/RenderTarget.js";
1
2
  import { FramebufferTexture } from "../../textures/FramebufferTexture.js";
3
+ import { Texture } from "../../textures/Texture.js";
2
4
  import TextureNode from "../accessors/TextureNode.js";
3
5
  import { NodeUpdateType } from "../core/constants.js";
4
6
  import Node from "../core/Node.js";
@@ -12,6 +14,8 @@ declare class ViewportTextureNode extends TextureNode {
12
14
  updateBeforeType: NodeUpdateType;
13
15
 
14
16
  constructor(uvNode?: Node, levelNode?: Node | null, framebufferTexture?: FramebufferTexture | null);
17
+
18
+ getTextureForReference(reference?: RenderTarget | null): Texture;
15
19
  }
16
20
 
17
21
  export default ViewportTextureNode;
@@ -3,24 +3,32 @@ import Node from "../core/Node.js";
3
3
  import { ShaderNodeObject } from "../tsl/TSLCore.js";
4
4
 
5
5
  export default class ComputeNode extends Node {
6
- isComputeNode: true;
6
+ readonly isComputeNode: true;
7
7
 
8
- count: number;
8
+ computeNode: Node;
9
9
  workgroupSize: number[];
10
- dispatchCount: number;
10
+ count: number | null;
11
11
  name: string;
12
12
 
13
13
  onInitFunction: ((args: { renderer: Renderer }) => void) | null;
14
14
 
15
- constructor(computeNode: Node, count: number, workgroupSize?: number[]);
15
+ constructor(computeNode: Node, workgroupSize: number[]);
16
16
 
17
- label(name: string): void;
17
+ setCount(count: number): this;
18
+ getCount(): number | null;
18
19
 
19
- updateDispatchCount(): void;
20
+ setName(name: string): this;
21
+
22
+ /**
23
+ * @deprecated "label()" has been deprecated. Use "setName()" instead.
24
+ */
25
+ label(name: string): this;
20
26
 
21
27
  onInit(callback: ((args: { renderer: Renderer }) => void) | null): void;
22
28
  }
23
29
 
30
+ export const computeKernel: (node: Node, workgroupSize?: number[]) => ShaderNodeObject<ComputeNode>;
31
+
24
32
  export const compute: (
25
33
  node: Node,
26
34
  count: number,
@@ -30,5 +38,6 @@ export const compute: (
30
38
  declare module "../tsl/TSLCore.js" {
31
39
  interface NodeElements {
32
40
  compute: typeof compute;
41
+ computeKernel: typeof computeKernel;
33
42
  }
34
43
  }
@@ -0,0 +1,100 @@
1
+ import Node from "../core/Node.js";
2
+ import TempNode from "../core/TempNode.js";
3
+ import { ShaderNodeObject } from "../tsl/TSLCore.js";
4
+
5
+ export type SubgroupFunctionNodeMethod0 = typeof SubgroupFunctionNode.SUBGROUP_ELECT;
6
+
7
+ export type SubgroupFunctionNodeMethod1 =
8
+ | typeof SubgroupFunctionNode.SUBGROUP_BALLOT
9
+ | typeof SubgroupFunctionNode.SUBGROUP_ADD
10
+ | typeof SubgroupFunctionNode.SUBGROUP_INCLUSIVE_ADD
11
+ | typeof SubgroupFunctionNode.SUBGROUP_EXCLUSIVE_AND
12
+ | typeof SubgroupFunctionNode.SUBGROUP_MUL
13
+ | typeof SubgroupFunctionNode.SUBGROUP_INCLUSIVE_MUL
14
+ | typeof SubgroupFunctionNode.SUBGROUP_EXCLUSIVE_MUL
15
+ | typeof SubgroupFunctionNode.SUBGROUP_AND
16
+ | typeof SubgroupFunctionNode.SUBGROUP_OR
17
+ | typeof SubgroupFunctionNode.SUBGROUP_XOR
18
+ | typeof SubgroupFunctionNode.SUBGROUP_MIN
19
+ | typeof SubgroupFunctionNode.SUBGROUP_MAX
20
+ | typeof SubgroupFunctionNode.SUBGROUP_ALL
21
+ | typeof SubgroupFunctionNode.SUBGROUP_ANY
22
+ | typeof SubgroupFunctionNode.SUBGROUP_BROADCAST_FIRST
23
+ | typeof SubgroupFunctionNode.QUAD_SWAP_X
24
+ | typeof SubgroupFunctionNode.QUAD_SWAP_Y
25
+ | typeof SubgroupFunctionNode.QUAD_SWAP_DIAGONAL;
26
+
27
+ export type SubgroupFunctionNodeMethod2 =
28
+ | typeof SubgroupFunctionNode.SUBGROUP_BROADCAST
29
+ | typeof SubgroupFunctionNode.SUBGROUP_SHUFFLE
30
+ | typeof SubgroupFunctionNode.SUBGROUP_SHUFFLE_XOR
31
+ | typeof SubgroupFunctionNode.SUBGROUP_SHUFFLE_UP
32
+ | typeof SubgroupFunctionNode.SUBGROUP_SHUFFLE_DOWN
33
+ | typeof SubgroupFunctionNode.QUAD_BROADCAST;
34
+
35
+ declare class SubgroupFunctionNode extends TempNode {
36
+ constructor(method: SubgroupFunctionNodeMethod0);
37
+ constructor(method: SubgroupFunctionNodeMethod1, aNode: Node);
38
+ constructor(method: SubgroupFunctionNodeMethod2, aNode: Node, bNode: Node);
39
+
40
+ // 0 inputs
41
+ static SUBGROUP_ELECT: "subgroupElect";
42
+
43
+ // 1 input
44
+ static SUBGROUP_BALLOT: "subgroupBallot";
45
+ static SUBGROUP_ADD: "subgroupAdd";
46
+ static SUBGROUP_INCLUSIVE_ADD: "subgroupInclusiveAdd";
47
+ static SUBGROUP_EXCLUSIVE_AND: "subgroupExclusiveAdd";
48
+ static SUBGROUP_MUL: "subgroupMul";
49
+ static SUBGROUP_INCLUSIVE_MUL: "subgroupInclusiveMul";
50
+ static SUBGROUP_EXCLUSIVE_MUL: "subgroupExclusiveMul";
51
+ static SUBGROUP_AND: "subgroupAnd";
52
+ static SUBGROUP_OR: "subgroupOr";
53
+ static SUBGROUP_XOR: "subgroupXor";
54
+ static SUBGROUP_MIN: "subgroupMin";
55
+ static SUBGROUP_MAX: "subgroupMax";
56
+ static SUBGROUP_ALL: "subgroupAll";
57
+ static SUBGROUP_ANY: "subgroupAny";
58
+ static SUBGROUP_BROADCAST_FIRST: "subgroupBroadcastFirst";
59
+ static QUAD_SWAP_X: "quadSwapX";
60
+ static QUAD_SWAP_Y: "quadSwapY";
61
+ static QUAD_SWAP_DIAGONAL: "quadSwapDiagonal";
62
+
63
+ // 2 inputs
64
+ static SUBGROUP_BROADCAST: "subgroupBroadcast";
65
+ static SUBGROUP_SHUFFLE: "subgroupShuffle";
66
+ static SUBGROUP_SHUFFLE_XOR: "subgroupShuffleXor";
67
+ static SUBGROUP_SHUFFLE_UP: "subgroupShuffleUp";
68
+ static SUBGROUP_SHUFFLE_DOWN: "subgroupShuffleDown";
69
+ static QUAD_BROADCAST: "quadBroadcast";
70
+ }
71
+
72
+ export default SubgroupFunctionNode;
73
+
74
+ export const subgroupElect: () => ShaderNodeObject<Node>;
75
+
76
+ export const subgroupBallot: (pred: Node) => ShaderNodeObject<Node>;
77
+ export const subgroupAdd: (e: Node) => ShaderNodeObject<Node>;
78
+ export const subgroupInclusiveAdd: (e: Node) => ShaderNodeObject<Node>;
79
+ export const subgroupExclusiveAdd: (e: Node) => ShaderNodeObject<Node>;
80
+ export const subgroupMul: (e: Node) => ShaderNodeObject<Node>;
81
+ export const subgroupInclusiveMul: (e: Node) => ShaderNodeObject<Node>;
82
+ export const subgroupExclusiveMul: (e: Node) => ShaderNodeObject<Node>;
83
+ export const subgroupAnd: (e: Node) => ShaderNodeObject<Node>;
84
+ export const subgroupOr: (e: Node) => ShaderNodeObject<Node>;
85
+ export const subgroupXor: (e: Node) => ShaderNodeObject<Node>;
86
+ export const subgroupMin: (e: Node) => ShaderNodeObject<Node>;
87
+ export const subgroupMax: (e: Node) => ShaderNodeObject<Node>;
88
+ export const subgroupAll: () => ShaderNodeObject<Node>;
89
+ export const subgroupAny: () => ShaderNodeObject<Node>;
90
+ export const subgroupBroadcastFirst: (e: Node, id: Node) => ShaderNodeObject<Node>;
91
+ export const quadSwapX: (e: Node) => ShaderNodeObject<Node>;
92
+ export const quadSwapY: (e: Node) => ShaderNodeObject<Node>;
93
+ export const quadSwapDiagonal: (e: Node) => ShaderNodeObject<Node>;
94
+
95
+ export const subgroupBroadcast: (e: Node, id: Node) => ShaderNodeObject<Node>;
96
+ export const subgroupShuffle: (v: Node, id: Node) => ShaderNodeObject<Node>;
97
+ export const subgroupShuffleXor: (v: Node, mask: Node) => ShaderNodeObject<Node>;
98
+ export const subgroupShuffleUp: (v: Node, delta: Node) => ShaderNodeObject<Node>;
99
+ export const subgroupShuffleDown: (v: Node, delta: Node) => ShaderNodeObject<Node>;
100
+ export const quadBroadcast: (e: Node) => ShaderNodeObject<Node>;
@@ -4,61 +4,96 @@ import { ShaderNodeObject } from "../tsl/TSLCore.js";
4
4
  import { mx_hsvtorgb, mx_rgbtohsv } from "./lib/mx_hsv.js";
5
5
  import { mx_srgb_texture_to_lin_rec709 } from "./lib/mx_transform_color.js";
6
6
 
7
- export function mx_aastep(threshold: Node | number, value: Node | number): ShaderNodeObject<MathNode>;
7
+ export const mx_aastep: (threshold: Node | number, value: Node | number) => ShaderNodeObject<MathNode>;
8
8
 
9
- export function mx_ramplr(
9
+ export const mx_ramplr: (
10
10
  valuel: Node | number,
11
11
  valuer: Node | number,
12
12
  texcoord?: Node,
13
- ): ShaderNodeObject<MathNode>;
14
- export function mx_ramptb(
13
+ ) => ShaderNodeObject<MathNode>;
14
+ export const mx_ramptb: (
15
15
  valuet: Node | number,
16
16
  valueb: Node | number,
17
17
  texcoord?: Node,
18
- ): ShaderNodeObject<MathNode>;
18
+ ) => ShaderNodeObject<MathNode>;
19
19
 
20
- export function mx_splitlr(
20
+ export const mx_ramp4: (
21
+ valuetl: Node | number,
22
+ valuetr: Node | number,
23
+ valuebl: Node | number,
24
+ valuebr: Node | number,
25
+ texcoord?: Node,
26
+ ) => ShaderNodeObject<MathNode>;
27
+
28
+ export const mx_splitlr: (
21
29
  valuel: Node | number,
22
30
  valuer: Node | number,
23
31
  center: Node | number,
24
32
  texcoord?: Node,
25
- ): ShaderNodeObject<MathNode>;
26
- export function mx_splittb(
33
+ ) => ShaderNodeObject<MathNode>;
34
+ export const mx_splittb: (
27
35
  valuet: Node | number,
28
36
  valueb: Node | number,
29
37
  center: Node | number,
30
38
  texcoord?: Node,
31
- ): ShaderNodeObject<MathNode>;
39
+ ) => ShaderNodeObject<MathNode>;
32
40
 
33
- export function mx_transform_uv(
41
+ export const mx_transform_uv: (
34
42
  uv_scale?: Node | number,
35
43
  uv_offset?: Node | number,
36
44
  uv_geo?: Node,
37
- ): ShaderNodeObject<Node>;
45
+ ) => ShaderNodeObject<Node>;
38
46
 
39
- export function mx_safepower(in1: Node | number, in2?: Node | number): ShaderNodeObject<Node>;
47
+ export const mx_safepower: (in1: Node | number, in2?: Node | number) => ShaderNodeObject<Node>;
40
48
 
41
- export function mx_contrast(
49
+ export const mx_contrast: (
42
50
  input: Node | number,
43
51
  amount?: Node | number,
44
52
  pivot?: Node | number,
45
- ): ShaderNodeObject<Node>;
53
+ ) => ShaderNodeObject<Node>;
46
54
 
47
- export function mx_noise_float(
55
+ export const mx_noise_float: (
48
56
  texcoord?: Node,
49
57
  amplitude?: Node | number,
50
58
  pivot?: Node | number,
51
- ): ShaderNodeObject<Node>;
52
- export function mx_noise_vec3(
59
+ ) => ShaderNodeObject<Node>;
60
+ export const mx_noise_vec3: (
53
61
  texcoord?: Node,
54
62
  amplitude?: Node | number,
55
63
  pivot?: Node | number,
56
- ): ShaderNodeObject<Node>;
57
- export function mx_noise_vec4(
64
+ ) => ShaderNodeObject<Node>;
65
+ export const mx_noise_vec4: (
58
66
  texcoord?: Node,
59
67
  amplitude?: Node | number,
60
68
  pivot?: Node | number,
61
- ): ShaderNodeObject<Node>;
69
+ ) => ShaderNodeObject<Node>;
70
+
71
+ export const mx_unifiednoise2d: (
72
+ noiseType: Node,
73
+ texcoord?: Node,
74
+ freq?: Node,
75
+ offset?: Node,
76
+ jitter?: Node | number,
77
+ outmin?: Node | number,
78
+ outmax?: Node | number,
79
+ clampoutput?: Node | boolean,
80
+ octaves?: Node | number,
81
+ lacunarity?: Node | number,
82
+ diminish?: Node | number,
83
+ ) => ShaderNodeObject<Node>;
84
+ export const mx_unifiednoise3d: (
85
+ noiseType: Node,
86
+ texcoord?: Node,
87
+ freq?: Node,
88
+ offset?: Node,
89
+ jitter?: Node | number,
90
+ outmin?: Node | number,
91
+ outmax?: Node | number,
92
+ clampoutput?: Node | boolean,
93
+ octaves?: Node | number,
94
+ lacunarity?: Node | number,
95
+ diminish?: Node | number,
96
+ ) => ShaderNodeObject<Node>;
62
97
 
63
98
  export function mx_worley_noise_float(
64
99
  texcoord?: Node,
@@ -105,3 +140,33 @@ export function mx_fractal_noise_vec4(
105
140
  ): ShaderNodeObject<Node>;
106
141
 
107
142
  export { mx_hsvtorgb, mx_rgbtohsv, mx_srgb_texture_to_lin_rec709 };
143
+
144
+ export const mx_add: (in1: Node, in2?: Node) => ShaderNodeObject<Node>;
145
+ export const mx_subtract: (in1: Node, in2?: Node) => ShaderNodeObject<Node>;
146
+ export const mx_multiply: (in1: Node, in2?: Node) => ShaderNodeObject<Node>;
147
+ export const mx_divide: (in1: Node, in2?: Node) => ShaderNodeObject<Node>;
148
+ export const mx_modulo: (in1: Node, in2?: Node) => ShaderNodeObject<Node>;
149
+ export const mx_power: (in1: Node, in2?: Node) => ShaderNodeObject<Node>;
150
+ export const mx_atan2: (in1?: Node, in2?: Node) => ShaderNodeObject<Node>;
151
+ export const mx_timer: () => ShaderNodeObject<Node>;
152
+ export const mx_frame: () => ShaderNodeObject<Node>;
153
+ export const mx_invert: (in1: Node, amount?: Node) => ShaderNodeObject<Node>;
154
+ export const mx_ifgreater: (value1: Node, value2: Node, in1: Node, in2: Node) => ShaderNodeObject<Node>;
155
+ export const mx_ifgreatereq: (value1: Node, value2: Node, in1: Node, in2: Node) => ShaderNodeObject<Node>;
156
+ export const mx_ifequal: (value1: Node, value2: Node, in1: Node, in2: Node) => ShaderNodeObject<Node>;
157
+
158
+ export const mx_separate: (in1: Node, channelOrOut?: string | number) => ShaderNodeObject<Node>;
159
+
160
+ export const mx_place2d: (
161
+ texcoord: Node,
162
+ pivot?: Node,
163
+ scale?: Node,
164
+ rotate?: Node,
165
+ offset?: Node,
166
+ ) => ShaderNodeObject<Node>;
167
+
168
+ export const mx_rotate2d: (input: Node, amount: Node) => ShaderNodeObject<Node>;
169
+
170
+ export const mx_rotate3d: (input: Node, amount: Node, axis: Node) => ShaderNodeObject<Node>;
171
+
172
+ export const mx_heighttonormal: (input: Node, scale: Node) => ShaderNodeObject<Node>;
@@ -357,3 +357,31 @@ export const mx_worley_noise_vec3: (
357
357
  jitter_immutable: Node | number,
358
358
  metric_immutable: Node | number,
359
359
  ) => ShaderNodeObject<Node>;
360
+
361
+ export const mx_unifiednoise2d: (
362
+ noiseType_immutable: Node,
363
+ texcoord_immutable: Node,
364
+ freq_immutable: Node,
365
+ offset_immutable: Node,
366
+ jitter_immutable: Node,
367
+ outmin_immutable: Node,
368
+ outmax_immutable: Node,
369
+ clampoutput_immutable: Node,
370
+ octaves_immutable: Node,
371
+ lacunarity_immutable: Node,
372
+ diminish_immutable: Node,
373
+ ) => ShaderNodeObject<Node>;
374
+
375
+ export const mx_unifiednoise3d: (
376
+ noiseType_immutable: Node,
377
+ position_immutable: Node,
378
+ freq_immutable: Node,
379
+ offset_immutable: Node,
380
+ jitter_immutable: Node,
381
+ outmin_immutable: Node,
382
+ outmax_immutable: Node,
383
+ clampoutput_immutable: Node,
384
+ octaves_immutable: Node,
385
+ lacunarity_immutable: Node,
386
+ diminish_immutable: Node,
387
+ ) => ShaderNodeObject<Node>;
@@ -0,0 +1,25 @@
1
+ import Node from "../core/Node.js";
2
+ import TempNode from "../core/TempNode.js";
3
+ import { ShaderNodeObject } from "../tsl/TSLCore.js";
4
+
5
+ declare class BitcastNode extends TempNode {
6
+ valueNode: Node;
7
+ conversionType: string;
8
+ inputType: string | null;
9
+
10
+ readonly isBitcastNode: true;
11
+
12
+ constructor(valueNode: Node, conversionType: string, inputType: string | null);
13
+ }
14
+
15
+ export default BitcastNode;
16
+
17
+ export const bitcast: (x: Node | number, y: string) => ShaderNodeObject<BitcastNode>;
18
+
19
+ export const floatBitsToInt: (value: Node) => ShaderNodeObject<BitcastNode>;
20
+
21
+ export const floatBitsToUint: (value: Node) => ShaderNodeObject<BitcastNode>;
22
+
23
+ export const intBitsToFloat: (value: Node) => ShaderNodeObject<BitcastNode>;
24
+
25
+ export const uintBitsToFloat: (value: Node) => ShaderNodeObject<BitcastNode>;
@@ -34,8 +34,9 @@ export type MathNodeMethod1 =
34
34
  | typeof MathNode.RECIPROCAL
35
35
  | typeof MathNode.TRUNC
36
36
  | typeof MathNode.FWIDTH
37
- | typeof MathNode.BITCAST
38
- | typeof MathNode.TRANSPOSE;
37
+ | typeof MathNode.TRANSPOSE
38
+ | typeof MathNode.DETERMINANT
39
+ | typeof MathNode.INVERSE;
39
40
 
40
41
  export type MathNodeMethod2 =
41
42
  | typeof MathNode.MIN
@@ -93,8 +94,9 @@ export default class MathNode extends TempNode {
93
94
  static RECIPROCAL: "reciprocal";
94
95
  static TRUNC: "trunc";
95
96
  static FWIDTH: "fwidth";
96
- static BITCAST: "bitcast";
97
97
  static TRANSPOSE: "transpose";
98
+ static DETERMINANT: "determinant";
99
+ static INVERSE: "inverse";
98
100
 
99
101
  // 2 inputs
100
102
 
@@ -175,10 +177,11 @@ export const reciprocal: Unary;
175
177
  export const trunc: Unary;
176
178
  export const fwidth: Unary;
177
179
  export const transpose: Unary;
180
+ export const determinant: (x: Node) => ShaderNodeObject<MathNode>;
181
+ export const inverse: (x: Node) => ShaderNodeObject<MathNode>;
178
182
 
179
183
  type Binary = (a: MathNodeParameter, b: MathNodeParameter) => ShaderNodeObject<MathNode>;
180
184
 
181
- export const bitcast: Binary;
182
185
  export const min: (
183
186
  x: MathNodeParameter,
184
187
  y: MathNodeParameter,
@@ -194,7 +197,7 @@ export const reflect: Binary;
194
197
  export const distance: Binary;
195
198
  export const difference: Binary;
196
199
  export const dot: Binary;
197
- export const cross: Binary;
200
+ export const cross: (x: Node, y: Node) => ShaderNodeObject<MathNode>;
198
201
  export const pow: Binary;
199
202
  export const pow2: Unary;
200
203
  export const pow3: Unary;
@@ -291,6 +294,8 @@ declare module "../tsl/TSLCore.js" {
291
294
  saturate: typeof saturate;
292
295
  cbrt: typeof cbrt;
293
296
  transpose: typeof transpose;
297
+ determinant: typeof determinant;
298
+ inverse: typeof inverse;
294
299
  rand: typeof rand;
295
300
  }
296
301
  }