@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,103 @@
1
+ import { BinaryOp, TrinaryOp, UnaryOp } from './base';
2
+ import { AllIntTypes, BoolTypes, IntTypes, ScalarTypes, SimpleTypes, UintTypes, ValueTypes } from './types';
3
+ import { DynoVal } from './value';
4
+ export declare const and: <T extends "bool" | AllIntTypes>(a: DynoVal<T>, b: DynoVal<T>) => DynoVal<T>;
5
+ export declare const or: <T extends "bool" | AllIntTypes>(a: DynoVal<T>, b: DynoVal<T>) => DynoVal<T>;
6
+ export declare const xor: <T extends "bool" | AllIntTypes>(a: DynoVal<T>, b: DynoVal<T>) => DynoVal<T>;
7
+ export declare const not: <T extends BoolTypes | AllIntTypes>(a: DynoVal<T>) => DynoVal<T>;
8
+ export declare const lessThan: <T extends ValueTypes>(a: DynoVal<T>, b: DynoVal<T>) => DynoVal<CompareOutput<T>>;
9
+ export declare const lessThanEqual: <T extends ValueTypes>(a: DynoVal<T>, b: DynoVal<T>) => DynoVal<CompareOutput<T>>;
10
+ export declare const greaterThan: <T extends ValueTypes>(a: DynoVal<T>, b: DynoVal<T>) => DynoVal<CompareOutput<T>>;
11
+ export declare const greaterThanEqual: <T extends ValueTypes>(a: DynoVal<T>, b: DynoVal<T>) => DynoVal<CompareOutput<T>>;
12
+ export declare const equal: <T extends ValueTypes | BoolTypes>(a: DynoVal<T>, b: DynoVal<T>) => DynoVal<EqualOutput<T>>;
13
+ export declare const notEqual: <T extends ValueTypes | BoolTypes>(a: DynoVal<T>, b: DynoVal<T>) => DynoVal<NotEqualOutput<T>>;
14
+ export declare const any: <T extends "bvec2" | "bvec3" | "bvec4">(a: DynoVal<T>) => DynoVal<"bool">;
15
+ export declare const all: <T extends "bvec2" | "bvec3" | "bvec4">(a: DynoVal<T>) => DynoVal<"bool">;
16
+ export declare const select: <T extends SimpleTypes>(cond: DynoVal<"bool">, t: DynoVal<T>, f: DynoVal<T>) => DynoVal<T>;
17
+ export declare const compXor: <T extends BoolTypes | AllIntTypes>(a: DynoVal<T>) => DynoVal<CompXorOutput<T>>;
18
+ export declare class And<T extends "bool" | AllIntTypes> extends BinaryOp<T, T, T, "and"> {
19
+ constructor({ a, b }: {
20
+ a: DynoVal<T>;
21
+ b: DynoVal<T>;
22
+ });
23
+ }
24
+ export declare class Or<T extends "bool" | AllIntTypes> extends BinaryOp<T, T, T, "or"> {
25
+ constructor({ a, b }: {
26
+ a: DynoVal<T>;
27
+ b: DynoVal<T>;
28
+ });
29
+ }
30
+ export declare class Xor<T extends "bool" | AllIntTypes> extends BinaryOp<T, T, T, "xor"> {
31
+ constructor({ a, b }: {
32
+ a: DynoVal<T>;
33
+ b: DynoVal<T>;
34
+ });
35
+ }
36
+ export declare class Not<T extends BoolTypes | AllIntTypes> extends UnaryOp<T, T, "not"> {
37
+ constructor({ a }: {
38
+ a: DynoVal<T>;
39
+ });
40
+ }
41
+ export declare class LessThan<T extends ValueTypes> extends BinaryOp<T, T, CompareOutput<T>, "lessThan"> {
42
+ constructor({ a, b }: {
43
+ a: DynoVal<T>;
44
+ b: DynoVal<T>;
45
+ });
46
+ }
47
+ export declare class LessThanEqual<T extends ValueTypes> extends BinaryOp<T, T, CompareOutput<T>, "lessThanEqual"> {
48
+ constructor({ a, b }: {
49
+ a: DynoVal<T>;
50
+ b: DynoVal<T>;
51
+ });
52
+ }
53
+ export declare class GreaterThan<T extends ValueTypes> extends BinaryOp<T, T, CompareOutput<T>, "greaterThan"> {
54
+ constructor({ a, b }: {
55
+ a: DynoVal<T>;
56
+ b: DynoVal<T>;
57
+ });
58
+ }
59
+ export declare class GreaterThanEqual<T extends ValueTypes> extends BinaryOp<T, T, CompareOutput<T>, "greaterThanEqual"> {
60
+ constructor({ a, b }: {
61
+ a: DynoVal<T>;
62
+ b: DynoVal<T>;
63
+ });
64
+ }
65
+ export declare class Equal<T extends ValueTypes | BoolTypes> extends BinaryOp<T, T, EqualOutput<T>, "equal"> {
66
+ constructor({ a, b }: {
67
+ a: DynoVal<T>;
68
+ b: DynoVal<T>;
69
+ });
70
+ }
71
+ export declare class NotEqual<T extends ValueTypes | BoolTypes> extends BinaryOp<T, T, NotEqualOutput<T>, "notEqual"> {
72
+ constructor({ a, b }: {
73
+ a: DynoVal<T>;
74
+ b: DynoVal<T>;
75
+ });
76
+ }
77
+ export declare class Any<T extends BoolTypes> extends UnaryOp<T, "bool", "any"> {
78
+ constructor({ a }: {
79
+ a: DynoVal<T>;
80
+ });
81
+ }
82
+ export declare class All<T extends BoolTypes> extends UnaryOp<T, "bool", "all"> {
83
+ constructor({ a }: {
84
+ a: DynoVal<T>;
85
+ });
86
+ }
87
+ export declare class Select<T extends SimpleTypes> extends TrinaryOp<"bool", T, T, T, "select"> {
88
+ constructor({ cond, t, f, }: {
89
+ cond: DynoVal<"bool">;
90
+ t: DynoVal<T>;
91
+ f: DynoVal<T>;
92
+ });
93
+ }
94
+ type CompareOutput<T extends ValueTypes> = T extends ScalarTypes ? "bool" : T extends "ivec2" | "uvec2" | "vec2" ? "bvec2" : T extends "ivec3" | "uvec3" | "vec3" ? "bvec3" : T extends "ivec4" | "uvec4" | "vec4" ? "bvec4" : never;
95
+ type EqualOutput<A extends ValueTypes | BoolTypes> = A extends ScalarTypes ? "bool" : A extends BoolTypes ? A : A extends "ivec2" | "uvec2" | "vec2" ? "bvec2" : A extends "ivec3" | "uvec3" | "vec3" ? "bvec3" : A extends "ivec4" | "uvec4" | "vec4" ? "bvec4" : never;
96
+ type NotEqualOutput<A extends ValueTypes | BoolTypes> = EqualOutput<A>;
97
+ type CompXorOutput<A extends BoolTypes | AllIntTypes> = A extends BoolTypes ? "bool" : A extends IntTypes ? "int" : A extends UintTypes ? "uint" : never;
98
+ export declare class CompXor<T extends BoolTypes | AllIntTypes> extends UnaryOp<T, CompXorOutput<T>, "compXor"> {
99
+ constructor({ a }: {
100
+ a: DynoVal<T>;
101
+ });
102
+ }
103
+ export {};
@@ -0,0 +1,214 @@
1
+ import { BinaryOp, Dyno, TrinaryOp, UnaryOp } from './base';
2
+ import { AddOutput, ClampOutput, DivOutput, IModOutput, IsInfOutput, IsNanOutput, MaxOutput, MinOutput, MixOutput, ModOutput, MulOutput, SmoothstepOutput, StepOutput, SubOutput } from './mathTypes';
3
+ import { AllIntTypes, AllSignedTypes, AllValueTypes, BoolTypes, FloatTypes, SignedTypes, ValueTypes } from './types';
4
+ import { DynoVal } from './value';
5
+ export declare const add: <A extends AllValueTypes, B extends AllValueTypes>(a: DynoVal<A>, b: DynoVal<B>) => DynoVal<AddOutput<A, B>>;
6
+ export declare const sub: <A extends AllValueTypes, B extends AllValueTypes>(a: DynoVal<A>, b: DynoVal<B>) => DynoVal<SubOutput<A, B>>;
7
+ export declare const mul: <A extends AllValueTypes, B extends AllValueTypes>(a: DynoVal<A>, b: DynoVal<B>) => DynoVal<MulOutput<A, B>>;
8
+ export declare const div: <A extends AllValueTypes, B extends AllValueTypes>(a: DynoVal<A>, b: DynoVal<B>) => DynoVal<DivOutput<A, B>>;
9
+ export declare const imod: <A extends AllIntTypes, B extends AllIntTypes>(a: DynoVal<A>, b: DynoVal<B>) => DynoVal<IModOutput<A, B>>;
10
+ export declare const mod: <A extends FloatTypes, B extends FloatTypes>(a: DynoVal<A>, b: DynoVal<B>) => DynoVal<ModOutput<A, B>>;
11
+ export declare const modf: <A extends FloatTypes>(a: DynoVal<A>) => {
12
+ fract: DynoVal<A>;
13
+ integer: DynoVal<A>;
14
+ };
15
+ export declare const neg: <A extends AllSignedTypes>(a: DynoVal<A>) => DynoVal<A>;
16
+ export declare const abs: <A extends SignedTypes>(a: DynoVal<A>) => DynoVal<A>;
17
+ export declare const sign: <A extends SignedTypes>(a: DynoVal<A>) => DynoVal<A>;
18
+ export declare const floor: <A extends FloatTypes>(a: DynoVal<A>) => DynoVal<A>;
19
+ export declare const ceil: <A extends FloatTypes>(a: DynoVal<A>) => DynoVal<A>;
20
+ export declare const trunc: <A extends FloatTypes>(a: DynoVal<A>) => DynoVal<A>;
21
+ export declare const round: <A extends FloatTypes>(a: DynoVal<A>) => DynoVal<A>;
22
+ export declare const fract: <A extends FloatTypes>(a: DynoVal<A>) => DynoVal<A>;
23
+ export declare const pow: <A extends FloatTypes>(a: DynoVal<A>, b: DynoVal<A>) => DynoVal<A>;
24
+ export declare const exp: <A extends FloatTypes>(a: DynoVal<A>) => DynoVal<A>;
25
+ export declare const exp2: <A extends FloatTypes>(a: DynoVal<A>) => DynoVal<A>;
26
+ export declare const log: <A extends FloatTypes>(a: DynoVal<A>) => DynoVal<A>;
27
+ export declare const log2: <A extends FloatTypes>(a: DynoVal<A>) => DynoVal<A>;
28
+ export declare const sqr: <A extends ValueTypes>(a: DynoVal<A>) => DynoVal<A>;
29
+ export declare const sqrt: <A extends FloatTypes>(a: DynoVal<A>) => DynoVal<A>;
30
+ export declare const inversesqrt: <A extends FloatTypes>(a: DynoVal<A>) => DynoVal<A>;
31
+ export declare const min: <A extends ValueTypes, B extends ValueTypes>(a: DynoVal<A>, b: DynoVal<B>) => DynoVal<MinOutput<A, B>>;
32
+ export declare const max: <A extends ValueTypes, B extends ValueTypes>(a: DynoVal<A>, b: DynoVal<B>) => DynoVal<MaxOutput<A, B>>;
33
+ export declare const clamp: <A extends ValueTypes, MinMax extends ValueTypes>(a: DynoVal<A>, min: DynoVal<MinMax>, max: DynoVal<MinMax>) => DynoVal<ClampOutput<A, MinMax>>;
34
+ export declare const mix: <A extends FloatTypes, T extends FloatTypes | BoolTypes>(a: DynoVal<A>, b: DynoVal<A>, t: DynoVal<T>) => DynoVal<MixOutput<A, T>>;
35
+ export declare const step: <A extends FloatTypes, B extends FloatTypes>(edge: DynoVal<A>, x: DynoVal<B>) => DynoVal<StepOutput<A, B>>;
36
+ export declare const smoothstep: <X extends FloatTypes, Edge extends X | "float">(edge0: DynoVal<Edge>, edge1: DynoVal<Edge>, x: DynoVal<X>) => DynoVal<SmoothstepOutput<Edge, Edge, X>>;
37
+ export declare const isNan: <A extends FloatTypes>(a: DynoVal<A>) => DynoVal<IsNanOutput<A>>;
38
+ export declare const isInf: <A extends FloatTypes>(a: DynoVal<A>) => DynoVal<IsInfOutput<A>>;
39
+ export declare class Add<A extends AllValueTypes, B extends AllValueTypes> extends BinaryOp<A, B, AddOutput<A, B>, "sum"> {
40
+ constructor({ a, b }: {
41
+ a: DynoVal<A>;
42
+ b: DynoVal<B>;
43
+ });
44
+ }
45
+ export declare class Sub<A extends AllValueTypes, B extends AllValueTypes> extends BinaryOp<A, B, SubOutput<A, B>, "difference"> {
46
+ constructor({ a, b }: {
47
+ a: DynoVal<A>;
48
+ b: DynoVal<B>;
49
+ });
50
+ }
51
+ export declare class Mul<A extends AllValueTypes, B extends AllValueTypes> extends BinaryOp<A, B, MulOutput<A, B>, "product"> {
52
+ constructor({ a, b }: {
53
+ a: DynoVal<A>;
54
+ b: DynoVal<B>;
55
+ });
56
+ }
57
+ export declare class Div<A extends AllValueTypes, B extends AllValueTypes> extends BinaryOp<A, B, DivOutput<A, B>, "quotient"> {
58
+ constructor({ a, b }: {
59
+ a: DynoVal<A>;
60
+ b: DynoVal<B>;
61
+ });
62
+ }
63
+ export declare class IMod<A extends AllIntTypes, B extends AllIntTypes> extends BinaryOp<A, B, IModOutput<A, B>, "remainder"> {
64
+ constructor({ a, b }: {
65
+ a: DynoVal<A>;
66
+ b: DynoVal<B>;
67
+ });
68
+ }
69
+ export declare class Mod<A extends FloatTypes, B extends FloatTypes> extends BinaryOp<A, B, ModOutput<A, B>, "remainder"> {
70
+ constructor({ a, b }: {
71
+ a: DynoVal<A>;
72
+ b: DynoVal<B>;
73
+ });
74
+ }
75
+ export declare class Modf<A extends FloatTypes> extends Dyno<{
76
+ a: A;
77
+ }, {
78
+ fract: A;
79
+ integer: A;
80
+ }> {
81
+ constructor({ a }: {
82
+ a: DynoVal<A>;
83
+ });
84
+ }
85
+ export declare class Neg<A extends AllSignedTypes> extends UnaryOp<A, A, "neg"> {
86
+ constructor({ a }: {
87
+ a: DynoVal<A>;
88
+ });
89
+ }
90
+ export declare class Abs<A extends SignedTypes> extends UnaryOp<A, A, "abs"> {
91
+ constructor({ a }: {
92
+ a: DynoVal<A>;
93
+ });
94
+ }
95
+ export declare class Sign<A extends SignedTypes> extends UnaryOp<A, A, "sign"> {
96
+ constructor({ a }: {
97
+ a: DynoVal<A>;
98
+ });
99
+ }
100
+ export declare class Floor<A extends FloatTypes> extends UnaryOp<A, A, "floor"> {
101
+ constructor({ a }: {
102
+ a: DynoVal<A>;
103
+ });
104
+ }
105
+ export declare class Ceil<A extends FloatTypes> extends UnaryOp<A, A, "ceil"> {
106
+ constructor({ a }: {
107
+ a: DynoVal<A>;
108
+ });
109
+ }
110
+ export declare class Trunc<A extends FloatTypes> extends UnaryOp<A, A, "trunc"> {
111
+ constructor({ a }: {
112
+ a: DynoVal<A>;
113
+ });
114
+ }
115
+ export declare class Round<A extends FloatTypes> extends UnaryOp<A, A, "round"> {
116
+ constructor({ a }: {
117
+ a: DynoVal<A>;
118
+ });
119
+ }
120
+ export declare class Fract<A extends FloatTypes> extends UnaryOp<A, A, "fract"> {
121
+ constructor({ a }: {
122
+ a: DynoVal<A>;
123
+ });
124
+ }
125
+ export declare class Pow<A extends FloatTypes> extends BinaryOp<A, A, A, "power"> {
126
+ constructor({ a, b }: {
127
+ a: DynoVal<A>;
128
+ b: DynoVal<A>;
129
+ });
130
+ }
131
+ export declare class Exp<A extends FloatTypes> extends UnaryOp<A, A, "exp"> {
132
+ constructor({ a }: {
133
+ a: DynoVal<A>;
134
+ });
135
+ }
136
+ export declare class Exp2<A extends FloatTypes> extends UnaryOp<A, A, "exp2"> {
137
+ constructor({ a }: {
138
+ a: DynoVal<A>;
139
+ });
140
+ }
141
+ export declare class Log<A extends FloatTypes> extends UnaryOp<A, A, "log"> {
142
+ constructor({ a }: {
143
+ a: DynoVal<A>;
144
+ });
145
+ }
146
+ export declare class Log2<A extends FloatTypes> extends UnaryOp<A, A, "log2"> {
147
+ constructor({ a }: {
148
+ a: DynoVal<A>;
149
+ });
150
+ }
151
+ export declare class Sqr<A extends ValueTypes> extends UnaryOp<A, A, "sqr"> {
152
+ constructor({ a }: {
153
+ a: DynoVal<A>;
154
+ });
155
+ }
156
+ export declare class Sqrt<A extends FloatTypes> extends UnaryOp<A, A, "sqrt"> {
157
+ constructor({ a }: {
158
+ a: DynoVal<A>;
159
+ });
160
+ }
161
+ export declare class InverseSqrt<A extends FloatTypes> extends UnaryOp<A, A, "inversesqrt"> {
162
+ constructor({ a }: {
163
+ a: DynoVal<A>;
164
+ });
165
+ }
166
+ export declare class Min<A extends ValueTypes, B extends ValueTypes> extends BinaryOp<A, B, MinOutput<A, B>, "min"> {
167
+ constructor({ a, b }: {
168
+ a: DynoVal<A>;
169
+ b: DynoVal<B>;
170
+ });
171
+ }
172
+ export declare class Max<A extends ValueTypes, B extends ValueTypes> extends BinaryOp<A, B, MaxOutput<A, B>, "max"> {
173
+ constructor({ a, b }: {
174
+ a: DynoVal<A>;
175
+ b: DynoVal<B>;
176
+ });
177
+ }
178
+ export declare class Clamp<A extends ValueTypes, MinMax extends ValueTypes> extends TrinaryOp<A, MinMax, MinMax, ClampOutput<A, MinMax>, "clamp"> {
179
+ constructor({ a, min, max, }: {
180
+ a: DynoVal<A>;
181
+ min: DynoVal<MinMax>;
182
+ max: DynoVal<MinMax>;
183
+ });
184
+ }
185
+ export declare class Mix<A extends FloatTypes, T extends FloatTypes | BoolTypes> extends TrinaryOp<A, A, T, MixOutput<A, T>, "mix"> {
186
+ constructor({ a, b, t }: {
187
+ a: DynoVal<A>;
188
+ b: DynoVal<A>;
189
+ t: DynoVal<T>;
190
+ });
191
+ }
192
+ export declare class Step<Edge extends FloatTypes, X extends FloatTypes> extends BinaryOp<Edge, X, StepOutput<Edge, X>, "step"> {
193
+ constructor({ edge, x }: {
194
+ edge: DynoVal<Edge>;
195
+ x: DynoVal<X>;
196
+ });
197
+ }
198
+ export declare class Smoothstep<X extends FloatTypes, Edge extends X | "float"> extends TrinaryOp<Edge, Edge, X, SmoothstepOutput<Edge, Edge, X>, "smoothstep"> {
199
+ constructor({ edge0, edge1, x, }: {
200
+ edge0: DynoVal<Edge>;
201
+ edge1: DynoVal<Edge>;
202
+ x: DynoVal<X>;
203
+ });
204
+ }
205
+ export declare class IsNan<A extends FloatTypes> extends UnaryOp<A, IsNanOutput<A>, "isNan"> {
206
+ constructor({ a }: {
207
+ a: DynoVal<A>;
208
+ });
209
+ }
210
+ export declare class IsInf<A extends FloatTypes> extends UnaryOp<A, IsInfOutput<A>, "isInf"> {
211
+ constructor({ a }: {
212
+ a: DynoVal<A>;
213
+ });
214
+ }
@@ -0,0 +1,47 @@
1
+ import { AllFloatTypes, AllIntTypes, AllSignedTypes, AllValueTypes, BaseType, BoolTypes, FloatTypes, IntTypes, SignedTypes, UintTypes, ValueTypes } from './types';
2
+ export type AddOutput<A extends AllValueTypes, B extends AllValueTypes> = BaseType & (A extends B ? A : A extends "int" ? B extends IntTypes ? B : never : B extends "int" ? A extends IntTypes ? A : never : A extends "uint" ? B extends UintTypes ? B : never : B extends "uint" ? A extends UintTypes ? A : never : A extends "float" ? B extends AllFloatTypes ? B : never : B extends "float" ? A extends AllFloatTypes ? A : never : never);
3
+ export type SubOutput<A extends AllValueTypes, B extends AllValueTypes> = AddOutput<A, B>;
4
+ export type MulOutput<A extends AllValueTypes, B extends AllValueTypes> = BaseType & (A extends "int" ? B extends IntTypes ? B : never : B extends "int" ? A extends IntTypes ? A : never : A extends "uint" ? B extends UintTypes ? B : never : B extends "uint" ? A extends UintTypes ? A : never : A extends "float" ? B extends AllFloatTypes ? B : never : B extends "float" ? A extends AllFloatTypes ? A : never : A extends IntTypes ? B extends A ? A : never : B extends IntTypes ? A extends B ? A : never : A extends UintTypes ? B extends A ? A : never : B extends UintTypes ? A extends B ? A : never : A extends "vec2" ? B extends "vec2" | "mat2" | "mat2x2" ? "vec2" : B extends "mat3x2" ? "vec3" : B extends "mat4x2" ? "vec4" : never : A extends "vec3" ? B extends "mat2x3" ? "vec2" : B extends "vec3" | "mat3" | "mat3x3" ? "vec3" : B extends "mat4x3" ? "vec4" : never : A extends "vec4" ? B extends "mat2x4" ? "vec2" : B extends "mat3x4" ? "vec3" : B extends "vec4" | "mat4" | "mat4x4" ? "vec4" : never : B extends "vec2" ? A extends "mat2" | "mat2x2" ? "vec2" : A extends "mat2x3" ? "vec3" : A extends "mat2x4" ? "vec4" : never : B extends "vec3" ? A extends "mat3x2" ? "vec2" : A extends "mat3" | "mat3x3" ? "vec3" : A extends "mat3x4" ? "vec4" : never : B extends "vec4" ? A extends "mat4x2" ? "vec2" : A extends "mat4x3" ? "vec3" : A extends "mat4" | "mat4x4" ? "vec4" : never : A extends "mat2" | "mat2x2" ? B extends "mat2" | "mat2x2" ? "mat2" : B extends "mat3x2" ? "mat3x2" : B extends "mat4x2" ? "mat4x2" : never : A extends "mat2x3" ? B extends "mat2" | "mat2x2" ? "mat2x3" : B extends "mat3x2" ? "mat3" : B extends "mat4x2" ? "mat4x3" : never : A extends "mat2x4" ? B extends "mat2" | "mat2x2" ? "mat2x4" : B extends "mat3x2" ? "mat3x4" : B extends "mat4x2" ? "mat4" : never : A extends "mat3x2" ? B extends "mat2x3" ? "mat2" : B extends "mat3" | "mat3x3" ? "mat3x2" : B extends "mat4x3" ? "mat4x2" : never : A extends "mat3" | "mat3x3" ? B extends "mat2x3" ? "mat2x3" : B extends "mat3" | "mat3x3" ? "mat3" : B extends "mat4x3" ? "mat4x3" : never : A extends "mat3x4" ? B extends "mat2x3" ? "mat2x4" : B extends "mat3" | "mat3x3" ? "mat3x4" : B extends "mat4x3" ? "mat4" : never : A extends "mat4x2" ? B extends "mat2x4" ? "mat2" : B extends "mat3x4" ? "mat3x2" : B extends "mat4" | "mat4x4" ? "mat4x2" : never : A extends "mat4x3" ? B extends "mat2x4" ? "mat2x3" : B extends "mat3x4" ? "mat3" : B extends "mat4" | "mat4x4" ? "mat4x3" : never : A extends "mat4" | "mat4x4" ? B extends "mat2x4" ? "mat2x4" : B extends "mat3x4" ? "mat3x4" : B extends "mat4" | "mat4x4" ? "mat4" : never : never);
5
+ export type DivOutput<A extends AllValueTypes, B extends AllValueTypes> = AddOutput<A, B>;
6
+ export type IModOutput<A extends AllIntTypes, B extends AllIntTypes> = BaseType & (A extends B ? A : A extends "int" ? B extends IntTypes ? B : never : B extends "int" ? A extends IntTypes ? A : never : A extends "uint" ? B extends UintTypes ? B : never : B extends "uint" ? A extends UintTypes ? A : never : never);
7
+ export type ModOutput<A extends FloatTypes, B extends FloatTypes> = BaseType & (A extends B ? A : B extends "float" ? A : never);
8
+ export type PowOutput<A extends FloatTypes, B extends FloatTypes> = BaseType & (A extends B ? A : never);
9
+ export type MinOutput<A extends ValueTypes, B extends ValueTypes> = BaseType & (A extends B ? A : B extends "float" ? A extends FloatTypes ? A : never : B extends "int" ? A extends IntTypes ? A : never : B extends "uint" ? A extends UintTypes ? A : never : never);
10
+ export type MaxOutput<A extends ValueTypes, B extends ValueTypes> = MinOutput<A, B>;
11
+ export type ClampOutput<A extends ValueTypes, B extends ValueTypes> = BaseType & (B extends "float" ? A extends FloatTypes ? A : never : B extends "int" ? A extends IntTypes ? A : never : B extends "uint" ? A extends UintTypes ? A : never : never);
12
+ export type MixOutput<A extends FloatTypes, T extends FloatTypes | BoolTypes> = BaseType & (T extends A ? A : T extends "float" ? A : T extends "bool" ? A extends "float" ? A : never : T extends "bvec2" ? A extends "vec2" ? A : never : T extends "bvec3" ? A extends "vec3" ? A : never : T extends "bvec4" ? A extends "vec4" ? A : never : never);
13
+ export type StepOutput<A extends FloatTypes, B extends FloatTypes> = BaseType & (A extends B ? B : A extends "float" ? B : never);
14
+ export type SmoothstepOutput<A extends FloatTypes, B extends FloatTypes, C extends FloatTypes> = BaseType & (A extends B ? (A extends C ? C : A extends "float" ? C : never) : never);
15
+ export type IsNanOutput<A extends FloatTypes> = BaseType & (A extends "float" ? "bool" : A extends "vec2" ? "bvec2" : A extends "vec3" ? "bvec3" : A extends "vec4" ? "bvec4" : never);
16
+ export type IsInfOutput<A extends FloatTypes> = IsNanOutput<A>;
17
+ export declare function addOutputType<A extends AllValueTypes, B extends AllValueTypes>(a: A, b: B, operation?: string): AddOutput<A, B>;
18
+ export declare function subOutputType<A extends AllValueTypes, B extends AllValueTypes>(a: A, b: B): SubOutput<A, B>;
19
+ export declare function mulOutputType<A extends AllValueTypes, B extends AllValueTypes>(a: A, b: B): MulOutput<A, B>;
20
+ export declare function divOutputType<A extends AllValueTypes, B extends AllValueTypes>(a: A, b: B): DivOutput<A, B>;
21
+ export declare function imodOutputType<A extends AllIntTypes, B extends AllIntTypes>(a: A, b: B): IModOutput<A, B>;
22
+ export declare function modOutputType<A extends FloatTypes, B extends FloatTypes>(a: A, b: B): ModOutput<A, B>;
23
+ export declare function modfOutputType<A extends FloatTypes>(a: A): A;
24
+ export declare function negOutputType<A extends AllSignedTypes>(a: A): A;
25
+ export declare function absOutputType<A extends SignedTypes>(a: A): A;
26
+ export declare function signOutputType<A extends SignedTypes>(a: A): A;
27
+ export declare function floorOutputType<A extends FloatTypes>(a: A): A;
28
+ export declare function ceilOutputType<A extends FloatTypes>(a: A): A;
29
+ export declare function truncOutputType<A extends FloatTypes>(a: A): A;
30
+ export declare function roundOutputType<A extends FloatTypes>(a: A): A;
31
+ export declare function fractOutputType<A extends FloatTypes>(a: A): A;
32
+ export declare function powOutputType<A extends FloatTypes>(a: A): A;
33
+ export declare function expOutputType<A extends FloatTypes>(a: A): A;
34
+ export declare function exp2OutputType<A extends FloatTypes>(a: A): A;
35
+ export declare function logOutputType<A extends FloatTypes>(a: A): A;
36
+ export declare function log2OutputType<A extends FloatTypes>(a: A): A;
37
+ export declare function sqrOutputType<A extends ValueTypes>(a: A): A;
38
+ export declare function sqrtOutputType<A extends FloatTypes>(a: A): A;
39
+ export declare function inversesqrtOutputType<A extends FloatTypes>(a: A): A;
40
+ export declare function minOutputType<A extends ValueTypes, B extends ValueTypes>(a: A, b: B, operation?: string): MinOutput<A, B>;
41
+ export declare function maxOutputType<A extends ValueTypes, B extends ValueTypes>(a: A, b: B): MaxOutput<A, B>;
42
+ export declare function clampOutputType<A extends ValueTypes, B extends ValueTypes>(a: A, b: B, _c: B): ClampOutput<A, B>;
43
+ export declare function mixOutputType<A extends FloatTypes, C extends FloatTypes | BoolTypes>(a: A, b: A, c: C): MixOutput<A, C>;
44
+ export declare function stepOutputType<A extends FloatTypes, B extends FloatTypes>(a: A, b: B): StepOutput<A, B>;
45
+ export declare function smoothstepOutputType<A extends FloatTypes, B extends FloatTypes, C extends FloatTypes>(a: A, b: B, c: C): SmoothstepOutput<A, B, C>;
46
+ export declare function isNanOutputType<A extends FloatTypes>(a: A, operation?: string): IsNanOutput<A>;
47
+ export declare function isInfOutputType<A extends FloatTypes>(a: A): IsInfOutput<A>;
@@ -0,0 +1,25 @@
1
+ import { Dyno } from './base';
2
+ import { Gsplat } from './splats';
3
+ import { DynoVal, DynoValue, HasDynoOut } from './value';
4
+ export declare const outputPackedSplat: (gsplat: DynoVal<typeof Gsplat>) => OutputPackedSplat;
5
+ export declare const outputRgba8: (rgba8: DynoVal<"vec4">) => OutputRgba8;
6
+ export declare class OutputPackedSplat extends Dyno<{
7
+ gsplat: typeof Gsplat;
8
+ }, {
9
+ output: "uvec4";
10
+ }> implements HasDynoOut<"uvec4"> {
11
+ constructor({ gsplat }: {
12
+ gsplat?: DynoVal<typeof Gsplat>;
13
+ });
14
+ dynoOut(): DynoValue<"uvec4">;
15
+ }
16
+ export declare class OutputRgba8 extends Dyno<{
17
+ rgba8: "vec4";
18
+ }, {
19
+ rgba8: "vec4";
20
+ }> implements HasDynoOut<"vec4"> {
21
+ constructor({ rgba8 }: {
22
+ rgba8?: DynoVal<"vec4">;
23
+ });
24
+ dynoOut(): DynoValue<"vec4">;
25
+ }
@@ -0,0 +1,30 @@
1
+ import { Dyno, IOTypes } from './base';
2
+ import * as THREE from "three";
3
+ export declare class DynoProgram {
4
+ graph: Dyno<IOTypes, IOTypes>;
5
+ template: DynoProgramTemplate;
6
+ inputs: Record<string, string>;
7
+ outputs: Record<string, string>;
8
+ shader: string;
9
+ uniforms: Record<string, THREE.IUniform>;
10
+ updaters: (() => void)[];
11
+ constructor({ graph, inputs, outputs, template, }: {
12
+ graph: Dyno<IOTypes, IOTypes>;
13
+ inputs?: Record<string, string>;
14
+ outputs?: Record<string, string>;
15
+ template: DynoProgramTemplate;
16
+ });
17
+ prepareMaterial(): THREE.RawShaderMaterial;
18
+ update(): void;
19
+ }
20
+ export declare class DynoProgramTemplate {
21
+ before: string;
22
+ between: string;
23
+ after: string;
24
+ indent: string;
25
+ constructor(template: string);
26
+ generate({ globals, statements, }: {
27
+ globals: Set<string>;
28
+ statements: string[];
29
+ }): string;
30
+ }
@@ -0,0 +1,156 @@
1
+ import { Dyno, UnaryOp } from './base';
2
+ import { DynoVal, DynoValue, HasDynoOut } from './value';
3
+ export declare const Gsplat: {
4
+ type: "Gsplat";
5
+ };
6
+ export declare const TPackedSplats: {
7
+ type: "PackedSplats";
8
+ };
9
+ export declare const numPackedSplats: (packedSplats: DynoVal<typeof TPackedSplats>) => DynoVal<"int">;
10
+ export declare const readPackedSplat: (packedSplats: DynoVal<typeof TPackedSplats>, index: DynoVal<"int">) => DynoVal<typeof Gsplat>;
11
+ export declare const readPackedSplatRange: (packedSplats: DynoVal<typeof TPackedSplats>, index: DynoVal<"int">, base: DynoVal<"int">, count: DynoVal<"int">) => DynoVal<typeof Gsplat>;
12
+ export declare const splitGsplat: (gsplat: DynoVal<typeof Gsplat>) => SplitGsplat;
13
+ export declare const combineGsplat: ({ gsplat, flags, index, center, scales, quaternion, rgba, rgb, opacity, x, y, z, r, g, b, }: {
14
+ gsplat?: DynoVal<typeof Gsplat>;
15
+ flags?: DynoVal<"uint">;
16
+ index?: DynoVal<"int">;
17
+ center?: DynoVal<"vec3">;
18
+ scales?: DynoVal<"vec3">;
19
+ quaternion?: DynoVal<"vec4">;
20
+ rgba?: DynoVal<"vec4">;
21
+ rgb?: DynoVal<"vec3">;
22
+ opacity?: DynoVal<"float">;
23
+ x?: DynoVal<"float">;
24
+ y?: DynoVal<"float">;
25
+ z?: DynoVal<"float">;
26
+ r?: DynoVal<"float">;
27
+ g?: DynoVal<"float">;
28
+ b?: DynoVal<"float">;
29
+ }) => DynoVal<typeof Gsplat>;
30
+ export declare const gsplatNormal: (gsplat: DynoVal<typeof Gsplat>) => DynoVal<"vec3">;
31
+ export declare const transformGsplat: (gsplat: DynoVal<typeof Gsplat>, { scale, rotate, translate, recolor, }: {
32
+ scale?: DynoVal<"float">;
33
+ rotate?: DynoVal<"vec4">;
34
+ translate?: DynoVal<"vec3">;
35
+ recolor?: DynoVal<"vec4">;
36
+ }) => DynoVal<typeof Gsplat>;
37
+ export declare const defineGsplat: string;
38
+ export declare const definePackedSplats: string;
39
+ export declare class NumPackedSplats extends UnaryOp<typeof TPackedSplats, "int", "numSplats"> {
40
+ constructor({ packedSplats, }: {
41
+ packedSplats: DynoVal<typeof TPackedSplats>;
42
+ });
43
+ }
44
+ export declare class ReadPackedSplat extends Dyno<{
45
+ packedSplats: typeof TPackedSplats;
46
+ index: "int";
47
+ }, {
48
+ gsplat: typeof Gsplat;
49
+ }> implements HasDynoOut<typeof Gsplat> {
50
+ constructor({ packedSplats, index, }: {
51
+ packedSplats?: DynoVal<typeof TPackedSplats>;
52
+ index?: DynoVal<"int">;
53
+ });
54
+ dynoOut(): DynoValue<typeof Gsplat>;
55
+ }
56
+ export declare class ReadPackedSplatRange extends Dyno<{
57
+ packedSplats: typeof TPackedSplats;
58
+ index: "int";
59
+ base: "int";
60
+ count: "int";
61
+ }, {
62
+ gsplat: typeof Gsplat;
63
+ }> implements HasDynoOut<typeof Gsplat> {
64
+ constructor({ packedSplats, index, base, count, }: {
65
+ packedSplats?: DynoVal<typeof TPackedSplats>;
66
+ index?: DynoVal<"int">;
67
+ base?: DynoVal<"int">;
68
+ count?: DynoVal<"int">;
69
+ });
70
+ dynoOut(): DynoValue<typeof Gsplat>;
71
+ }
72
+ export declare class SplitGsplat extends Dyno<{
73
+ gsplat: typeof Gsplat;
74
+ }, {
75
+ flags: "uint";
76
+ active: "bool";
77
+ index: "int";
78
+ center: "vec3";
79
+ scales: "vec3";
80
+ quaternion: "vec4";
81
+ rgba: "vec4";
82
+ rgb: "vec3";
83
+ opacity: "float";
84
+ x: "float";
85
+ y: "float";
86
+ z: "float";
87
+ r: "float";
88
+ g: "float";
89
+ b: "float";
90
+ }> {
91
+ constructor({ gsplat }: {
92
+ gsplat?: DynoVal<typeof Gsplat>;
93
+ });
94
+ }
95
+ export declare class CombineGsplat extends Dyno<{
96
+ gsplat: typeof Gsplat;
97
+ flags: "uint";
98
+ index: "int";
99
+ center: "vec3";
100
+ scales: "vec3";
101
+ quaternion: "vec4";
102
+ rgba: "vec4";
103
+ rgb: "vec3";
104
+ opacity: "float";
105
+ x: "float";
106
+ y: "float";
107
+ z: "float";
108
+ r: "float";
109
+ g: "float";
110
+ b: "float";
111
+ }, {
112
+ gsplat: typeof Gsplat;
113
+ }> implements HasDynoOut<typeof Gsplat> {
114
+ constructor({ gsplat, flags, index, center, scales, quaternion, rgba, rgb, opacity, x, y, z, r, g, b, }: {
115
+ gsplat?: DynoVal<typeof Gsplat>;
116
+ flags?: DynoVal<"uint">;
117
+ index?: DynoVal<"int">;
118
+ center?: DynoVal<"vec3">;
119
+ scales?: DynoVal<"vec3">;
120
+ quaternion?: DynoVal<"vec4">;
121
+ rgba?: DynoVal<"vec4">;
122
+ rgb?: DynoVal<"vec3">;
123
+ opacity?: DynoVal<"float">;
124
+ x?: DynoVal<"float">;
125
+ y?: DynoVal<"float">;
126
+ z?: DynoVal<"float">;
127
+ r?: DynoVal<"float">;
128
+ g?: DynoVal<"float">;
129
+ b?: DynoVal<"float">;
130
+ });
131
+ dynoOut(): DynoValue<typeof Gsplat>;
132
+ }
133
+ export declare const defineGsplatNormal: string;
134
+ export declare class GsplatNormal extends UnaryOp<typeof Gsplat, "vec3", "normal"> {
135
+ constructor({ gsplat }: {
136
+ gsplat: DynoVal<typeof Gsplat>;
137
+ });
138
+ }
139
+ export declare class TransformGsplat extends Dyno<{
140
+ gsplat: typeof Gsplat;
141
+ scale: "float";
142
+ rotate: "vec4";
143
+ translate: "vec3";
144
+ recolor: "vec4";
145
+ }, {
146
+ gsplat: typeof Gsplat;
147
+ }> implements HasDynoOut<typeof Gsplat> {
148
+ constructor({ gsplat, scale, rotate, translate, recolor, }: {
149
+ gsplat?: DynoVal<typeof Gsplat>;
150
+ scale?: DynoVal<"float">;
151
+ rotate?: DynoVal<"vec4">;
152
+ translate?: DynoVal<"vec3">;
153
+ recolor?: DynoVal<"vec4">;
154
+ });
155
+ dynoOut(): DynoValue<typeof Gsplat>;
156
+ }
@@ -0,0 +1,50 @@
1
+ import { Dyno } from './base';
2
+ import { AllSamplerTypes, IsamplerTypes, NormalSamplerTypes, Sampler2DArrayTypes, Sampler2DTypes, Sampler3DTypes, SamplerCubeTypes, SamplerShadowTypes, SamplerTypes, UsamplerTypes } from './types';
3
+ import { DynoVal, DynoValue, HasDynoOut } from './value';
4
+ export declare const textureSize: <T extends AllSamplerTypes>(texture: DynoVal<T>, lod?: DynoVal<"int">) => DynoVal<TextureSizeType<T>>;
5
+ export declare const texture: <T extends AllSamplerTypes>(texture: DynoVal<T>, coord: DynoVal<TextureCoordType<T>>, bias?: DynoVal<"float">) => DynoVal<TextureReturnType<T>>;
6
+ export declare const texelFetch: <T extends NormalSamplerTypes>(texture: DynoVal<T>, coord: DynoVal<TextureSizeType<T>>, lod?: DynoVal<"int">) => DynoVal<TextureReturnType<T>>;
7
+ export declare class TextureSize<T extends AllSamplerTypes> extends Dyno<{
8
+ texture: T;
9
+ lod: "int";
10
+ }, {
11
+ size: TextureSizeType<T>;
12
+ }> implements HasDynoOut<TextureSizeType<T>> {
13
+ constructor({ texture, lod }: {
14
+ texture: DynoVal<T>;
15
+ lod?: DynoVal<"int">;
16
+ });
17
+ dynoOut(): DynoValue<TextureSizeType<T>>;
18
+ }
19
+ export declare class Texture<T extends AllSamplerTypes> extends Dyno<{
20
+ texture: T;
21
+ coord: TextureCoordType<T>;
22
+ bias: "float";
23
+ }, {
24
+ sample: TextureReturnType<T>;
25
+ }> implements HasDynoOut<TextureReturnType<T>> {
26
+ constructor({ texture, coord, bias, }: {
27
+ texture: DynoVal<T>;
28
+ coord: DynoVal<TextureCoordType<T>>;
29
+ bias?: DynoVal<"float">;
30
+ });
31
+ dynoOut(): DynoValue<TextureReturnType<T>>;
32
+ }
33
+ export declare class TexelFetch<T extends NormalSamplerTypes> extends Dyno<{
34
+ texture: T;
35
+ coord: TextureSizeType<T>;
36
+ lod: "int";
37
+ }, {
38
+ texel: TextureReturnType<T>;
39
+ }> implements HasDynoOut<TextureReturnType<T>> {
40
+ constructor({ texture, coord, lod, }: {
41
+ texture: DynoVal<T>;
42
+ coord: DynoVal<TextureSizeType<T>>;
43
+ lod?: DynoVal<"int">;
44
+ });
45
+ dynoOut(): DynoValue<TextureReturnType<T>>;
46
+ }
47
+ type TextureSizeType<T extends AllSamplerTypes> = T extends Sampler2DTypes | SamplerCubeTypes ? "ivec2" : T extends Sampler3DTypes | Sampler2DArrayTypes ? "ivec3" : never;
48
+ type TextureCoordType<T extends AllSamplerTypes> = T extends Sampler2DTypes ? "vec2" : T extends Sampler3DTypes | Sampler2DArrayTypes | SamplerCubeTypes | Sampler2DArrayTypes ? "vec3" : T extends "samperCubeShadow" | "sampler2DArrayShadow" ? "vec4" : never;
49
+ type TextureReturnType<T extends AllSamplerTypes> = T extends SamplerTypes ? "vec4" : T extends UsamplerTypes ? "uvec4" : T extends IsamplerTypes ? "ivec4" : T extends SamplerShadowTypes ? "float" : never;
50
+ export {};