@sparkjsdev/spark 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.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +212 -0
  3. package/dist/assets/worker-DQiiPuma.js.map +1 -0
  4. package/dist/assets/worker-DnqMl73p.js.map +1 -0
  5. package/dist/spark.cjs.js +12696 -0
  6. package/dist/spark.cjs.js.map +1 -0
  7. package/dist/spark.cjs.min.js +1086 -0
  8. package/dist/spark.cjs.min.js.map +1 -0
  9. package/dist/spark.module.js +12679 -0
  10. package/dist/spark.module.js.map +1 -0
  11. package/dist/spark.module.min.js +10048 -0
  12. package/dist/spark.module.min.js.map +1 -0
  13. package/dist/types/ForgeRenderer.d.ts +136 -0
  14. package/dist/types/ForgeViewpoint.d.ts +83 -0
  15. package/dist/types/PackedSplats.d.ts +87 -0
  16. package/dist/types/Readback.d.ts +50 -0
  17. package/dist/types/RgbaArray.d.ts +44 -0
  18. package/dist/types/SplatAccumulator.d.ts +27 -0
  19. package/dist/types/SplatEdit.d.ts +94 -0
  20. package/dist/types/SplatGenerator.d.ts +61 -0
  21. package/dist/types/SplatGeometry.d.ts +7 -0
  22. package/dist/types/SplatLoader.d.ts +80 -0
  23. package/dist/types/SplatMesh.d.ts +85 -0
  24. package/dist/types/SplatSkinning.d.ts +29 -0
  25. package/dist/types/antisplat.d.ts +5 -0
  26. package/dist/types/controls.d.ts +114 -0
  27. package/dist/types/defines.d.ts +17 -0
  28. package/dist/types/dyno/base.d.ts +174 -0
  29. package/dist/types/dyno/control.d.ts +6 -0
  30. package/dist/types/dyno/convert.d.ts +190 -0
  31. package/dist/types/dyno/logic.d.ts +103 -0
  32. package/dist/types/dyno/math.d.ts +214 -0
  33. package/dist/types/dyno/mathTypes.d.ts +47 -0
  34. package/dist/types/dyno/output.d.ts +25 -0
  35. package/dist/types/dyno/program.d.ts +30 -0
  36. package/dist/types/dyno/splats.d.ts +156 -0
  37. package/dist/types/dyno/texture.d.ts +50 -0
  38. package/dist/types/dyno/transform.d.ts +59 -0
  39. package/dist/types/dyno/trig.d.ts +94 -0
  40. package/dist/types/dyno/types.d.ts +62 -0
  41. package/dist/types/dyno/uniforms.d.ts +374 -0
  42. package/dist/types/dyno/util.d.ts +139 -0
  43. package/dist/types/dyno/value.d.ts +32 -0
  44. package/dist/types/dyno/vecmat.d.ts +226 -0
  45. package/dist/types/dyno.d.ts +16 -0
  46. package/dist/types/generators/snow.d.ts +65 -0
  47. package/dist/types/generators/static.d.ts +9 -0
  48. package/dist/types/generators.d.ts +2 -0
  49. package/dist/types/hands.d.ts +95 -0
  50. package/dist/types/index.d.ts +20 -0
  51. package/dist/types/ksplat.d.ts +6 -0
  52. package/dist/types/ply.d.ts +31 -0
  53. package/dist/types/shaders.d.ts +1 -0
  54. package/dist/types/splatConstructors.d.ts +46 -0
  55. package/dist/types/splatWorker.d.ts +20 -0
  56. package/dist/types/spz.d.ts +50 -0
  57. package/dist/types/utils.d.ts +150 -0
  58. package/dist/types/vrButton.d.ts +6 -0
  59. package/dist/types/worker.d.ts +1 -0
  60. package/package.json +63 -0
