Skip to content

Commit

Permalink
Add more types (#996)
Browse files Browse the repository at this point in the history
* Add examples

* Add more

* Update patch

* Delete examples

* Add built declarations

* Add examples

* Update patch

* Add more

* Update patch

* Update declarations

* Update patch

* Delete examples

* Update

* Add examples

* Update patch

* Delete examples

* Update

* Add examples

* Update patch

* Delete examples

* Update

* Add examples

* Update patch

* Update patch

* Delete examples

* Update declarations

* Add examples

* Update patch

* Delete examples

* Update
  • Loading branch information
Methuselah96 authored May 27, 2024
1 parent 9b284e6 commit 167ca24
Show file tree
Hide file tree
Showing 20 changed files with 1,383 additions and 397 deletions.
974 changes: 823 additions & 151 deletions examples-jsm/changes.patch

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions examples-jsm/create-examples.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ const files = [
'nodes/shadernode/ShaderNode',
'nodes/Nodes',
'renderers/common/nodes/NodeBuilderState',
'renderers/common/nodes/NodeUniform',
'renderers/common/nodes/NodeUniformsGroup',
'renderers/common/nodes/Nodes',
'renderers/common/Animation',
Expand Down Expand Up @@ -59,7 +60,11 @@ const files = [
'renderers/common/RenderObject',
'renderers/common/RenderObjects',
'renderers/common/RenderPipeline',
'renderers/common/SampledTexture',
'renderers/common/Sampler',
'renderers/common/StorageBuffer',
'renderers/common/Textures',
'renderers/common/Uniform',
'renderers/common/UniformBuffer',
'renderers/common/UniformsGroup',
'renderers/webgl/nodes/GLSLNodeBuilder',
Expand Down
14 changes: 14 additions & 0 deletions examples-jsm/declarations.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,24 @@ const files = [
'nodes/core/constants',
'nodes/core/Node',
'nodes/core/NodeAttribute',
'nodes/core/NodeCache',
'nodes/core/NodeKeywords',
'nodes/core/NodeParser',
'nodes/core/NodeUniform',
'nodes/core/NodeVar',
'nodes/core/NodeVarying',
'nodes/core/UniformNode',
'renderers/common/nodes/NodeBuilderState',
'renderers/common/nodes/Nodes',
'renderers/common/nodes/NodeUniform',
'renderers/common/nodes/NodeUniformsGroup',
'renderers/common/Animation',
'renderers/common/Attributes',
'renderers/common/Background',
'renderers/common/Binding',
'renderers/common/Bindings',
'renderers/common/Buffer',
'renderers/common/BufferUtils',
'renderers/common/ChainMap',
'renderers/common/ClippingContext',
'renderers/common/Color4',
Expand All @@ -31,10 +39,16 @@ const files = [
'renderers/common/RenderBundles',
'renderers/common/RenderContext',
'renderers/common/RenderContexts',
'renderers/common/Renderer',
'renderers/common/RenderList',
'renderers/common/RenderLists',
'renderers/common/RenderObject',
'renderers/common/RenderObjects',
'renderers/common/RenderPipeline',
'renderers/common/Textures',
'renderers/common/Uniform',
'renderers/common/UniformBuffer',
'renderers/common/UniformsGroup',
];

const inDir = './examples';
Expand Down
40 changes: 36 additions & 4 deletions types/three/examples/jsm/nodes/core/NodeCache.d.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,41 @@
import Node from "./Node.js";
import { NodeData } from "./NodeBuilder.js";

export default class NodeCache {
import NodeAttribute from "./NodeAttribute.js";
import NodeCode from "./NodeCode.js";
import NodeUniform from "./NodeUniform.js";
import NodeVar from "./NodeVar.js";
import NodeVarying from "./NodeVarying.js";
export interface ShaderStageNodeData {
properties?:
| (
& {
outputNode: Node | null;
initialized?: boolean | undefined;
}
& {
[K in `_node${string}`]?: Node | undefined;
}
)
| undefined;
bufferAttribute?: NodeAttribute | undefined;
structType?: Node | undefined;
uniform?: NodeUniform<unknown> | undefined;
variable?: NodeVar | undefined;
varying?: NodeVarying | undefined;
code?: NodeCode | undefined;
usageCount?: number | undefined;
snippet?: string | undefined;
}
interface NodeData {
vertex?: ShaderStageNodeData | undefined;
fragment?: ShaderStageNodeData | undefined;
compute?: ShaderStageNodeData | undefined;
any?: ShaderStageNodeData | undefined;
}
declare class NodeCache {
id: number;
nodesData: WeakMap<Node, NodeData>;

constructor();
getNodeData(node: Node): NodeData | undefined;
setNodeData(node: Node, data: NodeData): void;
}
export default NodeCache;
19 changes: 8 additions & 11 deletions types/three/examples/jsm/nodes/core/NodeUniform.d.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
import UniformNode from "./UniformNode.js";

export default class NodeUniform<Value> {
declare class NodeUniform<TValue> {
readonly isNodeUniform: true;

name: string;
type: string;
node: UniformNode<Value>;
type: string | null;
node: UniformNode<TValue>;
needsUpdate: boolean | undefined;

constructor(name: string, type: string, node: UniformNode<Value>, needsUpdate?: boolean);

get(): Value;
set value(val: Value);

constructor(name: string, type: string | null, node: UniformNode<TValue>, needsUpdate?: undefined);
get value(): TValue;
set value(val: TValue);
get id(): number;
get groupNode(): import("./UniformGroupNode.js").default;
}
export default NodeUniform;
22 changes: 8 additions & 14 deletions types/three/examples/jsm/nodes/core/UniformNode.d.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,18 @@
import { ShaderNodeObject } from "../shadernode/ShaderNode.js";
import { NodeUpdateType } from "./constants.js";
import InputNode from "./InputNode.js";
import Node from "./Node.js";
import NodeBuilder from "./NodeBuilder.js";
import NodeFrame from "./NodeFrame.js";
import UniformGroupNode from "./UniformGroupNode.js";

export default class UniformNode<Value> extends InputNode<Value> {
declare class UniformNode<TValue> extends InputNode<TValue> {
readonly isUniformNode: true;

groupNode: UniformGroupNode;

constructor(value: Value, nodeType?: string | null);

constructor(value: TValue, nodeType?: string | null);
setGroup(group: UniformGroupNode): this;

getGroup(): UniformGroupNode;

getUniformHash(builder: NodeBuilder): string;
onUpdate(callback: (frame: NodeFrame, self: this) => TValue | undefined, updateType: NodeUpdateType): this;
generate(builder: NodeBuilder, output: string | null): string;
}

export const uniform: <Value>(
arg1: InputNode<Value> | Value,
arg2?: Node | string,
) => ShaderNodeObject<UniformNode<Value>>;
export default UniformNode;
export declare const uniform: <TValue>(arg1: InputNode<TValue> | TValue, arg2?: Node | string) => any;
20 changes: 20 additions & 0 deletions types/three/examples/jsm/renderers/common/Attributes.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { BufferAttribute, InterleavedBuffer, InterleavedBufferAttribute } from "three";
import Backend from "./Backend.js";
import { AttributeType } from "./Constants.js";
import DataMap from "./DataMap.js";
interface Data {
version?: number | undefined;
}
declare class Attributes extends DataMap<{
attribute: {
key: BufferAttribute | InterleavedBufferAttribute;
value: Data;
};
}> {
backend: Backend;
constructor(backend: Backend);
delete(attribute: BufferAttribute | InterleavedBufferAttribute): Data;
update(attribute: BufferAttribute | InterleavedBufferAttribute, type: AttributeType): void;
_getBufferAttribute(attribute: BufferAttribute | InterleavedBufferAttribute): InterleavedBuffer | BufferAttribute;
}
export default Attributes;
11 changes: 11 additions & 0 deletions types/three/examples/jsm/renderers/common/Buffer.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import Binding from "./Binding.js";
declare class Buffer extends Binding {
readonly isBuffer: true;
bytesPerElement: number;
_buffer: Float32Array | null;
constructor(name?: string, buffer?: Float32Array | null);
get byteLength(): number;
get buffer(): Float32Array | null;
update(): boolean;
}
export default Buffer;
4 changes: 4 additions & 0 deletions types/three/examples/jsm/renderers/common/BufferUtils.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
declare function getFloatLength(floatLength: number): number;
declare function getVectorLength(count: number, vectorLength?: number): number;
declare function getStrideLength(vectorLength: number): number;
export { getFloatLength, getStrideLength, getVectorLength };
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ declare class ClippingContext {
viewNormalMatrix: Matrix3;
viewMatrix?: Matrix4 | undefined;
constructor();
projectPlanes(source: Plane[], offset: number): void;
projectPlanes(source: readonly Plane[], offset: number): void;
updateGlobal(renderer: Renderer, camera: Camera): void;
update(parent: ClippingContext, material: Material): void;
}
Expand Down
2 changes: 1 addition & 1 deletion types/three/examples/jsm/renderers/common/Pipelines.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ declare class Pipelines extends DataMap<{
constructor(backend: Backend, nodes: Nodes);
getForCompute(computeNode: ComputeNode, bindings: Binding[]): ComputePipeline;
getForRender(renderObject: RenderObject, promises?: Promise<void>[] | null): RenderPipeline;
delete(object: ComputeNode | RenderObject): RenderObjectData | ComputeNodeData;
delete(object: ComputeNode | RenderObject): never;
dispose(): void;
updateForRender(renderObject: RenderObject): void;
_getComputePipeline(
Expand Down
73 changes: 73 additions & 0 deletions types/three/examples/jsm/renderers/common/RenderObject.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import {
BufferAttribute,
BufferGeometry,
Camera,
InterleavedBuffer,
InterleavedBufferAttribute,
Material,
Object3D,
Scene,
} from "three";
import LightsNode from "../../nodes/lighting/LightsNode.js";
import Binding from "./Binding.js";
import ClippingContext from "./ClippingContext.js";
import Geometries from "./Geometries.js";
import NodeBuilderState from "./nodes/NodeBuilderState.js";
import Nodes from "./nodes/Nodes.js";
import RenderContext from "./RenderContext.js";
import Renderer from "./Renderer.js";
import RenderPipeline from "./RenderPipeline.js";
export default class RenderObject {
_nodes: Nodes;
_geometries: Geometries;
id: number;
renderer: Renderer;
object: Object3D;
material: Material;
scene: Scene;
camera: Camera;
lightsNode: LightsNode;
context: RenderContext;
geometry: BufferGeometry;
version: number;
drawRange: {
start: number;
count: number;
} | null;
attributes: Array<BufferAttribute | InterleavedBufferAttribute> | null;
pipeline: RenderPipeline | null;
vertexBuffers: Array<BufferAttribute | InterleavedBuffer> | null;
clippingContext: ClippingContext;
clippingContextVersion: number;
initialNodesCacheKey: string;
initialCacheKey: string;
_nodeBuilderState: NodeBuilderState | null;
_bindings: Binding[] | null;
onDispose: (() => void) | null;
readonly isRenderObject: true;
onMaterialDispose: () => void;
constructor(
nodes: Nodes,
geometries: Geometries,
renderer: Renderer,
object: Object3D,
material: Material,
scene: Scene,
camera: Camera,
lightsNode: LightsNode,
renderContext: RenderContext,
);
updateClipping(parent: ClippingContext): void;
get clippingNeedsUpdate(): boolean;
getNodeBuilderState(): NodeBuilderState;
getBindings(): Binding[];
getIndex(): BufferAttribute | null;
getChainArray(): readonly [Object3D<import("three").Object3DEventMap>, Material, RenderContext, LightsNode];
getAttributes(): (InterleavedBufferAttribute | BufferAttribute)[];
getVertexBuffers(): (InterleavedBuffer | BufferAttribute)[] | null;
getMaterialCacheKey(): string;
get needsUpdate(): boolean;
getNodesCacheKey(): string;
getCacheKey(): string;
dispose(): void;
}
59 changes: 59 additions & 0 deletions types/three/examples/jsm/renderers/common/RenderObjects.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import { Camera, Material, Object3D, Scene } from "three";
import LightsNode from "../../nodes/lighting/LightsNode.js";
import Bindings from "./Bindings.js";
import ChainMap from "./ChainMap.js";
import Geometries from "./Geometries.js";
import Info from "./Info.js";
import Nodes from "./nodes/Nodes.js";
import Pipelines from "./Pipelines.js";
import RenderContext from "./RenderContext.js";
import Renderer from "./Renderer.js";
import RenderObject from "./RenderObject.js";
declare class RenderObjects {
renderer: Renderer;
nodes: Nodes;
geometries: Geometries;
pipelines: Pipelines;
bindings: Bindings;
info: Info;
chainMaps: {
[passId: string]: ChainMap<readonly [Object3D, Material, RenderContext, LightsNode], RenderObject>;
};
constructor(
renderer: Renderer,
nodes: Nodes,
geometries: Geometries,
pipelines: Pipelines,
bindings: Bindings,
info: Info,
);
get(
object: Object3D,
material: Material,
scene: Scene,
camera: Camera,
lightsNode: LightsNode,
renderContext: RenderContext,
passId: string | undefined,
): RenderObject;
getChainMap(
passId?: string,
): ChainMap<
readonly [Object3D<import("three").Object3DEventMap>, Material, RenderContext, LightsNode],
RenderObject
>;
dispose(): void;
createRenderObject(
nodes: Nodes,
geometries: Geometries,
renderer: Renderer,
object: Object3D,
material: Material,
scene: Scene,
camera: Camera,
lightsNode: LightsNode,
renderContext: RenderContext,
passId: string | undefined,
): RenderObject;
}
export default RenderObjects;
Loading

0 comments on commit 167ca24

Please sign in to comment.