glre 0.44.0 → 0.45.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/addons.d.ts +6 -1
- package/dist/index.d.ts +6 -1
- package/dist/native.d.ts +6 -1
- package/dist/node.cjs +12 -12
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.ts +6 -2
- package/dist/node.js +11 -11
- package/dist/node.js.map +1 -1
- package/dist/react.d.ts +6 -1
- package/dist/solid.d.ts +6 -1
- package/package.json +1 -1
- package/src/node/build.ts +3 -2
- package/src/node/types.ts +7 -1
- package/src/node/utils/index.ts +4 -24
- package/src/node/utils/utils.ts +2 -10
package/dist/node.d.ts
CHANGED
|
@@ -245,7 +245,7 @@ interface NodeContext {
|
|
|
245
245
|
fragInputs: Map<string, string>;
|
|
246
246
|
vertInputs: Map<string, string>;
|
|
247
247
|
vertOutputs: Map<string, string>;
|
|
248
|
-
vertVaryings: Map<string,
|
|
248
|
+
vertVaryings: Map<string, VaryingInfo>;
|
|
249
249
|
computeInputs: Map<string, string>;
|
|
250
250
|
dependencies: Map<string, Set<string>>;
|
|
251
251
|
structStructFields: Map<string, StructFields>;
|
|
@@ -341,6 +341,10 @@ type Mat4 = XImpl<'mat4'>;
|
|
|
341
341
|
type Texture = XImpl<'texture'>;
|
|
342
342
|
type Sampler2D = XImpl<'sampler2D'>;
|
|
343
343
|
type StructBase = XImpl<'struct'>;
|
|
344
|
+
interface VaryingInfo {
|
|
345
|
+
node: Y;
|
|
346
|
+
code?: string;
|
|
347
|
+
}
|
|
344
348
|
type Struct<T extends StructFields = any> = Omit<StructBase, keyof T> & {
|
|
345
349
|
[K in keyof T]: T[K] extends X<infer U> ? X<U> : never;
|
|
346
350
|
} & {
|
|
@@ -676,4 +680,4 @@ declare const smoothstep: <T extends Constants, U extends Constants>(e0: number
|
|
|
676
680
|
declare const step: <T extends Constants, U extends Constants>(edge: number | X<U>, x: X<T>) => X<T>;
|
|
677
681
|
declare const mod: <T extends Constants, U extends Constants>(x: X<T>, y: number | X<U>) => X<T>;
|
|
678
682
|
|
|
679
|
-
export { type BVec2, type BVec3, type BVec4, type Bool, Break, type Color, type Constants, type ConstantsToType, Continue, type Conversions, type Float, Fn, type FnLayout, type FnType, type Functions, type IVec2, type IVec3, type IVec4, If, type Int, Loop, type Mat2, type Mat3, type Mat4, type NodeContext, type NodeProps, type NodeTypes, type Operators, Return, type Sampler2D, Scope, type Struct, type StructBase, type StructFactory, type StructFields, Switch, type Swizzles, type Texture, type UInt, type UVec2, type UVec3, type UVec4, type Vec2, type Vec3, type Vec4, type Void, type X, type Y, abs, acos, acosh, addToScope, all, any, asin, asinh, assign, atan, atan2, atanh, attribute, bool, builtin, bvec2, bvec3, bvec4, ceil, clamp, color, compute, constant, conversion, cos, cosh, create, cross, cubeTexture, dFdx, dFdy, degrees, determinant, distance, dot, element, exp, exp2, float, floor, fract, fragDepth, fragment, frontFacing, function_, fwidth, gather, iMouse, iResolution, iTime, id, instance, instanceIndex, int, inverseSqrt, ivec2, ivec3, ivec4, length, lengthSq, log, log2, luminance, mat2, mat3, mat4, max, member, min, mix, mod, negate, normalLocal, normalView, normalWorld, normalize, oneMinus, operator, pointCoord, position, positionLocal, positionView, positionWorld, pow, radians, reciprocal, reflect, refract, round, sampleIndex, sampleMask, sampler2D, scatter, scoped, screenCoordinate, screenUV, select, sign, sin, sinh, smoothstep, sqrt, step, storage, struct, tan, tanh, texelFetch, texture, texture2D, textureLod, toVar, trunc, uint, uniform, uv, uvec2, uvec3, uvec4, variable, vec2, vec3, vec4, vertex, vertexIndex, vertexStage };
|
|
683
|
+
export { type BVec2, type BVec3, type BVec4, type Bool, Break, type Color, type Constants, type ConstantsToType, Continue, type Conversions, type Float, Fn, type FnLayout, type FnType, type Functions, type IVec2, type IVec3, type IVec4, If, type Int, Loop, type Mat2, type Mat3, type Mat4, type NodeContext, type NodeProps, type NodeTypes, type Operators, Return, type Sampler2D, Scope, type Struct, type StructBase, type StructFactory, type StructFields, Switch, type Swizzles, type Texture, type UInt, type UVec2, type UVec3, type UVec4, type VaryingInfo, type Vec2, type Vec3, type Vec4, type Void, type X, type Y, abs, acos, acosh, addToScope, all, any, asin, asinh, assign, atan, atan2, atanh, attribute, bool, builtin, bvec2, bvec3, bvec4, ceil, clamp, color, compute, constant, conversion, cos, cosh, create, cross, cubeTexture, dFdx, dFdy, degrees, determinant, distance, dot, element, exp, exp2, float, floor, fract, fragDepth, fragment, frontFacing, function_, fwidth, gather, iMouse, iResolution, iTime, id, instance, instanceIndex, int, inverseSqrt, ivec2, ivec3, ivec4, length, lengthSq, log, log2, luminance, mat2, mat3, mat4, max, member, min, mix, mod, negate, normalLocal, normalView, normalWorld, normalize, oneMinus, operator, pointCoord, position, positionLocal, positionView, positionWorld, pow, radians, reciprocal, reflect, refract, round, sampleIndex, sampleMask, sampler2D, scatter, scoped, screenCoordinate, screenUV, select, sign, sin, sinh, smoothstep, sqrt, step, storage, struct, tan, tanh, texelFetch, texture, texture2D, textureLod, toVar, trunc, uint, uniform, uv, uvec2, uvec3, uvec4, variable, vec2, vec3, vec4, vertex, vertexIndex, vertexStage };
|
package/dist/node.js
CHANGED
|
@@ -9,7 +9,7 @@ fn main(in: In) -> Out {
|
|
|
9
9
|
out.position = vec4f(x, y, 0.0, 1.0);
|
|
10
10
|
return out;
|
|
11
11
|
}
|
|
12
|
-
`.trim();var A=(e=1024)=>{if(l.num(e)){let s=Math.sqrt(e),o=Math.ceil(s);return Number.isInteger(s)||console.warn(`GLRE Storage Warning: particleCount (${e}) is not a square. Using ${o}x${o} texture may waste GPU memory. Consider using [width, height] format for optimal storage.`),{x:o,y:o}}let[t,n,r]=e;if(r!==void 0){let s=n*r;return console.warn(`GLRE Storage Warning: 3D particleCount [${t}, ${n}, ${r}] specified but WebGL storage textures only support 2D. Flattening to 2D by multiplying height=${n} * depth=${r} = ${s}.`),{x:t,y:s}}return{x:t,y:n}};var re=e=>l.str(e)&&/^[xyzwrgbastpq]{1,4}$/.test(e),oe=e=>q.includes(e),se=e=>ee.includes(e),ie=e=>l.obj(e)?!1:e instanceof Element,ae=e=>O.includes(e),S=e=>!e||typeof e!="object"?!1:e.isProxy,V=e=>l.str(e)?G.includes(e):!1,ue=e=>{let t=(e>>16&255)/255,n=(e>>8&255)/255,r=(e&255)/255;return[t,n,r]},ze=0,v=()=>`x${ze++}`,pe=(e,t)=>{if(t==="global_invocation_id")return`uvec3(uint(gl_FragCoord.y) * uint(${A(e.gl?.particleCount).x}) + uint(gl_FragCoord.x), 0u, 0u)`;let n=Q[t];if(!n)throw new Error(`Error: unknown builtin variable ${t}`);return n},C=(e,t)=>l.str(e)?t?.isWebGL?e:w[e]||e:"",B=e=>P[e]||e,
|
|
12
|
+
`.trim();var A=(e=1024)=>{if(l.num(e)){let s=Math.sqrt(e),o=Math.ceil(s);return Number.isInteger(s)||console.warn(`GLRE Storage Warning: particleCount (${e}) is not a square. Using ${o}x${o} texture may waste GPU memory. Consider using [width, height] format for optimal storage.`),{x:o,y:o}}let[t,n,r]=e;if(r!==void 0){let s=n*r;return console.warn(`GLRE Storage Warning: 3D particleCount [${t}, ${n}, ${r}] specified but WebGL storage textures only support 2D. Flattening to 2D by multiplying height=${n} * depth=${r} = ${s}.`),{x:t,y:s}}return{x:t,y:n}};var re=e=>l.str(e)&&/^[xyzwrgbastpq]{1,4}$/.test(e),oe=e=>q.includes(e),se=e=>ee.includes(e),ie=e=>l.obj(e)?!1:e instanceof Element,ae=e=>O.includes(e),S=e=>!e||typeof e!="object"?!1:e.isProxy,V=e=>l.str(e)?G.includes(e):!1,ue=e=>{let t=(e>>16&255)/255,n=(e>>8&255)/255,r=(e&255)/255;return[t,n,r]},ze=0,v=()=>`x${ze++}`,pe=(e,t)=>{if(t==="global_invocation_id")return`uvec3(uint(gl_FragCoord.y) * uint(${A(e.gl?.particleCount).x}) + uint(gl_FragCoord.x), 0u, 0u)`;let n=Q[t];if(!n)throw new Error(`Error: unknown builtin variable ${t}`);return n},C=(e,t)=>l.str(e)?t?.isWebGL?e:w[e]||e:"",B=e=>P[e]||e,fe=e=>{let t=O.indexOf(e);return t!==-1?G[t]:"float"},ce=e=>(e.code||(e.code={headers:new Map,fragInputs:new Map,vertInputs:new Map,vertOutputs:new Map,vertVaryings:new Map,computeInputs:new Map,dependencies:new Map,structStructFields:new Map},e.isWebGL)||(e.code.fragInputs.set("position","@builtin(position) position: vec4f"),e.code.vertOutputs.set("position","@builtin(position) position: vec4f")),e),le=e=>l.num(e)||l.str(e)&&/^\d+$/.test(e),L=(e,t="",n)=>{e.code?.dependencies?.has(t)||e.code.dependencies.set(t,new Set),V(n)||e.code.dependencies.get(t).add(n)},He=(e,t,n)=>e.isWebGL?n==="attribute"?r=>e.gl?.attribute?.(t,r):n==="instance"?r=>e.gl?.instance?.(t,r):n==="texture"?r=>e.gl?.texture?.(t,r):r=>e.gl?.uniform?.(t,r):n==="attribute"?r=>e.gl?._attribute?.(t,r):n==="instance"?r=>e.gl?._instance?.(t,r):n==="texture"?r=>e.gl?._texture?.(t,r):r=>e.gl?._uniform?.(t,r),ke=(e,t)=>{if(l.und(e))return;if(!S(e))return t(e);if(e.type!=="conversion")return;let n=e.props.children?.slice(1);l.und(n?.[0])||t(n.map(r=>r??n[0]))},z=(e,t,n,r,s)=>{let o=He(e,t,n);return ke(s,o),r.listeners.add(o),o};var qe=e=>j[e],je=(e,t,n)=>(te(e,t,n)||console.warn(`GLRE Type Warning: Invalid operator '${n}' between types '${e}' and '${t}'`),ne(e,t,n)),Ke=e=>l.bol(e)?"bool":l.str(e)?"texture":l.num(e)?"float":l.arr(e)?D[e.length]:ie(e)?"texture":"void",U=e=>{let t=D[e];if(!t)throw`glre node system error: Cannot infer type from array length ${e}. Check your data size. Supported: 1(float), 2(vec2), 3(vec3), 4(vec4), 9(mat3), 16(mat4)`;return t},de=(e,t)=>{if(e.length===0)return"void";let[n]=e;return l.str(n)?n:g(n,t)},Ze=e=>M[e],Je=(e,t)=>{let{type:n,props:r}=e,{id:s,children:o=[],inferFrom:a,layout:c}=r,[i,u,m]=o;if(n==="conversion")return i;if(n==="operator")return je(g(u,t),g(m,t),i);if(n==="builtin")return qe(s);if(n==="function")return Ze(i)||g(u,t);if(n==="define")return V(c?.type)?c?.type:!a||a.length===0?"void":de(a,t);if(n==="attribute"&&l.arr(i)){let $=W(i.length,t.gl?.count,t.gl?.error);return U($)}if(n==="instance"&&l.arr(i)){let $=W(i.length,t.gl?.instanceCount,t.gl?.error);return U($)}if(n==="member"){if(re(u))return U(u.length);if(S(i)){let $=g(i,t),h=t.code?.structStructFields?.get($);if(h&&h[u])return g(h[u],t)}return"float"}return a?de(a,t):i?g(i,t):"void"},g=(e,t)=>{if(t||(t={}),!S(e))return Ke(e);if(l.arr(e))return U(e.length);if(t.infers||(t.infers=new WeakMap),t.infers.has(e))return t.infers.get(e);let n=Je(e,t);return t.infers.set(e,n),n};var y=(e,t)=>e.filter(n=>!l.und(n)&&!l.nul(n)).map(n=>p(n,t)).join(", "),xe=(e,t,n,r)=>{let s=()=>{let u=g(r,e);if(u==="float")return".x";if(u==="vec2")return".xy";if(u==="vec3")return".xyz";if(u==="vec4")return"";throw new Error(`Unsupported storage scatter type: ${u}`)},o=p(n,e),a=A(e.gl?.particleCount),c=`int(${o}) % ${a.x}`,i=`int(${o}) / ${a.x}`;return`texelFetch(${p(t,e)}, ivec2(${c}, ${i}), 0)${s()}`},Te=(e,t,n)=>{let r=p(t,e),s=p(n,e),o=g(n,e);if(o==="float")return`_${r} = vec4(${s}, 0.0, 0.0, 1.0);`;if(o==="vec2")return`_${r} = vec4(${s}, 0.0, 1.0);`;if(o==="vec3")return`_${r} = vec4(${s}, 1.0);`;if(o==="vec4")return`_${r} = ${s};`;throw new Error(`Unsupported storage scatter type: ${o}`)},me=(e,t,n,r)=>{if(e.isWebGL)return`texture(${y(r?[t,n,r]:[t,n],e)})`;let s=p(t,e),o=[s,s+"Sampler",p(n,e)];return r?(o.push(p(r,e)),`textureSampleLevel(${o})`):`textureSample(${o})`},ge=(e,t,n,r)=>{let s=`if (${p(t,e)}) {
|
|
13
13
|
${p(n,e)}
|
|
14
14
|
}`;for(let o=2;o<r.length;o+=2){let a=o>=r.length-1;s+=a?` else {
|
|
15
15
|
${p(r[o],e)}
|
|
@@ -22,13 +22,13 @@ break;
|
|
|
22
22
|
`:s+1<n.length&&(r+=`case ${p(n[s],e)}:
|
|
23
23
|
${p(n[s+1],e)}
|
|
24
24
|
break;
|
|
25
|
-
`);return r+="}",r},be=(e,t,n)=>{let r=g(t,e),s=n?.props?.id;if(e.isWebGL)return`${r} ${s} = ${p(t,e)};`;let o=C(r);return`var ${s}: ${o} = ${p(t,e)};`},$e=(e,t,n={})=>{e.code?.structStructFields?.set(t,n);let r=[];for(let o in n){let a=n[o],
|
|
25
|
+
`);return r+="}",r},be=(e,t,n)=>{let r=g(t,e),s=n?.props?.id;if(e.isWebGL)return`${r} ${s} = ${p(t,e)};`;let o=C(r);return`var ${s}: ${o} = ${p(t,e)};`},$e=(e,t,n={})=>{e.code?.structStructFields?.set(t,n);let r=[];for(let o in n){let a=n[o],c=g(a,e);e.isWebGL&&L(e,t,c),r.push(e.isWebGL?`${c} ${o};`:`${o}: ${C(c,e)},`)}let s=r.join(`
|
|
26
26
|
`);return`struct ${t} {
|
|
27
27
|
${s}
|
|
28
|
-
};`},he=(e,t,n="",r)=>{let s=e.code?.structStructFields?.get(t)||{};if(e.isWebGL)if(r){let o=[];for(let a in s)o.push(r[a]);return`${t} ${n} = ${t}(${y(o,e)});`}else return`${t} ${n};`;else if(r){let o=[];for(let a in s)o.push(r[a]);return`var ${n}: ${t} = ${t}(${y(o,e)});`}else return`var ${n}: ${t};`},Ce=(e,t,n)=>{let{id:r,children:s=[],layout:o}=t,[a,...
|
|
29
|
-
`)},Ee=(e,t,n)=>e.isWebGL?`${n} ${t};`:`@location(${e.code?.vertVaryings?.size||0}) ${t}: ${C(n,e)}`,_e=(e,t,n)=>{if(e.isWebGL)return`${n} ${t};`;let{location:r=0}=e.gl?.webgpu?.attribs.map.get(t)||{},s=C(n,e);return`@location(${r}) ${t}: ${s}`},ye=(e,t,n)=>{let r=n==="sampler2D"||n==="texture";if(e.isWebGL)return r?`uniform sampler2D ${t};`:`uniform ${n} ${t};`;if(r){let{group:
|
|
30
|
-
@group(${
|
|
31
|
-
layout(location = ${
|
|
28
|
+
};`},he=(e,t,n="",r)=>{let s=e.code?.structStructFields?.get(t)||{};if(e.isWebGL)if(r){let o=[];for(let a in s)o.push(r[a]);return`${t} ${n} = ${t}(${y(o,e)});`}else return`${t} ${n};`;else if(r){let o=[];for(let a in s)o.push(r[a]);return`var ${n}: ${t} = ${t}(${y(o,e)});`}else return`var ${n}: ${t};`},Ce=(e,t,n)=>{let{id:r,children:s=[],layout:o}=t,[a,...c]=s,i=[],u=[];for(let x=0;x<c.length;x++){let E=o?.inputs?.[x];E?i.push([E.name,E.type==="auto"?g(c[x],e):E.type]):i.push([`p${x}`,g(c[x],e)])}let m=p(a,e),$=g(n,e),h=[];if(e?.isWebGL){for(let[x,E]of i)L(e,r,E),u.push(`${E} ${x}`);L(e,r,$),h.push(`${$} ${r}(${u}) {`)}else{for(let[E,Me]of i)u.push(`${E}: ${C(Me,e)}`);$==="void"?h.push(`fn ${r}(${u}) {`):h.push(`fn ${r}(${u}) -> ${C($,e)} {`)}return m&&h.push(m),h.push("}"),h.join(`
|
|
29
|
+
`)},Ee=(e,t,n)=>e.isWebGL?`${n} ${t};`:`@location(${e.code?.vertVaryings?.size||0}) ${t}: ${C(n,e)}`,_e=(e,t,n)=>{if(e.isWebGL)return`${n} ${t};`;let{location:r=0}=e.gl?.webgpu?.attribs.map.get(t)||{},s=C(n,e);return`@location(${r}) ${t}: ${s}`},ye=(e,t,n)=>{let r=n==="sampler2D"||n==="texture";if(e.isWebGL)return r?`uniform sampler2D ${t};`:`uniform ${n} ${t};`;if(r){let{group:c=1,binding:i=0}=e.gl?.webgpu?.textures.map.get(t)||{};return`@group(${c}) @binding(${i}) var ${t}Sampler: sampler;
|
|
30
|
+
@group(${c}) @binding(${i+1}) var ${t}: texture_2d<f32>;`}let{group:s=0,binding:o=0}=e.gl?.webgpu?.uniforms.map.get(t)||{},a=C(n,e);return`@group(${s}) @binding(${o}) var<uniform> ${t}: ${a};`},Xe=(e,t,n)=>{if(e.isWebGL){let a=`uniform sampler2D ${t};`;if(e.label!=="compute")return a;let c=e.units?.(t);return`${a}
|
|
31
|
+
layout(location = ${c}) out vec4 _${t};`}let{group:r=0,binding:s=0}=e.gl?.webgpu?.storages.map.get(t)||{},o=C(n,e);return`@group(${r}) @binding(${s}) var<storage, read_write> ${t}: array<${o}>;`},Se=(e,t,n,r)=>{let s=g(t,e),o=p(n,e),a=p(t,e);return e.isWebGL?s==="int"?`for (int ${r} = 0; ${r} < ${a}; ${r} += 1) {
|
|
32
32
|
${o}
|
|
33
33
|
}`:s==="float"?`for (float ${r} = 0.0; ${r} < ${a}; ${r} += 1.0) {
|
|
34
34
|
${o}
|
|
@@ -48,18 +48,18 @@ ${o}
|
|
|
48
48
|
${o}
|
|
49
49
|
}`:`for (var ${r}: i32 = 0; ${r} < ${a}; ${r}++) {
|
|
50
50
|
${o}
|
|
51
|
-
}`},Re=(e,t,n,r)=>e.isWebGL?`const ${n} ${t} = ${r};`:`const ${t}: ${C(n,e)} = ${r};`;var p=(e,t)=>{if(t||(t={}),
|
|
52
|
-
`);if(n==="assign")return`${p(i,t)} = ${p(u,t)};`;if(n==="return")return`return ${p(i,t)};`;if(n==="break")return"break;";if(n==="continue")return"continue;";if(n==="loop")return Se(t,i,u,s);if(n==="if")return ge(t,i,u,o);if(n==="switch")return ve(t,i,o);if(n==="declare")return be(t,i,u);if(n==="define")return t.code?.headers.has(s)||t.code?.headers.set(s,Ce(t,r,e)),`${s}(${y(o.slice(1),t)})`;if(n==="struct")return t.code?.headers.has(s)||t.code?.headers.set(s,$e(t,s,a)),he(t,s,i.props.id,
|
|
51
|
+
}`},Re=(e,t,n,r)=>e.isWebGL?`const ${n} ${t} = ${r};`:`const ${t}: ${C(n,e)} = ${r};`;var p=(e,t)=>{if(t||(t={}),ce(t),l.arr(e))return y(e,t);if(l.str(e))return e;if(l.num(e)){let x=`${e}`;return x.includes(".")?x:x+".0"}if(l.bol(e))return e?"true":"false";if(!e||!S(e))return"";let{type:n,props:r={}}=e,{id:s="i",children:o=[],fields:a,initialValues:c}=r,[i,u,m,$]=o;if(n==="variable")return s;if(n==="member")return`${p(i,t)}.${p(u,t)}`;if(n==="element")return`${p(i,t)}[${p(u,t)}]`;if(n==="gather")return t.isWebGL?xe(t,i,u,e):`${p(i,t)}[${p(u,t)}]`;if(n==="scatter"){let[x,E]=i.props.children??[];return t.isWebGL?Te(t,x,u):`${p(x,t)}[${p(E,t)}] = ${p(u,t)};`}if(n==="ternary")return t.isWebGL?`(${p(m,t)} ? ${p(i,t)} : ${p(u,t)})`:`select(${p(i,t)}, ${p(u,t)}, ${p(m,t)})`;if(n==="conversion")return`${C(i,t)}(${y(o.slice(1),t)})`;if(n==="operator")return i==="not"||i==="bitNot"?`!${p(u,t)}`:i==="mod"?p(Fe(u,m),t):i.endsWith("Assign")?`${p(u,t)} ${B(i)} ${p(m,t)};`:`(${p(u,t)} ${B(i)} ${p(m,t)})`;if(n==="function"){if(i==="negate")return`(-${p(u,t)})`;if(i==="reciprocal")return`(1.0 / ${p(u,t)})`;if(i==="oneMinus")return`(1.0-${p(u,t)})`;if(i==="saturate")return`clamp(${p(u,t)}, 0.0, 1.0)`;if(i==="texture")return me(t,u,m,$);if(i==="atan2"&&t.isWebGL)return`atan(${p(u,t)}, ${p(m,t)})`;if(!t.isWebGL){if(i==="dFdx")return`dpdx(${p(u,t)})`;if(i==="dFdy")return`dpdy(${p(u,t)})`}return`${i}(${y(o.slice(1),t)})`}if(n==="scope")return o.map(x=>p(x,t)).join(`
|
|
52
|
+
`);if(n==="assign")return`${p(i,t)} = ${p(u,t)};`;if(n==="return")return`return ${p(i,t)};`;if(n==="break")return"break;";if(n==="continue")return"continue;";if(n==="loop")return Se(t,i,u,s);if(n==="if")return ge(t,i,u,o);if(n==="switch")return ve(t,i,o);if(n==="declare")return be(t,i,u);if(n==="define")return t.code?.headers.has(s)||t.code?.headers.set(s,Ce(t,r,e)),`${s}(${y(o.slice(1),t)})`;if(n==="struct")return t.code?.headers.has(s)||t.code?.headers.set(s,$e(t,s,a)),he(t,s,i.props.id,c);if(n==="varying"){if(t.code?.vertOutputs.has(s))return t.isWebGL?`${s}`:`out.${s}`;let x=Ee(t,s,g(e,t));return t.code?.fragInputs.set(s,x),t.code?.vertOutputs.set(s,x),t.code?.vertVaryings.set(s,{node:i}),t.isWebGL?`${s}`:`out.${s}`}if(n==="builtin"){if(t.isWebGL)return pe(t,s);if(s==="position")return"out.position";let x=`@builtin(${s}) ${s}: ${C(g(e,t),t)}`;return t.label==="compute"?t.code?.computeInputs.set(s,x):t.label==="frag"?t.code?.fragInputs.set(s,x):t.label==="vert"&&t.code?.vertInputs.set(s,x),`in.${s}`}if(n==="attribute"||n==="instance")return z(t,s,n,e,i),t.code?.vertInputs.set(s,_e(t,s,g(e,t))),t.isWebGL?`${s}`:`in.${s}`;if(t.code?.headers.has(s))return s;let h="";if(n==="uniform"){let x=g(e,t);z(t,s,x,e,i),h=ye(t,s,x)}return n==="storage"&&(h=Xe(t,s,g(e,t))),n==="constant"&&(h=Re(t,s,g(e,t),p(i,t))),h?(t.code?.headers.set(s,h),s):p(i,t)};var Qe=(e,t)=>{let n=[],r=new Set,s=new Set,o=a=>{if(s.has(a)||r.has(a))return;s.add(a);let c=t.get(a)||new Set;for(let i of c)e.has(i)&&o(i);s.delete(a),r.add(a),e.has(a)&&n.push([a,e.get(a)])};for(let[a]of e)o(a);return n},H=(e,t)=>{let n=p(e,t),r="";t.isWebGL&&t.code?.dependencies?r=Qe(t.code.headers,t.code.dependencies).map(([,c])=>c).join(`
|
|
53
53
|
`):r=Array.from(t.code?.headers?.values()||[]).join(`
|
|
54
54
|
`);let[s,o]=n.split("return ");return o?o=o.replace(";",""):[s,o]=["",n],[r,s.trim(),o]},I=(e,t)=>`struct ${e} {
|
|
55
55
|
${Array.from(t.values()).join(`,
|
|
56
56
|
`)}
|
|
57
|
-
}`,Ye=(e,t="highp")=>{e.push(`precision ${t} float;`),e.push(`precision ${t} int;`),e.push(`precision ${t} sampler2D;`),e.push(`precision ${t} samplerCube;`),e.push(`precision ${t} sampler3D;`),e.push(`precision ${t} sampler2DArray;`),e.push(`precision ${t} sampler2DShadow;`),e.push(`precision ${t} samplerCubeShadow;`),e.push(`precision ${t} sampler2DArrayShadow;`),e.push(`precision ${t} isampler2D;`),e.push(`precision ${t} isampler3D;`),e.push(`precision ${t} isamplerCube;`),e.push(`precision ${t} isampler2DArray;`),e.push(`precision ${t} usampler2D;`),e.push(`precision ${t} usampler3D;`),e.push(`precision ${t} usamplerCube;`),e.push(`precision ${t} usampler2DArray;`)},et=(e,t="highp")=>{if(!e)return"highp";if(t==="highp"){let n=e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT),r=e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT);if(n&&n.precision>0&&r&&r.precision>0)return"highp";t="mediump"}if(t==="mediump"){let n=e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT),r=e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT);if(n&&n.precision>0&&r&&r.precision>0)return"mediump";t="lowp"}return"lowp"},Ae=(e,t={})=>{t.code?.headers?.clear(),t.label="frag";let[n,r,s]=H(e,t),o=[];if(t.isWebGL){o.push("#version 300 es"),Ye(o,et(t.gl?.webgl?.context,t.gl?.precision)),o.push("out vec4 fragColor;");for(let
|
|
57
|
+
}`,Ye=(e,t="highp")=>{e.push(`precision ${t} float;`),e.push(`precision ${t} int;`),e.push(`precision ${t} sampler2D;`),e.push(`precision ${t} samplerCube;`),e.push(`precision ${t} sampler3D;`),e.push(`precision ${t} sampler2DArray;`),e.push(`precision ${t} sampler2DShadow;`),e.push(`precision ${t} samplerCubeShadow;`),e.push(`precision ${t} sampler2DArrayShadow;`),e.push(`precision ${t} isampler2D;`),e.push(`precision ${t} isampler3D;`),e.push(`precision ${t} isamplerCube;`),e.push(`precision ${t} isampler2DArray;`),e.push(`precision ${t} usampler2D;`),e.push(`precision ${t} usampler3D;`),e.push(`precision ${t} usamplerCube;`),e.push(`precision ${t} usampler2DArray;`)},et=(e,t="highp")=>{if(!e)return"highp";if(t==="highp"){let n=e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT),r=e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT);if(n&&n.precision>0&&r&&r.precision>0)return"highp";t="mediump"}if(t==="mediump"){let n=e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT),r=e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT);if(n&&n.precision>0&&r&&r.precision>0)return"mediump";t="lowp"}return"lowp"},Ae=(e,t={})=>{t.code?.headers?.clear(),t.label="frag";let[n,r,s]=H(e,t),o=[];if(t.isWebGL){o.push("#version 300 es"),Ye(o,et(t.gl?.webgl?.context,t.gl?.precision)),o.push("out vec4 fragColor;");for(let c of t.code?.fragInputs?.values()||[])o.push(`in ${c}`);o.push(n),o.push("void main() {"),o.push(` ${r}`),o.push(` fragColor = ${s};`)}else t.code?.fragInputs?.size&&o.push(I("Out",t.code.fragInputs)),o.push(n),o.push(`@fragment
|
|
58
58
|
fn main(out: Out) -> @location(0) vec4f {`),o.push(` ${r}`),o.push(` return ${s};`);o.push("}");let a=o.filter(Boolean).join(`
|
|
59
59
|
`).trim();return t.gl?.isDebug&&console.log(`\u2193\u2193\u2193generated\u2193\u2193\u2193
|
|
60
|
-
${a}`),a},Le=(e,t={})=>{t.code?.headers?.clear(),t.label="vert";let[n,r,s]=H(e,t),o=[];if(t.isWebGL){o.push("#version 300 es");for(let
|
|
60
|
+
${a}`),a},Le=(e,t={})=>{if(t.code?.headers?.clear(),t.label="vert",t.code)for(let[c,{node:i}]of t.code.vertVaryings.entries())t.code.vertVaryings.set(c,{node:i,code:p(i,t)});let[n,r,s]=H(e,t),o=[];if(t.isWebGL){o.push("#version 300 es");for(let c of t.code?.vertInputs?.values()||[])o.push(`in ${c}`);for(let c of t.code?.vertOutputs?.values()||[])o.push(`out ${c}`);if(o.push(n),o.push("void main() {"),o.push(` ${r}`),o.push(` gl_Position = ${s};`),t.code)for(let[c,i]of t.code.vertVaryings.entries())o.push(` ${c} = ${i.code};`)}else{if(t.code?.vertInputs?.size&&o.push(I("In",t.code.vertInputs)),t.code?.vertOutputs?.size&&o.push(I("Out",t.code.vertOutputs)),o.push(n),o.push("@vertex"),o.push(`fn main(${t.code?.vertInputs?.size?"in: In":""}) -> Out {`),o.push(" var out: Out;"),o.push(` ${r}`),o.push(` out.position = ${s};`),t.code)for(let[c,i]of t.code.vertVaryings.entries())o.push(` out.${c} = ${i.code};`);o.push(" return out;")}o.push("}");let a=o.filter(Boolean).join(`
|
|
61
61
|
`).trim();return t.gl?.isDebug&&console.log(`\u2193\u2193\u2193generated\u2193\u2193\u2193
|
|
62
62
|
${a}`),a},Ue=(e,t={})=>{t.code?.headers?.clear(),t.label="compute";let[n,r,s]=H(e,t),o=[];t.isWebGL?(o.push("#version 300 es"),Ye(o,"highp"),o.push(n),o.push("void main() {"),o.push(` ${r}`),o.push(` ${s};`),o.push("}")):(t.code?.computeInputs?.size&&o.push(I("In",t.code.computeInputs)),o.push(n),o.push("@compute @workgroup_size(32)"),o.push(`fn main(${t.code?.computeInputs?.size?"in: In":""}) {`),o.push(` ${r}`),o.push(` ${s};`),o.push("}"));let a=o.filter(Boolean).join(`
|
|
63
63
|
`).trim();return t.gl?.isDebug&&console.log(`\u2193\u2193\u2193generated\u2193\u2193\u2193
|
|
64
|
-
${a}`),a};var X=null,R=null,_=e=>{if(!X)return;if(X.props.children||(X.props.children=[]),X.props.children.push(e),e.type!=="return"||!R)return e;let{props:t}=R;return t.inferFrom||(t.inferFrom=[]),t.inferFrom.push(e),e};function Ie(e,t){t||(t=v());let n=d("variable",{id:t,inferFrom:[e]}),r=d("declare",null,e,n);return _(r),n}var Ne=(e,t=!1,n)=>{let r=d(t?"scatter":"assign",null,e,n);return _(r),e},tt=e=>_(d("return",{inferFrom:[e]},e)),
|
|
64
|
+
${a}`),a};var X=null,R=null,_=e=>{if(!X)return;if(X.props.children||(X.props.children=[]),X.props.children.push(e),e.type!=="return"||!R)return e;let{props:t}=R;return t.inferFrom||(t.inferFrom=[]),t.inferFrom.push(e),e};function Ie(e,t){t||(t=v());let n=d("variable",{id:t,inferFrom:[e]}),r=d("declare",null,e,n);return _(r),n}var Ne=(e,t=!1,n)=>{let r=d(t?"scatter":"assign",null,e,n);return _(r),e},tt=e=>_(d("return",{inferFrom:[e]},e)),Vt=()=>_(d("break")),Bt=()=>_(d("continue")),zt=(e,t=v())=>(n={},r=v())=>{let s=d("variable",{id:r,inferFrom:[t]}),o=d("struct",{id:t,fields:e,initialValues:n},s);return _(o),s},Oe=(e,t,n=R)=>{let[r,s]=[X,R];[X,R]=[e,n];let o=t();o&&tt(o),[X,R]=[r,s]},F=e=>{let t=d("scope");return Oe(t,e),t},Ht=(e,t)=>{let n=F(t),r=d("if",null,e,n);_(r);let s=()=>({ElseIf:(o,a)=>{let c=F(a);return r.props.children.push(o,c),s()},Else:o=>{let a=F(o);r.props.children.push(a)}});return s()},kt=(e,t)=>{let n=v(),r=F(()=>t({i:d("variable",{id:n,inferFrom:[T("int",0)]})})),s=d("loop",{id:n},e,r);return _(s)},qt=e=>{let t=d("switch",null,e);_(t);let n=()=>({Case:(...r)=>s=>{let o=F(s);for(let a of r)t.props.children.push(a,o);return n()},Default:r=>{let s=F(r);t.props.children.push(s)}});return n()};function jt(e,t){let n=v(),r=(...s)=>{let o=t?.name||n,a=[],c=[];for(let m=0;m<s.length;m++){let $=t?.inputs?.[m];$?c.push({id:$.name,inferFrom:$.type==="auto"?[s[m]]:[T($.type,s[m])]}):c.push({id:`p${m}`,inferFrom:[s[m]]})}for(let m of c)a.push(d("variable",m));let i=d("scope"),u=d("define",{id:o,layout:t},i,...s);return Oe(i,()=>e(a),u),u};return r.getLayout=()=>t,r.setLayout=s=>(t=s,r),r}var nt=(e,t)=>{if(t==="string")return p(e,null)},d=(e,t,...n)=>{t||(t={}),n.length&&(t.children=n);let r=new Set,s=(c,i)=>{if(i==="type")return e;if(i==="props")return t;if(i==="toVar")return Ie.bind(null,a);if(i==="isProxy")return!0;if(i==="toString")return p.bind(null,a);if(i==="fragment")return Ae.bind(null,a);if(i==="compute")return Ue.bind(null,a);if(i==="vertex")return Le.bind(null,a);if(i===Symbol.toPrimitive)return nt.bind(null,a);if(i==="listeners")return r;if(i==="attribute")return(u=v())=>rt(a,u);if(i==="instance")return(u=v())=>ot(a,u);if(i==="constant")return(u=v())=>st(a,u);if(i==="uniform")return(u=v())=>Y(a,u);if(i==="variable")return(u=v())=>it(u);if(i==="builtin")return(u=v())=>b(u);if(i==="vertexStage")return(u=v())=>at(a,u);if(i==="element")return u=>e==="storage"?ut(a,u):we(a,u);if(i==="member")return u=>k(a,u);if(i==="assign")return Ne.bind(null,a,a.type==="gather");if(i==="select")return pt.bind(null,a);if(oe(i))return i.endsWith("Assign")?(...u)=>_(Ge(i,a,...u)):(...u)=>Ge(i,a,...u);if(se(i))return(...u)=>f(i,a,...u);if(ae(i))return()=>T(fe(i),a);if(l.str(i))return le(i)?we(a,i):k(a,i)},o=(c,i,u)=>(i==="value"&&r.forEach(m=>m(u)),l.str(i)&&k(a,i).assign(u),!0),a=new Proxy({},{get:s,set:o});return a},rt=(e,t=v())=>d("attribute",{id:t},e),ot=(e,t=v())=>d("instance",{id:t},e),st=(e,t=v())=>d("constant",{id:t},e),Y=(e,t=v())=>d("uniform",{id:t},e),tn=(e,t=v())=>d("storage",{id:t},e),it=(e=v())=>d("variable",{id:e}),b=(e=v())=>d("builtin",{id:e}),at=(e,t=v())=>d("varying",{id:t,inferFrom:[e]},e),k=(e,t)=>d("member",null,e,t),we=(e,t)=>d("element",null,e,t),ut=(e,t)=>d("gather",null,e,t),nn=(e,t)=>d("scatter",null,e,t),pt=(e,t,n)=>d("ternary",null,e,t,n),Ge=(e,...t)=>d("operator",null,e,...t),f=(e,...t)=>d("function",null,e,...t),T=(e,...t)=>d("conversion",null,e,...t);var ft=b("position"),un=b("vertex_index"),pn=b("instance_index"),fn=b("front_facing"),cn=b("frag_depth"),ln=b("sample_index"),dn=b("sample_mask"),xn=b("point_coord"),Tn=b("global_invocation_id"),mn=b("position"),gn=b("positionWorld"),vn=b("positionView"),bn=b("normalLocal"),$n=b("normalWorld"),hn=b("normalView"),Cn=b("screenCoordinate"),En=b("screenUV"),ct=e=>T("float",e),_n=e=>T("int",e),yn=e=>T("uint",e),Xn=e=>T("bool",e),De=(e,t)=>T("vec2",e,t),Pe=(e,t,n)=>T("vec3",e,t,n),Sn=(e,t,n,r)=>T("vec4",e,t,n,r),Rn=(...e)=>T("mat2",...e),Fn=(...e)=>T("mat3",...e),Yn=(...e)=>T("mat4",...e),An=(e,t)=>T("ivec2",e,t),Ln=(e,t,n)=>T("ivec3",e,t,n),Un=(e,t,n,r)=>T("ivec4",e,t,n,r),In=(e,t)=>T("uvec2",e,t),Nn=(e,t,n)=>T("uvec3",e,t,n),On=(e,t,n,r)=>T("uvec4",e,t,n,r),wn=(e,t)=>T("bvec2",e,t),Gn=(e,t,n)=>T("bvec3",e,t,n),Pn=(e,t,n,r)=>T("bvec4",e,t,n,r),Dn=e=>T("texture",e),Mn=()=>T("sampler2D"),Wn=(e,t,n)=>l.num(e)&&l.und(t)&&l.und(n)?Pe(...ue(e)):Pe(e,t,n),lt=Y(De(),"iResolution"),Vn=Y(De(),"iMouse"),Bn=Y(ct(),"iTime"),zn=ft.xy.div(lt),Hn=e=>f("all",e),kn=e=>f("any",e),qn=e=>f("determinant",e),jn=(e,t)=>f("distance",e,t),Kn=(e,t)=>f("dot",e,t),Zn=e=>f("length",e),Jn=e=>f("lengthSq",e),Qn=e=>f("luminance",e),er=(e,t)=>f("cross",e,t),tr=(e,t,n)=>f("cubeTexture",e,t,n),nr=(e,t,n)=>f("texture",e,t,n),rr=(e,t,n)=>f("texelFetch",e,t,n),or=(e,t,n)=>f("textureLod",e,t,n),sr=e=>f("abs",e),ir=e=>f("acos",e),ar=e=>f("acosh",e),ur=e=>f("asin",e),pr=e=>f("asinh",e),fr=e=>f("atan",e),cr=e=>f("atanh",e),lr=e=>f("ceil",e),dr=e=>f("cos",e),xr=e=>f("cosh",e),Tr=e=>f("dFdx",e),mr=e=>f("dFdy",e),gr=e=>f("degrees",e),vr=e=>f("exp",e),br=e=>f("exp2",e),$r=e=>f("floor",e),hr=e=>f("fract",e),Cr=e=>f("fwidth",e),Er=e=>f("inverseSqrt",e),_r=e=>f("log",e),yr=e=>f("log2",e),Xr=e=>f("negate",e),Sr=e=>f("normalize",e),Rr=e=>f("oneMinus",e),Fr=e=>f("radians",e),Yr=e=>f("reciprocal",e),Ar=e=>f("round",e),Lr=e=>f("sign",e),Ur=e=>f("sin",e),Ir=e=>f("sinh",e),Nr=e=>f("sqrt",e),Or=e=>f("tan",e),wr=e=>f("tanh",e),Gr=e=>f("trunc",e),Pr=(e,t)=>f("atan2",e,t),Dr=(e,t,n)=>f("clamp",e,t,n),Mr=(e,t)=>f("max",e,t),Wr=(e,t)=>f("min",e,t),Vr=(e,t,n)=>f("mix",e,t,n),Br=(e,t)=>f("pow",e,t),zr=(e,t)=>f("reflect",e,t),Hr=(e,t,n)=>f("refract",e,t,n),kr=(e,t,n)=>f("smoothstep",e,t,n),qr=(e,t)=>f("step",e,t),Fe=(e,t)=>e.sub(e.div(t).floor().mul(t));export{Vt as Break,Bt as Continue,jt as Fn,Ht as If,kt as Loop,tt as Return,F as Scope,qt as Switch,sr as abs,ir as acos,ar as acosh,_ as addToScope,Hn as all,kn as any,ur as asin,pr as asinh,Ne as assign,fr as atan,Pr as atan2,cr as atanh,rt as attribute,Xn as bool,b as builtin,wn as bvec2,Gn as bvec3,Pn as bvec4,lr as ceil,Dr as clamp,Wn as color,Ue as compute,st as constant,T as conversion,dr as cos,xr as cosh,d as create,er as cross,tr as cubeTexture,Tr as dFdx,mr as dFdy,gr as degrees,qn as determinant,jn as distance,Kn as dot,we as element,vr as exp,br as exp2,ct as float,$r as floor,hr as fract,cn as fragDepth,Ae as fragment,fn as frontFacing,f as function_,Cr as fwidth,ut as gather,Vn as iMouse,lt as iResolution,Bn as iTime,Tn as id,ot as instance,pn as instanceIndex,_n as int,Er as inverseSqrt,An as ivec2,Ln as ivec3,Un as ivec4,Zn as length,Jn as lengthSq,_r as log,yr as log2,Qn as luminance,Rn as mat2,Fn as mat3,Yn as mat4,Mr as max,k as member,Wr as min,Vr as mix,Fe as mod,Xr as negate,bn as normalLocal,hn as normalView,$n as normalWorld,Sr as normalize,Rr as oneMinus,Ge as operator,xn as pointCoord,ft as position,mn as positionLocal,vn as positionView,gn as positionWorld,Br as pow,Fr as radians,Yr as reciprocal,zr as reflect,Hr as refract,Ar as round,ln as sampleIndex,dn as sampleMask,Mn as sampler2D,nn as scatter,Oe as scoped,Cn as screenCoordinate,En as screenUV,pt as select,Lr as sign,Ur as sin,Ir as sinh,kr as smoothstep,Nr as sqrt,qr as step,tn as storage,zt as struct,Or as tan,wr as tanh,rr as texelFetch,nr as texture,Dn as texture2D,or as textureLod,Ie as toVar,Gr as trunc,yn as uint,Y as uniform,zn as uv,In as uvec2,Nn as uvec3,On as uvec4,it as variable,De as vec2,Pe as vec3,Sn as vec4,Le as vertex,un as vertexIndex,at as vertexStage};
|
|
65
65
|
//# sourceMappingURL=node.js.map
|