@@ -0,0 +1,85 @@
1
+ import { PackedSplats } from './PackedSplats';
2
+ import { RgbaArray } from './RgbaArray';
3
+ import { SplatEdit } from './SplatEdit';
4
+ import { GsplatModifier, SplatGenerator, SplatTransformer } from './SplatGenerator';
5
+ import { SplatFileType } from './SplatLoader';
6
+ import { SplatSkinning } from './SplatSkinning';
7
+ import { DynoFloat, DynoUsampler2DArray, DynoVal, DynoVec4, Gsplat } from './dyno';
8
+ import * as THREE from "three";
9
+ export type SplatMeshOptions = {
10
+ url?: string;
11
+ fileBytes?: Uint8Array | ArrayBuffer;
12
+ fileType?: SplatFileType;
13
+ fileName?: string;
14
+ packedSplats?: PackedSplats;
15
+ maxSplats?: number;
16
+ constructSplats?: (splats: PackedSplats) => Promise<void> | void;
17
+ onLoad?: (mesh: SplatMesh) => Promise<void> | void;
18
+ editable?: boolean;
19
+ onFrame?: ({ mesh, time, deltaTime, }: {
20
+ mesh: SplatMesh;
21
+ time: number;
22
+ deltaTime: number;
23
+ }) => void;
24
+ objectModifier?: GsplatModifier;
25
+ worldModifier?: GsplatModifier;
26
+ };
27
+ export type SplatMeshContext = {
28
+ transform: SplatTransformer;
29
+ viewToWorld: SplatTransformer;
30
+ worldToView: SplatTransformer;
31
+ viewToObject: SplatTransformer;
32
+ recolor: DynoVec4<THREE.Vector4>;
33
+ time: DynoFloat;
34
+ deltaTime: DynoFloat;
35
+ };
36
+ export declare class SplatMesh extends SplatGenerator {
37
+ initialized: Promise<SplatMesh>;
38
+ isInitialized: boolean;
39
+ packedSplats: PackedSplats;
40
+ recolor: THREE.Color;
41
+ opacity: number;
42
+ context: SplatMeshContext;
43
+ onFrame?: ({ mesh, time, deltaTime, }: {
44
+ mesh: SplatMesh;
45
+ time: number;
46
+ deltaTime: number;
47
+ }) => void;
48
+ objectModifier?: GsplatModifier;
49
+ worldModifier?: GsplatModifier;
50
+ enableViewToObject: boolean;
51
+ enableViewToWorld: boolean;
52
+ enableWorldToView: boolean;
53
+ skinning: SplatSkinning | null;
54
+ edits: SplatEdit[] | null;
55
+ editable: boolean;
56
+ private rgbaDisplaceEdits;
57
+ splatRgba: RgbaArray | null;
58
+ maxSh: number;
59
+ constructor(options?: SplatMeshOptions);
60
+ asyncInitialize(options: SplatMeshOptions): Promise<void>;
61
+ static staticInitialized: Promise<void>;
62
+ static isStaticInitialized: boolean;
63
+ static dynoTime: DynoFloat<"value">;
64
+ static staticInitialize(): Promise<void>;
65
+ pushSplat(center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color): void;
66
+ forEachSplat(callback: (index: number, center: THREE.Vector3, scales: THREE.Vector3, quaternion: THREE.Quaternion, opacity: number, color: THREE.Color) => void): void;
67
+ dispose(): void;
68
+ constructGenerator(context: SplatMeshContext): void;
69
+ updateGenerator(): void;
70
+ update({ time, viewToWorld, deltaTime, globalEdits, }: {
71
+ time: number;
72
+ viewToWorld: THREE.Matrix4;
73
+ deltaTime: number;
74
+ globalEdits: SplatEdit[];
75
+ }): void;
76
+ raycast(raycaster: THREE.Raycaster, intersects: {
77
+ distance: number;
78
+ point: THREE.Vector3;
79
+ object: THREE.Object3D;
80
+ }[]): void;
81
+ private ensureShTextures;
82
+ }
83
+ export declare function evaluateSH1(gsplat: DynoVal<typeof Gsplat>, sh1: DynoUsampler2DArray<"sh1", THREE.DataArrayTexture>, viewDir: DynoVal<"vec3">): DynoVal<"vec3">;
84
+ export declare function evaluateSH2(gsplat: DynoVal<typeof Gsplat>, sh2: DynoVal<"usampler2DArray">, viewDir: DynoVal<"vec3">): DynoVal<"vec3">;
85
+ export declare function evaluateSH3(gsplat: DynoVal<typeof Gsplat>, sh3: DynoVal<"usampler2DArray">, viewDir: DynoVal<"vec3">): DynoVal<"vec3">;
@@ -0,0 +1,29 @@
1
+ import { SplatMesh } from './SplatMesh';
2
+ import { DynoUniform, DynoVal, Gsplat } from './dyno';
3
+ import * as THREE from "three";
4
+ export type SplatSkinningOptions = {
5
+ mesh: SplatMesh;
6
+ numSplats?: number;
7
+ numBones?: number;
8
+ };
9
+ export declare class SplatSkinning {
10
+ mesh: SplatMesh;
11
+ numSplats: number;
12
+ skinData: Uint16Array;
13
+ skinTexture: THREE.DataArrayTexture;
14
+ numBones: number;
15
+ boneData: Float32Array;
16
+ boneTexture: THREE.DataTexture;
17
+ uniform: DynoUniform<typeof GsplatSkinning, "skinning">;
18
+ constructor(options: SplatSkinningOptions);
19
+ modify(gsplat: DynoVal<typeof Gsplat>): DynoVal<typeof Gsplat>;
20
+ setRestQuatPos(boneIndex: number, quat: THREE.Quaternion, pos: THREE.Vector3): void;
21
+ setBoneQuatPos(boneIndex: number, quat: THREE.Quaternion, pos: THREE.Vector3): void;
22
+ setSplatBones(splatIndex: number, boneIndices: THREE.Vector4, weights: THREE.Vector4): void;
23
+ updateBones(): void;
24
+ }
25
+ export declare const GsplatSkinning: {
26
+ type: "GsplatSkinning";
27
+ };
28
+ export declare const defineGsplatSkinning: string;
29
+ export declare const defineApplyGsplatSkinning: string;
@@ -0,0 +1,5 @@
1
+ export declare function decodeAntiSplat(fileBytes: Uint8Array, initNumSplats: (numSplats: number) => void, splatCallback: (index: number, x: number, y: number, z: number, scaleX: number, scaleY: number, scaleZ: number, quatX: number, quatY: number, quatZ: number, quatW: number, opacity: number, r: number, g: number, b: number) => void): void;
2
+ export declare function unpackAntiSplat(fileBytes: Uint8Array): {
3
+ packedArray: Uint32Array;
4
+ numSplats: number;
5
+ };
@@ -0,0 +1,114 @@
1
+ import * as THREE from "three";
2
+ export declare class ForgeControls {
3
+ fpsMovement: FpsMovement;
4
+ pointerControls: PointerControls;
5
+ lastTime: number;
6
+ constructor({ canvas }: {
7
+ canvas: HTMLCanvasElement;
8
+ });
9
+ update(control: THREE.Object3D): void;
10
+ }
11
+ export declare class FpsMovement {
12
+ moveSpeed: number;
13
+ rollSpeed: number;
14
+ stickThreshold: number;
15
+ rotateSpeed: number;
16
+ keycodeMoveMapping: {
17
+ [key: string]: THREE.Vector3;
18
+ };
19
+ keycodeRotateMapping: {
20
+ [key: string]: THREE.Vector3;
21
+ };
22
+ gamepadMapping: {
23
+ [button: number]: "shift" | "ctrl" | "rollLeft" | "rollRight";
24
+ };
25
+ capsMultiplier: number;
26
+ shiftMultiplier: number;
27
+ ctrlMultiplier: number;
28
+ xr?: THREE.WebXRManager;
29
+ enable: boolean;
30
+ keydown: {
31
+ [key: string]: boolean;
32
+ };
33
+ keycode: {
34
+ [key: string]: boolean;
35
+ };
36
+ constructor({ moveSpeed, rollSpeed, stickThreshold, rotateSpeed, keycodeMoveMapping, keycodeRotateMapping, gamepadMapping, capsMultiplier, shiftMultiplier, ctrlMultiplier, xr, }?: {
37
+ moveSpeed?: number;
38
+ rollSpeed?: number;
39
+ stickThreshold?: number;
40
+ rotateSpeed?: number;
41
+ keycodeMoveMapping?: {
42
+ [key: string]: THREE.Vector3;
43
+ };
44
+ keycodeRotateMapping?: {
45
+ [key: string]: THREE.Vector3;
46
+ };
47
+ gamepadMapping?: {
48
+ [button: number]: "shift" | "ctrl" | "rollLeft" | "rollRight";
49
+ };
50
+ capsMultiplier?: number;
51
+ shiftMultiplier?: number;
52
+ ctrlMultiplier?: number;
53
+ xr?: THREE.WebXRManager;
54
+ });
55
+ update(deltaTime: number, control: THREE.Object3D): void;
56
+ }
57
+ type PointerState = {
58
+ initial: THREE.Vector2;
59
+ last: THREE.Vector2;
60
+ position: THREE.Vector2;
61
+ pointerId: number;
62
+ button?: number;
63
+ timeStamp: DOMHighResTimeStamp;
64
+ };
65
+ export declare class PointerControls {
66
+ canvas: HTMLCanvasElement;
67
+ rotateSpeed: number;
68
+ slideSpeed: number;
69
+ scrollSpeed: number;
70
+ swapRotateSlide: boolean;
71
+ reverseRotate: boolean;
72
+ reverseSlide: boolean;
73
+ reverseSwipe: boolean;
74
+ reverseScroll: boolean;
75
+ moveInertia: number;
76
+ rotateInertia: number;
77
+ enable: boolean;
78
+ doublePress: ({ position, intervalMs, }: {
79
+ position: THREE.Vector2;
80
+ intervalMs: number;
81
+ }) => void;
82
+ doublePressLimitMs: number;
83
+ doublePressDistance: number;
84
+ lastUp: {
85
+ position: THREE.Vector2;
86
+ time: number;
87
+ } | null;
88
+ rotating: PointerState | null;
89
+ sliding: PointerState | null;
90
+ dualPress: boolean;
91
+ scroll: THREE.Vector3;
92
+ rotateVelocity: THREE.Vector3;
93
+ moveVelocity: THREE.Vector3;
94
+ constructor({ canvas, rotateSpeed, slideSpeed, scrollSpeed, swapRotateSlide, reverseRotate, reverseSlide, reverseSwipe, reverseScroll, moveInertia, rotateInertia, doublePress, }: {
95
+ canvas: HTMLCanvasElement;
96
+ rotateSpeed?: number;
97
+ slideSpeed?: number;
98
+ scrollSpeed?: number;
99
+ swapRotateSlide?: boolean;
100
+ reverseRotate?: boolean;
101
+ reverseSlide?: boolean;
102
+ reverseSwipe?: boolean;
103
+ reverseScroll?: boolean;
104
+ moveInertia?: number;
105
+ rotateInertia?: number;
106
+ doublePress?: ({ position, intervalMs, }: {
107
+ position: THREE.Vector2;
108
+ intervalMs: number;
109
+ }) => void;
110
+ });
111
+ getPointerPosition(event: PointerEvent): THREE.Vector2;
112
+ update(deltaTime: number, control: THREE.Object3D): void;
113
+ }
114
+ export {};
@@ -0,0 +1,17 @@
1
+ export declare const LN_SCALE_MIN = -9;
2
+ export declare const LN_SCALE_MAX = 9;
3
+ export declare const LN_RESCALE: number;
4
+ export declare const SCALE_MIN: number;
5
+ export declare const SCALE_MAX: number;
6
+ export declare const SPLAT_TEX_WIDTH_BITS = 11;
7
+ export declare const SPLAT_TEX_HEIGHT_BITS = 11;
8
+ export declare const SPLAT_TEX_DEPTH_BITS = 11;
9
+ export declare const SPLAT_TEX_LAYER_BITS: number;
10
+ export declare const SPLAT_TEX_WIDTH: number;
11
+ export declare const SPLAT_TEX_HEIGHT: number;
12
+ export declare const SPLAT_TEX_DEPTH: number;
13
+ export declare const SPLAT_TEX_MIN_HEIGHT = 1;
14
+ export declare const SPLAT_TEX_WIDTH_MASK: number;
15
+ export declare const SPLAT_TEX_HEIGHT_MASK: number;
16
+ export declare const SPLAT_TEX_DEPTH_MASK: number;
17
+ export declare const WASM_SPLAT_SORT = true;
@@ -0,0 +1,174 @@
1
+ import { IUniform } from 'three';
2
+ import { DynoType } from './types';
3
+ import { DynoVal, DynoValue, HasDynoOut } from './value';
4
+ export declare class Compilation {
5
+ globals: Set<string>;
6
+ statements: string[];
7
+ uniforms: Record<string, IUniform>;
8
+ declares: Set<string>;
9
+ updaters: (() => void)[];
10
+ sequence: number;
11
+ indent: string;
12
+ constructor({ indent }?: {
13
+ indent?: string;
14
+ });
15
+ nextSequence(): number;
16
+ }
17
+ export type IOTypes = Record<string, DynoType>;
18
+ type GenerateContext<InTypes extends IOTypes, OutTypes extends IOTypes> = {
19
+ inputs: {
20
+ [K in keyof InTypes]?: string;
21
+ };
22
+ outputs: {
23
+ [K in keyof OutTypes]?: string;
24
+ };
25
+ compile: Compilation;
26
+ };
27
+ export declare class Dyno<InTypes extends IOTypes, OutTypes extends IOTypes> {
28
+ inTypes: InTypes;
29
+ outTypes: OutTypes;
30
+ inputs: {
31
+ [K in keyof InTypes]?: DynoVal<InTypes[K]>;
32
+ };
33
+ update?: () => void;
34
+ globals?: ({ inputs, outputs, compile, }: GenerateContext<InTypes, OutTypes>) => string[];
35
+ statements?: ({ inputs, outputs, compile, }: GenerateContext<InTypes, OutTypes>) => string[];
36
+ generate: ({ inputs, outputs, compile, }: GenerateContext<InTypes, OutTypes>) => {
37
+ globals?: string[];
38
+ statements?: string[];
39
+ uniforms?: Record<string, IUniform>;
40
+ };
41
+ constructor({ inTypes, outTypes, inputs, update, globals, statements, generate, }: {
42
+ inTypes?: InTypes;
43
+ outTypes?: OutTypes;
44
+ inputs?: {
45
+ [K in keyof InTypes]?: DynoVal<InTypes[K]>;
46
+ };
47
+ update?: () => void;
48
+ globals?: ({ inputs, outputs, compile, }: GenerateContext<InTypes, OutTypes>) => string[];
49
+ statements?: ({ inputs, outputs, compile, }: GenerateContext<InTypes, OutTypes>) => string[];
50
+ generate?: ({ inputs, outputs, compile, }: GenerateContext<InTypes, OutTypes>) => {
51
+ globals?: string[];
52
+ statements?: string[];
53
+ uniforms?: Record<string, IUniform>;
54
+ };
55
+ });
56
+ get outputs(): {
57
+ [K in keyof OutTypes]: DynoVal<OutTypes[K]>;
58
+ };
59
+ apply(inputs: {
60
+ [K in keyof InTypes]?: DynoVal<InTypes[K]>;
61
+ }): {
62
+ [K in keyof OutTypes]: DynoVal<OutTypes[K]>;
63
+ };
64
+ compile({ inputs, outputs, compile, }: {
65
+ inputs: {
66
+ [K in keyof InTypes]?: string;
67
+ };
68
+ outputs: {
69
+ [K in keyof OutTypes]?: string;
70
+ };
71
+ compile: Compilation;
72
+ }): string[];
73
+ }
74
+ export type DynoBlockType<InTypes extends IOTypes, OutTypes extends IOTypes> = (inputs: {
75
+ [K in keyof InTypes]?: DynoVal<InTypes[K]>;
76
+ }, outputs: {
77
+ [K in keyof OutTypes]?: DynoVal<OutTypes[K]>;
78
+ }, { roots }: {
79
+ roots: Dyno<InTypes, OutTypes>[];
80
+ }) => {
81
+ [K in keyof OutTypes]?: DynoVal<OutTypes[K]>;
82
+ } | undefined;
83
+ export declare class DynoBlock<InTypes extends IOTypes, OutTypes extends IOTypes> extends Dyno<InTypes, OutTypes> {
84
+ construct: DynoBlockType<InTypes, OutTypes>;
85
+ constructor({ inTypes, outTypes, inputs, update, globals, construct, }: {
86
+ inTypes?: InTypes;
87
+ outTypes?: OutTypes;
88
+ inputs?: {
89
+ [K in keyof InTypes]?: DynoVal<InTypes[K]>;
90
+ };
91
+ update?: () => void;
92
+ globals?: ({ inputs, outputs, compile, }: GenerateContext<InTypes, OutTypes>) => string[];
93
+ construct: DynoBlockType<InTypes, OutTypes>;
94
+ });
95
+ generateBlock({ inputs, outputs, compile, }: {
96
+ inputs: {
97
+ [K in keyof InTypes]?: string;
98
+ };
99
+ outputs: {
100
+ [K in keyof OutTypes]?: string;
101
+ };
102
+ compile: Compilation;
103
+ }): {
104
+ statements: string[];
105
+ };
106
+ }
107
+ export declare function dynoBlock<InTypes extends Record<string, DynoType>, OutTypes extends Record<string, DynoType>>(inTypes: InTypes, outTypes: OutTypes, construct: DynoBlockType<InTypes, OutTypes>, { update, globals }?: {
108
+ update?: () => void;
109
+ globals?: () => string[];
110
+ }): DynoBlock<InTypes, OutTypes>;
111
+ export declare function dyno<InTypes extends Record<string, DynoType>, OutTypes extends Record<string, DynoType>>({ inTypes, outTypes, inputs, update, globals, statements, generate, }: {
112
+ inTypes: InTypes;
113
+ outTypes: OutTypes;
114
+ inputs?: {
115
+ [K in keyof InTypes]?: DynoVal<InTypes[K]>;
116
+ };
117
+ update?: () => void;
118
+ globals?: ({ inputs, outputs, compile, }: GenerateContext<InTypes, OutTypes>) => string[];
119
+ statements?: ({ inputs, outputs, compile, }: GenerateContext<InTypes, OutTypes>) => string[];
120
+ generate?: ({ inputs, outputs, compile, }: GenerateContext<InTypes, OutTypes>) => {
121
+ globals?: string[];
122
+ statements?: string[];
123
+ uniforms?: Record<string, IUniform>;
124
+ };
125
+ }): Dyno<InTypes, OutTypes>;
126
+ export declare function dynoDeclare(name: string, type: DynoType, count?: number): string;
127
+ export declare function unindentLines(s: string): string[];
128
+ export declare function unindent(s: string): string;
129
+ export declare class UnaryOp<A extends DynoType, OutType extends DynoType, OutKey extends string> extends Dyno<{
130
+ a: A;
131
+ }, {
132
+ [key in OutKey]: OutType;
133
+ }> implements HasDynoOut<OutType> {
134
+ constructor({ a, outKey, outTypeFunc, }: {
135
+ a: DynoVal<A>;
136
+ outKey: OutKey;
137
+ outTypeFunc: (aType: A) => OutType;
138
+ });
139
+ outKey: OutKey;
140
+ dynoOut(): DynoValue<OutType>;
141
+ }
142
+ export declare class BinaryOp<A extends DynoType, B extends DynoType, OutType extends DynoType, OutKey extends string> extends Dyno<{
143
+ a: A;
144
+ b: B;
145
+ }, {
146
+ [key in OutKey]: OutType;
147
+ }> implements HasDynoOut<OutType> {
148
+ constructor({ a, b, outKey, outTypeFunc, }: {
149
+ a: DynoVal<A>;
150
+ b: DynoVal<B>;
151
+ outKey: OutKey;
152
+ outTypeFunc: (aType: A, bType: B) => OutType;
153
+ });
154
+ outKey: OutKey;
155
+ dynoOut(): DynoValue<OutType>;
156
+ }
157
+ export declare class TrinaryOp<A extends DynoType, B extends DynoType, C extends DynoType, OutType extends DynoType, OutKey extends string> extends Dyno<{
158
+ a: A;
159
+ b: B;
160
+ c: C;
161
+ }, {
162
+ [key in OutKey]: OutType;
163
+ }> implements HasDynoOut<OutType> {
164
+ constructor({ a, b, c, outKey, outTypeFunc, }: {
165
+ a: DynoVal<A>;
166
+ b: DynoVal<B>;
167
+ c: DynoVal<C>;
168
+ outKey: OutKey;
169
+ outTypeFunc: (aType: A, bType: B, cType: C) => OutType;
170
+ });
171
+ outKey: OutKey;
172
+ dynoOut(): DynoValue<OutType>;
173
+ }
174
+ export {};
@@ -0,0 +1,6 @@
1
+ export declare const dynoIf: () => never;
2
+ export declare const dynoSwitch: () => never;
3
+ export declare const dynoFor: () => never;
4
+ export declare const comment: () => never;
5
+ export declare const arrayIndex: () => never;
6
+ export declare const arrayLength: () => never;
@@ -0,0 +1,190 @@
1
+ import { UnaryOp } from './base';
2
+ import { SimpleTypes } from './types';
3
+ import { DynoVal } from './value';
4
+ export declare const bool: <T extends "bool" | "int" | "uint" | "float">(value: DynoVal<T>) => DynoVal<"bool">;
5
+ export declare const int: <T extends "bool" | "int" | "uint" | "float">(value: DynoVal<T>) => DynoVal<"int">;
6
+ export declare const uint: <T extends "bool" | "int" | "uint" | "float">(value: DynoVal<T>) => DynoVal<"uint">;
7
+ export declare const float: <T extends "bool" | "int" | "uint" | "float">(value: DynoVal<T>) => DynoVal<"float">;
8
+ export declare const bvec2: <T extends "bool" | "bvec2" | "ivec2" | "uvec2" | "vec2">(value: DynoVal<T>) => DynoVal<"bvec2">;
9
+ export declare const bvec3: <T extends "bool" | "bvec3" | "ivec3" | "uvec3" | "vec3">(value: DynoVal<T>) => DynoVal<"bvec3">;
10
+ export declare const bvec4: <T extends "bool" | "bvec4" | "ivec4" | "uvec4" | "vec4">(value: DynoVal<T>) => DynoVal<"bvec4">;
11
+ export declare const ivec2: <T extends "int" | "bvec2" | "ivec2" | "uvec2" | "vec2">(value: DynoVal<T>) => DynoVal<"ivec2">;
12
+ export declare const ivec3: <T extends "int" | "bvec3" | "ivec3" | "uvec3" | "vec3">(value: DynoVal<T>) => DynoVal<"ivec3">;
13
+ export declare const ivec4: <T extends "int" | "bvec4" | "ivec4" | "uvec4" | "vec4">(value: DynoVal<T>) => DynoVal<"ivec4">;
14
+ export declare const uvec2: <T extends "uint" | "bvec2" | "ivec2" | "uvec2" | "vec2">(value: DynoVal<T>) => DynoVal<"uvec2">;
15
+ export declare const uvec3: <T extends "uint" | "bvec3" | "ivec3" | "uvec3" | "vec3">(value: DynoVal<T>) => DynoVal<"uvec3">;
16
+ export declare const uvec4: <T extends "uint" | "bvec4" | "ivec4" | "uvec4" | "vec4">(value: DynoVal<T>) => DynoVal<"uvec4">;
17
+ export declare const vec2: <T extends "float" | "bvec2" | "ivec2" | "uvec2" | "vec2" | "vec3" | "vec4">(value: DynoVal<T>) => DynoVal<"vec2">;
18
+ export declare const vec3: <T extends "float" | "bvec3" | "ivec3" | "uvec3" | "vec3" | "vec4">(value: DynoVal<T>) => DynoVal<"vec3">;
19
+ export declare const vec4: <T extends "float" | "bvec4" | "ivec4" | "uvec4" | "vec4">(value: DynoVal<T>) => DynoVal<"vec4">;
20
+ export declare const mat2: <T extends "float" | "mat2" | "mat3" | "mat4">(value: DynoVal<T>) => DynoVal<"mat2">;
21
+ export declare const mat3: <T extends "float" | "mat2" | "mat3" | "mat4">(value: DynoVal<T>) => DynoVal<"mat3">;
22
+ export declare const mat4: <T extends "float" | "mat2" | "mat3" | "mat4">(value: DynoVal<T>) => DynoVal<"mat4">;
23
+ export declare const floatBitsToInt: (value: DynoVal<"float">) => DynoVal<"int">;
24
+ export declare const floatBitsToUint: (value: DynoVal<"float">) => DynoVal<"uint">;
25
+ export declare const intBitsToFloat: (value: DynoVal<"int">) => DynoVal<"float">;
26
+ export declare const uintBitsToFloat: (value: DynoVal<"uint">) => DynoVal<"float">;
27
+ export declare const packSnorm2x16: (value: DynoVal<"vec2">) => DynoVal<"uint">;
28
+ export declare const unpackSnorm2x16: (value: DynoVal<"uint">) => DynoVal<"vec2">;
29
+ export declare const packUnorm2x16: (value: DynoVal<"vec2">) => DynoVal<"uint">;
30
+ export declare const unpackUnorm2x16: (value: DynoVal<"uint">) => DynoVal<"vec2">;
31
+ export declare const packHalf2x16: (value: DynoVal<"vec2">) => DynoVal<"uint">;
32
+ export declare const unpackHalf2x16: (value: DynoVal<"uint">) => DynoVal<"vec2">;
33
+ export declare const uintToRgba8: (value: DynoVal<"uint">) => DynoVal<"vec4">;
34
+ export declare class SimpleCast<Allowed extends SimpleTypes, OutType extends SimpleTypes, OutKey extends string> extends UnaryOp<Allowed, OutType, OutKey> {
35
+ constructor({ value, outType, outKey, }: {
36
+ value: DynoVal<Allowed>;
37
+ outType: OutType;
38
+ outKey: OutKey;
39
+ });
40
+ }
41
+ export declare class Bool extends SimpleCast<"bool" | "int" | "uint" | "float", "bool", "bool"> {
42
+ constructor({ value, }: {
43
+ value: DynoVal<"bool" | "int" | "uint" | "float">;
44
+ });
45
+ }
46
+ export declare class Int extends SimpleCast<"bool" | "int" | "uint" | "float", "int", "int"> {
47
+ constructor({ value, }: {
48
+ value: DynoVal<"bool" | "int" | "uint" | "float">;
49
+ });
50
+ }
51
+ export declare class Uint extends SimpleCast<"bool" | "int" | "uint" | "float", "uint", "uint"> {
52
+ constructor({ value, }: {
53
+ value: DynoVal<"bool" | "int" | "uint" | "float">;
54
+ });
55
+ }
56
+ export declare class Float extends SimpleCast<"bool" | "int" | "uint" | "float", "float", "float"> {
57
+ constructor({ value, }: {
58
+ value: DynoVal<"bool" | "int" | "uint" | "float">;
59
+ });
60
+ }
61
+ export declare class BVec2 extends SimpleCast<"bool" | "bvec2" | "ivec2" | "uvec2" | "vec2", "bvec2", "bvec2"> {
62
+ constructor({ value, }: {
63
+ value: DynoVal<"bool" | "bvec2" | "ivec2" | "uvec2" | "vec2">;
64
+ });
65
+ }
66
+ export declare class BVec3 extends SimpleCast<"bool" | "bvec3" | "ivec3" | "uvec3" | "vec3", "bvec3", "bvec3"> {
67
+ constructor({ value, }: {
68
+ value: DynoVal<"bool" | "bvec3" | "ivec3" | "uvec3" | "vec3">;
69
+ });
70
+ }
71
+ export declare class BVec4 extends SimpleCast<"bool" | "bvec4" | "ivec4" | "uvec4" | "vec4", "bvec4", "bvec4"> {
72
+ constructor({ value, }: {
73
+ value: DynoVal<"bool" | "bvec4" | "ivec4" | "uvec4" | "vec4">;
74
+ });
75
+ }
76
+ export declare class IVec2 extends SimpleCast<"int" | "bvec2" | "ivec2" | "uvec2" | "vec2", "ivec2", "ivec2"> {
77
+ constructor({ value, }: {
78
+ value: DynoVal<"int" | "bvec2" | "ivec2" | "uvec2" | "vec2">;
79
+ });
80
+ }
81
+ export declare class IVec3 extends SimpleCast<"int" | "bvec3" | "ivec3" | "uvec3" | "vec3", "ivec3", "ivec3"> {
82
+ constructor({ value, }: {
83
+ value: DynoVal<"int" | "bvec3" | "ivec3" | "uvec3" | "vec3">;
84
+ });
85
+ }
86
+ export declare class IVec4 extends SimpleCast<"int" | "bvec4" | "ivec4" | "uvec4" | "vec4", "ivec4", "ivec4"> {
87
+ constructor({ value, }: {
88
+ value: DynoVal<"int" | "bvec4" | "ivec4" | "uvec4" | "vec4">;
89
+ });
90
+ }
91
+ export declare class UVec2 extends SimpleCast<"uint" | "ivec2" | "bvec2" | "uvec2" | "vec2", "uvec2", "uvec2"> {
92
+ constructor({ value, }: {
93
+ value: DynoVal<"uint" | "ivec2" | "bvec2" | "uvec2" | "vec2">;
94
+ });
95
+ }
96
+ export declare class UVec3 extends SimpleCast<"uint" | "ivec3" | "bvec3" | "uvec3" | "vec3", "uvec3", "uvec3"> {
97
+ constructor({ value, }: {
98
+ value: DynoVal<"uint" | "ivec3" | "bvec3" | "uvec3" | "vec3">;
99
+ });
100
+ }
101
+ export declare class UVec4 extends SimpleCast<"uint" | "ivec4" | "bvec4" | "uvec4" | "vec4", "uvec4", "uvec4"> {
102
+ constructor({ value, }: {
103
+ value: DynoVal<"uint" | "ivec4" | "bvec4" | "uvec4" | "vec4">;
104
+ });
105
+ }
106
+ export declare class Vec2 extends SimpleCast<"float" | "bvec2" | "ivec2" | "uvec2" | "vec2" | "vec3" | "vec4", "vec2", "vec2"> {
107
+ constructor({ value, }: {
108
+ value: DynoVal<"float" | "bvec2" | "ivec2" | "uvec2" | "vec2" | "vec3" | "vec4">;
109
+ });
110
+ }
111
+ export declare class Vec3 extends SimpleCast<"float" | "bvec3" | "ivec3" | "uvec3" | "vec3" | "vec2" | "vec4", "vec3", "vec3"> {
112
+ constructor({ value, }: {
113
+ value: DynoVal<"float" | "bvec3" | "ivec3" | "uvec3" | "vec3" | "vec2" | "vec4">;
114
+ });
115
+ }
116
+ export declare class Vec4 extends SimpleCast<"float" | "bvec4" | "ivec4" | "uvec4" | "vec4", "vec4", "vec4"> {
117
+ constructor({ value, }: {
118
+ value: DynoVal<"float" | "bvec4" | "ivec4" | "uvec4" | "vec4">;
119
+ });
120
+ }
121
+ export declare class Mat2 extends SimpleCast<"float" | "mat2" | "mat3" | "mat4", "mat2", "mat2"> {
122
+ constructor({ value, }: {
123
+ value: DynoVal<"float" | "mat2" | "mat3" | "mat4">;
124
+ });
125
+ }
126
+ export declare class Mat3 extends SimpleCast<"float" | "mat2" | "mat3" | "mat4", "mat3", "mat3"> {
127
+ constructor({ value, }: {
128
+ value: DynoVal<"float" | "mat2" | "mat3" | "mat4">;
129
+ });
130
+ }
131
+ export declare class Mat4 extends SimpleCast<"float" | "mat2" | "mat3" | "mat4", "mat4", "mat4"> {
132
+ constructor({ value, }: {
133
+ value: DynoVal<"float" | "mat2" | "mat3" | "mat4">;
134
+ });
135
+ }
136
+ export declare class FloatBitsToInt extends UnaryOp<"float", "int", "int"> {
137
+ constructor({ value }: {
138
+ value: DynoVal<"float">;
139
+ });
140
+ }
141
+ export declare class FloatBitsToUint extends UnaryOp<"float", "uint", "uint"> {
142
+ constructor({ value }: {
143
+ value: DynoVal<"float">;
144
+ });
145
+ }
146
+ export declare class IntBitsToFloat extends UnaryOp<"int", "float", "float"> {
147
+ constructor({ value }: {
148
+ value: DynoVal<"int">;
149
+ });
150
+ }
151
+ export declare class UintBitsToFloat extends UnaryOp<"uint", "float", "float"> {
152
+ constructor({ value }: {
153
+ value: DynoVal<"uint">;
154
+ });
155
+ }
156
+ export declare class PackSnorm2x16 extends UnaryOp<"vec2", "uint", "uint"> {
157
+ constructor({ value }: {
158
+ value: DynoVal<"vec2">;
159
+ });
160
+ }
161
+ export declare class UnpackSnorm2x16 extends UnaryOp<"uint", "vec2", "vec2"> {
162
+ constructor({ value }: {
163
+ value: DynoVal<"uint">;
164
+ });
165
+ }
166
+ export declare class PackUnorm2x16 extends UnaryOp<"vec2", "uint", "uint"> {
167
+ constructor({ value }: {
168
+ value: DynoVal<"vec2">;
169
+ });
170
+ }
171
+ export declare class UnpackUnorm2x16 extends UnaryOp<"uint", "vec2", "vec2"> {
172
+ constructor({ value }: {
173
+ value: DynoVal<"uint">;
174
+ });
175
+ }
176
+ export declare class PackHalf2x16 extends UnaryOp<"vec2", "uint", "uint"> {
177
+ constructor({ value }: {
178
+ value: DynoVal<"vec2">;
179
+ });
180
+ }
181
+ export declare class UnpackHalf2x16 extends UnaryOp<"uint", "vec2", "vec2"> {
182
+ constructor({ value }: {
183
+ value: DynoVal<"uint">;
184
+ });
185
+ }
186
+ export declare class UintToRgba8 extends UnaryOp<"uint", "vec4", "rgba8"> {
187
+ constructor({ value }: {
188
+ value: DynoVal<"uint">;
189
+ });
190
+ }