@types/three 0.164.1 → 0.166.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 (181) hide show
  1. three/README.md +1 -1
  2. three/examples/jsm/controls/TransformControls.d.ts +8 -6
  3. three/examples/jsm/exporters/GLTFExporter.d.ts +6 -0
  4. three/examples/jsm/exporters/USDZExporter.d.ts +4 -2
  5. three/examples/jsm/geometries/TeapotGeometry.d.ts +24 -0
  6. three/examples/jsm/helpers/ViewHelper.d.ts +8 -6
  7. three/examples/jsm/lines/LineMaterial.d.ts +2 -4
  8. three/examples/jsm/loaders/DDSLoader.d.ts +8 -2
  9. three/examples/jsm/loaders/FontLoader.d.ts +1 -1
  10. three/examples/jsm/loaders/GLTFLoader.d.ts +12 -7
  11. three/examples/jsm/loaders/KTXLoader.d.ts +8 -2
  12. three/examples/jsm/loaders/LDrawLoader.d.ts +1 -1
  13. three/examples/jsm/loaders/PVRLoader.d.ts +2 -2
  14. three/examples/jsm/modifiers/EdgeSplitModifier.d.ts +17 -10
  15. three/examples/jsm/nodes/Nodes.d.ts +21 -57
  16. three/examples/jsm/nodes/accessors/BitangentNode.d.ts +4 -22
  17. three/examples/jsm/nodes/accessors/BufferAttributeNode.d.ts +50 -0
  18. three/examples/jsm/nodes/accessors/BufferNode.d.ts +3 -4
  19. three/examples/jsm/nodes/accessors/CameraNode.d.ts +11 -20
  20. three/examples/jsm/nodes/accessors/CubeTextureNode.d.ts +1 -1
  21. three/examples/jsm/nodes/accessors/MaterialNode.d.ts +4 -1
  22. three/examples/jsm/nodes/accessors/ModelNode.d.ts +3 -0
  23. three/examples/jsm/nodes/accessors/ModelViewProjectionNode.d.ts +1 -2
  24. three/examples/jsm/nodes/accessors/NormalNode.d.ts +9 -17
  25. three/examples/jsm/nodes/accessors/PositionNode.d.ts +6 -26
  26. three/examples/jsm/nodes/accessors/ReferenceNode.d.ts +3 -4
  27. three/examples/jsm/nodes/accessors/ReflectVectorNode.d.ts +3 -8
  28. three/examples/jsm/nodes/accessors/RendererReferenceNode.d.ts +2 -3
  29. three/examples/jsm/nodes/accessors/StorageBufferNode.d.ts +16 -4
  30. three/examples/jsm/nodes/accessors/StorageTextureNode.d.ts +40 -0
  31. three/examples/jsm/nodes/accessors/TangentNode.d.ts +8 -23
  32. three/examples/jsm/nodes/accessors/Texture3DNode.d.ts +16 -0
  33. three/examples/jsm/nodes/accessors/TextureNode.d.ts +1 -1
  34. three/examples/jsm/nodes/accessors/UVNode.d.ts +1 -8
  35. three/examples/jsm/nodes/accessors/UniformsNode.d.ts +0 -2
  36. three/examples/jsm/nodes/accessors/UserDataNode.d.ts +4 -3
  37. three/examples/jsm/nodes/code/CodeNode.d.ts +0 -1
  38. three/examples/jsm/nodes/code/ExpressionNode.d.ts +2 -3
  39. three/examples/jsm/nodes/core/AttributeNode.d.ts +11 -4
  40. three/examples/jsm/nodes/core/CacheNode.d.ts +4 -5
  41. three/examples/jsm/nodes/core/ConstNode.d.ts +1 -2
  42. three/examples/jsm/nodes/core/InputNode.d.ts +1 -2
  43. three/examples/jsm/nodes/core/LightingModel.d.ts +11 -0
  44. three/examples/jsm/nodes/core/Node.d.ts +102 -42
  45. three/examples/jsm/nodes/core/NodeAttribute.d.ts +7 -4
  46. three/examples/jsm/nodes/core/NodeBuilder.d.ts +30 -26
  47. three/examples/jsm/nodes/core/NodeCache.d.ts +48 -6
  48. three/examples/jsm/nodes/core/NodeFunction.d.ts +2 -2
  49. three/examples/jsm/nodes/core/NodeKeywords.d.ts +10 -7
  50. three/examples/jsm/nodes/core/NodeParser.d.ts +4 -4
  51. three/examples/jsm/nodes/core/NodeUniform.d.ts +8 -11
  52. three/examples/jsm/nodes/core/NodeVar.d.ts +5 -4
  53. three/examples/jsm/nodes/core/NodeVarying.d.ts +5 -6
  54. three/examples/jsm/nodes/core/PropertyNode.d.ts +4 -4
  55. three/examples/jsm/nodes/core/StackNode.d.ts +7 -1
  56. three/examples/jsm/nodes/core/StructTypeNode.d.ts +8 -0
  57. three/examples/jsm/nodes/core/TempNode.d.ts +1 -2
  58. three/examples/jsm/nodes/core/UniformGroup.d.ts +7 -0
  59. three/examples/jsm/nodes/core/UniformGroupNode.d.ts +21 -0
  60. three/examples/jsm/nodes/core/UniformNode.d.ts +16 -11
  61. three/examples/jsm/nodes/core/VarNode.d.ts +2 -0
  62. three/examples/jsm/nodes/core/VaryingNode.d.ts +4 -0
  63. three/examples/jsm/nodes/core/constants.d.ts +27 -79
  64. three/examples/jsm/nodes/display/DepthOfFieldNode.d.ts +30 -0
  65. three/examples/jsm/nodes/display/DotScreenNode.d.ts +32 -0
  66. three/examples/jsm/nodes/display/PassNode.d.ts +1 -1
  67. three/examples/jsm/nodes/display/RGBShiftNode.d.ts +24 -0
  68. three/examples/jsm/nodes/display/SobelOperatorNode.d.ts +17 -0
  69. three/examples/jsm/nodes/display/ViewportDepthNode.d.ts +4 -6
  70. three/examples/jsm/nodes/functions/BSDF/LTC.d.ts +9 -0
  71. three/examples/jsm/nodes/functions/PhysicalLightingModel.d.ts +2 -0
  72. three/examples/jsm/nodes/functions/ToonLightingModel.d.ts +4 -0
  73. three/examples/jsm/nodes/lighting/RectAreaLightNode.d.ts +10 -0
  74. three/examples/jsm/nodes/loaders/NodeLoader.d.ts +3 -3
  75. three/examples/jsm/nodes/loaders/NodeObjectLoader.d.ts +2 -3
  76. three/examples/jsm/nodes/materials/LineBasicNodeMaterial.d.ts +2 -0
  77. three/examples/jsm/nodes/materials/Materials.d.ts +3 -0
  78. three/examples/jsm/nodes/materials/MeshBasicNodeMaterial.d.ts +5 -1
  79. three/examples/jsm/nodes/materials/MeshMatcapNodeMaterial.d.ts +28 -0
  80. three/examples/jsm/nodes/materials/MeshNormalNodeMaterial.d.ts +2 -0
  81. three/examples/jsm/nodes/materials/MeshPhongNodeMaterial.d.ts +7 -4
  82. three/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.d.ts +24 -17
  83. three/examples/jsm/nodes/materials/MeshSSSNodeMaterial.d.ts +6 -7
  84. three/examples/jsm/nodes/materials/MeshStandardNodeMaterial.d.ts +8 -5
  85. three/examples/jsm/nodes/materials/MeshToonNodeMaterial.d.ts +38 -0
  86. three/examples/jsm/nodes/materials/NodeMaterial.d.ts +41 -37
  87. three/examples/jsm/nodes/materials/PointsNodeMaterial.d.ts +1 -0
  88. three/examples/jsm/nodes/materials/ShadowNodeMaterial.d.ts +1 -0
  89. three/examples/jsm/nodes/materials/SpriteNodeMaterial.d.ts +3 -3
  90. three/examples/jsm/nodes/materials/VolumeNodeMaterial.d.ts +10 -0
  91. three/examples/jsm/nodes/materialx/lib/mx_hsv.d.ts +1 -0
  92. three/examples/jsm/nodes/materialx/lib/mx_noise.d.ts +230 -0
  93. three/examples/jsm/nodes/math/MathNode.d.ts +5 -1
  94. three/examples/jsm/nodes/shadernode/ShaderNode.d.ts +58 -36
  95. three/examples/jsm/nodes/utils/ConvertNode.d.ts +2 -3
  96. three/examples/jsm/nodes/utils/DiscardNode.d.ts +1 -0
  97. three/examples/jsm/nodes/utils/EquirectUVNode.d.ts +2 -2
  98. three/examples/jsm/nodes/utils/SplitNode.d.ts +1 -1
  99. three/examples/jsm/nodes/utils/TriplanarTexturesNode.d.ts +4 -5
  100. three/examples/jsm/objects/Sky.d.ts +18 -0
  101. three/examples/jsm/renderers/common/Animation.d.ts +14 -0
  102. three/examples/jsm/renderers/common/Attributes.d.ts +20 -0
  103. three/examples/jsm/renderers/common/Background.d.ts +22 -0
  104. three/examples/jsm/renderers/common/BindGroup.d.ts +9 -0
  105. three/examples/jsm/renderers/common/Binding.d.ts +8 -0
  106. three/examples/jsm/renderers/common/Bindings.d.ts +42 -0
  107. three/examples/jsm/renderers/common/Buffer.d.ts +11 -0
  108. three/examples/jsm/renderers/common/BufferUtils.d.ts +4 -0
  109. three/examples/jsm/renderers/common/ChainMap.d.ts +9 -0
  110. three/examples/jsm/renderers/common/ClippingContext.d.ts +18 -0
  111. three/examples/jsm/renderers/common/Color4.d.ts +6 -5
  112. three/examples/jsm/renderers/common/ComputePipeline.d.ts +8 -0
  113. three/examples/jsm/renderers/common/Constants.d.ts +9 -0
  114. three/examples/jsm/renderers/common/CubeRenderTarget.d.ts +7 -0
  115. three/examples/jsm/renderers/common/DataMap.d.ts +20 -0
  116. three/examples/jsm/renderers/common/Geometries.d.ts +28 -0
  117. three/examples/jsm/renderers/common/Info.d.ts +25 -13
  118. three/examples/jsm/renderers/common/Pipeline.d.ts +6 -0
  119. three/examples/jsm/renderers/common/Pipelines.d.ts +68 -0
  120. three/examples/jsm/renderers/common/PostProcessing.d.ts +2 -0
  121. three/examples/jsm/renderers/common/ProgrammableStage.d.ts +15 -0
  122. three/examples/jsm/renderers/common/RenderBundle.d.ts +8 -0
  123. three/examples/jsm/renderers/common/RenderBundles.d.ts +10 -0
  124. three/examples/jsm/renderers/common/RenderContext.d.ts +38 -0
  125. three/examples/jsm/renderers/common/RenderContexts.d.ts +13 -0
  126. three/examples/jsm/renderers/common/RenderList.d.ts +62 -0
  127. three/examples/jsm/renderers/common/RenderLists.d.ts +10 -0
  128. three/examples/jsm/renderers/common/RenderObject.d.ts +73 -0
  129. three/examples/jsm/renderers/common/RenderObjects.d.ts +59 -0
  130. three/examples/jsm/renderers/common/RenderPipeline.d.ts +8 -0
  131. three/examples/jsm/renderers/common/Renderer.d.ts +186 -208
  132. three/examples/jsm/renderers/common/SampledTexture.d.ts +27 -0
  133. three/examples/jsm/renderers/common/Sampler.d.ts +11 -0
  134. three/examples/jsm/renderers/common/StorageBufferAttribute.d.ts +7 -0
  135. three/examples/jsm/renderers/common/StorageInstancedBufferAttribute.d.ts +7 -0
  136. three/examples/jsm/renderers/common/Textures.d.ts +64 -0
  137. three/examples/jsm/renderers/common/Uniform.d.ts +40 -0
  138. three/examples/jsm/renderers/common/UniformBuffer.d.ts +6 -0
  139. three/examples/jsm/renderers/common/UniformsGroup.d.ts +32 -0
  140. three/examples/jsm/renderers/common/nodes/NodeBuilderState.d.ts +30 -0
  141. three/examples/jsm/renderers/common/nodes/NodeSampledTexture.d.ts +29 -0
  142. three/examples/jsm/renderers/common/nodes/NodeSampler.d.ts +12 -0
  143. three/examples/jsm/renderers/common/nodes/NodeUniform.d.ts +63 -0
  144. three/examples/jsm/renderers/common/nodes/NodeUniformsGroup.d.ts +11 -0
  145. three/examples/jsm/renderers/common/nodes/Nodes.d.ts +95 -0
  146. three/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.d.ts +123 -0
  147. three/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.d.ts +6 -0
  148. three/examples/jsm/renderers/webgpu/nodes/WGSLNodeParser.d.ts +6 -0
  149. three/examples/jsm/renderers/webgpu/utils/WebGPUConstants.d.ts +328 -0
  150. three/examples/jsm/utils/SceneUtils.d.ts +9 -3
  151. three/package.json +4 -4
  152. three/src/Three.d.ts +1 -0
  153. three/src/animation/tracks/StringKeyframeTrack.d.ts +1 -2
  154. three/src/constants.d.ts +6 -0
  155. three/src/core/BufferGeometry.d.ts +19 -17
  156. three/src/core/InterleavedBuffer.d.ts +2 -0
  157. three/src/extras/ShapeUtils.d.ts +5 -8
  158. three/src/extras/TextureUtils.d.ts +42 -0
  159. three/src/lights/LightShadow.d.ts +5 -0
  160. three/src/loaders/LoaderUtils.d.ts +9 -6
  161. three/src/materials/Material.d.ts +21 -12
  162. three/src/math/Color.d.ts +1 -1
  163. three/src/math/Matrix3.d.ts +2 -0
  164. three/src/math/Matrix4.d.ts +2 -0
  165. three/src/math/Vector4.d.ts +6 -0
  166. three/src/objects/BatchedMesh.d.ts +66 -47
  167. three/src/objects/InstancedMesh.d.ts +3 -3
  168. three/src/renderers/WebGLRenderer.d.ts +41 -19
  169. three/src/renderers/shaders/UniformsLib.d.ts +3 -0
  170. three/src/renderers/webgl/WebGLPrograms.d.ts +1 -1
  171. three/src/renderers/webxr/WebXRDepthSensing.d.ts +3 -1
  172. three/src/renderers/webxr/WebXRManager.d.ts +33 -23
  173. three/src/textures/CompressedArrayTexture.d.ts +36 -19
  174. three/src/textures/CompressedTexture.d.ts +16 -8
  175. three/src/textures/DataArrayTexture.d.ts +37 -20
  176. three/src/textures/FramebufferTexture.d.ts +1 -1
  177. three/src/textures/Texture.d.ts +3 -1
  178. three/src/utils.d.ts +2 -0
  179. three/examples/jsm/renderers/webgl/nodes/SlotNode.d.ts +0 -17
  180. three/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.d.ts +0 -37
  181. three/examples/jsm/renderers/webgl/nodes/WebGLNodes.d.ts +0 -3
