glre 0.28.0 → 0.30.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.
- package/dist/index-q8W5cl04.d.cts +358 -0
- package/dist/index.cjs +38 -34
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -546
- package/dist/index.js +38 -34
- package/dist/index.js.map +1 -1
- package/dist/native.cjs +38 -34
- package/dist/native.cjs.map +1 -1
- package/dist/native.d.cts +9 -9
- package/dist/native.js +38 -34
- package/dist/native.js.map +1 -1
- package/dist/react.cjs +38 -34
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +2 -2
- package/dist/react.js +38 -34
- package/dist/react.js.map +1 -1
- package/dist/solid.cjs +38 -34
- package/dist/solid.cjs.map +1 -1
- package/dist/solid.d.cts +2 -2
- package/dist/solid.js +38 -34
- package/dist/solid.js.map +1 -1
- package/package.json +23 -23
- package/src/index.ts +0 -1
- package/src/node/code.ts +74 -62
- package/src/node/const.ts +60 -20
- package/src/node/index.ts +43 -40
- package/src/node/infer.ts +63 -64
- package/src/node/node.ts +38 -37
- package/src/node/scope.ts +70 -80
- package/src/node/types.ts +51 -24
- package/src/node/utils.ts +91 -26
- package/src/types.ts +7 -7
- package/src/utils/pipeline.ts +6 -6
- package/src/utils/program.ts +6 -6
- package/src/webgl.ts +1 -2
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
import * as refr from 'refr';
|
|
2
|
+
import { Queue, Frame } from 'refr';
|
|
3
|
+
import { EventState } from 'reev';
|
|
4
|
+
|
|
5
|
+
declare const CONSTANTS: readonly ["bool", "uint", "int", "float", "bvec2", "ivec2", "uvec2", "vec2", "bvec3", "ivec3", "uvec3", "vec3", "bvec4", "ivec4", "uvec4", "vec4", "color", "mat2", "mat3", "mat4"];
|
|
6
|
+
|
|
7
|
+
type Constants = (typeof CONSTANTS)[number] | 'void';
|
|
8
|
+
interface FnLayout {
|
|
9
|
+
name: string;
|
|
10
|
+
type: Constants | 'auto';
|
|
11
|
+
inputs?: Array<{
|
|
12
|
+
name: string;
|
|
13
|
+
type: Constants;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
interface NodeProps {
|
|
17
|
+
id?: string;
|
|
18
|
+
args?: X[];
|
|
19
|
+
type?: string;
|
|
20
|
+
children?: X[];
|
|
21
|
+
inferFrom?: X;
|
|
22
|
+
layout?: FnLayout;
|
|
23
|
+
}
|
|
24
|
+
interface NodeConfig {
|
|
25
|
+
isWebGL?: boolean;
|
|
26
|
+
binding?: number;
|
|
27
|
+
infers?: WeakMap<NodeProxy, Constants>;
|
|
28
|
+
headers?: Map<string, string>;
|
|
29
|
+
onMount?: (name: string) => void;
|
|
30
|
+
}
|
|
31
|
+
type _Swizzles<T extends string> = T | `${T}${T}` | `${T}${T}${T}` | `${T}${T}${T}${T}`;
|
|
32
|
+
type Swizzles = _Swizzles<'x' | 'y' | 'z' | 'w'> | _Swizzles<'r' | 'g' | 'b' | 'a'> | _Swizzles<'p' | 'q'> | _Swizzles<'s' | 't'>;
|
|
33
|
+
type NodeTypes = 'attribute' | 'uniform' | 'varying' | 'constant' | 'variable' | 'swizzle' | 'ternary' | 'builtin' | 'conversion' | 'operator' | 'function' | 'scope' | 'assign' | 'loop' | 'define' | 'if' | 'switch' | 'declare';
|
|
34
|
+
interface NodeProxy extends Record<Swizzles, NodeProxy> {
|
|
35
|
+
add(n: X): NodeProxy;
|
|
36
|
+
sub(n: X): NodeProxy;
|
|
37
|
+
mul(n: X): NodeProxy;
|
|
38
|
+
div(n: X): NodeProxy;
|
|
39
|
+
mod(n: X): NodeProxy;
|
|
40
|
+
equal(n: X): NodeProxy;
|
|
41
|
+
notEqual(n: X): NodeProxy;
|
|
42
|
+
lessThan(n: X): NodeProxy;
|
|
43
|
+
lessThanEqual(n: X): NodeProxy;
|
|
44
|
+
greaterThan(n: X): NodeProxy;
|
|
45
|
+
greaterThanEqual(n: X): NodeProxy;
|
|
46
|
+
and(n: X): NodeProxy;
|
|
47
|
+
or(n: X): NodeProxy;
|
|
48
|
+
not(): NodeProxy;
|
|
49
|
+
assign(n: X): NodeProxy;
|
|
50
|
+
toVar(name?: string): NodeProxy;
|
|
51
|
+
abs(): NodeProxy;
|
|
52
|
+
sin(): NodeProxy;
|
|
53
|
+
cos(): NodeProxy;
|
|
54
|
+
tan(): NodeProxy;
|
|
55
|
+
asin(): NodeProxy;
|
|
56
|
+
acos(): NodeProxy;
|
|
57
|
+
atan(): NodeProxy;
|
|
58
|
+
atan2(x: X): NodeProxy;
|
|
59
|
+
pow(y: X): NodeProxy;
|
|
60
|
+
pow2(): NodeProxy;
|
|
61
|
+
pow3(): NodeProxy;
|
|
62
|
+
pow4(): NodeProxy;
|
|
63
|
+
sqrt(): NodeProxy;
|
|
64
|
+
inverseSqrt(): NodeProxy;
|
|
65
|
+
exp(): NodeProxy;
|
|
66
|
+
exp2(): NodeProxy;
|
|
67
|
+
log(): NodeProxy;
|
|
68
|
+
log2(): NodeProxy;
|
|
69
|
+
floor(): NodeProxy;
|
|
70
|
+
ceil(): NodeProxy;
|
|
71
|
+
round(): NodeProxy;
|
|
72
|
+
fract(): NodeProxy;
|
|
73
|
+
trunc(): NodeProxy;
|
|
74
|
+
min(y: X): NodeProxy;
|
|
75
|
+
max(y: X): NodeProxy;
|
|
76
|
+
clamp(min: X, max: X): NodeProxy;
|
|
77
|
+
saturate(): NodeProxy;
|
|
78
|
+
mix(y: X, a: X): NodeProxy;
|
|
79
|
+
step(edge: X): NodeProxy;
|
|
80
|
+
smoothstep(edge0: X, edge1: X): NodeProxy;
|
|
81
|
+
length(): NodeProxy;
|
|
82
|
+
distance(y: X): NodeProxy;
|
|
83
|
+
dot(y: X): NodeProxy;
|
|
84
|
+
cross(y: X): NodeProxy;
|
|
85
|
+
normalize(): NodeProxy;
|
|
86
|
+
reflect(N: X): NodeProxy;
|
|
87
|
+
refract(N: X, eta: X): NodeProxy;
|
|
88
|
+
sign(): NodeProxy;
|
|
89
|
+
oneMinus(): NodeProxy;
|
|
90
|
+
reciprocal(): NodeProxy;
|
|
91
|
+
negate(): NodeProxy;
|
|
92
|
+
dFdx(): NodeProxy;
|
|
93
|
+
dFdy(): NodeProxy;
|
|
94
|
+
fwidth(): NodeProxy;
|
|
95
|
+
toBool(): NodeProxy;
|
|
96
|
+
toUint(): NodeProxy;
|
|
97
|
+
toInt(): NodeProxy;
|
|
98
|
+
toFloat(): NodeProxy;
|
|
99
|
+
toBvec2(): NodeProxy;
|
|
100
|
+
toIvec2(): NodeProxy;
|
|
101
|
+
toUvec2(): NodeProxy;
|
|
102
|
+
toVec2(): NodeProxy;
|
|
103
|
+
toBvec3(): NodeProxy;
|
|
104
|
+
toIvec3(): NodeProxy;
|
|
105
|
+
toUvec3(): NodeProxy;
|
|
106
|
+
toVec3(): NodeProxy;
|
|
107
|
+
toBvec4(): NodeProxy;
|
|
108
|
+
toIvec4(): NodeProxy;
|
|
109
|
+
toUvec4(): NodeProxy;
|
|
110
|
+
toVec4(): NodeProxy;
|
|
111
|
+
toColor(): NodeProxy;
|
|
112
|
+
toMat2(): NodeProxy;
|
|
113
|
+
toMat3(): NodeProxy;
|
|
114
|
+
toMat4(): NodeProxy;
|
|
115
|
+
toString(c?: NodeConfig): string;
|
|
116
|
+
type: NodeTypes;
|
|
117
|
+
props: NodeProps;
|
|
118
|
+
isProxy: true;
|
|
119
|
+
}
|
|
120
|
+
type X = NodeProxy | number | string | boolean | undefined;
|
|
121
|
+
|
|
122
|
+
type GPUContext = any;
|
|
123
|
+
type GPUDevice = any;
|
|
124
|
+
type GPUBuffer = any;
|
|
125
|
+
type GPUPipeline = any;
|
|
126
|
+
type GPUBindGroup = any;
|
|
127
|
+
type Uniform = number | number[];
|
|
128
|
+
type Attribute = number[];
|
|
129
|
+
type Attributes = Record<string, Attribute>;
|
|
130
|
+
type Uniforms = Record<string, Uniform>;
|
|
131
|
+
type PrecisionMode = 'highp' | 'mediump' | 'lowp';
|
|
132
|
+
type GLClearMode = 'COLOR_BUFFER_BIT' | 'DEPTH_BUFFER_BIT' | 'STENCIL_BUFFER_BIT';
|
|
133
|
+
type GLDrawType = 'UNSIGNED_BYTE' | 'UNSIGNED_SHORT' | 'UNSIGNED_INT';
|
|
134
|
+
type GLDrawMode = 'POINTS' | 'LINE_STRIP' | 'LINE_LOOP' | 'LINES' | 'TRIANGLE_STRIP' | 'TRIANGLE_FAN' | 'TRIANGLES';
|
|
135
|
+
interface WebGLState {
|
|
136
|
+
context: WebGLRenderingContext;
|
|
137
|
+
program: WebGLProgram;
|
|
138
|
+
}
|
|
139
|
+
interface WebGPUState {
|
|
140
|
+
device: GPUDevice;
|
|
141
|
+
context: GPUContext;
|
|
142
|
+
pipeline: GPUPipeline;
|
|
143
|
+
groups: any[];
|
|
144
|
+
resources: any[];
|
|
145
|
+
loadingImg: number;
|
|
146
|
+
needsUpdate: boolean;
|
|
147
|
+
}
|
|
148
|
+
type GL = EventState<{
|
|
149
|
+
/**
|
|
150
|
+
* initial value
|
|
151
|
+
*/
|
|
152
|
+
isNative: boolean;
|
|
153
|
+
isWebGL: boolean;
|
|
154
|
+
isLoop: boolean;
|
|
155
|
+
isGL: true;
|
|
156
|
+
width: number;
|
|
157
|
+
height: number;
|
|
158
|
+
size: [number, number];
|
|
159
|
+
mouse: [number, number];
|
|
160
|
+
count: number;
|
|
161
|
+
el: HTMLCanvasElement;
|
|
162
|
+
vs: string | NodeProxy;
|
|
163
|
+
fs: string | NodeProxy;
|
|
164
|
+
vert: string | NodeProxy;
|
|
165
|
+
frag: string | NodeProxy;
|
|
166
|
+
vertex: string | NodeProxy;
|
|
167
|
+
fragment: string | NodeProxy;
|
|
168
|
+
/**
|
|
169
|
+
* core state
|
|
170
|
+
*/
|
|
171
|
+
webgpu: WebGPUState;
|
|
172
|
+
webgl: WebGLState;
|
|
173
|
+
queue: Queue;
|
|
174
|
+
frame: Frame;
|
|
175
|
+
/**
|
|
176
|
+
* events
|
|
177
|
+
*/
|
|
178
|
+
ref?: any;
|
|
179
|
+
init(): void;
|
|
180
|
+
loop(): void;
|
|
181
|
+
mount(): void;
|
|
182
|
+
clean(): void;
|
|
183
|
+
render(): void;
|
|
184
|
+
resize(e?: Event): void;
|
|
185
|
+
mousemove(e: Event): void;
|
|
186
|
+
/**
|
|
187
|
+
* setter
|
|
188
|
+
*/
|
|
189
|
+
_uniform?(key: string, value: Uniform, isMatrix?: boolean): GL;
|
|
190
|
+
uniform(key: string, value: Uniform, isMatrix?: boolean): GL;
|
|
191
|
+
uniform(target: {
|
|
192
|
+
[key: string]: Uniform;
|
|
193
|
+
}): GL;
|
|
194
|
+
_texture?(key: string, value: string): GL;
|
|
195
|
+
texture(key: string, value: string): GL;
|
|
196
|
+
texture(target: {
|
|
197
|
+
[key: string]: string;
|
|
198
|
+
}): GL;
|
|
199
|
+
_attribute?(key: string, value: Attribute, iboValue?: Attribute): GL;
|
|
200
|
+
attribute(key: string, value: Attribute, iboValue?: Attribute): GL;
|
|
201
|
+
attribute(target: {
|
|
202
|
+
[key: string]: Attribute;
|
|
203
|
+
}): GL;
|
|
204
|
+
}>;
|
|
205
|
+
|
|
206
|
+
declare const is: {
|
|
207
|
+
arr: (arg: any) => arg is any[];
|
|
208
|
+
bol: (a: unknown) => a is boolean;
|
|
209
|
+
str: (a: unknown) => a is string;
|
|
210
|
+
num: (a: unknown) => a is number;
|
|
211
|
+
int: (a: unknown) => a is number;
|
|
212
|
+
fun: (a: unknown) => a is Function;
|
|
213
|
+
und: (a: unknown) => a is undefined;
|
|
214
|
+
nul: (a: unknown) => a is null;
|
|
215
|
+
set: (a: unknown) => a is Set<unknown>;
|
|
216
|
+
map: (a: unknown) => a is Map<unknown, unknown>;
|
|
217
|
+
obj: (a: unknown) => a is object;
|
|
218
|
+
nan: (a: unknown) => a is number;
|
|
219
|
+
};
|
|
220
|
+
/**
|
|
221
|
+
* each
|
|
222
|
+
*/
|
|
223
|
+
type EachFn<Value, Key, This> = (this: This, value: Value, key: Key) => void;
|
|
224
|
+
type Eachable<Value = any, Key = any, This = any> = {
|
|
225
|
+
forEach(cb: EachFn<Value, Key, This>, ctx?: This): void;
|
|
226
|
+
};
|
|
227
|
+
declare const each: <Value, Key, This>(obj: Eachable<Value, Key, This>, fn: EachFn<Value, Key, This>) => void;
|
|
228
|
+
declare const flush: <Value extends Function, Key, This>(obj: Eachable<Value, Key, This>, ...args: any[]) => void;
|
|
229
|
+
/**
|
|
230
|
+
* other
|
|
231
|
+
*/
|
|
232
|
+
declare const replace: (x?: string, from?: string, to?: string) => string;
|
|
233
|
+
declare const ext: (src?: string) => string;
|
|
234
|
+
declare const fig: (x?: number) => number;
|
|
235
|
+
declare const dig: (x?: number) => number;
|
|
236
|
+
declare const sig: (value?: number, digit?: number) => number;
|
|
237
|
+
|
|
238
|
+
declare const createDevice: (c: GPUContext) => Promise<{
|
|
239
|
+
device: any;
|
|
240
|
+
format: any;
|
|
241
|
+
}>;
|
|
242
|
+
declare const createPipeline: (device: GPUDevice, format: string, bufferLayouts: any[], bindGroupLayouts: any[], vs?: string | NodeProxy, fs?: string | NodeProxy) => GPUPipeline;
|
|
243
|
+
declare const createBindGroup: (device: GPUDevice, resources: any[]) => {
|
|
244
|
+
layout: any;
|
|
245
|
+
bindGroup: any;
|
|
246
|
+
};
|
|
247
|
+
declare const createDescriptor: (c: GPUContext) => {
|
|
248
|
+
colorAttachments: {
|
|
249
|
+
view: any;
|
|
250
|
+
clearValue: {
|
|
251
|
+
r: number;
|
|
252
|
+
g: number;
|
|
253
|
+
b: number;
|
|
254
|
+
a: number;
|
|
255
|
+
};
|
|
256
|
+
loadOp: string;
|
|
257
|
+
storeOp: string;
|
|
258
|
+
}[];
|
|
259
|
+
};
|
|
260
|
+
declare const alignTo256: (size: number) => number;
|
|
261
|
+
declare const createVertexBuffer: (device: GPUDevice, value: number[]) => {
|
|
262
|
+
array: Float32Array<ArrayBuffer>;
|
|
263
|
+
buffer: any;
|
|
264
|
+
};
|
|
265
|
+
declare const createUniformBuffer: (device: GPUDevice, value: number[]) => {
|
|
266
|
+
array: Float32Array<ArrayBuffer>;
|
|
267
|
+
buffer: Buffer;
|
|
268
|
+
};
|
|
269
|
+
declare const createTextureSampler: (device: GPUDevice, width?: number, height?: number) => {
|
|
270
|
+
texture: any;
|
|
271
|
+
sampler: any;
|
|
272
|
+
};
|
|
273
|
+
declare const createBufferLayout: (shaderLocation: number, dataLength: number, count?: number) => {
|
|
274
|
+
arrayStride: number;
|
|
275
|
+
attributes: {
|
|
276
|
+
shaderLocation: number;
|
|
277
|
+
offset: number;
|
|
278
|
+
format: string;
|
|
279
|
+
}[];
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
declare const defaultVertexGLSL = "\n#version 300 es\nvoid main() {\n float x = float(gl_VertexID % 2) * 4.0 - 1.0;\n float y = float(gl_VertexID / 2) * 4.0 - 1.0;\n gl_Position = vec4(x, y, 0.0, 1.0);\n}\n";
|
|
283
|
+
declare const defaultFragmentGLSL = "\n#version 300 es\nprecision mediump float;\nuniform vec2 iResolution;\nout vec4 fragColor;\nvoid main() {\n fragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);\n}\n";
|
|
284
|
+
declare const createProgram: (c: WebGLRenderingContext, vs?: string | NodeProxy, fs?: string | NodeProxy, onError?: () => void) => void | WebGLProgram;
|
|
285
|
+
declare const createVbo: (c: WebGLRenderingContext, data: number[]) => WebGLBuffer;
|
|
286
|
+
declare const createIbo: (c: WebGLRenderingContext, data: number[]) => WebGLBuffer;
|
|
287
|
+
declare const getStride: (count: number, value: number[], iboValue?: number[]) => number;
|
|
288
|
+
declare const createAttrib: (c: WebGLRenderingContext, stride: number, loc: any, vbo: WebGLBuffer, ibo?: WebGLBuffer) => void;
|
|
289
|
+
declare const createTexture: (c: WebGLRenderingContext, img: HTMLImageElement, loc: any, unit: number) => void;
|
|
290
|
+
|
|
291
|
+
declare const webgl: (gl: Partial<GL>) => Promise<{
|
|
292
|
+
webgl: WebGLState;
|
|
293
|
+
render: () => void;
|
|
294
|
+
clean: () => void;
|
|
295
|
+
_attribute: (key: string | undefined, value: number[], iboValue: number[]) => void;
|
|
296
|
+
_uniform: (key: string, value: number | number[]) => void;
|
|
297
|
+
_texture: (key: string, src: string) => void;
|
|
298
|
+
}>;
|
|
299
|
+
|
|
300
|
+
declare const webgpu: (gl: Partial<GL>) => Promise<{
|
|
301
|
+
webgpu: WebGPUState;
|
|
302
|
+
render: () => void;
|
|
303
|
+
clean: () => void;
|
|
304
|
+
_attribute: (key: string | undefined, value: number[]) => void;
|
|
305
|
+
_uniform: (key: string, value: number | number[]) => void;
|
|
306
|
+
_texture: (key: string, src: string) => void;
|
|
307
|
+
}>;
|
|
308
|
+
|
|
309
|
+
declare const isGL: (a: unknown) => a is EventState<GL>;
|
|
310
|
+
declare const isServer: () => boolean;
|
|
311
|
+
declare const isWebGPUSupported: () => boolean;
|
|
312
|
+
declare const createGL: (props?: Partial<GL>) => EventState<{
|
|
313
|
+
isNative: boolean;
|
|
314
|
+
isWebGL: boolean;
|
|
315
|
+
isLoop: boolean;
|
|
316
|
+
isGL: true;
|
|
317
|
+
width: number;
|
|
318
|
+
height: number;
|
|
319
|
+
size: [number, number];
|
|
320
|
+
mouse: [number, number];
|
|
321
|
+
count: number;
|
|
322
|
+
el: HTMLCanvasElement;
|
|
323
|
+
vs: string | NodeProxy;
|
|
324
|
+
fs: string | NodeProxy;
|
|
325
|
+
vert: string | NodeProxy;
|
|
326
|
+
frag: string | NodeProxy;
|
|
327
|
+
vertex: string | NodeProxy;
|
|
328
|
+
fragment: string | NodeProxy;
|
|
329
|
+
webgpu: WebGPUState;
|
|
330
|
+
webgl: WebGLState;
|
|
331
|
+
queue: refr.Queue;
|
|
332
|
+
frame: refr.Frame;
|
|
333
|
+
ref?: any;
|
|
334
|
+
init(): void;
|
|
335
|
+
loop(): void;
|
|
336
|
+
mount(): void;
|
|
337
|
+
clean(): void;
|
|
338
|
+
render(): void;
|
|
339
|
+
resize(e?: Event): void;
|
|
340
|
+
mousemove(e: Event): void;
|
|
341
|
+
_uniform?(key: string, value: Uniform, isMatrix?: boolean): GL;
|
|
342
|
+
uniform(key: string, value: Uniform, isMatrix?: boolean): GL;
|
|
343
|
+
uniform(target: {
|
|
344
|
+
[key: string]: Uniform;
|
|
345
|
+
}): GL;
|
|
346
|
+
_texture?(key: string, value: string): GL;
|
|
347
|
+
texture(key: string, value: string): GL;
|
|
348
|
+
texture(target: {
|
|
349
|
+
[key: string]: string;
|
|
350
|
+
}): GL;
|
|
351
|
+
_attribute?(key: string, value: Attribute, iboValue?: Attribute): GL;
|
|
352
|
+
attribute(key: string, value: Attribute, iboValue?: Attribute): GL;
|
|
353
|
+
attribute(target: {
|
|
354
|
+
[key: string]: Attribute;
|
|
355
|
+
}): GL;
|
|
356
|
+
}, any[] | unknown[]>;
|
|
357
|
+
|
|
358
|
+
export { type Attribute as A, createDescriptor as B, alignTo256 as C, createVertexBuffer as D, createUniformBuffer as E, createTextureSampler as F, type GL as G, createBufferLayout as H, defaultVertexGLSL as I, defaultFragmentGLSL as J, createProgram as K, createVbo as L, createIbo as M, type NodeProxy as N, getStride as O, type PrecisionMode as P, createAttrib as Q, createTexture as R, webgl as S, webgpu as T, type Uniform as U, type WebGPUState as W, type WebGLState as a, isServer as b, isWebGPUSupported as c, createGL as d, type GPUContext as e, type GPUDevice as f, type GPUBuffer as g, type GPUPipeline as h, isGL as i, type GPUBindGroup as j, type Attributes as k, type Uniforms as l, type GLClearMode as m, type GLDrawType as n, type GLDrawMode as o, is as p, each as q, flush as r, replace as s, ext as t, fig as u, dig as v, sig as w, createDevice as x, createPipeline as y, createBindGroup as z };
|
package/dist/index.cjs
CHANGED
|
@@ -1,46 +1,50 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`),r=
|
|
3
|
-
`)
|
|
4
|
-
|
|
1
|
+
"use strict";var D=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var je=Object.getOwnPropertyNames;var He=Object.prototype.hasOwnProperty;var Ke=(e,t)=>{for(var r in t)D(e,r,{get:t[r],enumerable:!0})},Ze=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of je(t))!He.call(e,o)&&o!==r&&D(e,o,{get:()=>t[o],enumerable:!(n=Ye(t,o))||n.enumerable});return e};var Qe=e=>Ze(D({},"__esModule",{value:!0}),e);var Pt={};Ke(Pt,{alignTo256:()=>Ve,createAttrib:()=>re,createBindGroup:()=>ae,createBufferLayout:()=>le,createDescriptor:()=>ue,createDevice:()=>se,createGL:()=>qe,createIbo:()=>ee,createPipeline:()=>ie,createProgram:()=>Q,createTexture:()=>oe,createTextureSampler:()=>fe,createUniformBuffer:()=>pe,createVbo:()=>J,createVertexBuffer:()=>ce,default:()=>Nt,defaultFragmentGLSL:()=>Me,defaultVertexGLSL:()=>De,dig:()=>ot,each:()=>xe,ext:()=>tt,fig:()=>rt,flush:()=>Je,getStride:()=>te,is:()=>x,isGL:()=>Et,isServer:()=>ze,isWebGPUSupported:()=>We,replace:()=>et,sig:()=>nt,webgl:()=>ne,webgpu:()=>me});module.exports=Qe(Pt);var C=require("reev"),$=require("refr");var U=require("reev");var x={arr:Array.isArray,bol:e=>typeof e=="boolean",str:e=>typeof e=="string",num:e=>typeof e=="number",int:e=>Number.isInteger(e),fun:e=>typeof e=="function",und:e=>typeof e>"u",nul:e=>e===null,set:e=>e instanceof Set,map:e=>e instanceof Map,obj:e=>!!e&&e.constructor.name==="Object",nan:e=>typeof e=="number"&&Number.isNaN(e)},xe=(e,t)=>e.forEach(t),Je=(e,...t)=>{xe(e,r=>r(...t))},et=(e="",t="_",r="/")=>e.split(t).join(r),tt=(e=".pdf")=>e.split(".").pop()?.toLowerCase()??"",rt=(e=0)=>`${e}`.split(".")[1]?.length??0,ot=(e=0)=>`${e}`.split(".")[0]?.length-(e<0?1:0),nt=(e=0,t=-2)=>(t*=-1,t=Math.pow(10,t),e*=t,e=Math.round(e),e/=t,e);var S=["bool","uint","int","float","bvec2","ivec2","uvec2","vec2","bvec3","ivec3","uvec3","vec3","bvec4","ivec4","uvec4","vec4","color","mat2","mat3","mat4"],M=["toBool","toUint","toInt","toFloat","toBvec2","toIvec2","toUvec2","toVec2","toBvec3","toIvec3","toUvec3","toVec3","toBvec4","toIvec4","toUvec4","toVec4","toColor","toMat2","toMat3","toMat4"],V={add:"+",sub:"-",mul:"*",div:"/",mod:"%",equal:"==",notEqual:"!=",lessThan:"<",lessThanEqual:"<=",greaterThan:">",greaterThanEqual:">=",and:"&&",or:"||",bitAnd:"&",bitOr:"|",bitXor:"^",shiftLeft:"<<",shiftRight:">>"},ge=Object.keys(V),z=["dot","distance","length","lengthSq","determinant","luminance"],W=["all","any"],q=["abs","sign","floor","ceil","round","fract","trunc","sin","cos","tan","asin","acos","atan","exp","exp2","log","log2","sqrt","inverseSqrt","normalize","oneMinus","saturate","negate","reciprocal","dFdx","dFdy","fwidth"],k=["cross"],Y=["reflect","refract"],j=["min","max","mix","clamp","step","smoothstep"],H=["texture","textureLod","textureSize","cubeTexture"],st=["atan2","degrees","faceforward","bitcast","cbrt","difference","equals","pow","pow2","pow3","pow4","radians","transformDirection"],be=[...z,...W,...q,...k,...Y,...j,...H,...st],ve={float:"f32",int:"i32",uint:"u32",bool:"bool",vec2:"vec2f",vec3:"vec3f",vec4:"vec4f",mat2:"mat2x2f",mat3:"mat3x3f",mat4:"mat4x4f",ivec2:"vec2i",ivec3:"vec3i",ivec4:"vec4i",uvec2:"vec2u",uvec3:"vec3u",uvec4:"vec4u",bvec2:"vec2<bool>",bvec3:"vec3<bool>",bvec4:"vec4<bool>"},K={1:"float",2:"vec2",3:"vec3",4:"vec4",9:"mat3",16:"mat4"},ye={position:"vec4",vertex_index:"uint",instance_index:"uint",front_facing:"bool",frag_depth:"float",sample_index:"uint",sample_mask:"uint",point_coord:"vec2",positionLocal:"vec3",positionWorld:"vec3",positionView:"vec3",normalLocal:"vec3",normalWorld:"vec3",normalView:"vec3",screenCoordinate:"vec2",screenUV:"vec2",gl_FragCoord:"vec4",gl_VertexID:"uint",gl_InstanceID:"uint",gl_FrontFacing:"bool",gl_FragDepth:"float",gl_SampleID:"uint",gl_SampleMask:"uint",gl_PointCoord:"vec2",normal:"vec3",uv:"vec2",color:"vec4"},Xe=["equal","notEqual","lessThan","lessThanEqual","greaterThan","greaterThanEqual"],_e=["and","or"],Te={position:"gl_FragCoord",vertex_index:"gl_VertexID",instance_index:"gl_InstanceID",front_facing:"gl_FrontFacing",frag_depth:"gl_FragDepth",sample_index:"gl_SampleID",sample_mask:"gl_SampleMask",point_coord:"gl_PointCoord",uv:"gl_FragCoord.xy"};var Z=e=>x.str(e)&&/^[xyzwrgbastpq]{1,4}$/.test(e),he=e=>ge.includes(e),Ee=e=>be.includes(e),Ne=e=>M.includes(e),P=e=>!e||typeof e!="object"?!1:e.isProxy;var it=0,Pe=()=>`i${it++}`,w=(e,t)=>e.filter(r=>!x.und(r)&&!x.nul(r)).map(r=>u(r,t)).join(", "),R=(e,t)=>x.str(e)?t?.isWebGL?e:ve[e]:"",Se=e=>V[e]||e,Re=e=>Te[e],Ce=e=>{let t=M.indexOf(e);return t!==-1?S[t]:"float"},Le=e=>Array.from(e.headers).map(([,t])=>t).join(`
|
|
2
|
+
`),we=(e,t)=>{let{id:r,children:n=[],layout:o}=e,[s,a,...i]=n,m=o?.type&&o?.type!=="auto"?o?.type:a?y(a,t):"void",b=[],c=[];if(o?.inputs)for(let d of o.inputs)b.push([d.name,d.type]);else for(let d=0;d<i.length;d++)b.push([`p${d}`,y(i[d],t)]);let p="";if(t?.isWebGL){for(let[d,_]of b)c.push(`${_} ${d}`);p+=`${m} ${r}(${c}) {
|
|
3
|
+
`}else{for(let[d,_]of b)c.push(`${d}: ${R(_,t)}`);p+=`fn ${r}(${c}) -> ${R(m,t)} {
|
|
4
|
+
`}let T=u(s,t);return T&&(p+=T+`
|
|
5
|
+
`),a&&(p+=`return ${u(a,t)};`),p+=`
|
|
6
|
+
}`,p},at=`
|
|
5
7
|
#version 300 es
|
|
6
8
|
precision mediump float;
|
|
7
9
|
out vec4 fragColor;
|
|
8
|
-
|
|
9
|
-
void main() {
|
|
10
|
-
fragColor = ${e};
|
|
11
|
-
}`.trim():`
|
|
12
|
-
${t}
|
|
10
|
+
`.trim(),ut=`
|
|
13
11
|
@fragment
|
|
14
12
|
fn main(@builtin(position) position: vec4f) -> @location(0) vec4f {
|
|
15
|
-
return
|
|
16
|
-
|
|
17
|
-
`)
|
|
18
|
-
${
|
|
19
|
-
${
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
${
|
|
23
|
-
|
|
24
|
-
${c(
|
|
25
|
-
|
|
26
|
-
${
|
|
27
|
-
}
|
|
28
|
-
${
|
|
29
|
-
}
|
|
30
|
-
${
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
13
|
+
`.trim(),ct=(e,t,r=!0)=>{let n="";return r&&(n+=at),t&&(n+=`
|
|
14
|
+
`+t+`
|
|
15
|
+
`),r?n+=`void main() {
|
|
16
|
+
fragColor = ${e};`:(n+=ut+`
|
|
17
|
+
`,n+=` return ${e};`),n+=`
|
|
18
|
+
}`,n},pt=(e,t,r=!0)=>"",O=(e,t={})=>{let r=u(e,t),n=Le(t),o=ct(r,n,t.isWebGL);return console.log(`// \u2193\u2193\u2193 generated \u2193\u2193\u2193
|
|
19
|
+
|
|
20
|
+
${o}
|
|
21
|
+
|
|
22
|
+
`),o},G=(e,t)=>{let r=u(e,t),n=Le(t);return pt(r,n,t.isWebGL)};var ft=(e,t)=>e.reduce((r,n)=>{let o=y(n,t),s=S.indexOf(r);return S.indexOf(o)>s?o:r},"float"),lt=e=>ye[e],mt=(e,t,r)=>{let n=t.length>0?y(t[0],r):"float";return Y.includes(e)?n:z.includes(e)?"float":W.includes(e)?"bool":q.includes(e)?n:k.includes(e)?"vec3":H.includes(e)?"vec4":j.includes(e)?ft(t,r):n},Oe=(e,t,r)=>{if(Xe.includes(r)||_e.includes(r))return"bool";if(e===t||e.includes("vec")&&!t.includes("vec"))return e;if(t.includes("vec")&&!e.includes("vec"))return t;let n=S.indexOf(e),o=S.indexOf(t);return n>=o?e:t},dt=e=>x.bol(e)?"bool":x.num(e)?"float":x.arr(e)&&K[e.length]||"float",xt=e=>K[e],gt=(e,t)=>{let{type:r,props:n}=e,{id:o,children:s=[],inferFrom:a}=n,[i,m,b]=s;return a?y(a,t):r==="conversion"?i:r==="operator"?Oe(y(m,t),y(b,t),i):r==="function"?mt(i,s.slice(1),t):r==="swizzle"?xt(i.length):r==="ternary"?Oe(y(m,t),y(b,t),"add"):r==="builtin"?lt(o):r==="define"?n.layout?.type&&n.layout?.type!=="auto"?n.layout.type:m?y(m,t):"void":y(i,t)},y=(e,t)=>{if(t||(t={}),!P(e))return dt(e);if(t.infers||(t.infers=new WeakMap),t.infers.has(e))return t.infers.get(e);let r=gt(e,t);return t.infers.set(e,r),r};var u=(e,t)=>{if(t||(t={}),t.headers||(t.headers=new Map),x.str(e))return e;if(x.num(e)){let c=`${e}`;return c.includes(".")?c:c+".0"}if(x.bol(e))return e?"true":"false";if(!e)return"";let{type:r,props:n}=e,{id:o="",children:s=[]}=n,[a,i,m]=s,b="";if(r==="attribute"){if(t.headers.has(o))return o;b=`${y(e,t)} ${o}`}if(r==="uniform"){if(t.headers.has(o))return o;t.binding||(t.binding=0);let c=y(e,t);b=t.isWebGL?`uniform ${c} ${o};`:`@group(0) @binding(${t.binding++}) var<uniform> ${o}: ${R(c,t)};`}if(r==="constant"){if(t.headers.has(o))return o;let c=y(e,t),p=u(a,t);b=t.isWebGL?`const ${c} ${o} = ${p};`:`const ${o}: ${R(c,t)} = ${p};`}if(r==="varying"){if(t.headers.has(o))return o;b=`${y(e,t)} ${o}`}if(b)return t.headers.set(o,b),t.onMount?.(o),o;if(r==="variable")return o;if(r==="swizzle")return`${u(i,t)}.${u(a,t)}`;if(r==="ternary")return`(${u(a,t)} ? ${u(i,t)} : ${u(m,t)})`;if(r==="builtin")return t?.isWebGL?Re(o):o;if(r==="conversion")return`${R(a,t)}(${w(s.slice(1),t)})`;if(r==="operator")return a==="not"||a==="bitNot"?`!${u(i,t)}`:`(${u(i,t)} ${Se(a)} ${u(m,t)})`;if(r==="function")return a==="negate"?`(-${w(s.slice(1),t)})`:`${a}(${w(s.slice(1),t)})`;if(r==="scope")return s.map(c=>u(c,t)).join(`
|
|
23
|
+
`);if(r==="assign")return`${u(a,t)} = ${u(i,t)};`;if(r==="loop")return t.isWebGL?`for (int i = 0; i < ${a}; i += 1) {
|
|
24
|
+
${u(i,t)}
|
|
25
|
+
}`:`for (var i: i32 = 0; i < ${a}; i++) {
|
|
26
|
+
${u(i,t)}
|
|
27
|
+
}`;if(r==="define"){let c=s.slice(2),p=`${o}(${c.map(T=>u(T,t))})`;return t.headers.has(o)||t.headers.set(o,we(n,t)),p}if(r==="if"){let c=`if (${u(a,t)}) {
|
|
28
|
+
${u(i,t)}
|
|
29
|
+
}`;for(let p=2;p<s.length;p+=2){let T=p>=s.length-1;c+=T?` else {
|
|
30
|
+
${u(s[p],t)}
|
|
31
|
+
}`:` else if (${u(s[p],t)}) {
|
|
32
|
+
${u(s[p+1],t)}
|
|
33
|
+
}`}return c}if(r==="switch"){let c=`switch (${u(a,t)}) {
|
|
34
|
+
`;for(let p=1;p<s.length;p+=2)p>=s.length-1&&s.length%2===0?c+=`default:
|
|
35
|
+
${u(s[p],t)}
|
|
36
|
+
break;
|
|
37
|
+
`:p+1<s.length&&(c+=`case ${u(s[p],t)}:
|
|
38
|
+
${u(s[p+1],t)}
|
|
35
39
|
break;
|
|
36
|
-
|
|
40
|
+
`);return c+="}",c}if(r==="declare"){let c=y(a,t),p=i?.props?.id;if(t.isWebGL)return`${c} ${p} = ${u(a,t)};`;let T=R(c);return`var ${p}: ${T} = ${u(a,t)};`}return u(a,t)};var I=null;var Ge=e=>{I&&(I.props.children||(I.props.children=[]),I.props.children.push(e))},Ie=(e,t)=>{t||(t=Pe());let r=N("variable",{id:t,inferFrom:e}),n=N("declare",null,e,r);return Ge(n),r},Fe=(e,t)=>{let r=N("assign",null,e,t);return Ge(r),e};var bt=(e,t)=>{if(t==="string")return u(e)},N=(e,t,...r)=>{t||(t={}),r.length&&(t.children=r);let n=(a,i)=>{if(i==="type")return e;if(i==="props")return t;if(i==="toVar")return Ie.bind(null,s);if(i==="assign")return Fe.bind(null,s);if(i==="isProxy")return!0;if(i==="toString")return u.bind(null,s);if(i===Symbol.toPrimitive)return bt.bind(null,s);if(Z(i))return Ue(i,s);if(he(i))return(...m)=>vt(i,s,...m);if(Ee(i))return(...m)=>Ae(i,s,...m);if(Ne(i))return()=>L(Ce(i),s)},o=(a,i,m)=>Z(i)?(Ue(i,s).assign(m),!0):!1,s=new Proxy({},{get:n,set:o});return s};var F=(e,t)=>N("uniform",{id:t},e);var X=e=>N("builtin",{id:e}),Ue=(e,t)=>N("swizzle",null,e,t),vt=(e,...t)=>N("operator",null,e,...t),Ae=(e,...t)=>N("function",null,e,...t),L=(e,...t)=>N("conversion",null,e,...t);var rr=X("position"),or=X("vertex_index"),nr=X("instance_index"),sr=X("front_facing"),ir=X("frag_depth"),ar=X("sample_index"),ur=X("sample_mask"),cr=X("point_coord"),pr=X("normalLocal"),fr=X("normalWorld"),lr=X("normalView"),mr=X("position"),dr=X("positionWorld"),xr=X("positionView"),gr=X("screenCoordinate"),br=X("screenUV"),yt=e=>L("float",e);var $e=(e,t)=>L("vec2",e,t);var vr=F($e(1280,800),"iResolution"),yr=F($e(0,0),"iMouse"),Xr=F(yt(0),"iTime");var De=`
|
|
37
41
|
#version 300 es
|
|
38
42
|
void main() {
|
|
39
43
|
float x = float(gl_VertexID % 2) * 4.0 - 1.0;
|
|
40
44
|
float y = float(gl_VertexID / 2) * 4.0 - 1.0;
|
|
41
45
|
gl_Position = vec4(x, y, 0.0, 1.0);
|
|
42
46
|
}
|
|
43
|
-
`,
|
|
47
|
+
`,Me=`
|
|
44
48
|
#version 300 es
|
|
45
49
|
precision mediump float;
|
|
46
50
|
uniform vec2 iResolution;
|
|
@@ -48,19 +52,19 @@ out vec4 fragColor;
|
|
|
48
52
|
void main() {
|
|
49
53
|
fragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
|
|
50
54
|
}
|
|
51
|
-
`,
|
|
55
|
+
`,Be=(e,t,r)=>{let n=e.createShader(r);if(!n)throw new Error("Failed to create shader");if(e.shaderSource(n,t.trim()),e.compileShader(n),e.getShaderParameter(n,e.COMPILE_STATUS))return n;let o=e.getShaderInfoLog(n);e.deleteShader(n),console.warn(`Could not compile shader: ${o}`)},Q=(e,t=De,r=Me,n=()=>{})=>{P(r)&&(r=O(r,{isWebGL:!0})),P(t)&&(t=G(r,{isWebGL:!0}));let o=e.createProgram(),s=Be(e,t,e.VERTEX_SHADER),a=Be(e,r,e.FRAGMENT_SHADER);if(!s||!a)return n();if(e.attachShader(o,s),e.attachShader(o,a),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS))return o;let i=e.getProgramInfoLog(o);e.deleteProgram(o),n(),console.warn(`Could not link pg: ${i}`)},J=(e,t)=>{let r=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,r),e.bufferData(e.ARRAY_BUFFER,new Float32Array(t),e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),r},ee=(e,t)=>{let r=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,r),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Int16Array(t),e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),r},te=(e,t,r)=>{r&&(e=Math.max(...r)+1);let n=t.length/e;return Math.floor(n)},re=(e,t,r,n,o)=>{e.bindBuffer(e.ARRAY_BUFFER,n),e.enableVertexAttribArray(r),e.vertexAttribPointer(r,t,e.FLOAT,!1,0,0),o&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,o)},oe=(e,t,r,n)=>{let o=e.createTexture();e.bindTexture(e.TEXTURE_2D,o),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t),e.generateMipmap(e.TEXTURE_2D),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(r,n),e.activeTexture(e.TEXTURE0+n),e.bindTexture(e.TEXTURE_2D,o)};var ne=async e=>{let t=e.el.getContext("webgl2"),r=Q(t,e.vs,e.fs,()=>void(e.isLoop=!1));t.useProgram(r);let n=0,o=(0,U.nested)(d=>t.getUniformLocation(r,d)),s=(0,U.nested)(d=>t.getAttribLocation(r,d)),a=(0,U.nested)(()=>n++);return{webgl:{context:t,program:r},render:()=>{t.clear(t.COLOR_BUFFER_BIT),t.viewport(0,0,...e.size),t.drawArrays(t.TRIANGLES,0,3)},clean:()=>t.deleteProgram(r),_attribute:(d="",_,h)=>{let E=s(d,!0),v=J(t,_),f=ee(t,h),l=te(e.count,_,h);re(t,l,E,v,f)},_uniform:(d,_)=>{let h=o(d);if(x.num(_))return t.uniform1f(h,_);let E=_.length;if(E<=4)return t[`uniform${E}fv`](h,_);E=Math.sqrt(E)<<0,t[`uniformMatrix${E}fv`](h,!1,_)},_texture:(d,_)=>{let h=new Image;Object.assign(h,{src:_,crossOrigin:"anonymous"}),h.decode().then(()=>{let E=o(d),v=a(d);oe(t,h,E,v)})}}};var A=require("reev");var Xt=`
|
|
52
56
|
@vertex
|
|
53
57
|
fn main(@builtin(vertex_index) vertex_index: u32) -> @builtin(position) vec4f {
|
|
54
58
|
let x = f32(vertex_index % 2u) * 4.0 - 1.0;
|
|
55
59
|
let y = f32(vertex_index / 2u) * 4.0 - 1.0;
|
|
56
60
|
return vec4f(x, y, 0.0, 1.0);
|
|
57
61
|
}
|
|
58
|
-
`,
|
|
62
|
+
`,_t=`
|
|
59
63
|
@group(0) @binding(0) var<uniform> iResolution: vec2f;
|
|
60
64
|
|
|
61
65
|
@fragment
|
|
62
66
|
fn main(@builtin(position) position: vec4f) -> @location(0) vec4f {
|
|
63
67
|
return vec4f(position.xy / iResolution, 0.0, 1.0);
|
|
64
68
|
}
|
|
65
|
-
`,
|
|
69
|
+
`,se=async e=>{let t=navigator.gpu,r=t.getPreferredCanvasFormat(),o=await(await t.requestAdapter()).requestDevice();return e.configure({device:o,format:r,alphaMode:"opaque"}),{device:o,format:r}},ie=(e,t,r,n,o=Xt,s=_t)=>{P(o)&&(o=G(o,{isWebGL:!1})),P(s)&&(s=O(s,{isWebGL:!1}));let a=e.createPipelineLayout({bindGroupLayouts:n});return e.createRenderPipeline({vertex:{module:e.createShaderModule({code:o.trim()}),entryPoint:"main",buffers:r},fragment:{module:e.createShaderModule({code:s.trim()}),entryPoint:"main",targets:[{format:t}]},layout:a,primitive:{topology:"triangle-list"}})},ae=(e,t)=>{let r=[],n=[];t.forEach((a,i)=>{if(!a)return;let m="buffer"in a,b=a instanceof GPUTextureView,c=a instanceof GPUSampler;if(m)r.push({binding:i,visibility:3,buffer:{type:"uniform"}});else if(b)r.push({binding:i,visibility:2,texture:{}});else if(c)r.push({binding:i,visibility:2,sampler:{}});else return;n.push({binding:i,resource:a})});let o=e.createBindGroupLayout({entries:r}),s=e.createBindGroup({layout:o,entries:n});return{layout:o,bindGroup:s}},ue=e=>({colorAttachments:[{view:e.getCurrentTexture().createView(),clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]}),Ve=e=>Math.ceil(e/256)*256,ce=(e,t)=>{let r=new Float32Array(t),n=e.createBuffer({size:r.byteLength,usage:40});return{array:r,buffer:n}},pe=(e,t)=>{let r=new Float32Array(t),n=Ve(r.byteLength),o=e.createBuffer({size:n,usage:72});return{array:r,buffer:o}},fe=(e,t=1280,r=800)=>{let n=e.createTexture({size:[t,r],format:"rgba8unorm",usage:22}),o=e.createSampler({magFilter:"linear",minFilter:"linear"});return{texture:n,sampler:o}},Tt=(e,t)=>e/t,ht=e=>e===2?"float32x2":e===3?"float32x3":e===4?"float32x4":"float32",le=(e,t,r=6)=>{let n=Tt(t,r);return{arrayStride:n*4,attributes:[{shaderLocation:e,offset:0,format:ht(n)}]}};var me=async e=>{let t=e.el.getContext("webgpu"),{device:r,format:n}=await se(t),o={device:r,context:t,resources:[[],[]],loadingImg:0,needsUpdate:!0},s=[],a=[],i=[],m=(0,A.nested)((v,f)=>{let{array:l,buffer:g}=ce(r,f);return a.push(g),i.push(le(i.length,l.length,e.count)),o.needsUpdate=!0,{array:l,buffer:g}}),b=(0,A.nested)((v,f)=>{let{array:l,buffer:g}=pe(r,f);return o.resources[0].push({buffer:g}),o.needsUpdate=!0,{array:l,buffer:g}}),c=(0,A.nested)((v,{width:f,height:l})=>{let{texture:g,sampler:B}=fe(r,f,l);return o.resources[1].push(B,g.createView()),o.needsUpdate=!0,{texture:g,width:f,height:l}}),p=()=>{let v=[];s.length=0,o.resources.forEach(f=>{if(!f.length)return;let{layout:l,bindGroup:g}=ae(r,f);v.push(l),s.push(g)}),o.pipeline=ie(r,n,i,v,e.vs,e.fs)};return{webgpu:o,render:()=>{if(o.loadingImg)return;o.needsUpdate&&p(),o.needsUpdate=!1;let v=r.createCommandEncoder(),f=v.beginRenderPass(ue(t));f.setPipeline(o.pipeline),s.forEach((l,g)=>f.setBindGroup(g,l)),a.forEach((l,g)=>f.setVertexBuffer(g,l)),f.draw(e.count,1,0,0),f.end(),r.queue.submit([v.finish()])},clean:()=>{},_attribute:(v="",f)=>{let{array:l,buffer:g}=m(v,f);r.queue.writeBuffer(g,0,l)},_uniform:(v,f)=>{x.num(f)&&(f=[f]);let{array:l,buffer:g}=b(v,f);l.set(f),r.queue.writeBuffer(g,0,l)},_texture:(v,f)=>{o.loadingImg++;let l=Object.assign(new Image,{src:f,crossOrigin:"anonymous"});l.decode().then(()=>{let{texture:g,width:B,height:ke}=c(v,l);r.queue.copyExternalImageToTexture({source:l},{texture:g},{width:B,height:ke}),o.loadingImg--})}}};var Et=e=>x.obj(e)?"isGL"in e:!1,ze=()=>typeof window>"u",We=()=>ze()?!1:"gpu"in navigator,de=performance.now(),qe=e=>{let t=(0,C.event)({isNative:!1,isWebGL:!0,isLoop:!0,isGL:!0,size:[0,0],mouse:[0,0],count:6,webgl:{},webgpu:{}});return t.queue=(0,$.createQueue)(),t.frame=(0,$.createFrame)(),t.attribute=(0,C.durable)((r,n,o)=>t.queue(()=>t._attribute?.(r,n,o))),t.texture=(0,C.durable)((r,n)=>t.queue(()=>t._texture?.(r,n))),t.uniform=(0,C.durable)((r,n,o)=>t.queue(()=>t._uniform?.(r,n,o))),t.uniform({iResolution:t.size,iMouse:[0,0],iTime:de}),t("mount",async()=>{t.vs=t.vs||t.vert||t.vertex,t.fs=t.fs||t.frag||t.fragment,We()||(t.isWebGL=!0),t.isWebGL?t(await ne(t)):t(await me(t)),t.resize(),t.frame(()=>(t.loop(),t.queue.flush(),t.render(),t.isLoop)),!t.isNative&&(window.addEventListener("resize",t.resize),t.el.addEventListener("mousemove",t.mousemove))}),t("clean",()=>{t.frame.stop(),t.frame.clean(t.render),!t.isNative&&(window.removeEventListener("resize",t.resize),t.el.removeEventListener("mousemove",t.mousemove))}),t("resize",()=>{let r=t.width||window.innerWidth,n=t.height||window.innerHeight;t.size[0]=t.el.width=r,t.size[1]=t.el.height=n,t.uniform("iResolution",t.size)}),t("mousemove",(r,n=r.clientX,o=r.clientY)=>{let[s,a]=t.size,{top:i,left:m}=t.el.getBoundingClientRect();t.mouse[0]=(n-i-s/2)/(s/2),t.mouse[1]=-(o-m-a/2)/(a/2),t.uniform("iMouse",t.mouse)}),t("loop",()=>{de=performance.now()/1e3,t.uniform("iTime",de)}),t(e)},Nt=qe;0&&(module.exports={alignTo256,createAttrib,createBindGroup,createBufferLayout,createDescriptor,createDevice,createGL,createIbo,createPipeline,createProgram,createTexture,createTextureSampler,createUniformBuffer,createVbo,createVertexBuffer,defaultFragmentGLSL,defaultVertexGLSL,dig,each,ext,fig,flush,getStride,is,isGL,isServer,isWebGPUSupported,replace,sig,webgl,webgpu});
|
|
66
70
|
//# sourceMappingURL=index.cjs.map
|