@xifu/shader-graph-glsl 0.1.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.
@@ -0,0 +1,2703 @@
1
+ import { Box2, BufferGeometry } from 'three';
2
+ import { S as ShaderConfig } from '../ShaderConfig-RGrO5cST.js';
3
+ export { U as UniformMeta, a as UniformValue, b as UniformValues } from '../ShaderConfig-RGrO5cST.js';
4
+
5
+ declare class Events {
6
+ handlers: {};
7
+ constructor(handlers: {});
8
+ }
9
+ interface EventsTypes$2 {
10
+ warn: string | Error;
11
+ error: string | Error;
12
+ componentregister: Component$1;
13
+ destroy: void;
14
+ }
15
+
16
+ declare class Emitter<EventTypes> {
17
+ events: {
18
+ [key: string]: Function[];
19
+ };
20
+ silent: boolean;
21
+ constructor(events: Events | Emitter<EventTypes>);
22
+ on<K extends keyof EventTypes>(names: K | K[], handler: (args: EventTypes[K]) => void | unknown): () => void;
23
+ trigger<K extends keyof EventTypes>(name: K, params?: EventTypes[K] | {}): boolean;
24
+ bind(name: string): void;
25
+ exist(name: string): boolean;
26
+ removeEvents(): void;
27
+ }
28
+
29
+ interface Plugin {
30
+ name: string;
31
+ install: (context: any, options?: any) => void;
32
+ }
33
+ type PluginParams<T extends Plugin> = T['install'] extends (arg1: unknown, arg2: infer U) => void ? U : void;
34
+
35
+ declare class Context$1<EventsTypes> extends Emitter<EventsTypes & EventsTypes$2> {
36
+ id: string;
37
+ plugins: Map<string, unknown>;
38
+ components: Map<string, Component$1>;
39
+ constructor(id: string, events: Events);
40
+ use<T extends Plugin, O extends PluginParams<T>>(plugin: T, options?: O): void;
41
+ register(component: Component$1): void;
42
+ destroy(): void;
43
+ }
44
+
45
+ interface ConnectionData {
46
+ node: number;
47
+ data: unknown;
48
+ }
49
+ type InputConnectionData = ConnectionData & {
50
+ output: string;
51
+ };
52
+ type OutputConnectionData = ConnectionData & {
53
+ input: string;
54
+ };
55
+ interface InputData {
56
+ connections: InputConnectionData[];
57
+ }
58
+ interface OutputData {
59
+ connections: OutputConnectionData[];
60
+ }
61
+ interface InputsData {
62
+ [key: string]: InputData;
63
+ }
64
+ interface OutputsData {
65
+ [key: string]: OutputData;
66
+ }
67
+ interface NodeData {
68
+ id: number;
69
+ name: string;
70
+ inputs: InputsData;
71
+ outputs: OutputsData;
72
+ blocks: NodeData[];
73
+ data: {
74
+ [key: string]: unknown;
75
+ };
76
+ position: [number, number];
77
+ contextId?: number;
78
+ }
79
+ interface NodesData {
80
+ [id: string]: NodeData;
81
+ }
82
+ interface Data {
83
+ id: string;
84
+ nodes: NodesData;
85
+ }
86
+ interface WorkerInputs {
87
+ [key: string]: unknown[];
88
+ }
89
+ interface WorkerOutputs {
90
+ [key: string]: unknown;
91
+ }
92
+
93
+ interface EventsTypes$1 {
94
+ }
95
+
96
+ interface EngineNode extends NodeData {
97
+ busy: boolean;
98
+ unlockPool: (() => void)[];
99
+ outputData: WorkerOutputs;
100
+ }
101
+ declare class Engine extends Context$1<EventsTypes$1> {
102
+ args: unknown[];
103
+ data: Data | null;
104
+ state: number;
105
+ forwarded: Set<unknown>;
106
+ onAbort: () => void;
107
+ constructor(id: string);
108
+ clone(): Engine;
109
+ throwError(message: string, data?: unknown): Promise<string>;
110
+ private processStart;
111
+ private processDone;
112
+ abort(): Promise<void>;
113
+ private lock;
114
+ unlock(node: EngineNode): void;
115
+ private extractInputData;
116
+ private processWorker;
117
+ private processNode;
118
+ private forwardProcess;
119
+ copy(data: Data): Data;
120
+ validate(data: Data): Promise<string | true>;
121
+ private processStartNode;
122
+ private processUnreachable;
123
+ process<T extends unknown[]>(data: Data, startId?: number | string | null, ...args: T): Promise<"success" | "aborted" | undefined>;
124
+ }
125
+
126
+ declare abstract class Component$1 {
127
+ name: string;
128
+ data: unknown;
129
+ engine: Engine | null;
130
+ constructor(name: string);
131
+ abstract worker(node: NodeData, inputs: WorkerInputs, outputs: WorkerOutputs, ...args: unknown[]): void;
132
+ }
133
+
134
+ declare class Control {
135
+ key: string;
136
+ data: unknown;
137
+ parent: Node | Input | null;
138
+ props?: any;
139
+ render?: string;
140
+ component?: any;
141
+ constructor(key: string);
142
+ getNode(): Node;
143
+ getData(key: string): unknown;
144
+ putData(key: string, data: unknown): void;
145
+ setNodeValue(prefix: string, data: any): void;
146
+ update: (cb?: () => void) => void;
147
+ }
148
+
149
+ declare class Socket {
150
+ name: string;
151
+ data: unknown;
152
+ compatible: Socket[];
153
+ constructor(name: string, data?: {});
154
+ combineWith(socket: Socket): void;
155
+ compatibleWith(socket: Socket): boolean;
156
+ }
157
+
158
+ declare class IO {
159
+ type: 'input' | 'output';
160
+ node: Node | null;
161
+ multipleConnections: boolean;
162
+ connections: Connection[];
163
+ key: string;
164
+ name: string;
165
+ socket: Socket;
166
+ constructor(key: string, name: string, socket: Socket, multiConns: boolean);
167
+ removeConnection(connection: Connection): void;
168
+ removeConnections(): void;
169
+ }
170
+
171
+ declare class Input extends IO {
172
+ type: "input";
173
+ control: Control | null;
174
+ constructor(key: string, title: string, socket: Socket, multiConns?: boolean);
175
+ hasConnection(): boolean;
176
+ addConnection(connection: Connection): void;
177
+ addControl(control: Control): this;
178
+ showControl(): boolean;
179
+ toJSON(): InputData;
180
+ }
181
+
182
+ declare class Output extends IO {
183
+ type: "output";
184
+ constructor(key: string, title: string, socket: Socket, multiConns?: boolean);
185
+ hasConnection(): boolean;
186
+ connectTo(input: Input): Connection;
187
+ connectedTo(input: Input): boolean;
188
+ toJSON(): OutputData;
189
+ }
190
+
191
+ interface Transform {
192
+ k: number;
193
+ x: number;
194
+ y: number;
195
+ }
196
+ interface Mouse {
197
+ x: number;
198
+ y: number;
199
+ }
200
+ type ZoomSource = 'wheel' | 'touch' | 'dblclick';
201
+ declare class Area extends Emitter<EventsTypes> {
202
+ editor: EditorView;
203
+ el: HTMLElement;
204
+ container: HTMLElement;
205
+ selectRectEl: HTMLDivElement;
206
+ transform: Transform;
207
+ mouse: Mouse;
208
+ private _startPosition;
209
+ private _zoom;
210
+ private _drag;
211
+ private _dragMode?;
212
+ private _startSelect?;
213
+ private _selectBox;
214
+ constructor(container: HTMLElement, editor: EditorView);
215
+ update(): void;
216
+ pointermove: (e: PointerEvent) => void;
217
+ onStart: (e: PointerEvent) => void;
218
+ onTranslate: (dx: number, dy: number, e: PointerEvent) => void;
219
+ onEnd: (e: PointerEvent) => void;
220
+ onZoom: (delta: number, ox: number, oy: number, source: ZoomSource) => void;
221
+ updateSelectRect(e: PointerEvent): void;
222
+ convertToGraphSpace(screenSpace: [number, number]): [number, number];
223
+ translate(x: number, y: number): void;
224
+ zoom(zoom: number, ox: number | undefined, oy: number | undefined, source: ZoomSource): void;
225
+ appendChild(el: HTMLElement): void;
226
+ removeChild(el: HTMLElement): void;
227
+ }
228
+
229
+ declare class ControlView extends Emitter<EventsTypes> {
230
+ el: HTMLElement;
231
+ control: Control;
232
+ constructor(el: HTMLElement, control: Control, emitter: Emitter<EventsTypes>);
233
+ onRebind(): void;
234
+ dispose(): void;
235
+ }
236
+
237
+ declare class Drag {
238
+ private onTranslate;
239
+ private onStart;
240
+ private onDrag;
241
+ pointerStart: [number, number] | null;
242
+ el: HTMLElement;
243
+ destroy: () => void;
244
+ constructor(el: HTMLElement, onTranslate?: (_x: number, _y: number, _e: PointerEvent) => void, onStart?: (_e: PointerEvent) => void, onDrag?: (_e: PointerEvent) => void);
245
+ down: (e: PointerEvent) => void;
246
+ move: (e: PointerEvent) => void;
247
+ up: (e: PointerEvent) => void;
248
+ }
249
+
250
+ declare class SocketView extends Emitter<EventsTypes> {
251
+ el: HTMLElement;
252
+ type: string;
253
+ io: IO;
254
+ node: Node;
255
+ constructor(el: HTMLElement, type: string, io: IO, node: Node, emitter: Emitter<EventsTypes>);
256
+ onRebind(): void;
257
+ getPosition({ position }: {
258
+ position: number[];
259
+ }, nodeViewEl: HTMLElement): [number, number];
260
+ dispose(): void;
261
+ }
262
+
263
+ declare class BlockView extends Emitter<EventsTypes> {
264
+ node: Node;
265
+ component: Component$1;
266
+ sockets: Map<IO, SocketView>;
267
+ controls: Map<Control, ControlView>;
268
+ el: HTMLElement;
269
+ contextView: NodeView;
270
+ disposeListener: () => void;
271
+ drag: Drag;
272
+ dragInfo?: {
273
+ centerYs: number[];
274
+ siblings: Element[];
275
+ nextIndex: number;
276
+ };
277
+ constructor(el: HTMLElement, node: Node, component: Component$1, contextView: NodeView);
278
+ onRebind(el?: HTMLElement, force?: boolean): void;
279
+ clearSockets(): void;
280
+ bindSocket: (el: HTMLElement, type: string, io: IO) => void;
281
+ bindControl: (el: HTMLElement, control: Control) => void;
282
+ hasSocket(io: IO): boolean;
283
+ getSocketPosition(io: IO): [number, number];
284
+ onSelect: (e: MouseEvent) => void;
285
+ onStart: () => void;
286
+ onTranslate: (dx: number, dy: number, e: PointerEvent) => void;
287
+ onDragEnd: (e: PointerEvent) => void;
288
+ dispose: () => void;
289
+ }
290
+
291
+ declare class NodeView extends Emitter<EventsTypes> {
292
+ editorView: EditorView;
293
+ node: Node;
294
+ component: Component$1;
295
+ components: Map<string, Component$1>;
296
+ sockets: Map<IO, SocketView>;
297
+ controls: Map<Control, ControlView>;
298
+ blocks: Map<Node, BlockView>;
299
+ el: HTMLElement;
300
+ protected _startPosition: number[];
301
+ protected _drag: Drag;
302
+ resizeObserver: ResizeObserver;
303
+ disposeContextMenu: () => void;
304
+ boundingBox: Box2;
305
+ disposeMouseEnter: () => void;
306
+ disposeMouseLeave: () => void;
307
+ constructor(node: Node, component: Component$1, editorView: EditorView, components: Map<string, Component$1>);
308
+ updateBox(): void;
309
+ clearSockets(): void;
310
+ bindSocket: (el: HTMLElement, type: string, io: IO) => void;
311
+ bindControl: (el: HTMLElement, control: Control) => void;
312
+ bindBlock: (el: HTMLElement, node: Node) => void;
313
+ hasSocket(io: IO): boolean;
314
+ getSocketPosition(io: IO): [number, number];
315
+ onSelect: (e: MouseEvent) => void;
316
+ onStart: () => void;
317
+ onTranslate: (dx: number, dy: number) => void;
318
+ onDrag: (dx: number, dy: number) => void;
319
+ translate(x: number, y: number): void;
320
+ update(): void;
321
+ dispose(): void;
322
+ }
323
+
324
+ declare class Selected {
325
+ editor: NodeEditor;
326
+ list: Node[];
327
+ copyed?: NodeData[];
328
+ copyedBox: Box2;
329
+ constructor(editor: NodeEditor);
330
+ add(item: Node, accumulate?: boolean): void;
331
+ clear(): void;
332
+ remove(item: Node): void;
333
+ contains(item: Node): boolean;
334
+ each(callback: (n: Node, index: number) => void): void;
335
+ copy(): void;
336
+ }
337
+
338
+ declare class NodeEditor extends Context$1<EventsTypes> {
339
+ nodes: Node[];
340
+ selected: Selected;
341
+ view: EditorView;
342
+ constructor(id: string, container: HTMLElement);
343
+ addNode(node: Node): void;
344
+ removeNode(node: Node): void;
345
+ addBlock(contextNode: Node, node: Node, ...other: any[]): void;
346
+ connect(output: Output, input: Input, data?: unknown, handelError?: boolean): void;
347
+ removeConnection(connection: Connection): void;
348
+ selectNode(node: Node, accumulate?: boolean, fromRectSelect?: boolean): void;
349
+ unselect(): void;
350
+ getComponent(name: string): Component;
351
+ register(component: Component): void;
352
+ createNode(name: string, data?: any): Promise<Node>;
353
+ clear(): void;
354
+ toJSON(): Data;
355
+ beforeImport(json: Data): boolean;
356
+ afterImport(): boolean;
357
+ buildNode(nodeData: NodeData): Promise<Node>;
358
+ fromJSON(json: Data): Promise<boolean>;
359
+ }
360
+
361
+ declare class EditorView extends Emitter<EventsTypes> {
362
+ editor: NodeEditor;
363
+ container: HTMLElement;
364
+ components: Map<string, Component$1>;
365
+ nodes: Map<Node, NodeView>;
366
+ connections: Map<Connection, ConnectionView>;
367
+ area: Area;
368
+ areaRoot: HTMLDivElement;
369
+ constructor(container: HTMLElement, components: Map<string, Component$1>, editor: NodeEditor);
370
+ addNode(node: Node): void;
371
+ removeNode(node: Node, update?: boolean): void;
372
+ addConnection(connection: Connection): void;
373
+ removeConnection(connection: Connection): void;
374
+ updateConnections({ node }: {
375
+ node: Node;
376
+ }): void;
377
+ resize(): void;
378
+ click: (e: Event) => void;
379
+ dispose: () => void;
380
+ }
381
+
382
+ interface EventsTypes extends EventsTypes$2 {
383
+ componentregister: Component;
384
+ nodecreate: Node;
385
+ nodecreated: Node;
386
+ noderemove: Node;
387
+ noderemoved: Node;
388
+ connectioncreate: {
389
+ input: Input;
390
+ output: Output;
391
+ };
392
+ connectioncreated: Connection;
393
+ connectionremove: Connection;
394
+ connectionremoved: Connection;
395
+ translatenode: {
396
+ node: Node;
397
+ dx: number;
398
+ dy: number;
399
+ };
400
+ nodetranslate: {
401
+ node: Node;
402
+ x: number;
403
+ y: number;
404
+ };
405
+ nodetranslated: {
406
+ node: Node;
407
+ prev: [number, number];
408
+ };
409
+ nodedraged: Node;
410
+ nodedragged: Node;
411
+ selectnode: {
412
+ node: Node;
413
+ accumulate: boolean;
414
+ };
415
+ multiselectnode: {
416
+ node: Node;
417
+ accumulate: boolean;
418
+ e: MouseEvent;
419
+ };
420
+ nodeselect: Node;
421
+ nodeselected: Node;
422
+ nodeunselectall: void;
423
+ nodemouseenter: Node;
424
+ nodemouseleave: Node;
425
+ rendernode: {
426
+ el: HTMLElement;
427
+ node: Node;
428
+ view: NodeView;
429
+ component: Component;
430
+ bindSocket: Function;
431
+ bindControl: Function;
432
+ bindBlock?: Function;
433
+ callback?: () => void;
434
+ };
435
+ disposenode: {
436
+ el: HTMLElement;
437
+ };
438
+ rendersocket: {
439
+ el: HTMLElement;
440
+ input?: Input;
441
+ output?: Output;
442
+ socket: Socket;
443
+ };
444
+ disposesocket: {
445
+ el: HTMLElement;
446
+ };
447
+ rendercontrol: {
448
+ el: HTMLElement;
449
+ control: Control;
450
+ callback?: () => void;
451
+ };
452
+ renderconnection: {
453
+ el: HTMLElement;
454
+ connection: Connection;
455
+ points: number[];
456
+ };
457
+ updateconnection: {
458
+ el: HTMLElement;
459
+ connection: Connection;
460
+ points: number[];
461
+ updateColor?: boolean;
462
+ };
463
+ disposeconnection: {
464
+ el: HTMLElement;
465
+ connection: Connection;
466
+ };
467
+ keydown: KeyboardEvent;
468
+ keyup: KeyboardEvent;
469
+ translate: {
470
+ transform: Transform;
471
+ x: number;
472
+ y: number;
473
+ };
474
+ translated: void;
475
+ zoom: {
476
+ transform: Transform;
477
+ zoom: number;
478
+ source: ZoomSource;
479
+ };
480
+ zoomed: {
481
+ source: ZoomSource;
482
+ };
483
+ click: {
484
+ e: Event;
485
+ container: HTMLElement;
486
+ };
487
+ mousemove: Mouse;
488
+ contextmenu: {
489
+ e: MouseEvent;
490
+ view?: EditorView;
491
+ node?: Node;
492
+ connection?: Connection;
493
+ };
494
+ import: Data;
495
+ export: Data;
496
+ process: void;
497
+ clear: void;
498
+ }
499
+
500
+ interface INodeView {
501
+ getSocketPosition(io: IO): [number, number];
502
+ hasSocket(io: IO): boolean;
503
+ }
504
+ declare class ConnectionView extends Emitter<EventsTypes> {
505
+ connection: Connection;
506
+ inputNode: INodeView;
507
+ outputNode: INodeView;
508
+ el: HTMLElement;
509
+ constructor(connection: Connection, inputNode: INodeView, outputNode: INodeView, emitter: Emitter<EventsTypes>);
510
+ getPoints(): number[];
511
+ update(updateColor?: boolean): void;
512
+ dispose(): void;
513
+ }
514
+
515
+ declare class Connection {
516
+ output: Output;
517
+ input: Input;
518
+ data: unknown;
519
+ view?: ConnectionView;
520
+ constructor(output: Output, input: Input);
521
+ remove(): void;
522
+ }
523
+
524
+ declare class Node {
525
+ name: string;
526
+ id: number;
527
+ position: [number, number];
528
+ inputs: Map<string, Input>;
529
+ outputs: Map<string, Output>;
530
+ controls: Map<string, Control>;
531
+ blocks: Array<Node>;
532
+ data: {
533
+ [key: string]: unknown;
534
+ };
535
+ meta: {
536
+ hovering?: boolean;
537
+ } & {
538
+ [key: string]: unknown;
539
+ };
540
+ contextNode?: Node;
541
+ static latestId: number;
542
+ dataChanged: boolean;
543
+ constructor(name: string);
544
+ get changed(): boolean;
545
+ resetChanged(): void;
546
+ _add<T extends {
547
+ key: string;
548
+ } & Record<string, any>>(list: Map<string, T>, item: T, prop: string): void;
549
+ addControl(control: Control): this;
550
+ removeControl(control: Control): void;
551
+ addInput(input: Input): this;
552
+ removeInput(input: Input): void;
553
+ addOutput(output: Output): this;
554
+ removeOutput(output: Output): void;
555
+ addBlock(node: Node): this;
556
+ setMeta(meta: {
557
+ [key: string]: unknown;
558
+ }): this;
559
+ getConnections(): Connection[];
560
+ getInputConnections(): Connection[];
561
+ update(cb?: () => void): void;
562
+ get label(): string;
563
+ getValue(prefix: string): any;
564
+ setValue(prefix: string, value: any): void;
565
+ getValueType(prefix: string): string;
566
+ setValueType(prefix: string, type: string): void;
567
+ getValueName(prefix: string): string;
568
+ setValueName(prefix: string, name: string): void;
569
+ getValueUsage(prefix: string): string;
570
+ setValueUsage(prefix: string, name: string): void;
571
+ removeValue(prefix: string): void;
572
+ initValueType(prefix: string, value: any, type?: string, name?: string, usage?: string): void;
573
+ isContext(): unknown;
574
+ static incrementId(): number;
575
+ static resetId(): void;
576
+ toJSON(): NodeData;
577
+ static fromJSON(json: NodeData): Node;
578
+ dispose(): void;
579
+ }
580
+
581
+ declare abstract class Component extends Component$1 {
582
+ editor: NodeEditor | null;
583
+ data: unknown;
584
+ render?: string;
585
+ component?: any;
586
+ constructor(name: string);
587
+ onRegister(editor: NodeEditor): void;
588
+ abstract builder(node: Node): Promise<void>;
589
+ build(node: Node, json?: any): Promise<Node>;
590
+ createNode(data?: {}): Promise<Node>;
591
+ worker(node: any, inputs: any, outputs: any): void;
592
+ }
593
+
594
+ type GraphData = Data;
595
+ declare enum ValueType {
596
+ float = "float",
597
+ vec2 = "vec2",
598
+ vec3 = "vec3",
599
+ vec4 = "vec4",
600
+ mat4 = "mat4",
601
+ mat3 = "mat3",
602
+ mat2 = "mat2",
603
+ texture2d = "texture2d",
604
+ sampler = "sampler",
605
+ gradient = "gradient",
606
+ vertex = "vertex",
607
+ string = "string",
608
+ bool = "bool"
609
+ }
610
+ declare enum ValueUsage {
611
+ Color = "color"
612
+ }
613
+ type VectorValueType = ValueType.float | ValueType.vec2 | ValueType.vec3 | ValueType.vec4;
614
+ type NodeValueCfg = {
615
+ dataKey: string;
616
+ options?: string[];
617
+ labelWidth?: string;
618
+ itemWidth?: string;
619
+ itemHeight?: string;
620
+ textarea?: boolean;
621
+ asset?: {
622
+ type: ValueType;
623
+ };
624
+ excludes?: {
625
+ [value: string]: string[];
626
+ };
627
+ onChange?(node: ReteNode, value: any, editor: NodeEditor): boolean;
628
+ };
629
+ type NodeListCfg = {
630
+ list: any[];
631
+ Item: any;
632
+ onAdd(list: any[]): any;
633
+ onDel(item: any): void;
634
+ onChange?(node: ReteNode, value: any, editor: NodeEditor): boolean;
635
+ };
636
+ interface ReteNode extends Node {
637
+ data: {
638
+ expanded: boolean;
639
+ preview: boolean;
640
+ previewType?: '2d' | '3d';
641
+ [k: string]: any;
642
+ };
643
+ meta: {
644
+ undeleteable?: boolean;
645
+ uncloneable?: boolean;
646
+ previewDisabled: boolean;
647
+ category: string;
648
+ keywords?: string[];
649
+ label?: string;
650
+ nodeCfgs?: {
651
+ [label: string]: NodeValueCfg | NodeListCfg;
652
+ };
653
+ highlight?: boolean;
654
+ internalIO?: string[];
655
+ [k: string]: any;
656
+ };
657
+ }
658
+ type ReteContextNode = ExtendReteNode<string, {}, {
659
+ blockComponents: string[];
660
+ isContext: true;
661
+ }>;
662
+ interface ExtendReteNode<Name extends string, Data = {}, Meta = {}> extends ReteNode {
663
+ name: Name;
664
+ data: ReteNode['data'] & Data;
665
+ meta: ReteNode['meta'] & Meta;
666
+ }
667
+ interface ExtendReteContext<Name extends string, Data = {}, Meta = {}> extends ReteContextNode {
668
+ name: Name;
669
+ data: ReteContextNode['data'] & Data;
670
+ meta: ReteContextNode['meta'] & Meta;
671
+ }
672
+ type ValueTypeEdit = undefined | ValueUsage.Color;
673
+ interface ParameterData {
674
+ type: ValueType;
675
+ name: string;
676
+ defalutValue: any;
677
+ exposed: boolean;
678
+ editing?: boolean;
679
+ typeEdit?: ValueTypeEdit;
680
+ }
681
+ type AssetValue = {
682
+ id: string;
683
+ label: string;
684
+ } | undefined;
685
+ declare const SpaceOptions$1: readonly ["object", "view", "world", "tangent"];
686
+ type SpaceValue$1 = ArrayElement<typeof SpaceOptions$1>;
687
+ declare const UVOptions: readonly ["UV0"];
688
+ type UVValue = ArrayElement<typeof UVOptions>;
689
+ type SamplerValue = {
690
+ filter: 'linear' | 'point' | 'trilinear';
691
+ warp: 'repeat' | 'clamp' | 'mirror';
692
+ };
693
+ type ValueOf<T> = T[keyof T];
694
+ type MaybePromise<T> = T | Promise<T>;
695
+ type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
696
+ declare const ScreenPositionModeOptions: readonly ["default", "raw", "center", "tiled"];
697
+ type ScreenPositionModeValue = ArrayElement<typeof ScreenPositionModeOptions>;
698
+
699
+ declare module '../rete/core/events' {
700
+ interface EventsTypes {
701
+ rendercustom: {
702
+ render: string;
703
+ component: any;
704
+ view: {
705
+ props: any;
706
+ el: HTMLElement;
707
+ update: (cb?: () => void) => void | Promise<void>;
708
+ };
709
+ callback?: () => void;
710
+ };
711
+ }
712
+ }
713
+
714
+ type SettingValueCfgs = {
715
+ [k: string]: {
716
+ options?: string[];
717
+ list?: ListItem;
718
+ labelWidth?: string;
719
+ constant?: boolean;
720
+ textarea?: boolean;
721
+ asset?: {
722
+ type: ValueType;
723
+ };
724
+ excludes?: {
725
+ [value: string]: string[];
726
+ };
727
+ };
728
+ };
729
+ type ListItem = {
730
+ onAdd(list: any[]): any;
731
+ onDel(item: any): void;
732
+ onChange?(node: ReteNode, value: any, editor: NodeEditor): void;
733
+ Item: any;
734
+ };
735
+
736
+ interface PopupViewProps {
737
+ editor: NodeEditor;
738
+ view: PopupView<any>;
739
+ }
740
+ declare class PopupView<Props extends PopupViewProps> {
741
+ editor: NodeEditor;
742
+ component: any;
743
+ el: HTMLDivElement;
744
+ props: Props;
745
+ showing: boolean;
746
+ constructor(editor: NodeEditor, component: any, className?: string);
747
+ show(props?: Partial<Omit<Props, 'editor' | 'view'>>): void;
748
+ hide: () => void;
749
+ setShowState(show: boolean): void;
750
+ toggle: () => void;
751
+ _setPopupShow(show: boolean): void;
752
+ update(): void;
753
+ dispose(): void;
754
+ }
755
+
756
+ interface PopupNodeAddProps extends PopupViewProps {
757
+ x?: number;
758
+ y?: number;
759
+ scope?: 'node' | 'context' | 'node-io-pick';
760
+ contextNode?: Node;
761
+ io?: IO;
762
+ }
763
+
764
+ interface BlackBoardProps {
765
+ editor: NodeEditor;
766
+ view: BlackBoardView;
767
+ data: Array<ParameterData>;
768
+ visiable?: boolean;
769
+ subtitle?: string;
770
+ }
771
+ declare class BlackBoardView extends PopupView<BlackBoardProps> {
772
+ editor: NodeEditor;
773
+ data: BlackBoardProps['data'];
774
+ parameterComponetnName: string;
775
+ constructor(editor: NodeEditor, data: BlackBoardProps['data'], parameterComponetnName: string, subtitle?: string);
776
+ fromJSON(data: Array<ParameterData>): void;
777
+ toJSON(): Array<ParameterData>;
778
+ addParameter(type: ValueType, editing?: boolean, typeEdit?: ValueTypeEdit, customName?: string): void;
779
+ setParameter(name: string, data: Partial<ParameterData>): boolean;
780
+ delParameter(name: string): void;
781
+ cloneParameter(name: string): void;
782
+ }
783
+
784
+ interface MainPreviewProps extends PopupViewProps {
785
+ }
786
+ declare class MainPreviewView extends PopupView<MainPreviewProps> {
787
+ constructor(editor: NodeEditor);
788
+ }
789
+
790
+ type Setting = {
791
+ [k: string]: any;
792
+ };
793
+ interface InspectorProps extends PopupViewProps {
794
+ setting: Setting;
795
+ view: InspectorView;
796
+ graphSettingValueCfgs: SettingValueCfgs;
797
+ }
798
+ declare class InspectorView extends PopupView<InspectorProps> {
799
+ setting: Setting;
800
+ constructor(editor: NodeEditor, graphSettingValueCfgs: SettingValueCfgs);
801
+ fromJSON(setting: Setting): void;
802
+ toJSON(): Setting;
803
+ setSetting(name: string, value: any): void;
804
+ }
805
+
806
+ declare module '../rete/core/events' {
807
+ interface EventsTypes {
808
+ hidecontextmenu: void;
809
+ showcontextmenu: void;
810
+ showpopupadd: PopupNodeAddProps;
811
+ }
812
+ }
813
+
814
+ declare module '../../rete/core/events' {
815
+ interface EventsTypes {
816
+ connectionpath: {
817
+ points: number[];
818
+ connection: Connection;
819
+ d: string;
820
+ };
821
+ connectiondrop: Input | Output;
822
+ connectionpick: Input | Output;
823
+ connectionselected: Connection;
824
+ resetconnection: void;
825
+ }
826
+ }
827
+
828
+ declare module '../../rete/core/events' {
829
+ interface EventsTypes {
830
+ previewclientcreate: {
831
+ canvas: HTMLDivElement;
832
+ node?: ReteNode;
833
+ type?: '2d' | '3d';
834
+ enable?: boolean;
835
+ };
836
+ previewclientremove: {
837
+ canvas: HTMLDivElement;
838
+ };
839
+ previewclientupdate: {
840
+ canvas: HTMLDivElement;
841
+ type?: '2d' | '3d';
842
+ enable?: boolean;
843
+ };
844
+ previewsettingupdate: {
845
+ geometry: string;
846
+ };
847
+ previewcopyshader: {
848
+ node: ReteNode;
849
+ callback: (data?: {
850
+ fragCode: string;
851
+ vertCode: string;
852
+ }) => void;
853
+ };
854
+ previewcustommesh: (geometry?: BufferGeometry) => void;
855
+ }
856
+ }
857
+
858
+ declare module '../../src/rete/core/events' {
859
+ interface EventsTypes {
860
+ assetparse: {
861
+ asset: AssetValue;
862
+ type: ValueType;
863
+ callback: (src: string) => void;
864
+ };
865
+ assetselect: {
866
+ type: ValueType;
867
+ callback: (asset: AssetValue) => void;
868
+ };
869
+ }
870
+ }
871
+
872
+ declare module '../rete/core/events' {
873
+ interface EventsTypes {
874
+ imported: void;
875
+ settingupdated: {
876
+ name: string;
877
+ value: any;
878
+ setting: SGSetting;
879
+ };
880
+ }
881
+ }
882
+ declare class ShaderGraphEditor$1 extends NodeEditor {
883
+ blackboardView: BlackBoardView;
884
+ mainPreviewView: MainPreviewView;
885
+ compiler: ShaderGraphCompiler;
886
+ inspectorView: InspectorView;
887
+ clearing: boolean;
888
+ editing: 'ShaderGraph' | 'SubGraph';
889
+ subGraphProvider?: SubGraphProvider;
890
+ disposables: Array<() => void>;
891
+ constructor(id: string, container: HTMLElement);
892
+ private initEvents;
893
+ setSubGraphProvider(provider: SubGraphProvider): void;
894
+ initShaderGraphNodes(): Promise<void>;
895
+ initSubGraphNodes(): Promise<void>;
896
+ addBlock(contextNode: Node, node: Node, com?: RCBlock): void;
897
+ clear(silent?: boolean): void;
898
+ fromJSON(json: ShaderGraphData): Promise<boolean>;
899
+ toJSON(): ShaderGraphData;
900
+ afterImport(): boolean;
901
+ dispose(): void;
902
+ }
903
+
904
+ declare abstract class GraphCompiler {
905
+ fnName: 'compileSG';
906
+ graphData: GraphData;
907
+ nodesCompilation: Map<number, any>;
908
+ todo: Set<number>;
909
+ done: Set<number>;
910
+ ready: Set<number>;
911
+ changed: [Set<number>, Set<number>];
912
+ components: Map<string, RC>;
913
+ constructor(fnName: 'compileSG');
914
+ register(component: RC, force?: boolean): void;
915
+ varId: number;
916
+ get nextVarId(): number;
917
+ loopCheck(): boolean;
918
+ compileNode: (nodeId: number) => Promise<void>;
919
+ compile(graphData: GraphData): Promise<any>;
920
+ }
921
+
922
+ type SGNodeOutput = MaybePromise<{
923
+ outputs: {
924
+ [outputName: string]: string;
925
+ };
926
+ code: string;
927
+ } | void>;
928
+ type ContextMap = {
929
+ [contextKey: string]: {
930
+ varName: string;
931
+ code: string;
932
+ index?: number;
933
+ };
934
+ };
935
+ type ContextItem = ValueOf<ContextMap>;
936
+ type ResourceMap<T> = {
937
+ [contextKey: string]: T | undefined;
938
+ };
939
+ type ResourceItem = ValueOf<ResourceMap<AssetValue | SamplerValue>>;
940
+ type VarNameMap = {
941
+ [contextKey: string]: {
942
+ vertName: string;
943
+ fragName: string;
944
+ varName: string;
945
+ };
946
+ };
947
+ type Context = ReturnType<typeof initContext>;
948
+ type ContextKeys = keyof Context;
949
+ declare const initContext: () => {
950
+ uniforms: ContextMap;
951
+ attributes: ContextMap;
952
+ varyings: ContextMap;
953
+ defines: ContextMap;
954
+ bindings: ContextMap;
955
+ vertShared: ContextMap;
956
+ fragShared: ContextMap;
957
+ autoVaryings: ContextMap;
958
+ };
959
+ type Resource = ReturnType<typeof initResource>;
960
+ declare const initResource: () => {
961
+ texture: ResourceMap<AssetValue>;
962
+ sampler: ResourceMap<SamplerValue>;
963
+ };
964
+ type CodeFn = (varName: string, index: number) => string;
965
+ type NodeName = {
966
+ name: string;
967
+ };
968
+ type UniformMap = {
969
+ [contextKey: string]: {
970
+ name: string;
971
+ type: string;
972
+ };
973
+ };
974
+ type BindingMap = {
975
+ [contextKey: string]: {
976
+ name: string;
977
+ type: string;
978
+ index: number;
979
+ };
980
+ };
981
+ interface SGCompilation {
982
+ setting: ShaderGraphData['setting'];
983
+ parameters: ParameterData[];
984
+ resource: Resource;
985
+ uniformMap: UniformMap;
986
+ bindingMap: BindingMap;
987
+ vertCode: string;
988
+ fragCode: string;
989
+ }
990
+
991
+ /**
992
+ * 编译顺序
993
+ * frag: fragShared -> fragBody -> fragHead
994
+ * vert: vertShared -> autoVaryings -> vertBody -> vertHead
995
+ */
996
+ declare class ShaderGraphCompiler extends GraphCompiler {
997
+ graphData: ShaderGraphData;
998
+ context: Context;
999
+ resource: Resource;
1000
+ varNameMap: VarNameMap;
1001
+ nodesCompilation: Map<number, Awaited<SGNodeOutput>>;
1002
+ compilation?: SGCompilation;
1003
+ previewContext?: {
1004
+ id: number;
1005
+ baseColorBlock: BaseColorBlock;
1006
+ fragmentRC: FragmentRC;
1007
+ getNodeData: <T extends SGNodes>(rc: RC) => Promise<SGNodeData<T>>;
1008
+ };
1009
+ subGraphProvider?: SubGraphProvider;
1010
+ constructor();
1011
+ initBuiltinContext(): void;
1012
+ setSubGraphProvider(provider: SubGraphProvider): void;
1013
+ setParameter(node: SGNodeData<ReteParameterNode>): string;
1014
+ setVarNameMap(node: NodeName, key: string, vertName: string, fragName: string, varName?: string): string;
1015
+ setResource(type: keyof typeof this.resource, node: NodeName, key: string, item?: ResourceItem): void;
1016
+ setAutoVaryings(node: NodeName, key: string, varyingVar: string, vertVar: string): string;
1017
+ setContext(type: ContextKeys, node: NodeName, key: string, item: ContextItem): string;
1018
+ setContext(type: ContextKeys, node: NodeName, key: string, codeFn: CodeFn): string;
1019
+ getContext(type: ContextKeys, node: SGNodeData<SGNodes>, key: string): ContextItem | undefined;
1020
+ getContextKey(node: NodeName, key: string): string;
1021
+ getCode(nodeId: number): string;
1022
+ /** 为裸露赋值添加 GLSL 类型声明 */
1023
+ private fixCodeDecl;
1024
+ collectNodeInputCode(nodeId: number, output?: string[], self?: boolean): string[];
1025
+ /** 重排 只支持vec1234 */
1026
+ getVarSwizzle(inVar: string, inType: ValueType, swizzle: string): string;
1027
+ /** 读取分量 只支持vec1234 */
1028
+ getVarChannel(varName: string, inType: ValueType, channel: 'r' | 'g' | 'b' | 'a' | 'x' | 'y' | 'z' | 'w'): string;
1029
+ /** 类型转换 只支持vec1234 mat234 */
1030
+ typeConvert(varName: string | undefined, inType: ValueType, outType: ValueType): string | undefined;
1031
+ getInputType(node: SGNodeData<SGNodes>, inputKey: string): ValueType;
1032
+ getInputVarConverted(node: SGNodeData<SGNodes>, inputKey: string): string;
1033
+ getInputVarConverted(node: SGNodeData<SGNodes>, inputKey: string, fallback: false): string | undefined;
1034
+ getInputVarConvertedArray(node: SGNodeData<SGNodes>, keys: string[]): string[];
1035
+ getInputVar(node: SGNodeData<SGNodes>, inputKey: string): string;
1036
+ getInputVar(node: SGNodeData<SGNodes>, inputKey: string, fallback: false): string | undefined;
1037
+ getTypeClass(type: ValueType): string;
1038
+ getOutVarName(node: Pick<SGNodeData<SGNodes>, 'data' | 'name'>, key: string, name?: string): string;
1039
+ getContextVarName(node: NodeName, key: string): string;
1040
+ compileValue(value: any, type: ValueType, usage?: ValueUsage): string;
1041
+ compileNodeValue(node: SGNodeData<SGNodes>, key: string): string;
1042
+ compileHeadCode(body: string, scope: 'vert' | 'frag'): string;
1043
+ /** 检查代码中是否使用了导数函数 */
1044
+ static hasDerivatives(code: string): boolean;
1045
+ getLinkedVaryingNodes(nodeId: number, output?: Array<SGNodeData<ReteVaryingNode>>): Array<SGNodeData<ReteVaryingNode>>;
1046
+ linkBlocks(blocks: Array<SGNodeData<SGNodes>>, ignoreFirstLine?: boolean): string;
1047
+ getAutoVaryingsCode(fragCode: string): string;
1048
+ prependVertSharedCode(vertBody: string): string;
1049
+ prependFragSharedCode(fragBody: string): string;
1050
+ doVarMap(body: string, scope: 'vert' | 'frag'): string;
1051
+ prependSharedCode(body: string, scope: 'fragShared' | 'vertShared'): string;
1052
+ getUniformMap(): UniformMap;
1053
+ getBindingMap(): BindingMap;
1054
+ /** 编辑器使用, 需要compile执行后方可使用 */
1055
+ compilePreview(node: ReteNode): Promise<SGCompilation>;
1056
+ compile(graphData: ShaderGraphData): Promise<SGCompilation>;
1057
+ compileSubGraphPreview(subGraphData: ShaderGraphData): Promise<SGCompilation>;
1058
+ compileSubGraph(subGraphData: ShaderGraphData): Promise<SubGraphCompiler>;
1059
+ superCompile(graphData: ShaderGraphData): Promise<any>;
1060
+ dispose(): void;
1061
+ }
1062
+ declare class SubGraphCompiler extends ShaderGraphCompiler {
1063
+ sgCompiler: ShaderGraphCompiler;
1064
+ constructor(sgCompiler: ShaderGraphCompiler);
1065
+ setParameter(node: SGNodeData<ReteParameterNode>): string;
1066
+ compileSubGraph(subGraphData: ShaderGraphData): Promise<SubGraphCompiler>;
1067
+ }
1068
+
1069
+ declare abstract class RC extends Component {
1070
+ data: {
1071
+ component?: any;
1072
+ };
1073
+ nodeLayout: ReteNode;
1074
+ constructor(name: string);
1075
+ abstract initNode(node: Node): void | Promise<void>;
1076
+ compileSG?(compiler: ShaderGraphCompiler, node: SGNodeData<SGNodes>): MaybePromise<SGNodeOutput>;
1077
+ }
1078
+ declare abstract class RCBlock extends RC {
1079
+ onAddToContextNode?(contextNode: Node, blockNode: Node): void;
1080
+ }
1081
+
1082
+ type ReteAddNode = ExtendReteNode<'Add', {
1083
+ aValue: number | number[];
1084
+ aValueType: ValueType;
1085
+ bValue: number | number[];
1086
+ bValueType: ValueType;
1087
+ outValue: number | number[];
1088
+ outValueType: ValueType;
1089
+ }>;
1090
+
1091
+ type ReteSubtractNode = ExtendReteNode<'Subtract', {
1092
+ aValue: number | number[];
1093
+ aValueType: ValueType;
1094
+ bValue: number | number[];
1095
+ bValueType: ValueType;
1096
+ outValue: number | number[];
1097
+ outValueType: ValueType;
1098
+ }>;
1099
+
1100
+ type ReteDivideNode = ExtendReteNode<'Divide', {
1101
+ aValue: number | number[];
1102
+ aValueType: ValueType;
1103
+ bValue: number | number[];
1104
+ bValueType: ValueType;
1105
+ outValue: number | number[];
1106
+ outValueType: ValueType;
1107
+ }>;
1108
+
1109
+ type RetePowerNode = ExtendReteNode<'Power', {
1110
+ aValue: number | number[];
1111
+ aValueType: ValueType;
1112
+ bValue: number | number[];
1113
+ bValueType: ValueType;
1114
+ outValue: number | number[];
1115
+ outValueType: ValueType;
1116
+ }>;
1117
+
1118
+ type ReteSquareRootNode = ExtendReteNode<'SquareRoot', {
1119
+ aValue: number | number[];
1120
+ aValueType: ValueType;
1121
+ bValue: number | number[];
1122
+ bValueType: ValueType;
1123
+ outValue: number | number[];
1124
+ outValueType: ValueType;
1125
+ }>;
1126
+
1127
+ type ReteMultiplyNode = ExtendReteNode<'Multiply', {
1128
+ aValue: number | number[];
1129
+ aValueType: ValueType;
1130
+ bValue: number | number[];
1131
+ bValueType: ValueType;
1132
+ outValue: number | number[];
1133
+ outValueType: ValueType;
1134
+ }>;
1135
+
1136
+ type ReteSineNode = ExtendReteNode<'Sine', {
1137
+ inValue: number | number[];
1138
+ inValueType: ValueType;
1139
+ outValue: number | number[];
1140
+ outValueType: ValueType;
1141
+ }>;
1142
+
1143
+ type ReteCosineNode = ExtendReteNode<'Cosine', {
1144
+ inValue: number | number[];
1145
+ inValueType: ValueType;
1146
+ outValue: number | number[];
1147
+ outValueType: ValueType;
1148
+ }>;
1149
+
1150
+ type ReteArccosineNode = ExtendReteNode<'Arccosine', {
1151
+ inValue: number | number[];
1152
+ inValueType: ValueType;
1153
+ outValue: number | number[];
1154
+ outValueType: ValueType;
1155
+ }>;
1156
+
1157
+ type ReteArcsineNode = ExtendReteNode<'Arcsine', {
1158
+ inValue: number | number[];
1159
+ inValueType: ValueType;
1160
+ outValue: number | number[];
1161
+ outValueType: ValueType;
1162
+ }>;
1163
+
1164
+ type ReteArctangentNode = ExtendReteNode<'Arctangent', {
1165
+ inValue: number | number[];
1166
+ inValueType: ValueType;
1167
+ outValue: number | number[];
1168
+ outValueType: ValueType;
1169
+ }>;
1170
+
1171
+ type ReteArctangent2Node = ExtendReteNode<'Arctangent2', {
1172
+ aValue: number | number[];
1173
+ aValueType: ValueType;
1174
+ bValue: number | number[];
1175
+ bValueType: ValueType;
1176
+ outValue: number | number[];
1177
+ outValueType: ValueType;
1178
+ }>;
1179
+
1180
+ type ReteHyperbolicCosineNode = ExtendReteNode<'HyperbolicCosine', {
1181
+ inValue: number | number[];
1182
+ inValueType: ValueType;
1183
+ outValue: number | number[];
1184
+ outValueType: ValueType;
1185
+ }>;
1186
+
1187
+ type ReteHyperbolicSineNode = ExtendReteNode<'HyperbolicSine', {
1188
+ inValue: number | number[];
1189
+ inValueType: ValueType;
1190
+ outValue: number | number[];
1191
+ outValueType: ValueType;
1192
+ }>;
1193
+
1194
+ type ReteHyperbolicTangentNode = ExtendReteNode<'HyperbolicTangent', {
1195
+ inValue: number | number[];
1196
+ inValueType: ValueType;
1197
+ outValue: number | number[];
1198
+ outValueType: ValueType;
1199
+ }>;
1200
+
1201
+ type ReteDegreesToRadiansNode = ExtendReteNode<'DegreesToRadians', {
1202
+ inValue: number | number[];
1203
+ inValueType: ValueType;
1204
+ outValue: number | number[];
1205
+ outValueType: ValueType;
1206
+ }>;
1207
+
1208
+ type ReteRadiansToDegreesNode = ExtendReteNode<'RadiansToDegrees', {
1209
+ inValue: number | number[];
1210
+ inValueType: ValueType;
1211
+ outValue: number | number[];
1212
+ outValueType: ValueType;
1213
+ }>;
1214
+
1215
+ type ReteTangentNode = ExtendReteNode<'Tangent', {
1216
+ inValue: number | number[];
1217
+ inValueType: ValueType;
1218
+ outValue: number | number[];
1219
+ outValueType: ValueType;
1220
+ }>;
1221
+
1222
+ type ReteAbsoluteNode = ExtendReteNode<'Absolute', {
1223
+ inValue: number | number[];
1224
+ inValueType: ValueType;
1225
+ outValue: number | number[];
1226
+ outValueType: ValueType;
1227
+ }>;
1228
+
1229
+ type ReteExponentialNode = ExtendReteNode<'Exponential', {
1230
+ inValue: number | number[];
1231
+ inValueType: ValueType;
1232
+ outValue: number | number[];
1233
+ outValueType: ValueType;
1234
+ }>;
1235
+
1236
+ type ReteLengthNode = ExtendReteNode<'Length', {
1237
+ inValue: number | number[];
1238
+ inValueType: ValueType;
1239
+ outValue: number | number[];
1240
+ outValueType: ValueType;
1241
+ }>;
1242
+
1243
+ type ReteLogNode = ExtendReteNode<'Log', {
1244
+ inValue: number | number[];
1245
+ inValueType: ValueType;
1246
+ outValue: number | number[];
1247
+ outValueType: ValueType;
1248
+ }>;
1249
+
1250
+ type ReteModuloNode = ExtendReteNode<'Modulo', {
1251
+ aValue: number | number[];
1252
+ aValueType: ValueType;
1253
+ bValue: number | number[];
1254
+ bValueType: ValueType;
1255
+ outValue: number | number[];
1256
+ outValueType: ValueType;
1257
+ }>;
1258
+
1259
+ type ReteNegateNode = ExtendReteNode<'Negate', {
1260
+ inValue: number | number[];
1261
+ inValueType: ValueType;
1262
+ outValue: number | number[];
1263
+ outValueType: ValueType;
1264
+ }>;
1265
+
1266
+ type ReteNormalizeNode = ExtendReteNode<'Normalize', {
1267
+ inValue: number | number[];
1268
+ inValueType: ValueType;
1269
+ outValue: number | number[];
1270
+ outValueType: ValueType;
1271
+ }>;
1272
+
1273
+ type RetePosterizeNode = ExtendReteNode<'Posterize', {
1274
+ inValue: number | number[];
1275
+ inValueType: ValueType;
1276
+ stepsValue: number | number[];
1277
+ stepsValueType: ValueType;
1278
+ outValue: number | number[];
1279
+ outValueType: ValueType;
1280
+ }>;
1281
+
1282
+ type ReteReciprocalNode = ExtendReteNode<'Reciprocal', {
1283
+ inValue: number | number[];
1284
+ inValueType: ValueType;
1285
+ outValue: number | number[];
1286
+ outValueType: ValueType;
1287
+ }>;
1288
+
1289
+ type ReteReciprocalSquareRootNode = ExtendReteNode<'ReciprocalSquareRoot', {
1290
+ inValue: number | number[];
1291
+ inValueType: ValueType;
1292
+ outValue: number | number[];
1293
+ outValueType: ValueType;
1294
+ }>;
1295
+
1296
+ type ReteDDXNode = ExtendReteNode<'DDX', {
1297
+ inValue: number | number[];
1298
+ inValueType: ValueType;
1299
+ outValue: number | number[];
1300
+ outValueType: ValueType;
1301
+ }>;
1302
+
1303
+ type ReteDDYNode = ExtendReteNode<'DDY', {
1304
+ inValue: number | number[];
1305
+ inValueType: ValueType;
1306
+ outValue: number | number[];
1307
+ outValueType: ValueType;
1308
+ }>;
1309
+
1310
+ type ReteDDXYNode = ExtendReteNode<'DDXY', {
1311
+ inValue: number | number[];
1312
+ inValueType: ValueType;
1313
+ outValue: number | number[];
1314
+ outValueType: ValueType;
1315
+ }>;
1316
+
1317
+ type ReteLerpNode = ExtendReteNode<'Lerp', {
1318
+ aValue: number | number[];
1319
+ aValueType: ValueType;
1320
+ bValue: number | number[];
1321
+ bValueType: ValueType;
1322
+ tValue: number | number[];
1323
+ tValueType: ValueType;
1324
+ outValue: number | number[];
1325
+ outValueType: ValueType;
1326
+ }>;
1327
+
1328
+ type ReteSmoothstepNode = ExtendReteNode<'Smoothstep', {
1329
+ edge1Value: number | number[];
1330
+ edge1ValueType: ValueType;
1331
+ edge2Value: number | number[];
1332
+ edge2ValueType: ValueType;
1333
+ inValue: number | number[];
1334
+ inValueType: ValueType;
1335
+ outValue: number | number[];
1336
+ outValueType: ValueType;
1337
+ }>;
1338
+
1339
+ type ReteInverseLerpNode = ExtendReteNode<'InverseLerp', {
1340
+ aValue: number | number[];
1341
+ aValueType: ValueType;
1342
+ bValue: number | number[];
1343
+ bValueType: ValueType;
1344
+ tValue: number | number[];
1345
+ tValueType: ValueType;
1346
+ outValue: number | number[];
1347
+ outValueType: ValueType;
1348
+ }>;
1349
+
1350
+ type ReteClampNode = ExtendReteNode<'Clamp', {
1351
+ inValue: number | number[];
1352
+ inValueType: ValueType;
1353
+ minValue: number | number[];
1354
+ minValueType: ValueType;
1355
+ maxValue: number | number[];
1356
+ maxValueType: ValueType;
1357
+ outValue: number | number[];
1358
+ outValueType: ValueType;
1359
+ }>;
1360
+
1361
+ type ReteFractionNode = ExtendReteNode<'Fraction', {
1362
+ inValue: number | number[];
1363
+ inValueType: ValueType;
1364
+ outValue: number | number[];
1365
+ outValueType: ValueType;
1366
+ }>;
1367
+
1368
+ type ReteMinimumNode = ExtendReteNode<'Minimum', {
1369
+ aValue: number | number[];
1370
+ aValueType: ValueType;
1371
+ bValue: number | number[];
1372
+ bValueType: ValueType;
1373
+ outValue: number | number[];
1374
+ outValueType: ValueType;
1375
+ }>;
1376
+
1377
+ type ReteMaximumNode = ExtendReteNode<'Maximum', {
1378
+ aValue: number | number[];
1379
+ aValueType: ValueType;
1380
+ bValue: number | number[];
1381
+ bValueType: ValueType;
1382
+ outValue: number | number[];
1383
+ outValueType: ValueType;
1384
+ }>;
1385
+
1386
+ type ReteOneMinusNode = ExtendReteNode<'OneMinus', {
1387
+ inValue: number | number[];
1388
+ inValueType: ValueType;
1389
+ outValue: number | number[];
1390
+ outValueType: ValueType;
1391
+ }>;
1392
+
1393
+ type ReteRemapNode = ExtendReteNode<'Remap', {
1394
+ inValue: number | number[];
1395
+ inValueType: ValueType;
1396
+ inMinMaxValue: number[];
1397
+ inMinMaxValueType: ValueType.vec2;
1398
+ outMinMaxValue: number[];
1399
+ outMinMaxValueType: ValueType.vec2;
1400
+ outValue: number | number[];
1401
+ outValueType: ValueType;
1402
+ }>;
1403
+
1404
+ type ReteSaturateNode = ExtendReteNode<'Saturate', {
1405
+ inValue: number | number[];
1406
+ inValueType: ValueType;
1407
+ outValue: number | number[];
1408
+ outValueType: ValueType;
1409
+ }>;
1410
+
1411
+ type ReteRandomRangeNode = ExtendReteNode<'RandomRange', {
1412
+ seedValue: number | number[];
1413
+ seedValueType: ValueType;
1414
+ minValue: number | number[];
1415
+ minValueType: ValueType;
1416
+ maxValue: number | number[];
1417
+ maxValueType: ValueType;
1418
+ outValue: number | number[];
1419
+ outValueType: ValueType;
1420
+ }>;
1421
+
1422
+ type ReteCeilingNode = ExtendReteNode<'Ceiling', {
1423
+ inValue: number | number[];
1424
+ inValueType: ValueType;
1425
+ outValue: number | number[];
1426
+ outValueType: ValueType;
1427
+ }>;
1428
+
1429
+ type ReteFloorNode = ExtendReteNode<'Floor', {
1430
+ inValue: number | number[];
1431
+ inValueType: ValueType;
1432
+ outValue: number | number[];
1433
+ outValueType: ValueType;
1434
+ }>;
1435
+
1436
+ type ReteRoundNode = ExtendReteNode<'Round', {
1437
+ inValue: number | number[];
1438
+ inValueType: ValueType;
1439
+ outValue: number | number[];
1440
+ outValueType: ValueType;
1441
+ }>;
1442
+
1443
+ type ReteSignNode = ExtendReteNode<'Sign', {
1444
+ inValue: number | number[];
1445
+ inValueType: ValueType;
1446
+ outValue: number | number[];
1447
+ outValueType: ValueType;
1448
+ }>;
1449
+
1450
+ type ReteTruncateNode = ExtendReteNode<'Truncate', {
1451
+ inValue: number | number[];
1452
+ inValueType: ValueType;
1453
+ outValue: number | number[];
1454
+ outValueType: ValueType;
1455
+ }>;
1456
+
1457
+ type ReteStepNode = ExtendReteNode<'Step', {
1458
+ edgeValue: number | number[];
1459
+ edgeValueType: ValueType;
1460
+ inValue: number | number[];
1461
+ inValueType: ValueType;
1462
+ outValue: number | number[];
1463
+ outValueType: ValueType;
1464
+ }>;
1465
+
1466
+ type ReteCrossProductNode = ExtendReteNode<'CrossProduct', {
1467
+ aValue: number[];
1468
+ aValueType: ValueType.vec3;
1469
+ bValue: number[];
1470
+ bValueType: ValueType.vec3;
1471
+ outValue: number[];
1472
+ outValueType: ValueType.vec3;
1473
+ }>;
1474
+
1475
+ type ReteDistanceNode = ExtendReteNode<'Distance', {
1476
+ aValue: number | number[];
1477
+ aValueType: VectorValueType;
1478
+ bValue: number | number[];
1479
+ bValueType: VectorValueType;
1480
+ outValue: number[];
1481
+ outValueType: ValueType.float;
1482
+ }>;
1483
+
1484
+ type ReteDotProductNode = ExtendReteNode<'DotProduct', {
1485
+ aValue: number | number[];
1486
+ aValueType: VectorValueType;
1487
+ bValue: number | number[];
1488
+ bValueType: VectorValueType;
1489
+ outValue: number[];
1490
+ outValueType: ValueType.float;
1491
+ }>;
1492
+
1493
+ type ReteFresnelEffectNode = ExtendReteNode<'FresnelEffect', {
1494
+ normalValue: number | number[];
1495
+ normalValueType: ValueType;
1496
+ viewDirValue: number | number[];
1497
+ viewDirValueType: ValueType;
1498
+ powerValue: number | number[];
1499
+ powerValueType: ValueType;
1500
+ outValue: number | number[];
1501
+ outValueType: ValueType;
1502
+ }>;
1503
+
1504
+ type ReteProjectionNode = ExtendReteNode<'Projection', {
1505
+ aValue: number | number[];
1506
+ aValueType: ValueType;
1507
+ bValue: number | number[];
1508
+ bValueType: ValueType;
1509
+ outValue: number | number[];
1510
+ outValueType: ValueType;
1511
+ }>;
1512
+
1513
+ type ReteReflectionNode = ExtendReteNode<'Reflection', {
1514
+ inValue: number | number[];
1515
+ inValueType: ValueType;
1516
+ normalValue: number | number[];
1517
+ normalValueType: ValueType;
1518
+ outValue: number | number[];
1519
+ outValueType: ValueType;
1520
+ }>;
1521
+
1522
+ type ReteRotateAboutAxisNode = ExtendReteNode<'RotateAboutAxis', {
1523
+ inValue: number[];
1524
+ inValueType: ValueType.vec3;
1525
+ axisValue: number[];
1526
+ axisValueType: ValueType.vec3;
1527
+ roateValue: number;
1528
+ roateValueType: ValueType.float;
1529
+ outValue: number[];
1530
+ outValueType: ValueType.vec3;
1531
+ unitValue: 'degrees' | 'radians';
1532
+ }>;
1533
+
1534
+ type ReteSphereMaskNode = ExtendReteNode<'SphereMask', {
1535
+ coordsValue: number | number[];
1536
+ coordsValueType: VectorValueType;
1537
+ centerValue: number | number[];
1538
+ centerValueType: VectorValueType;
1539
+ radiusValue: number;
1540
+ radiusValueType: ValueType.float;
1541
+ hardnessValue: number;
1542
+ hardnessValueType: ValueType.float;
1543
+ outValue: number | number[];
1544
+ outValueType: VectorValueType;
1545
+ }>;
1546
+
1547
+ declare const TypeOptions: readonly ["position", "direction"];
1548
+ declare const SpaceOptions: readonly ["object", "view", "world", "tangent"];
1549
+ type TypeValue$2 = ArrayElement<typeof TypeOptions>;
1550
+ type SpaceValue = ArrayElement<typeof SpaceOptions>;
1551
+ type ReteTransformNode = ExtendReteNode<'Transform', {
1552
+ inValue: number[];
1553
+ inValueType: ValueType.vec3;
1554
+ outValue: number[];
1555
+ outValueType: ValueType.vec3;
1556
+ typeValue: TypeValue$2;
1557
+ typeValueType: ValueType.string;
1558
+ inSpaceValue: SpaceValue;
1559
+ inSpaceValueType: ValueType.string;
1560
+ outSpaceValue: SpaceValue;
1561
+ outSpaceValueType: ValueType.string;
1562
+ }>;
1563
+
1564
+ type ReteRefractNode = ExtendReteNode<'Refract', {
1565
+ inValue: number | number[];
1566
+ inValueType: ValueType;
1567
+ normalValue: number | number[];
1568
+ normalValueType: ValueType;
1569
+ etaValue: number;
1570
+ etaValueType: ValueType.float;
1571
+ outValue: number | number[];
1572
+ outValueType: ValueType;
1573
+ }>;
1574
+
1575
+ type ReteNoiseSineWaveNode = ExtendReteNode<'NoiseSineWave', {
1576
+ inValue: number | number[];
1577
+ inValueType: ValueType;
1578
+ minMaxValue: number[];
1579
+ minMaxValueType: ValueType.vec2;
1580
+ outValue: number | number[];
1581
+ outValueType: ValueType;
1582
+ }>;
1583
+
1584
+ type ReteSquareWaveNode = ExtendReteNode<'SquareWave', {
1585
+ inValue: number | number[];
1586
+ inValueType: ValueType;
1587
+ outValue: number | number[];
1588
+ outValueType: ValueType;
1589
+ }>;
1590
+
1591
+ type ReteSawtoothWaveNode = ExtendReteNode<'SawtoothWave', {
1592
+ inValue: number | number[];
1593
+ inValueType: ValueType;
1594
+ outValue: number | number[];
1595
+ outValueType: ValueType;
1596
+ }>;
1597
+
1598
+ type ReteTriangleWaveNode = ExtendReteNode<'TriangleWave', {
1599
+ inValue: number | number[];
1600
+ inValueType: ValueType;
1601
+ outValue: number | number[];
1602
+ outValueType: ValueType;
1603
+ }>;
1604
+
1605
+ type ReteFloatNode = ExtendReteNode<'Float', {
1606
+ xValue: number;
1607
+ xValueType: ValueType.float;
1608
+ outValue: number;
1609
+ outValueType: ValueType.float;
1610
+ }>;
1611
+
1612
+ type ReteVec2Node = ExtendReteNode<'Vector 2', {
1613
+ xValue: number;
1614
+ xValueType: ValueType.float;
1615
+ yValue: number;
1616
+ yValueType: ValueType.float;
1617
+ outValue: number[];
1618
+ outValueType: ValueType.vec2;
1619
+ }>;
1620
+
1621
+ type ReteVec3Node = ExtendReteNode<'Vector 3', {
1622
+ xValue: number;
1623
+ xValueType: ValueType.float;
1624
+ yValue: number;
1625
+ yValueType: ValueType.float;
1626
+ zValue: number;
1627
+ zValueType: ValueType.float;
1628
+ outValue: number[];
1629
+ outValueType: ValueType.vec3;
1630
+ }>;
1631
+
1632
+ type ReteVec4Node = ExtendReteNode<'Vector 4', {
1633
+ xValue: number;
1634
+ xValueType: ValueType.float;
1635
+ yValue: number;
1636
+ yValueType: ValueType.float;
1637
+ zValue: number;
1638
+ zValueType: ValueType.float;
1639
+ wValue: number;
1640
+ wValueType: ValueType.float;
1641
+ outValue: number[];
1642
+ outValueType: ValueType.vec4;
1643
+ [k: string]: any;
1644
+ }>;
1645
+
1646
+ type ReteColorNode = ExtendReteNode<'Color', {
1647
+ outValue: number[];
1648
+ outValueType: ValueType.vec3;
1649
+ outValueUsage: ValueUsage.Color;
1650
+ }>;
1651
+
1652
+ declare const Options$1: readonly ["PI", "TAU", "PHI", "E", "SQRT2", "PI_HALF"];
1653
+ type TypeValue$1 = ArrayElement<typeof Options$1>;
1654
+ type ReteConstantNode = ExtendReteNode<'Constant', {
1655
+ typeValue: TypeValue$1;
1656
+ outValue: number;
1657
+ outValueType: ValueType.float;
1658
+ }>;
1659
+
1660
+ type ReteTimeNode = ExtendReteNode<'Time', {
1661
+ timeValue: number;
1662
+ timeValueType: ValueType.float;
1663
+ sinTimeValue: number;
1664
+ sinTimeValueType: ValueType.float;
1665
+ cosTimeValue: number;
1666
+ cosTimeValueType: ValueType.float;
1667
+ deltaTimeValue: number;
1668
+ deltaTimeValueType: ValueType.float;
1669
+ smoothDeltaValue: number;
1670
+ smoothDeltaValueType: ValueType.float;
1671
+ }>;
1672
+
1673
+ declare module '../../rete/core/events' {
1674
+ interface EventsTypes {
1675
+ parameterchange: {
1676
+ name: string;
1677
+ outValue: any;
1678
+ outValueType: ValueType;
1679
+ outValueUsage?: ValueUsage;
1680
+ outValueName: string;
1681
+ exposed: boolean;
1682
+ };
1683
+ parameterdelete: {
1684
+ name: string;
1685
+ };
1686
+ }
1687
+ }
1688
+ type ReteParameterNode = ExtendReteNode<'Parameter', {
1689
+ outValue: any;
1690
+ outValueType: ValueType;
1691
+ outValueUsage?: ValueUsage;
1692
+ outValueName: string;
1693
+ }>;
1694
+
1695
+ declare module '../../rete/core/events' {
1696
+ interface EventsTypes {
1697
+ varyingchange: {
1698
+ name: string;
1699
+ outValueName: string;
1700
+ };
1701
+ }
1702
+ }
1703
+ type ReteVaryingNode = ExtendReteNode<'Varying', {
1704
+ outValue: number[];
1705
+ outValueType: ValueType.vec4;
1706
+ outValueName: string;
1707
+ }>;
1708
+
1709
+ type ReteTexture2DAssetNode = ExtendReteNode<'Texture2DAsset', {
1710
+ outValue: AssetValue;
1711
+ outValueType: ValueType.texture2d;
1712
+ }>;
1713
+
1714
+ type ReteSampleTexture2DNode = ExtendReteNode<'SampleTexture2D', {
1715
+ rgbaValue: number[];
1716
+ rgbaValueType: ValueType.vec4;
1717
+ rValue: number;
1718
+ rValueType: ValueType.float;
1719
+ gValue: number;
1720
+ gValueType: ValueType.float;
1721
+ bValue: number;
1722
+ bValueType: ValueType.float;
1723
+ aValue: number;
1724
+ aValueType: ValueType.float;
1725
+ textureValue: AssetValue;
1726
+ textureValueType: ValueType.texture2d;
1727
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3';
1728
+ uvValueType: ValueType.vec2;
1729
+ typeValue: 'default' | 'normal';
1730
+ spaceValue: 'object' | 'tangent';
1731
+ texColorSpaceValue: 'sRGB' | 'Linear';
1732
+ texColorSpaceValueType: ValueType.string;
1733
+ }>;
1734
+
1735
+ type ReteTexelSizeNode = ExtendReteNode<'TexelSize', {
1736
+ textureValue: AssetValue;
1737
+ textureValueType: ValueType.texture2d;
1738
+ widthValue: number;
1739
+ widthValueType: ValueType.float;
1740
+ heightValue: number;
1741
+ heightValueType: ValueType.float;
1742
+ }>;
1743
+
1744
+ type ReteSamplerStateNode = ExtendReteNode<'SamplerState', {
1745
+ outValue: SamplerValue;
1746
+ outValueType: ValueType.sampler;
1747
+ }>;
1748
+
1749
+ type ReteUVNode = ExtendReteNode<'UV', {
1750
+ outValue: number[];
1751
+ outValueType: ValueType.vec2;
1752
+ channelValue: 'UV0' | 'UV1' | 'UV2' | 'UV3';
1753
+ }>;
1754
+
1755
+ type ReteNormalNode = ExtendReteNode<'Normal', {
1756
+ outValue: number[];
1757
+ outValueType: ValueType.vec3;
1758
+ spaceValue: SpaceValue$1;
1759
+ }>;
1760
+
1761
+ type RetePositionNode = ExtendReteNode<'Position', {
1762
+ outValue: number[];
1763
+ outValueType: ValueType.vec3;
1764
+ spaceValue: SpaceValue$1;
1765
+ }>;
1766
+
1767
+ type ReteViewVectorNode = ExtendReteNode<'ViewVector', {
1768
+ outValue: number[];
1769
+ outValueType: ValueType.vec3;
1770
+ spaceValue: SpaceValue$1;
1771
+ }>;
1772
+
1773
+ type ReteViewDirectionNode = ExtendReteNode<'ViewDirection', {
1774
+ outValue: number[];
1775
+ outValueType: ValueType.vec3;
1776
+ spaceValue: SpaceValue$1;
1777
+ }>;
1778
+
1779
+ type ReteScreenPositionNode = ExtendReteNode<'ScreenPosition', {
1780
+ outValue: number[];
1781
+ outValueType: ValueType.vec4;
1782
+ modeValue: ScreenPositionModeValue;
1783
+ }>;
1784
+
1785
+ type ReteTangentVectorNode = ExtendReteNode<'TangentVector', {
1786
+ outValue: number[];
1787
+ outValueType: ValueType.vec3;
1788
+ spaceValue: SpaceValue$1;
1789
+ }>;
1790
+
1791
+ type ReteBiTangentVectorNode = ExtendReteNode<'BiTangentVector', {
1792
+ outValue: number[];
1793
+ outValueType: ValueType.vec3;
1794
+ spaceValue: SpaceValue$1;
1795
+ }>;
1796
+
1797
+ declare const Options: readonly ["Model", "View", "Proj", "ViewProj", "ModelView", "I_Model", "I_View", "I_Proj", "I_ViewProj", "I_ModelView", "IT_Model", "IT_ModelView"];
1798
+ type TypeValue = ArrayElement<typeof Options>;
1799
+ type ReteTransformationMatrixNode = ExtendReteNode<'TransformationMatrix', {
1800
+ typeValue: TypeValue;
1801
+ outValue: number[];
1802
+ outValueType: ValueType.mat4;
1803
+ }>;
1804
+
1805
+ type ReteMatrix4x4Node = ExtendReteNode<'Matrix4x4', {
1806
+ outValue: number[];
1807
+ outValueType: ValueType.mat4;
1808
+ }>;
1809
+
1810
+ type ReteMatrix3x3Node = ExtendReteNode<'Matrix3x3', {
1811
+ outValue: number[];
1812
+ outValueType: ValueType.mat3;
1813
+ }>;
1814
+
1815
+ type ReteMatrix2x2Node = ExtendReteNode<'Matrix2x2', {
1816
+ outValue: number[];
1817
+ outValueType: ValueType.mat2;
1818
+ }>;
1819
+
1820
+ type ReteCameraNode = ExtendReteNode<'Camera', {
1821
+ positionValue: number[];
1822
+ positionValueType: ValueType.vec3;
1823
+ directinoValue: number[];
1824
+ directinoValueType: ValueType.vec3;
1825
+ orthographicValue: number;
1826
+ orthographicValueType: ValueType.float;
1827
+ nearPlaneValue: number;
1828
+ nearPlaneValueType: ValueType.float;
1829
+ farPlaneValue: number;
1830
+ farPlaneValueType: ValueType.float;
1831
+ zBufferSignValue: number;
1832
+ zBufferSignValueType: ValueType.float;
1833
+ widthValue: number;
1834
+ widthValueType: ValueType.float;
1835
+ heightValue: number;
1836
+ heightValueType: ValueType.float;
1837
+ }>;
1838
+
1839
+ type ReteObjectNode = ExtendReteNode<'Object', {
1840
+ positionValue: number[];
1841
+ positionValueType: ValueType.vec3;
1842
+ sinTimeValue: number[];
1843
+ sinTimeValueType: ValueType.vec3;
1844
+ }>;
1845
+
1846
+ type ReteScreenNode = ExtendReteNode<'Screen', {
1847
+ widthValue: number;
1848
+ widthValueType: ValueType.float;
1849
+ heightValue: number;
1850
+ heightValueType: ValueType.float;
1851
+ }>;
1852
+
1853
+ type ReteSceneColorNode = ExtendReteNode<'SceneColor', {
1854
+ uvValue: ScreenPositionModeValue | number[];
1855
+ uvValueType: ValueType.vec4;
1856
+ outValue: number;
1857
+ outValueType: ValueType.float;
1858
+ }>;
1859
+
1860
+ declare const ModeOptions$2: readonly ["linear01", "raw", "eye"];
1861
+ type ModeValue = ArrayElement<typeof ModeOptions$2>;
1862
+ type ReteSceneDepthNode = ExtendReteNode<'SceneDepth', {
1863
+ uvValue: ScreenPositionModeValue | number[];
1864
+ uvValueType: ValueType.vec4;
1865
+ outValue: number;
1866
+ outValueType: ValueType.float;
1867
+ modeValue: ModeValue;
1868
+ modeValueType: ValueType.string;
1869
+ }>;
1870
+
1871
+ type ReteFragmentContext = ExtendReteContext<'Fragment', {
1872
+ vertValue: 0;
1873
+ vertValueType: ValueType.vertex;
1874
+ }>;
1875
+ declare class FragmentRC extends RC {
1876
+ static Name: string;
1877
+ constructor();
1878
+ initNode(node: ReteFragmentContext): Promise<void>;
1879
+ builder(node: ReteFragmentContext): Promise<void>;
1880
+ compileSG(compiler: ShaderGraphCompiler, node: SGNodeData<ReteFragmentContext>): SGNodeOutput;
1881
+ }
1882
+
1883
+ type ReteVertexContext = ExtendReteContext<'Vertex', {
1884
+ vertValue: 0;
1885
+ vertValueType: ValueType.vertex;
1886
+ }>;
1887
+
1888
+ type ReteOutputNode = ExtendReteContext<'Output', {
1889
+ [k: `fnIn${string}Value`]: any;
1890
+ [k: `fnIn${string}Type`]: ValueType;
1891
+ }>;
1892
+
1893
+ type ReteNormalBlock = ExtendReteNode<'NormalBlock', {
1894
+ normalValue: number[];
1895
+ normalValueType: ValueType.vec3;
1896
+ }>;
1897
+
1898
+ type RetePositionBlock = ExtendReteNode<'PositionBlock', {
1899
+ positionValue: number[];
1900
+ positionValueType: ValueType.vec3;
1901
+ }>;
1902
+
1903
+ type ReteTangentBlock = ExtendReteNode<'TangentBlock', {
1904
+ tangentValue: number[];
1905
+ tangentValueType: ValueType.vec3;
1906
+ }>;
1907
+
1908
+ type ReteCustomInterpolatorBlock = ExtendReteNode<'CustomInterpolatorBlock', {
1909
+ varyingValue: number[];
1910
+ varyingValueType: ValueType.vec3;
1911
+ varyingValueName: string;
1912
+ }>;
1913
+
1914
+ type ReteBaseColorBlock = ExtendReteNode<'BaseColorBlock', {
1915
+ baseColorValue: number[];
1916
+ baseColorValueType: ValueType.vec3;
1917
+ baseColorValueUsage: ValueUsage;
1918
+ }>;
1919
+ declare class BaseColorBlock extends RCBlock {
1920
+ static Name: string;
1921
+ constructor();
1922
+ initNode(node: ReteBaseColorBlock): Promise<void>;
1923
+ builder(node: ReteBaseColorBlock): Promise<void>;
1924
+ compileSG(compiler: ShaderGraphCompiler, node: SGNodeData<ReteBaseColorBlock>): SGNodeOutput;
1925
+ }
1926
+
1927
+ type ReteSmoothnessBlock = ExtendReteNode<'SmoothnessBlock', {
1928
+ smoothnessValue: number;
1929
+ smoothnessValueType: ValueType.float;
1930
+ }>;
1931
+
1932
+ type ReteMetallicBlock = ExtendReteNode<'MetallicBlock', {
1933
+ metallicValue: number;
1934
+ metallicValueType: ValueType.float;
1935
+ }>;
1936
+
1937
+ type ReteAOBlock = ExtendReteNode<'AOBlock', {
1938
+ aoValue: number;
1939
+ aoValueType: ValueType.float;
1940
+ }>;
1941
+
1942
+ type ReteEmissionBlock = ExtendReteNode<'EmissionBlock', {
1943
+ emissionValue: number[];
1944
+ emissionValueType: ValueType.vec3;
1945
+ emissionValueUsage: ValueUsage;
1946
+ }>;
1947
+
1948
+ type ReteNormalTSBlock = ExtendReteNode<'NormalTSBlock', {
1949
+ normalValue: number[];
1950
+ normalValueType: ValueType.vec3;
1951
+ }>;
1952
+
1953
+ type ReteAlphaBlock = ExtendReteNode<'AlphaBlock', {
1954
+ alphaValue: number;
1955
+ alphaValueType: ValueType.float;
1956
+ }>;
1957
+
1958
+ type ReteAlphaClipBlock = ExtendReteNode<'AlphaClipBlock', {
1959
+ alphaValue: number;
1960
+ alphaValueType: ValueType.float;
1961
+ }>;
1962
+
1963
+ type ReteCoatMaskBlock = ExtendReteNode<'CoatMaskBlock', {
1964
+ CoatMaskValue: number;
1965
+ CoatMaskValueType: ValueType.float;
1966
+ }>;
1967
+
1968
+ type ReteCoatSmoothnessBlock = ExtendReteNode<'CoatSmoothnessBlock', {
1969
+ CoatsmoothnessValue: number;
1970
+ CoatsmoothnessValueType: ValueType.float;
1971
+ }>;
1972
+
1973
+ type ReteChannelMixerNode = ExtendReteNode<'ChannelMixer', {
1974
+ inValue: number[];
1975
+ inValueType: ValueType.vec3;
1976
+ outValue: number[];
1977
+ outValueType: ValueType.vec3;
1978
+ rValue: number[];
1979
+ rValueType: ValueType.vec3;
1980
+ gValue: number[];
1981
+ gValueType: ValueType.vec3;
1982
+ bValue: number[];
1983
+ bValueType: ValueType.vec3;
1984
+ }>;
1985
+
1986
+ type ReteContrastNode = ExtendReteNode<'Contrast', {
1987
+ inValue: number[];
1988
+ inValueType: ValueType.vec3;
1989
+ outValue: number[];
1990
+ outValueType: ValueType.vec3;
1991
+ contrastValue: number;
1992
+ contrastValueType: ValueType.float;
1993
+ }>;
1994
+
1995
+ type ReteHueNode = ExtendReteNode<'Hue', {
1996
+ inValue: number[];
1997
+ inValueType: ValueType.vec3;
1998
+ outValue: number[];
1999
+ outValueType: ValueType.vec3;
2000
+ offsetValue: number;
2001
+ offsetValueType: ValueType.float;
2002
+ rangeValue: 'degrees' | 'radians';
2003
+ }>;
2004
+
2005
+ type ReteReplaceColorNode = ExtendReteNode<'ReplaceColor', {
2006
+ inValue: number[];
2007
+ inValueType: ValueType.vec3;
2008
+ outValue: number[];
2009
+ outValueType: ValueType.vec3;
2010
+ rangeValue: number;
2011
+ rangeValueType: ValueType.float;
2012
+ fuzzinessValue: number;
2013
+ fuzzinessValueType: ValueType.float;
2014
+ fromValue: number[];
2015
+ fromValueType: ValueType.vec3;
2016
+ fromValueUsage: ValueUsage;
2017
+ toValue: number[];
2018
+ toValueType: ValueType.vec3;
2019
+ toValueUsage: ValueUsage;
2020
+ }>;
2021
+
2022
+ type ReteSaturationNode = ExtendReteNode<'Saturation', {
2023
+ inValue: number[];
2024
+ inValueType: ValueType.vec3;
2025
+ outValue: number[];
2026
+ outValueType: ValueType.vec3;
2027
+ saturationValue: number;
2028
+ saturationValueType: ValueType.float;
2029
+ }>;
2030
+
2031
+ type ReteWhiteBalanceNode = ExtendReteNode<'WhiteBalance', {
2032
+ inValue: number[];
2033
+ inValueType: ValueType.vec3;
2034
+ outValue: number[];
2035
+ outValueType: ValueType.vec3;
2036
+ tintValue: number;
2037
+ tintValueType: ValueType.float;
2038
+ temperatureValue: number;
2039
+ temperatureValueType: ValueType.float;
2040
+ }>;
2041
+
2042
+ type ReteInvertColorsNode = ExtendReteNode<'InvertColors', {
2043
+ inValue: number | number[];
2044
+ inValueType: VectorValueType;
2045
+ outValue: number | number[];
2046
+ outValueType: VectorValueType;
2047
+ invertRValue: boolean;
2048
+ invertGValue: boolean;
2049
+ invertBValue: boolean;
2050
+ invertAValue: boolean;
2051
+ }>;
2052
+
2053
+ declare const ModeOptions$1: readonly ["Burn", "Darken", "Difference", "Dodge", "Divide", "Exclusion", "HardLight", "HardMix", "Lighten", "LinearBurn", "LinearDodge", "LinearLight", "LinearLightAddSub", "Multiply", "Negation", "Overlay", "PinLight", "Screen", "SoftLight", "Subtract", "VividLight", "Overwrite"];
2054
+ type ModeValueType = ArrayElement<typeof ModeOptions$1>;
2055
+ type ReteBlendNode = ExtendReteNode<'Blend', {
2056
+ baseValue: number | number[];
2057
+ baseValueType: ValueType;
2058
+ blendValue: number | number[];
2059
+ blendValueType: ValueType;
2060
+ opacityValue: number;
2061
+ opacityValueType: ValueType.float;
2062
+ outValue: number | number[];
2063
+ outValueType: ValueType;
2064
+ modeValue: ModeValueType;
2065
+ }>;
2066
+
2067
+ declare const ColorSpaceOptions: readonly ["sRGB", "Linear", "HSV"];
2068
+ type ColorSpace = ArrayElement<typeof ColorSpaceOptions>;
2069
+ type ReteColorSpaceConversionNode = ExtendReteNode<'ColorSpaceConversion', {
2070
+ inValue: number[];
2071
+ inValueType: ValueType.vec3;
2072
+ outValue: number[];
2073
+ outValueType: ValueType.vec3;
2074
+ fromValue: ColorSpace;
2075
+ fromValueType: ValueType.string;
2076
+ toValue: ColorSpace;
2077
+ toValueType: ValueType.string;
2078
+ }>;
2079
+
2080
+ type ReteColorMaskNode = ExtendReteNode<'ColorMask', {
2081
+ inValue: number[];
2082
+ inValueType: ValueType.vec3;
2083
+ maskColorValue: number;
2084
+ maskColorValueType: ValueType.vec3;
2085
+ maskColorValueUsage: ValueUsage;
2086
+ rangeValue: number;
2087
+ rangeValueType: ValueType.float;
2088
+ fuzzinessValue: number;
2089
+ fuzzinessValueType: ValueType.float;
2090
+ outValue: number[];
2091
+ outValueType: ValueType.vec3;
2092
+ }>;
2093
+
2094
+ type ReteNormalFromTextureNode = ExtendReteNode<'NormalFromTexture', {
2095
+ textureValue: AssetValue;
2096
+ textureValueType: ValueType.texture2d;
2097
+ uvValue: UVValue;
2098
+ uvValueType: ValueType.vec2;
2099
+ offsetValue: number;
2100
+ offsetValueType: ValueType.float;
2101
+ strengthValue: number;
2102
+ strengthValueType: ValueType.float;
2103
+ outValue: number[];
2104
+ outValueType: ValueType.vec3;
2105
+ }>;
2106
+
2107
+ declare const ModeOptions: readonly ["default", "reoriented"];
2108
+ type Mode = ArrayElement<typeof ModeOptions>;
2109
+ type ReteNormalBlendNode = ExtendReteNode<'NormalBlend', {
2110
+ aValue: number[];
2111
+ aValueType: ValueType.vec3;
2112
+ bValue: number[];
2113
+ bValueType: ValueType.vec3;
2114
+ outValue: number[];
2115
+ outValueType: ValueType.vec3;
2116
+ modeValue: Mode;
2117
+ modeValueType: ValueType.string;
2118
+ }>;
2119
+
2120
+ type ReteNormalReconstructZNode = ExtendReteNode<'NormalReconstructZ', {
2121
+ inValue: number[];
2122
+ inValueType: ValueType.vec2;
2123
+ outValue: number[];
2124
+ outValueType: ValueType.vec3;
2125
+ }>;
2126
+
2127
+ type ReteNormalStrengthNode = ExtendReteNode<'NormalStrength', {
2128
+ inValue: number[];
2129
+ inValueType: ValueType.vec3;
2130
+ strengthValue: number;
2131
+ strengthValueType: ValueType.float;
2132
+ outValue: number[];
2133
+ outValueType: ValueType.vec3;
2134
+ }>;
2135
+
2136
+ type ReteCombineNode = ExtendReteNode<'Combine', {
2137
+ rValue: number;
2138
+ rValueType: ValueType.float;
2139
+ gValue: number;
2140
+ gValueType: ValueType.float;
2141
+ bValue: number;
2142
+ bValueType: ValueType.float;
2143
+ aValue: number;
2144
+ aValueType: ValueType.float;
2145
+ rgbaValue: number[];
2146
+ rgbaValueType: ValueType.vec4;
2147
+ rgbValue: number[];
2148
+ rgbValueType: ValueType.vec3;
2149
+ rgValue: number[];
2150
+ rgValueType: ValueType.vec2;
2151
+ }>;
2152
+
2153
+ type ReteSplitNode = ExtendReteNode<'Split', {
2154
+ inValue: number | number[];
2155
+ inValueType: VectorValueType;
2156
+ rValue: number;
2157
+ rValueType: ValueType.float;
2158
+ gValue: number;
2159
+ gValueType: ValueType.float;
2160
+ bValue: number;
2161
+ bValueType: ValueType.float;
2162
+ aValue: number;
2163
+ aValueType: ValueType.float;
2164
+ }>;
2165
+
2166
+ type ReteSwizzleNode = ExtendReteNode<'Swizzle', {
2167
+ inValue: number | number[];
2168
+ inValueType: VectorValueType;
2169
+ outValue: number | number[];
2170
+ outValueType: VectorValueType;
2171
+ swizzleValue: string;
2172
+ }>;
2173
+
2174
+ type ReteFlipNode = ExtendReteNode<'Flip', {
2175
+ inValue: number | number[];
2176
+ inValueType: VectorValueType;
2177
+ outValue: number | number[];
2178
+ outValueType: VectorValueType;
2179
+ flipXValue: boolean;
2180
+ flipYValue: boolean;
2181
+ flipZValue: boolean;
2182
+ flipWValue: boolean;
2183
+ }>;
2184
+
2185
+ type ReteCheckerboardNode = ExtendReteNode<'Checkerboard', {
2186
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3' | number[];
2187
+ uvValueType: ValueType.vec2;
2188
+ colorAValue: number[];
2189
+ colorAValueType: ValueType.vec3;
2190
+ colorAValueUsage: ValueUsage.Color;
2191
+ colorBValue: number[];
2192
+ colorBValueType: ValueType.vec3;
2193
+ colorBValueUsage: ValueUsage.Color;
2194
+ frequencyValue: number[];
2195
+ frequencyValueType: ValueType.vec2;
2196
+ outValue: number[];
2197
+ outValueType: ValueType.vec3;
2198
+ }>;
2199
+
2200
+ type ReteGradientNoiseNode = ExtendReteNode<'GradientNoise', {
2201
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3' | number[];
2202
+ uvValueType: ValueType.vec2;
2203
+ scaleValue: number;
2204
+ scaleValueType: ValueType.float;
2205
+ outValue: number;
2206
+ outValueType: ValueType.float;
2207
+ }>;
2208
+
2209
+ type ReteSimpleNoiseNode = ExtendReteNode<'SimpleNoise', {
2210
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3' | number[];
2211
+ uvValueType: ValueType.vec2;
2212
+ scaleValue: number;
2213
+ scaleValueType: ValueType.float;
2214
+ outValue: number;
2215
+ outValueType: ValueType.float;
2216
+ }>;
2217
+
2218
+ type ReteVoronoiNode = ExtendReteNode<'Voronoi', {
2219
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3' | number[];
2220
+ uvValueType: ValueType.vec2;
2221
+ angleOffsetValue: number;
2222
+ angleOffsetValueType: ValueType.float;
2223
+ cellDensityValue: number;
2224
+ cellDensityValueType: ValueType.float;
2225
+ outValue: number;
2226
+ outValueType: ValueType.float;
2227
+ cellsValue: number;
2228
+ cellsValueType: ValueType.float;
2229
+ }>;
2230
+
2231
+ type ReteEllipseNode = ExtendReteNode<'Ellipse', {
2232
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3' | number[];
2233
+ uvValueType: ValueType.vec2;
2234
+ widthValue: number;
2235
+ widthValueType: ValueType.float;
2236
+ heightValue: number;
2237
+ heightValueType: ValueType.float;
2238
+ outValue: number;
2239
+ outValueType: ValueType.float;
2240
+ }>;
2241
+
2242
+ type RetePolygonNode = ExtendReteNode<'Polygon', {
2243
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3' | number[];
2244
+ uvValueType: ValueType.vec2;
2245
+ sidesValue: number;
2246
+ sidesValueType: ValueType.float;
2247
+ widthValue: number;
2248
+ widthValueType: ValueType.float;
2249
+ heightValue: number;
2250
+ heightValueType: ValueType.float;
2251
+ outValue: number;
2252
+ outValueType: ValueType.float;
2253
+ }>;
2254
+
2255
+ type ReteRectangleNode = ExtendReteNode<'Rectangle', {
2256
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3' | number[];
2257
+ uvValueType: ValueType.vec2;
2258
+ widthValue: number;
2259
+ widthValueType: ValueType.float;
2260
+ heightValue: number;
2261
+ heightValueType: ValueType.float;
2262
+ outValue: number;
2263
+ outValueType: ValueType.float;
2264
+ }>;
2265
+
2266
+ type ReteRoundedPolygonNode = ExtendReteNode<'RoundedPolygon', {
2267
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3' | number[];
2268
+ uvValueType: ValueType.vec2;
2269
+ sidesValue: number;
2270
+ sidesValueType: ValueType.float;
2271
+ roundnessValue: number;
2272
+ roundnessValueType: ValueType.float;
2273
+ widthValue: number;
2274
+ widthValueType: ValueType.float;
2275
+ heightValue: number;
2276
+ heightValueType: ValueType.float;
2277
+ outValue: number;
2278
+ outValueType: ValueType.float;
2279
+ }>;
2280
+
2281
+ type ReteRoundedRectangleNode = ExtendReteNode<'RoundedRectangle', {
2282
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3' | number[];
2283
+ uvValueType: ValueType.vec2;
2284
+ widthValue: number;
2285
+ widthValueType: ValueType.float;
2286
+ heightValue: number;
2287
+ heightValueType: ValueType.float;
2288
+ radiusValue: number;
2289
+ radiusValueType: ValueType.float;
2290
+ outValue: number;
2291
+ outValueType: ValueType.float;
2292
+ }>;
2293
+
2294
+ type RetePreviewNode = ExtendReteNode<'Preview', {
2295
+ inValue: number | number[];
2296
+ inValueType: ValueType;
2297
+ outValue: number | number[];
2298
+ outValueType: ValueType;
2299
+ }>;
2300
+
2301
+ type ReteCustomFunctionNode = ExtendReteNode<'CustomFunction', {
2302
+ typeValue: 'file' | 'string' | 'code';
2303
+ typeValueType: ValueType.string;
2304
+ nameValue: string;
2305
+ nameValueType: ValueType.string;
2306
+ bodyValue: string;
2307
+ bodyValueType: ValueType.string;
2308
+ fileValue: AssetValue;
2309
+ fileValueType: ValueType.string;
2310
+ codeValue: string;
2311
+ codeValueType: ValueType.string;
2312
+ editingCodeValue: boolean;
2313
+ editingCodeValueType: ValueType.bool;
2314
+ [k: `fnIn${string}Value`]: any;
2315
+ [k: `fnIn${string}Type`]: ValueType;
2316
+ [k: `fnOut${string}Value`]: any;
2317
+ [k: `fnOut${string}Type`]: ValueType;
2318
+ }>;
2319
+
2320
+ type ReteSubGraphNode = ExtendReteNode<'SubGraph', {
2321
+ assetValue: AssetValue;
2322
+ assetValueType: 'subgraph';
2323
+ }>;
2324
+
2325
+ type RetePreviewNumberNode = ExtendReteNode<'PreviewNumber', {
2326
+ inValue: number | number[];
2327
+ inValueType: VectorValueType;
2328
+ outValue: number | number[];
2329
+ outValueType: VectorValueType;
2330
+ }>;
2331
+
2332
+ type ReteVariableDefNode = ExtendReteNode<'VariableDef', {
2333
+ inValue: number | number[];
2334
+ inValueType: ValueType;
2335
+ outValue: number | number[];
2336
+ outValueType: ValueType;
2337
+ nameValue: string;
2338
+ nameValueType: ValueType.string;
2339
+ }>;
2340
+ declare module '../../rete/core/events' {
2341
+ interface EventsTypes {
2342
+ variablerefchange: {
2343
+ node: ReteVariableDefNode;
2344
+ nextName: string;
2345
+ };
2346
+ }
2347
+ }
2348
+
2349
+ type ReteVariableRefNode = ExtendReteNode<'VariableRef', {
2350
+ inValue: number | number[];
2351
+ inValueType: ValueType;
2352
+ outValue: number | number[];
2353
+ outValueType: ValueType;
2354
+ outValueName: string;
2355
+ defNodeIdValue: string;
2356
+ defNodeIdValueType: ValueType.string;
2357
+ }>;
2358
+
2359
+ type ReteTilingAndOffsetNode = ExtendReteNode<'TilingAndOffset', {
2360
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3' | number[];
2361
+ uvValueType: ValueType.vec2;
2362
+ tilingValue: number;
2363
+ tilingValueType: ValueType.vec2;
2364
+ offsetValue: number;
2365
+ offsetValueType: ValueType.vec2;
2366
+ outValue: number;
2367
+ outValueType: ValueType.vec2;
2368
+ }>;
2369
+
2370
+ type RetePolarCoordinatesNode = ExtendReteNode<'PolarCoordinates', {
2371
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3' | number[];
2372
+ uvValueType: ValueType.vec2;
2373
+ centerValue: number[];
2374
+ centerValueType: ValueType.vec2;
2375
+ radialScaleValue: number;
2376
+ radialScaleValueType: ValueType.float;
2377
+ lengthScaleValue: number;
2378
+ lengthScaleValueType: ValueType.float;
2379
+ outValue: number[];
2380
+ outValueType: ValueType.vec2;
2381
+ }>;
2382
+
2383
+ type ReteTwirlNode = ExtendReteNode<'Twirl', {
2384
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3' | number[];
2385
+ uvValueType: ValueType.vec2;
2386
+ centerValue: number[];
2387
+ centerValueType: ValueType.vec2;
2388
+ strengthValue: number;
2389
+ strengthValueType: ValueType.vec2;
2390
+ offsetValue: number[];
2391
+ offsetValueType: ValueType.vec2;
2392
+ outValue: number;
2393
+ outValueType: ValueType.vec2;
2394
+ }>;
2395
+
2396
+ type ReteRotateNode = ExtendReteNode<'Rotate', {
2397
+ uvValue: 'UV0' | 'UV1' | 'UV2' | 'UV3' | number[];
2398
+ uvValueType: ValueType.vec2;
2399
+ centerValue: number[];
2400
+ centerValueType: ValueType.vec2;
2401
+ rotationValue: number;
2402
+ rotationValueType: ValueType.float;
2403
+ unitValue: 'radians' | 'degrees';
2404
+ unitValueType: ValueType.string;
2405
+ outValue: number;
2406
+ outValueType: ValueType.vec2;
2407
+ }>;
2408
+
2409
+ type ReteFlipBookNode = ExtendReteNode<'FlipBook', {
2410
+ uvValue: UVValue | number[];
2411
+ uvValueType: ValueType.vec2;
2412
+ widthValue: number;
2413
+ widthValueType: ValueType.float;
2414
+ heightValue: number;
2415
+ heightValueType: ValueType.float;
2416
+ tileValue: number;
2417
+ tileValueType: ValueType.float;
2418
+ invertXValue: boolean;
2419
+ invertYValue: boolean;
2420
+ outValue: number;
2421
+ outValueType: ValueType.vec2;
2422
+ }>;
2423
+
2424
+ type ReteRadialShearNode = ExtendReteNode<'RadialShear', {
2425
+ uvValue: UVValue | number[];
2426
+ uvValueType: ValueType.vec2;
2427
+ centerValue: number[];
2428
+ centerValueType: ValueType.vec2;
2429
+ strengthValue: number[];
2430
+ strengthValueType: ValueType.vec2;
2431
+ offsetValue: number[];
2432
+ offsetValueType: ValueType.vec2;
2433
+ outValue: number[];
2434
+ outValueType: ValueType.vec2;
2435
+ }>;
2436
+
2437
+ type ReteSpherizeNode = ExtendReteNode<'Spherize', {
2438
+ uvValue: UVValue | number[];
2439
+ uvValueType: ValueType.vec2;
2440
+ centerValue: number[];
2441
+ centerValueType: ValueType.vec2;
2442
+ strengthValue: number[];
2443
+ strengthValueType: ValueType.vec2;
2444
+ offsetValue: number[];
2445
+ offsetValueType: ValueType.vec2;
2446
+ outValue: number[];
2447
+ outValueType: ValueType.vec2;
2448
+ }>;
2449
+
2450
+ type ReteTriplanarNode = ExtendReteNode<'Triplanar', {
2451
+ textureValue: AssetValue;
2452
+ textureValueType: ValueType.texture2d;
2453
+ positionValue: number[];
2454
+ positionValueType: ValueType.vec3;
2455
+ normalValue: number[];
2456
+ normalValueType: ValueType.vec3;
2457
+ tileValue: number;
2458
+ tileValueType: ValueType.float;
2459
+ blendValue: number;
2460
+ blendValueType: ValueType.float;
2461
+ outValue: number[];
2462
+ outValueType: ValueType.vec4;
2463
+ typeValue: 'default';
2464
+ }>;
2465
+
2466
+ type SGBlock = ReteCustomInterpolatorBlock | ReteNormalBlock | ReteTangentBlock | RetePositionBlock | ReteAOBlock | ReteBaseColorBlock | ReteEmissionBlock | ReteSmoothnessBlock | ReteNormalTSBlock | ReteMetallicBlock | ReteAlphaClipBlock | ReteAlphaBlock | ReteCoatSmoothnessBlock | ReteCoatMaskBlock;
2467
+ type SGContext = ReteVertexContext | ReteFragmentContext;
2468
+ type SGNodes = SGContext | SGBlock | ReteOutputNode | ReteVaryingNode | ReteParameterNode | ReteColorNode | ReteTimeNode | ReteConstantNode | ReteFloatNode | ReteVec2Node | ReteVec3Node | ReteVec4Node | ReteTexture2DAssetNode | ReteSampleTexture2DNode | ReteTexelSizeNode | ReteSamplerStateNode | ReteUVNode | ReteNormalNode | RetePositionNode | ReteViewVectorNode | ReteViewDirectionNode | ReteScreenPositionNode | ReteTangentVectorNode | ReteBiTangentVectorNode | ReteTransformationMatrixNode | ReteMatrix4x4Node | ReteMatrix3x3Node | ReteMatrix2x2Node | ReteCameraNode | ReteObjectNode | ReteScreenNode | ReteSceneColorNode | ReteSceneDepthNode | ReteSubtractNode | ReteDivideNode | ReteAddNode | RetePowerNode | ReteSquareRootNode | ReteMultiplyNode | ReteTangentNode | ReteRadiansToDegreesNode | ReteDegreesToRadiansNode | ReteHyperbolicTangentNode | ReteHyperbolicSineNode | ReteHyperbolicCosineNode | ReteArctangent2Node | ReteArctangentNode | ReteArcsineNode | ReteArccosineNode | ReteCosineNode | ReteSineNode | ReteExponentialNode | ReteLengthNode | ReteLogNode | ReteModuloNode | ReteNegateNode | ReteNormalizeNode | RetePosterizeNode | ReteReciprocalNode | ReteReciprocalSquareRootNode | ReteAbsoluteNode | ReteDDXNode | ReteDDYNode | ReteDDXYNode | ReteInverseLerpNode | ReteSmoothstepNode | ReteLerpNode | ReteClampNode | ReteMinimumNode | ReteMaximumNode | ReteOneMinusNode | ReteSaturateNode | ReteRemapNode | ReteRandomRangeNode | ReteFractionNode | ReteFloorNode | ReteRoundNode | ReteSignNode | ReteTruncateNode | ReteStepNode | ReteCeilingNode | ReteDistanceNode | ReteDotProductNode | ReteFresnelEffectNode | ReteProjectionNode | ReteReflectionNode | ReteRotateAboutAxisNode | ReteSphereMaskNode | ReteCrossProductNode | ReteTransformNode | ReteRefractNode | ReteNoiseSineWaveNode | ReteSawtoothWaveNode | ReteTriangleWaveNode | ReteSquareWaveNode | ReteCombineNode | ReteSwizzleNode | ReteFlipNode | ReteSplitNode | ReteCheckerboardNode | ReteGradientNoiseNode | ReteSimpleNoiseNode | ReteVoronoiNode | ReteEllipseNode | RetePolygonNode | ReteRectangleNode | ReteRoundedPolygonNode | ReteRoundedRectangleNode | ReteCustomFunctionNode | ReteSubGraphNode | RetePreviewNode | RetePreviewNumberNode | ReteVariableDefNode | ReteVariableRefNode | ReteChannelMixerNode | ReteContrastNode | ReteHueNode | ReteReplaceColorNode | ReteSaturationNode | ReteWhiteBalanceNode | ReteInvertColorsNode | ReteColorMaskNode | ReteNormalFromTextureNode | ReteNormalBlendNode | ReteNormalReconstructZNode | ReteNormalStrengthNode | ReteColorSpaceConversionNode | ReteBlendNode | ReteTilingAndOffsetNode | RetePolarCoordinatesNode | ReteRotateNode | ReteTwirlNode | ReteFlipBookNode | ReteRadialShearNode | ReteSpherizeNode | ReteTriplanarNode;
2469
+ interface SGNodeData<Node extends Node> extends NodeData {
2470
+ name: Node['name'];
2471
+ data: NodeData['data'] & Node['data'];
2472
+ blocks: SGNodeData<SGBlock>[];
2473
+ }
2474
+ interface SGNodesData {
2475
+ [id: string]: SGNodeData<SGNodes>;
2476
+ }
2477
+ interface SGSetting {
2478
+ template: 'lit' | 'unlit' | 'subgraph';
2479
+ precision: 'single' | 'float';
2480
+ allowMaterialOverride: boolean;
2481
+ surfaceType: 'opaque' | 'transparent';
2482
+ blendingMode: 'alpha' | 'premultiply' | 'additive' | 'multiply';
2483
+ renderFace: 'front' | 'back' | 'both';
2484
+ depthWrite: 'auto' | 'enable' | 'disable';
2485
+ depthTest: 'never' | 'less' | 'equal' | 'l equal' | 'greater' | 'not equal' | 'g equal' | 'always';
2486
+ alphaClipping: boolean;
2487
+ castShadows: boolean;
2488
+ clearCoat: boolean;
2489
+ }
2490
+ interface ShaderGraphData extends GraphData {
2491
+ type: 'ShaderGraph' | 'SubGraph';
2492
+ version: string;
2493
+ UIState: {
2494
+ showMainPreview?: boolean;
2495
+ showBlackBoard?: boolean;
2496
+ showInspector?: boolean;
2497
+ };
2498
+ setting: SGSetting;
2499
+ parameters: Array<ParameterData>;
2500
+ nodes: SGNodesData;
2501
+ }
2502
+ declare const SGSettingValueCfgs: SettingValueCfgs;
2503
+
2504
+ interface SubGraphProvider {
2505
+ getList(): MaybePromise<Array<AssetValue>>;
2506
+ getGraphData(asset: AssetValue): MaybePromise<ShaderGraphData>;
2507
+ }
2508
+
2509
+ /** 编辑器选项 */
2510
+ interface EditorOptions {
2511
+ /** 是否自动初始化基本节点 (默认 true) */
2512
+ autoInit?: boolean;
2513
+ /** 是否显示预览面板 (默认 true) */
2514
+ showPreview?: boolean;
2515
+ /** 子图提供者 */
2516
+ subGraphProvider?: SubGraphProvider;
2517
+ /** 自动编译 (默认 true) */
2518
+ autoCompile?: boolean;
2519
+ }
2520
+ /** 编辑器事件映射 */
2521
+ interface EditorEventMap {
2522
+ /** 图发生变化时触发 */
2523
+ change: () => void;
2524
+ /** 编译完成时触发 */
2525
+ compiled: (config: ShaderConfig) => void;
2526
+ /** 设置更新时触发 */
2527
+ settingUpdate: (name: string, value: any) => void;
2528
+ /** 图被导入时触发 */
2529
+ imported: () => void;
2530
+ /** 编辑器就绪时触发 */
2531
+ ready: () => void;
2532
+ }
2533
+ /** 编辑器插件 */
2534
+ interface EditorPlugin {
2535
+ /** 插件名称 */
2536
+ name: string;
2537
+ /** 安装钩子 */
2538
+ install?: (editor: ShaderGraphEditor) => void;
2539
+ /** 初始化钩子 */
2540
+ init?: (editor: ShaderGraphEditor) => void;
2541
+ }
2542
+ /**
2543
+ * ShaderGraphEditor 主类
2544
+ *
2545
+ * ## 特性
2546
+ * - 可视化节点编辑 (Rete.js)
2547
+ * - 支持 Unlit / Lit / SubGraph 模板
2548
+ * - 实时预览
2549
+ * - 参数面板 (Inspector)
2550
+ * - 黑板视图 (Blackboard)
2551
+ * - 子图支持
2552
+ * - 编译导出 ShaderConfig
2553
+ */
2554
+ declare class ShaderGraphEditor {
2555
+ /** 内部编辑器实例 */
2556
+ readonly inner: ShaderGraphEditor$1;
2557
+ /** 选项 */
2558
+ readonly options: Required<EditorOptions>;
2559
+ private _ready;
2560
+ private _readyPromise;
2561
+ private _resolveReady;
2562
+ private eventHandlers;
2563
+ /**
2564
+ * 构造编辑器
2565
+ *
2566
+ * @param container - 编辑器挂载的 DOM 容器
2567
+ * @param options - 编辑器选项
2568
+ *
2569
+ * @example
2570
+ * ```ts
2571
+ * const editor = new ShaderGraphEditor(
2572
+ * document.getElementById('editor')!,
2573
+ * { showPreview: true }
2574
+ * );
2575
+ * await editor.createGraph();
2576
+ * ```
2577
+ */
2578
+ constructor(container: HTMLElement, options?: EditorOptions);
2579
+ /**
2580
+ * 编辑器是否已就绪
2581
+ */
2582
+ get ready(): boolean;
2583
+ /**
2584
+ * 等待编辑器就绪
2585
+ */
2586
+ get readyPromise(): Promise<void>;
2587
+ private bindInternalEvents;
2588
+ /**
2589
+ * 创建新的着色器图
2590
+ *
2591
+ * 初始化 ShaderGraph 的所有必要节点 (Vertex Context, Fragment Context, 默认 Block 等)。
2592
+ *
2593
+ * @example
2594
+ * ```ts
2595
+ * await editor.createGraph();
2596
+ * ```
2597
+ */
2598
+ createGraph(): Promise<void>;
2599
+ /**
2600
+ * 创建新的子图
2601
+ *
2602
+ * @example
2603
+ * ```ts
2604
+ * await editor.createSubGraph();
2605
+ * ```
2606
+ */
2607
+ createSubGraph(): Promise<void>;
2608
+ /**
2609
+ * 从 JSON 加载图数据
2610
+ *
2611
+ * @param data - 图数据 (editor.save() 的产物)
2612
+ *
2613
+ * @example
2614
+ * ```ts
2615
+ * const data = editor.save();
2616
+ * localStorage.setItem('graph', JSON.stringify(data));
2617
+ *
2618
+ * // 恢复
2619
+ * const saved = JSON.parse(localStorage.getItem('graph')!);
2620
+ * editor.load(saved);
2621
+ * ```
2622
+ */
2623
+ load(data: ShaderGraphData): void;
2624
+ /**
2625
+ * 导出图为 JSON
2626
+ *
2627
+ * @returns 图数据
2628
+ */
2629
+ save(): ShaderGraphData;
2630
+ /**
2631
+ * 清空编辑器
2632
+ *
2633
+ * 移除所有节点和连线。
2634
+ */
2635
+ clear(): void;
2636
+ /**
2637
+ * 编译图为 ShaderConfig
2638
+ *
2639
+ * 返回的 ShaderConfig 可直接用于 ShaderGraphRuntime。
2640
+ *
2641
+ * @returns 着色器配置
2642
+ *
2643
+ * @example
2644
+ * ```ts
2645
+ * const config = await editor.compile();
2646
+ * runtime.load(config);
2647
+ * ```
2648
+ */
2649
+ compile(): Promise<ShaderConfig>;
2650
+ /**
2651
+ * 切换黑板视图 (参数列表)
2652
+ */
2653
+ toggleBlackboard(): void;
2654
+ /**
2655
+ * 切换主预览面板
2656
+ */
2657
+ togglePreview(): void;
2658
+ /**
2659
+ * 切换属性面板
2660
+ */
2661
+ toggleInspector(): void;
2662
+ /**
2663
+ * 监听编辑器事件
2664
+ *
2665
+ * @param event - 事件名
2666
+ * @param handler - 处理函数
2667
+ *
2668
+ * @example
2669
+ * ```ts
2670
+ * editor.on('change', () => console.log('graph changed'));
2671
+ * editor.on('compiled', (config) => console.log(config));
2672
+ * ```
2673
+ */
2674
+ on<K extends keyof EditorEventMap>(event: K, handler: EditorEventMap[K]): void;
2675
+ /**
2676
+ * 移除事件监听
2677
+ */
2678
+ off<K extends keyof EditorEventMap>(event: K, handler: EditorEventMap[K]): void;
2679
+ private emit;
2680
+ /**
2681
+ * 使用插件
2682
+ *
2683
+ * @param plugin - 插件
2684
+ * @param options - 插件选项
2685
+ *
2686
+ * @example
2687
+ * ```ts
2688
+ * editor.use({
2689
+ * name: 'my-plugin',
2690
+ * init: (editor) => { console.log('plugin loaded'); }
2691
+ * });
2692
+ * ```
2693
+ */
2694
+ use(plugin: EditorPlugin, options?: any): void;
2695
+ /**
2696
+ * 释放编辑器资源
2697
+ *
2698
+ * 清理 DOM、事件监听、取消编译任务。
2699
+ */
2700
+ dispose(): void;
2701
+ }
2702
+
2703
+ export { type EditorEventMap, type EditorOptions, type EditorPlugin, type ShaderGraphData as GraphData, type SGNodeData, type SGNodes, type SGSetting, SGSettingValueCfgs, ShaderConfig, ShaderGraphEditor, type SubGraphProvider };