@@ -0,0 +1,8 @@
1
+ declare class Binding {
2
+ name: string;
3
+ visibility: number;
4
+ constructor(name?: string);
5
+ setVisibility(visibility: number): void;
6
+ clone(): Binding & this;
7
+ }
8
+ export default Binding;
@@ -0,0 +1,42 @@
1
+ import ComputeNode from "../../nodes/gpgpu/ComputeNode.js";
2
+ import Attributes from "./Attributes.js";
3
+ import Backend from "./Backend.js";
4
+ import BindGroup from "./BindGroup.js";
5
+ import DataMap from "./DataMap.js";
6
+ import Info from "./Info.js";
7
+ import Nodes from "./nodes/Nodes.js";
8
+ import Pipelines from "./Pipelines.js";
9
+ import RenderObject from "./RenderObject.js";
10
+ import Textures from "./Textures.js";
11
+ interface BindGroupData {
12
+ bindGroup?: BindGroup | undefined;
13
+ }
14
+ declare class Bindings extends DataMap<{
15
+ bindGroup: {
16
+ key: BindGroup;
17
+ value: BindGroupData;
18
+ };
19
+ }> {
20
+ backend: Backend;
21
+ textures: Textures;
22
+ pipelines: Pipelines;
23
+ attributes: Attributes;
24
+ nodes: Nodes;
25
+ info: Info;
26
+ constructor(
27
+ backend: Backend,
28
+ nodes: Nodes,
29
+ textures: Textures,
30
+ attributes: Attributes,
31
+ pipelines: Pipelines,
32
+ info: Info,
33
+ );
34
+ getForRender(renderObject: RenderObject): BindGroup[];
35
+ getForCompute(computeNode: ComputeNode): BindGroup[];
36
+ updateForCompute(computeNode: ComputeNode): void;
37
+ updateForRender(renderObject: RenderObject): void;
38
+ _updateBindings(object: ComputeNode | RenderObject, bindings: BindGroup[]): void;
39
+ _init(bindGroup: BindGroup): void;
40
+ _update(object: ComputeNode | RenderObject, bindGroup: BindGroup, bindings: BindGroup[]): void;
41
+ }
42
+ export default Bindings;
@@ -0,0 +1,11 @@
1
+ import Binding from "./Binding.js";
2
+ declare class Buffer extends Binding {
3
+ readonly isBuffer: true;
4
+ bytesPerElement: number;
5
+ _buffer: Float32Array | null;
6
+ constructor(name?: string, buffer?: Float32Array | null);
7
+ get byteLength(): number;
8
+ get buffer(): Float32Array | null;
9
+ update(): boolean;
10
+ }
11
+ export default Buffer;
@@ -0,0 +1,4 @@
1
+ declare function getFloatLength(floatLength: number): number;
2
+ declare function getVectorLength(count: number, vectorLength?: number): number;
3
+ declare function getStrideLength(vectorLength: number): number;
4
+ export { getFloatLength, getStrideLength, getVectorLength };
@@ -0,0 +1,9 @@
1
+ type RecursiveWeakMap<K extends readonly object[], V> = WeakMap<K[number], V | RecursiveWeakMap<K, V>>;
2
+ export default class ChainMap<K extends readonly object[], V> {
3
+ weakMap: RecursiveWeakMap<K, V>;
4
+ constructor();
5
+ get(keys: K): V | undefined;
6
+ set(keys: K, value: V): V;
7
+ delete(keys: K): boolean;
8
+ }
9
+ export {};
@@ -0,0 +1,18 @@
1
+ import { Camera, Material, Matrix3, Matrix4, Plane, Vector4 } from "three";
2
+ import Renderer from "./Renderer.js";
3
+ declare class ClippingContext {
4
+ version: number;
5
+ globalClippingCount: number;
6
+ localClippingCount: number;
7
+ localClippingEnabled: boolean | undefined;
8
+ localClipIntersection: boolean;
9
+ planes: Vector4[];
10
+ parentVersion: number;
11
+ viewNormalMatrix: Matrix3;
12
+ viewMatrix?: Matrix4 | undefined;
13
+ constructor();
14
+ projectPlanes(source: readonly Plane[], offset: number): void;
15
+ updateGlobal(renderer: Renderer, camera: Camera): void;
16
+ update(parent: ClippingContext, material: Material): void;
17
+ }
18
+ export default ClippingContext;
@@ -1,9 +1,10 @@
1
- import { Color, ColorRepresentation } from "../../../../src/math/Color.js";
2
-
3
- export default class Color4 extends Color {
1
+ import { Color, ColorRepresentation } from "three";
2
+ declare class Color4 extends Color {
3
+ a: number;
4
+ constructor(color?: ColorRepresentation);
4
5
  constructor(r: number, g: number, b: number, a?: number);
5
-
6
6
  set(...args: [color: ColorRepresentation] | [r: number, g: number, b: number, a?: number]): this;
7
-
7
+ copy(color: Color): this;
8
8
  clone(): this;
9
9
  }
10
+ export default Color4;
@@ -0,0 +1,8 @@
1
+ import Pipeline from "./Pipeline.js";
2
+ import ProgrammableStage from "./ProgrammableStage.js";
3
+ declare class ComputePipeline extends Pipeline {
4
+ computeProgram: ProgrammableStage;
5
+ readonly isComputePipeline: true;
6
+ constructor(cacheKey: string, computeProgram: ProgrammableStage);
7
+ }
8
+ export default ComputePipeline;
@@ -0,0 +1,9 @@
1
+ export declare const AttributeType: {
2
+ readonly VERTEX: 1;
3
+ readonly INDEX: 2;
4
+ readonly STORAGE: 4;
5
+ };
6
+ export type AttributeType = (typeof AttributeType)[keyof typeof AttributeType];
7
+ export declare const GPU_CHUNK_BYTES = 16;
8
+ export declare const BlendColorFactor = 211;
9
+ export declare const OneMinusBlendColorFactor = 212;
@@ -0,0 +1,7 @@
1
+ import { RenderTargetOptions, Texture, WebGLCubeRenderTarget, WebGLRenderer } from "three";
2
+ declare class CubeRenderTarget extends WebGLCubeRenderTarget {
3
+ readonly isCubeRenderTarget: true;
4
+ constructor(size?: number, options?: RenderTargetOptions);
5
+ fromEquirectangularTexture(renderer: WebGLRenderer, texture: Texture): this;
6
+ }
7
+ export default CubeRenderTarget;
@@ -0,0 +1,20 @@
1
+ declare class DataMap<
2
+ M extends {
3
+ [key: string]: {
4
+ key: object;
5
+ value: unknown;
6
+ };
7
+ },
8
+ > {
9
+ data: WeakMap<M[keyof M]["key"], M[keyof M]["value"]>;
10
+ constructor();
11
+ get<K extends M[keyof M]["key"]>(object: K): Extract<M[keyof M], {
12
+ key: K;
13
+ }>["value"];
14
+ delete<K extends M[keyof M]["key"]>(object: K): Extract<M[keyof M], {
15
+ key: K;
16
+ }>["value"];
17
+ has(object: M[keyof M]["key"]): boolean;
18
+ dispose(): void;
19
+ }
20
+ export default DataMap;
@@ -0,0 +1,28 @@
1
+ import { BufferAttribute, BufferGeometry, InterleavedBuffer, InterleavedBufferAttribute } from "three";
2
+ import Attributes from "./Attributes.js";
3
+ import { AttributeType } from "./Constants.js";
4
+ import DataMap from "./DataMap.js";
5
+ import Info from "./Info.js";
6
+ import RenderObject from "./RenderObject.js";
7
+ interface GeometryData {
8
+ initialized?: boolean | undefined;
9
+ }
10
+ declare class Geometries extends DataMap<{
11
+ geometry: {
12
+ key: BufferGeometry;
13
+ value: GeometryData;
14
+ };
15
+ }> {
16
+ attributes: Attributes;
17
+ info: Info;
18
+ wireframes: WeakMap<BufferGeometry, BufferAttribute>;
19
+ attributeCall: WeakMap<BufferAttribute | InterleavedBufferAttribute | InterleavedBuffer, number>;
20
+ constructor(attributes: Attributes, info: Info);
21
+ has(renderObject: RenderObject | BufferGeometry): boolean;
22
+ updateForRender(renderObject: RenderObject): void;
23
+ initGeometry(renderObject: RenderObject): void;
24
+ updateAttributes(renderObject: RenderObject): void;
25
+ updateAttribute(attribute: BufferAttribute | InterleavedBufferAttribute, type: AttributeType): void;
26
+ getIndex(renderObject: RenderObject): BufferAttribute | null;
27
+ }
28
+ export default Geometries;
@@ -1,22 +1,34 @@
1
1
  import { Object3D } from "three";
2
-
3
- export default class Info {
2
+ declare class Info {
4
3
  autoReset: boolean;
5
-
6
4
  frame: number;
7
5
  calls: number;
8
-
9
- render: { calls: number; drawCalls: number; triangles: number; points: number; lines: number; timestamp: number };
10
-
11
- compute: { calls: number; computeCalls: number; timestamp: number };
12
-
13
- memory: { geometries: number; textures: number };
14
-
6
+ render: {
7
+ calls: number;
8
+ frameCalls: number;
9
+ drawCalls: number;
10
+ triangles: number;
11
+ points: number;
12
+ lines: number;
13
+ timestamp: number;
14
+ previousFrameCalls: number;
15
+ timestampCalls: number;
16
+ };
17
+ compute: {
18
+ calls: number;
19
+ frameCalls: number;
20
+ timestamp: number;
21
+ previousFrameCalls: number;
22
+ timestampCalls: number;
23
+ };
24
+ memory: {
25
+ geometries: number;
26
+ textures: number;
27
+ };
28
+ constructor();
15
29
  update(object: Object3D, count: number, instanceCount: number): void;
16
-
17
30
  updateTimestamp(type: "render" | "compute", time: number): void;
18
-
19
31
  reset(): void;
20
-
21
32
  dispose(): void;
22
33
  }
34
+ export default Info;
@@ -0,0 +1,6 @@
1
+ declare class Pipeline {
2
+ cacheKey: string;
3
+ usedTimes: number;
4
+ constructor(cacheKey: string);
5
+ }
6
+ export default Pipeline;
@@ -0,0 +1,68 @@
1
+ import ComputeNode from "../../nodes/gpgpu/ComputeNode.js";
2
+ import Backend from "./Backend.js";
3
+ import Binding from "./Binding.js";
4
+ import Bindings from "./Bindings.js";
5
+ import ComputePipeline from "./ComputePipeline.js";
6
+ import DataMap from "./DataMap.js";
7
+ import Nodes from "./nodes/Nodes.js";
8
+ import Pipeline from "./Pipeline.js";
9
+ import ProgrammableStage from "./ProgrammableStage.js";
10
+ import RenderObject from "./RenderObject.js";
11
+ import RenderPipeline from "./RenderPipeline.js";
12
+ interface ComputeNodeData {
13
+ version: number;
14
+ pipeline: ComputePipeline;
15
+ }
16
+ interface RenderObjectData {
17
+ pipeline: RenderPipeline;
18
+ }
19
+ declare class Pipelines extends DataMap<{
20
+ computeNode: {
21
+ key: ComputeNode;
22
+ value: ComputeNodeData;
23
+ };
24
+ renderObject: {
25
+ key: RenderObject;
26
+ value: RenderObjectData;
27
+ };
28
+ }> {
29
+ backend: Backend;
30
+ nodes: Nodes;
31
+ bindings: Bindings | null;
32
+ caches: Map<string, Pipeline>;
33
+ programs: {
34
+ vertex: Map<string, ProgrammableStage>;
35
+ fragment: Map<string, ProgrammableStage>;
36
+ compute: Map<string, ProgrammableStage>;
37
+ };
38
+ constructor(backend: Backend, nodes: Nodes);
39
+ getForCompute(computeNode: ComputeNode, bindings: Binding[]): ComputePipeline;
40
+ getForRender(renderObject: RenderObject, promises?: Promise<void>[] | null): RenderPipeline;
41
+ delete(object: ComputeNode | RenderObject): never;
42
+ dispose(): void;
43
+ updateForRender(renderObject: RenderObject): void;
44
+ _getComputePipeline(
45
+ computeNode: ComputeNode,
46
+ stageCompute: ProgrammableStage,
47
+ cacheKey: string,
48
+ bindings: Binding[],
49
+ ): ComputePipeline;
50
+ _getRenderPipeline(
51
+ renderObject: RenderObject,
52
+ stageVertex: ProgrammableStage,
53
+ stageFragment: ProgrammableStage,
54
+ cacheKey: string,
55
+ promises: Promise<void>[] | null,
56
+ ): RenderPipeline;
57
+ _getComputeCacheKey(computeNode: ComputeNode, stageCompute: ProgrammableStage): string;
58
+ _getRenderCacheKey(
59
+ renderObject: RenderObject,
60
+ stageVertex: ProgrammableStage,
61
+ stageFragment: ProgrammableStage,
62
+ ): string;
63
+ _releasePipeline(pipeline: Pipeline): void;
64
+ _releaseProgram(program: ProgrammableStage): void;
65
+ _needsComputeUpdate(computeNode: ComputeNode): boolean;
66
+ _needsRenderUpdate(renderObject: RenderObject): true | void;
67
+ }
68
+ export default Pipelines;
@@ -10,4 +10,6 @@ export default class PostProcessing {
10
10
  render(): void;
11
11
 
12
12
  renderAsync(): Promise<void>;
13
+
14
+ set needsUpdate(value: boolean);
13
15
  }
@@ -0,0 +1,15 @@
1
+ import NodeAttribute from "../../nodes/core/NodeAttribute.js";
2
+ declare class ProgrammableStage {
3
+ id: number;
4
+ code: string;
5
+ stage: "compute" | "vertex" | "fragment";
6
+ attributes: NodeAttribute[] | null;
7
+ usedTimes: number;
8
+ constructor(
9
+ code: string,
10
+ type: "compute" | "vertex" | "fragment",
11
+ transforms?: null,
12
+ attributes?: NodeAttribute[] | null,
13
+ );
14
+ }
15
+ export default ProgrammableStage;
@@ -0,0 +1,8 @@
1
+ import { Camera, Object3D } from "three";
2
+ declare class RenderBundle {
3
+ scene: Object3D;
4
+ camera: Camera;
5
+ constructor(scene: Object3D, camera: Camera);
6
+ clone(): RenderBundle & this;
7
+ }
8
+ export default RenderBundle;
@@ -0,0 +1,10 @@
1
+ import { Camera, Object3D } from "three";
2
+ import ChainMap from "./ChainMap.js";
3
+ import RenderBundle from "./RenderBundle.js";
4
+ declare class RenderBundles {
5
+ lists: ChainMap<readonly [Object3D, Camera], RenderBundle>;
6
+ constructor();
7
+ get(scene: Object3D, camera: Camera): RenderBundle;
8
+ dispose(): void;
9
+ }
10
+ export default RenderBundles;
@@ -0,0 +1,38 @@
1
+ import { DepthTexture, RenderTarget, Texture, Vector4 } from "three";
2
+ import ClippingContext from "./ClippingContext.js";
3
+ declare class RenderContext {
4
+ id: number;
5
+ color: boolean;
6
+ clearColor: boolean;
7
+ clearColorValue: {
8
+ r: number;
9
+ g: number;
10
+ b: number;
11
+ a: number;
12
+ };
13
+ depth: boolean;
14
+ clearDepth: boolean;
15
+ clearDepthValue: number;
16
+ stencil: boolean;
17
+ clearStencil: boolean;
18
+ clearStencilValue: number;
19
+ viewport: boolean;
20
+ viewportValue: Vector4;
21
+ scissor: boolean;
22
+ scissorValue: Vector4;
23
+ textures: Texture[] | null;
24
+ depthTexture: DepthTexture | null;
25
+ activeCubeFace: number;
26
+ sampleCount: number;
27
+ width: number;
28
+ height: number;
29
+ readonly isRenderContext: true;
30
+ clippingContext?: ClippingContext | undefined;
31
+ depthClearValue?: number | undefined;
32
+ stencilClearValue?: number | undefined;
33
+ renderTarget?: RenderTarget | undefined;
34
+ activeMipmapLevel?: number | undefined;
35
+ occlusionQueryCount?: number | undefined;
36
+ constructor();
37
+ }
38
+ export default RenderContext;
@@ -0,0 +1,13 @@
1
+ import { Camera, RenderTarget, Scene } from "three";
2
+ import ChainMap from "./ChainMap.js";
3
+ import RenderContext from "./RenderContext.js";
4
+ declare class RenderContexts {
5
+ chainMaps: {
6
+ [attachmentState: string]: ChainMap<readonly [Scene, Camera], RenderContext> | undefined;
7
+ };
8
+ constructor();
9
+ get(scene: Scene, camera: Camera, renderTarget?: RenderTarget | null): RenderContext;
10
+ getChainMap(attachmentState: string): ChainMap<readonly [Scene, Camera], RenderContext>;
11
+ dispose(): void;
12
+ }
13
+ export default RenderContexts;
@@ -0,0 +1,62 @@
1
+ import { BufferGeometry, Camera, GeometryGroup, Light, Material, Object3D } from "three";
2
+ import { LightsNode } from "../../nodes/Nodes.js";
3
+ export interface Bundle {
4
+ object: Object3D;
5
+ camera: Camera;
6
+ renderList: RenderList;
7
+ }
8
+ export interface RenderItem {
9
+ id: number | null;
10
+ object: Object3D | null;
11
+ geometry: BufferGeometry | null;
12
+ material: Material | null;
13
+ groupOrder: number | null;
14
+ renderOrder: number | null;
15
+ z: number | null;
16
+ group: GeometryGroup | null;
17
+ }
18
+ declare class RenderList {
19
+ renderItems: RenderItem[];
20
+ renderItemsIndex: number;
21
+ opaque: RenderItem[];
22
+ transparent: RenderItem[];
23
+ bundles: Bundle[];
24
+ lightsNode: LightsNode;
25
+ lightsArray: Light[];
26
+ occlusionQueryCount: number;
27
+ constructor();
28
+ begin(): this;
29
+ getNextRenderItem(
30
+ object: Object3D,
31
+ geometry: BufferGeometry,
32
+ material: Material,
33
+ groupOrder: number,
34
+ z: number,
35
+ group: GeometryGroup | null,
36
+ ): RenderItem;
37
+ push(
38
+ object: Object3D,
39
+ geometry: BufferGeometry,
40
+ material: Material,
41
+ groupOrder: number,
42
+ z: number,
43
+ group: GeometryGroup | null,
44
+ ): void;
45
+ unshift(
46
+ object: Object3D,
47
+ geometry: BufferGeometry,
48
+ material: Material,
49
+ groupOrder: number,
50
+ z: number,
51
+ group: GeometryGroup | null,
52
+ ): void;
53
+ pushBundle(group: Bundle): void;
54
+ pushLight(light: Light): void;
55
+ getLightsNode(): LightsNode;
56
+ sort(
57
+ customOpaqueSort: ((a: RenderItem, b: RenderItem) => number) | null,
58
+ customTransparentSort: ((a: RenderItem, b: RenderItem) => number) | null,
59
+ ): void;
60
+ finish(): void;
61
+ }
62
+ export default RenderList;
@@ -0,0 +1,10 @@
1
+ import { Camera, Object3D } from "three";
2
+ import ChainMap from "./ChainMap.js";
3
+ import RenderList from "./RenderList.js";
4
+ declare class RenderLists {
5
+ lists: ChainMap<readonly [Object3D, Camera], RenderList>;
6
+ constructor();
7
+ get(scene: Object3D, camera: Camera): RenderList;
8
+ dispose(): void;
9
+ }
10
+ export default RenderLists;
@@ -0,0 +1,73 @@
1
+ import {
2
+ BufferAttribute,
3
+ BufferGeometry,
4
+ Camera,
5
+ InterleavedBuffer,
6
+ InterleavedBufferAttribute,
7
+ Material,
8
+ Object3D,
9
+ Scene,
10
+ } from "three";
11
+ import LightsNode from "../../nodes/lighting/LightsNode.js";
12
+ import BindGroup from "./BindGroup.js";
13
+ import ClippingContext from "./ClippingContext.js";
14
+ import Geometries from "./Geometries.js";
15
+ import NodeBuilderState from "./nodes/NodeBuilderState.js";
16
+ import Nodes from "./nodes/Nodes.js";
17
+ import RenderContext from "./RenderContext.js";
18
+ import Renderer from "./Renderer.js";
19
+ import RenderPipeline from "./RenderPipeline.js";
20
+ export default class RenderObject {
21
+ _nodes: Nodes;
22
+ _geometries: Geometries;
23
+ id: number;
24
+ renderer: Renderer;
25
+ object: Object3D;
26
+ material: Material;
27
+ scene: Scene;
28
+ camera: Camera;
29
+ lightsNode: LightsNode;
30
+ context: RenderContext;
31
+ geometry: BufferGeometry;
32
+ version: number;
33
+ drawRange: {
34
+ start: number;
35
+ count: number;
36
+ } | null;
37
+ attributes: Array<BufferAttribute | InterleavedBufferAttribute> | null;
38
+ pipeline: RenderPipeline | null;
39
+ vertexBuffers: Array<BufferAttribute | InterleavedBuffer> | null;
40
+ clippingContext: ClippingContext;
41
+ clippingContextVersion: number;
42
+ initialNodesCacheKey: string;
43
+ initialCacheKey: string;
44
+ _nodeBuilderState: NodeBuilderState | null;
45
+ _bindings: BindGroup[] | null;
46
+ onDispose: (() => void) | null;
47
+ readonly isRenderObject: true;
48
+ onMaterialDispose: () => void;
49
+ constructor(
50
+ nodes: Nodes,
51
+ geometries: Geometries,
52
+ renderer: Renderer,
53
+ object: Object3D,
54
+ material: Material,
55
+ scene: Scene,
56
+ camera: Camera,
57
+ lightsNode: LightsNode,
58
+ renderContext: RenderContext,
59
+ );
60
+ updateClipping(parent: ClippingContext): void;
61
+ get clippingNeedsUpdate(): boolean;
62
+ getNodeBuilderState(): NodeBuilderState;
63
+ getBindings(): BindGroup[];
64
+ getIndex(): BufferAttribute | null;
65
+ getChainArray(): readonly [Object3D<import("three").Object3DEventMap>, Material, RenderContext, LightsNode];
66
+ getAttributes(): (InterleavedBufferAttribute | BufferAttribute)[];
67
+ getVertexBuffers(): (InterleavedBuffer | BufferAttribute)[] | null;
68
+ getMaterialCacheKey(): string;
69
+ get needsUpdate(): boolean;
70
+ getNodesCacheKey(): string;
71
+ getCacheKey(): string;
72
+ dispose(): void;
73
+ }
@@ -0,0 +1,59 @@
1
+ import { Camera, Material, Object3D, Scene } from "three";
2
+ import LightsNode from "../../nodes/lighting/LightsNode.js";
3
+ import Bindings from "./Bindings.js";
4
+ import ChainMap from "./ChainMap.js";
5
+ import Geometries from "./Geometries.js";
6
+ import Info from "./Info.js";
7
+ import Nodes from "./nodes/Nodes.js";
8
+ import Pipelines from "./Pipelines.js";
9
+ import RenderContext from "./RenderContext.js";
10
+ import Renderer from "./Renderer.js";
11
+ import RenderObject from "./RenderObject.js";
12
+ declare class RenderObjects {
13
+ renderer: Renderer;
14
+ nodes: Nodes;
15
+ geometries: Geometries;
16
+ pipelines: Pipelines;
17
+ bindings: Bindings;
18
+ info: Info;
19
+ chainMaps: {
20
+ [passId: string]: ChainMap<readonly [Object3D, Material, RenderContext, LightsNode], RenderObject>;
21
+ };
22
+ constructor(
23
+ renderer: Renderer,
24
+ nodes: Nodes,
25
+ geometries: Geometries,
26
+ pipelines: Pipelines,
27
+ bindings: Bindings,
28
+ info: Info,
29
+ );
30
+ get(
31
+ object: Object3D,
32
+ material: Material,
33
+ scene: Scene,
34
+ camera: Camera,
35
+ lightsNode: LightsNode,
36
+ renderContext: RenderContext,
37
+ passId: string | undefined,
38
+ ): RenderObject;
39
+ getChainMap(
40
+ passId?: string,
41
+ ): ChainMap<
42
+ readonly [Object3D<import("three").Object3DEventMap>, Material, RenderContext, LightsNode],
43
+ RenderObject
44
+ >;
45
+ dispose(): void;
46
+ createRenderObject(
47
+ nodes: Nodes,
48
+ geometries: Geometries,
49
+ renderer: Renderer,
50
+ object: Object3D,
51
+ material: Material,
52
+ scene: Scene,
53
+ camera: Camera,
54
+ lightsNode: LightsNode,
55
+ renderContext: RenderContext,
56
+ passId: string | undefined,
57
+ ): RenderObject;
58
+ }
59
+ export default RenderObjects;
@@ -0,0 +1,8 @@
1
+ import Pipeline from "./Pipeline.js";
2
+ import ProgrammableStage from "./ProgrammableStage.js";
3
+ declare class RenderPipeline extends Pipeline {
4
+ vertexProgram: ProgrammableStage;
5
+ fragmentProgram: ProgrammableStage;
6
+ constructor(cacheKey: string, vertexProgram: ProgrammableStage, fragmentProgram: ProgrammableStage);
7
+ }
8
+ export default RenderPipeline;