glre 0.27.0 → 0.29.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/README.md +9 -9
- package/dist/index.cjs +70 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{index.d.ts → index.d.cts} +188 -42
- package/dist/index.js +36 -27
- package/dist/index.js.map +1 -1
- package/dist/native.cjs +70 -0
- package/dist/native.cjs.map +1 -0
- package/dist/native.d.cts +54 -0
- package/dist/native.js +36 -27
- package/dist/native.js.map +1 -1
- package/dist/react.cjs +70 -0
- package/dist/react.cjs.map +1 -0
- package/dist/react.d.cts +9 -0
- package/dist/react.js +36 -27
- package/dist/react.js.map +1 -1
- package/dist/solid.cjs +70 -0
- package/dist/solid.cjs.map +1 -0
- package/dist/solid.d.cts +9 -0
- package/dist/solid.js +36 -27
- package/dist/solid.js.map +1 -1
- package/package.json +2 -1
- package/src/node/code.ts +68 -38
- package/src/node/const.ts +156 -54
- package/src/node/index.ts +124 -78
- package/src/node/infer.ts +96 -0
- package/src/node/node.ts +29 -33
- package/src/node/scope.ts +70 -36
- package/src/node/types.ts +74 -10
- package/src/node/utils.ts +61 -53
- package/src/types.ts +7 -7
- package/src/utils/pipeline.ts +6 -6
- package/src/utils/program.ts +9 -7
- package/src/webgl.ts +2 -3
- package/dist/index.mjs +0 -61
- package/dist/index.mjs.map +0 -1
- package/dist/native.d.ts +0 -53
- package/dist/native.mjs +0 -61
- package/dist/native.mjs.map +0 -1
- package/dist/react.d.ts +0 -8
- package/dist/react.mjs +0 -61
- package/dist/react.mjs.map +0 -1
- package/dist/solid.d.ts +0 -8
- package/dist/solid.mjs +0 -61
- package/dist/solid.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -114,8 +114,8 @@ npm install glre
|
|
|
114
114
|
|
|
115
115
|
```ts
|
|
116
116
|
import { createRoot } from 'react-dom/client'
|
|
117
|
-
import { useGL, vec4, fract,
|
|
118
|
-
const frag = vec4(fract(
|
|
117
|
+
import { useGL, vec4, fract, position, iResolution } from 'glre/react'
|
|
118
|
+
const frag = vec4(fract(position.xy.div(iResolution)), 0, 1)
|
|
119
119
|
|
|
120
120
|
const App = () => {
|
|
121
121
|
const gl = useGL({ frag })
|
|
@@ -135,8 +135,8 @@ react-native supported ([codesandbox demo](https://codesandbox.io/p/sandbox/glre
|
|
|
135
135
|
```ts
|
|
136
136
|
import { GLView } from 'expo-gl'
|
|
137
137
|
import { registerRootComponent } from 'expo'
|
|
138
|
-
import { useGL, vec4, fract,
|
|
139
|
-
const frag = vec4(fract(
|
|
138
|
+
import { useGL, vec4, fract, position, iResolution } from 'glre/native'
|
|
139
|
+
const frag = vec4(fract(position.xy.div(iResolution)), 0, 1)
|
|
140
140
|
|
|
141
141
|
const App = () => {
|
|
142
142
|
const gl = useGL({ frag })
|
|
@@ -156,8 +156,8 @@ solid js supported ([codesandbox demo](https://codesandbox.io/p/sandbox/glre-sol
|
|
|
156
156
|
|
|
157
157
|
```ts
|
|
158
158
|
import { render } from 'solid-js/web'
|
|
159
|
-
import { onGL, vec4, fract,
|
|
160
|
-
const frag = c4(fract(
|
|
159
|
+
import { onGL, vec4, fract, position, iResolution } from 'glre/solid'
|
|
160
|
+
const frag = c4(fract(position.xy.div(iResolution)), 0, 1)
|
|
161
161
|
|
|
162
162
|
const App = () => {
|
|
163
163
|
const gl = onGL({ frag })
|
|
@@ -178,8 +178,8 @@ esm supported ([codesandbox demo](https://codesandbox.io/s/glre-basic-demo3-3bhr
|
|
|
178
178
|
```html
|
|
179
179
|
<script type="module">
|
|
180
180
|
import createGL from 'https://esm.sh/glre'
|
|
181
|
-
import { vec4, fract,
|
|
182
|
-
const frag = vec4(fract(
|
|
181
|
+
import { vec4, fract, position, iResolution } from 'https://esm.sh/glre'
|
|
182
|
+
const frag = vec4(fract(position.xy.div(iResolution)), 0, 1)
|
|
183
183
|
function App() {
|
|
184
184
|
const el = document.createElement('canvas')
|
|
185
185
|
createGL({ el, frag }).mount()
|
|
@@ -208,7 +208,7 @@ The node system provides various types and functions that mirror GLSL functional
|
|
|
208
208
|
import { float, int, vec2, vec3, vec4, mat3, mat4 } from 'glre'
|
|
209
209
|
|
|
210
210
|
// Built-in variables
|
|
211
|
-
import {
|
|
211
|
+
import { position, position, iResolution, iTime } from 'glre'
|
|
212
212
|
|
|
213
213
|
// Math functions
|
|
214
214
|
import { sin, cos, abs, pow, mix, clamp, normalize } from 'glre'
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";var J=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var et=Object.getOwnPropertyNames;var tt=Object.prototype.hasOwnProperty;var rt=(e,t)=>{for(var r in t)J(e,r,{get:t[r],enumerable:!0})},ot=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of et(t))!tt.call(e,o)&&o!==r&&J(e,o,{get:()=>t[o],enumerable:!(n=Je(t,o))||n.enumerable});return e};var nt=e=>ot(J({},"__esModule",{value:!0}),e);var _o={};rt(_o,{ADDITIONAL_FUNCTIONS:()=>Fe,BOOL_RETURN_FUNCTIONS:()=>M,BUILTIN_TYPES:()=>ne,COMPARISON_OPERATORS:()=>se,COMPONENT_COUNT_TO_TYPE:()=>k,CONSTANTS:()=>L,CONVERSIONS:()=>ee,FIRST_ARG_TYPE_FUNCTIONS:()=>z,FUNCTIONS:()=>re,Fn:()=>Xt,HIGHEST_TYPE_FUNCTIONS:()=>W,If:()=>bt,LOGICAL_OPERATORS:()=>ie,Loop:()=>vt,OPERATORS:()=>$,OPERATOR_KEYS:()=>te,PRESERVE_TYPE_FUNCTIONS:()=>V,SCALAR_RETURN_FUNCTIONS:()=>B,SWIZZLES:()=>ft,Switch:()=>yt,TYPE_MAPPING:()=>oe,VEC3_RETURN_FUNCTIONS:()=>D,VEC4_RETURN_FUNCTIONS:()=>q,WGSL_TO_GLSL_BUILTIN:()=>ae,abs:()=>dr,acos:()=>xr,alignTo256:()=>je,all:()=>gr,any:()=>br,asin:()=>vr,assign:()=>xe,atan:()=>yr,atan2:()=>Xr,attribute:()=>Et,bitcast:()=>Tr,bool:()=>Kt,builtin:()=>Nt,bvec2:()=>ar,bvec3:()=>ur,bvec4:()=>cr,cbrt:()=>_r,ceil:()=>hr,clamp:()=>Er,code:()=>p,color:()=>pr,conversion:()=>b,cos:()=>Pr,createAttrib:()=>_e,createBindGroup:()=>Se,createBufferLayout:()=>Oe,createDescriptor:()=>Re,createDevice:()=>Pe,createGL:()=>Ze,createIbo:()=>Xe,createPipeline:()=>Ne,createProgram:()=>ve,createTexture:()=>he,createTextureSampler:()=>Le,createUniformBuffer:()=>Ce,createVbo:()=>ye,createVertexBuffer:()=>we,cross:()=>Nr,cubeTexture:()=>lr,dFdx:()=>Sr,dFdy:()=>Rr,default:()=>To,defaultFragmentGLSL:()=>Ye,defaultVertexGLSL:()=>ke,degrees:()=>wr,difference:()=>Cr,dig:()=>ct,distance:()=>Lr,dot:()=>Or,each:()=>Ge,equals:()=>Ir,exp:()=>Ur,exp2:()=>Gr,ext:()=>at,faceforward:()=>Fr,fig:()=>ut,float:()=>kt,floor:()=>Ar,flush:()=>st,formatConversions:()=>R,fract:()=>$r,fragCoord:()=>Wt,fragDepth:()=>Ot,fragment:()=>G,frontFacing:()=>Lt,function_:()=>i,fwidth:()=>Br,generateDefine:()=>me,getId:()=>I,getOperator:()=>le,getStride:()=>Te,hex2rgb:()=>fe,iMouse:()=>Rt,iResolution:()=>St,iTime:()=>wt,infer:()=>_,inferImpl:()=>Ve,instanceIndex:()=>Ct,int:()=>Yt,inverseSqrt:()=>Mr,is:()=>g,isConversion:()=>pe,isFunction:()=>ce,isGL:()=>Xo,isNodeProxy:()=>S,isOperator:()=>ue,isServer:()=>Ke,isSwizzle:()=>Y,isWebGPUSupported:()=>He,ivec2:()=>tr,ivec3:()=>rr,ivec4:()=>or,joins:()=>U,length:()=>Vr,lengthSq:()=>Dr,log:()=>zr,log2:()=>Wr,mat2:()=>Qt,mat3:()=>Jt,mat4:()=>er,max:()=>qr,min:()=>kr,mix:()=>Yr,negate:()=>jr,node:()=>c,normalLocal:()=>Bt,normalView:()=>Vt,normalWorld:()=>Mt,normalize:()=>Kr,oneMinus:()=>Hr,operator:()=>De,pointCoord:()=>Gt,position:()=>ze,positionLocal:()=>Ft,positionView:()=>$t,positionWorld:()=>At,pow:()=>Zr,pow2:()=>Qr,pow3:()=>Jr,pow4:()=>eo,radians:()=>to,reciprocal:()=>ro,reflect:()=>oo,refract:()=>no,replace:()=>it,round:()=>so,sampleIndex:()=>It,sampleMask:()=>Ut,saturate:()=>io,screenCoordinate:()=>Dt,screenUV:()=>zt,select:()=>_t,sig:()=>pt,sign:()=>ao,sin:()=>uo,smoothstep:()=>co,sqrt:()=>po,step:()=>fo,swizzle:()=>ge,tan:()=>lo,texture:()=>fr,textureSize:()=>mr,toVar:()=>de,transformDirection:()=>mo,trunc:()=>xo,uint:()=>jt,uniform:()=>j,uvec2:()=>nr,uvec3:()=>sr,uvec4:()=>ir,variable:()=>Pt,varying:()=>ht,vec2:()=>Ht,vec3:()=>be,vec4:()=>Zt,vertex:()=>F,vertexId:()=>qt,vertexIndex:()=>We,webgl:()=>Ee,webgpu:()=>Ie});module.exports=nt(_o);var O=require("reev"),Z=require("refr");var K=require("reev");var g={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)},Ge=(e,t)=>e.forEach(t),st=(e,...t)=>{Ge(e,r=>r(...t))},it=(e="",t="_",r="/")=>e.split(t).join(r),at=(e=".pdf")=>e.split(".").pop()?.toLowerCase()??"",ut=(e=0)=>`${e}`.split(".")[1]?.length??0,ct=(e=0)=>`${e}`.split(".")[0]?.length-(e<0?1:0),pt=(e=0,t=-2)=>(t*=-1,t=Math.pow(10,t),e*=t,e=Math.round(e),e/=t,e);var ft=["x","y","z","w","r","g","b","a","s","t","p","q"],L=["bool","uint","int","float","bvec2","bvec3","bvec4","ivec2","ivec3","ivec4","uvec2","uvec3","uvec4","vec2","vec3","vec4","color","mat2","mat3","mat4"],ee=["toFloat","toInt","toUint","toBool","toVec2","toVec3","toVec4","toIvec2","toIvec3","toIvec4","toUvec2","toUvec3","toUvec4","toBvec2","toBvec3","toBvec4","toMat2","toMat3","toMat4","toColor"],$={add:"+",sub:"-",mul:"*",div:"/",mod:"%",equal:"==",notEqual:"!=",lessThan:"<",lessThanEqual:"<=",greaterThan:">",greaterThanEqual:">=",and:"&&",or:"||",bitAnd:"&",bitOr:"|",bitXor:"^",shiftLeft:"<<",shiftRight:">>"},te=Object.keys($),B=["dot","distance","length","lengthSq","determinant","luminance"],M=["all","any"],V=["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"],D=["cross"],z=["reflect","refract"],W=["min","max","mix","clamp","step","smoothstep"],q=["texture","textureLod","textureSize","cubeTexture"],Fe=["atan2","degrees","faceforward","bitcast","cbrt","difference","equals","pow","pow2","pow3","pow4","radians","transformDirection"],re=[...B,...M,...V,...D,...z,...W,...q,...Fe],oe={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"},ne={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"},se=["equal","notEqual","lessThan","lessThanEqual","greaterThan","greaterThanEqual"],ie=["and","or"],ae={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"};var Y=e=>g.str(e)&&/^[xyzwrgbastpq]{1,4}$/.test(e),ue=e=>te.includes(e),ce=e=>re.includes(e),pe=e=>ee.includes(e),S=e=>!e||typeof e!="object"?!1:e.isProxy,lt=0,fe=e=>{let t=(e>>16&255)/255,r=(e>>8&255)/255,n=(e&255)/255;return[t,r,n]},I=()=>`i${lt++}`,U=(e,t)=>e.filter(r=>!g.und(r)&&!g.nul(r)).map(r=>p(r,t)).join(", "),R=(e,t)=>g.str(e)?t?.isWebGL?e:oe[e]:"",le=e=>$[e]||e,Ae=e=>Array.from(e.headers).map(([,t])=>t).join(`
|
|
2
|
+
`),me=(e,t)=>{let{id:r,children:n=[]}=e,[o,s,...u]=n,a=s?_(s,t):"void",m=u.map((h,T)=>[`p${T}`,_(h,t)]),y=[p(o,t)];if(s&&y.push(`return ${p(s,t)};`),t?.isWebGL){let h=m.map(([T,E])=>`${E} ${T}`);return`${a} ${r}(${h}) {
|
|
3
|
+
${y.join(`
|
|
4
|
+
`)}
|
|
5
|
+
}`}let f=R(a,t),d=m.map(([h,T])=>`${h}: ${R(T,t)}`);return`fn ${r}(${d}) -> ${f} {
|
|
6
|
+
${y.join(`
|
|
7
|
+
`)}
|
|
8
|
+
}`},$e=(e,t,r=!0)=>r?`
|
|
9
|
+
#version 300 es
|
|
10
|
+
precision mediump float;
|
|
11
|
+
out vec4 fragColor;
|
|
12
|
+
${t}
|
|
13
|
+
void main() {
|
|
14
|
+
fragColor = ${e};
|
|
15
|
+
}`.trim():`
|
|
16
|
+
${t}
|
|
17
|
+
@fragment
|
|
18
|
+
fn main(@builtin(position) position: vec4f) -> @location(0) vec4f {
|
|
19
|
+
return ${e};
|
|
20
|
+
}`.trim(),G=(e,t={})=>{let r=p(e,t),n=Ae(t),o=$e(r,n,t.isWebGL);return console.log(`// \u2193\u2193\u2193 generated \u2193\u2193\u2193
|
|
21
|
+
|
|
22
|
+
${o}
|
|
23
|
+
|
|
24
|
+
`),o},F=(e,t)=>{let r=p(e,t),n=Ae(t);return $e(r,n,t.isWebGL)};var Me=e=>g.bol(e)?"bool":g.num(e)?"float":g.arr(e)&&k[e.length]||"float",Be=(e,t,r)=>{if(se.includes(r)||ie.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=L.indexOf(e),o=L.indexOf(t);return n>=o?e:t},mt=(e,t)=>e.reduce((r,n)=>{let o=_(n,t),s=L.indexOf(r);return L.indexOf(o)>s?o:r},"float"),dt=e=>k[e],xt=e=>ne[e],gt=(e,t,r)=>{let n=t.length>0?_(t[0],r):"float";return z.includes(e)?n:B.includes(e)?"float":M.includes(e)?"bool":V.includes(e)?n:D.includes(e)?"vec3":q.includes(e)?"vec4":W.includes(e)?mt(t,r):n},Ve=(e,t)=>{let{type:r,props:n}=e,{id:o,children:s=[],value:u}=n,[a,m,y]=s;return r==="uniform"||r==="variable"||r==="constant"||r==="attribute"||r==="varying"?Me(u):r==="conversion"?a:r==="operator"?Be(_(m,t),_(y,t),a):r==="function"?gt(a,s.slice(1),t):r==="swizzle"?dt(a.length):r==="ternary"?Be(_(m,t),_(y,t),"add"):r==="define"?m?_(m,t):"void":r==="builtin"?xt(o):"float"},_=(e,t)=>{if(t||(t={}),!S(e))return Me(e);if(t.infers||(t.infers=new WeakMap),t.infers.has(e))return t.infers.get(e);let r=Ve(e,t);return t.infers.set(e,r),r};var p=(e,t)=>{if(t||(t={}),t.headers||(t.headers=new Map),g.str(e))return e;if(g.num(e))return e.toFixed(1);if(g.bol(e))return e?"true":"false";if(!e)return"";let{type:r,props:n}=e,{id:o="",children:s=[]}=n,[u,a,m]=s,y="";if(r==="uniform"){if(t.headers.has(o))return o;t.binding||(t.binding=0);let f=_(e,t);y=t.isWebGL?`uniform ${f} ${o};`:`@group(0) @binding(${t.binding++}) var<uniform> ${o}: ${R(f,t)};`}if(r==="attribute"){if(t.headers.has(o))return o;y=`${_(e,t)} ${o}`}if(r==="constant"){if(t.headers.has(o))return o;y=`${_(e,t)} ${o}`}if(r==="varying"){if(t.headers.has(o))return o;y=`${_(e,t)} ${o}`}if(y)return t.headers.set(o,y),t.onMount?.(o,n.value),o;if(r==="variable")return o;if(r==="swizzle")return`${p(a,t)}.${p(u,t)}`;if(r==="operator")return u==="not"||u==="bitNot"?`!${p(a,t)}`:`(${p(a,t)} ${le(u)} ${p(m,t)})`;if(r==="function")return u==="negate"?`(-${U(s.slice(1),t)})`:`${u}(${U(s.slice(1),t)})`;if(r==="conversion")return`${R(u,t)}(${U(s.slice(1),t)})`;if(r==="scope")return s.map(f=>p(f,t)).join(`
|
|
25
|
+
`);if(r==="assign")return`${p(u,t)} = ${p(a,t)};`;if(r==="define"){let f=s.slice(2),d=`${o}(${f.map(h=>p(h,t))})`;return t.headers.has(o)||t.headers.set(o,me(n,t)),d}if(r==="loop")return`for (int i = 0; i < ${u}; i++) {
|
|
26
|
+
${p(a,t)}
|
|
27
|
+
}`;if(r==="if"){let f=`if (${p(u,t)}) {
|
|
28
|
+
${p(a,t)}
|
|
29
|
+
}`;for(let d=2;d<s.length;d+=2){let h=d>=s.length-1;f+=h?` else {
|
|
30
|
+
${p(s[d],t)}
|
|
31
|
+
}`:` else if (${p(s[d],t)}) {
|
|
32
|
+
${p(s[d+1],t)}
|
|
33
|
+
}`}return f}if(r==="switch"){let f=`switch (${p(u,t)}) {
|
|
34
|
+
`;for(let d=1;d<s.length;d+=2)d>=s.length-1&&s.length%2===0?f+=`default:
|
|
35
|
+
${p(s[d],t)}
|
|
36
|
+
break;
|
|
37
|
+
`:d+1<s.length&&(f+=`case ${p(s[d],t)}:
|
|
38
|
+
${p(s[d+1],t)}
|
|
39
|
+
break;
|
|
40
|
+
`);return f+="}",f}if(r==="ternary")return`(${p(u,t)} ? ${p(a,t)} : ${p(m,t)})`;if(r==="declare"){let f=_(a,t),d=u?.props?.id;if(t.isWebGL)return`${f} ${d} = ${p(a,t)};`;let h=R(f);return`var ${d}: ${h} = ${p(a,t)};`}if(r==="builtin"){if(t?.isWebGL){let f=ae[o];if(f)return f;if(o==="uv")return"gl_FragCoord.xy"}return o}return p(u,t)};var w=null,C=(e,t=()=>{})=>{let r=w;w=e,t(),w=r},A=e=>{w&&(w.props.children||(w.props.children=[]),w.props.children.push(e))},de=(e,t)=>{t||(t=I());let r=c("variable",{id:t}),n=c("declare",null,r,e);return A(n),r},xe=(e,t)=>{let r=c("assign",null,e,t);return A(r),e},bt=(e,t)=>{let r=c("scope");C(r,t);let n=c("if",null,e,r);A(n);let o=()=>({ElseIf:(s,u)=>{let a=c("scope");return C(a,u),n.props.children.push(s,a),o()},Else:s=>{let u=c("scope");C(u,s),n.props.children.push(u)}});return o()},vt=(e,t)=>{let r=c("scope");C(r,()=>t({i:c("variable",{id:"i"})}));let n=c("loop",null,e,r);return A(n),n},yt=e=>{let t=c("switch",null,e);A(t);let r=()=>({Case:(...n)=>o=>{let s=c("scope");C(s,o);for(let u of n)t.props.children.push(u,s);return r()},Default:n=>{let o=c("scope");C(o,n),t.props.children.push(o)}});return r()},Xt=e=>{let t=I();return(...r)=>{let n=c("scope"),o,s=[];for(let u=0;u<r.length;u++){let a=`p${u}`,m=c("variable",{id:a});s.push(m)}return C(n,()=>o=e(s)),c("define",{id:t},n,o,...r)}};var Tt=(e,t)=>{if(t==="string")return p(e)},c=(e,t,...r)=>{t||(t={}),r.length&&(t.children=r);let n=(u,a)=>{if(a==="type")return e;if(a==="props")return t;if(a==="toVar")return de.bind(null,s);if(a==="assign")return xe.bind(null,s);if(a==="isProxy")return!0;if(a==="toString")return p.bind(null,s);if(a===Symbol.toPrimitive)return Tt.bind(null,s);if(Y(a))return ge(a,s);if(ue(a))return(...m)=>De(a,s,...m);if(ce(a))return(...m)=>i(a,s,...m);if(pe(a))return b(a,s)},o=(u,a,m)=>Y(a)?(ge(a,s).assign(m),!0):!1,s=new Proxy({},{get:n,set:o});return s};var ge=(e,t)=>c("swizzle",null,e,t),De=(e,...t)=>c("operator",null,e,...t),i=(e,...t)=>c("function",null,e,...t),b=(e,...t)=>c("conversion",null,e,...t);var _t=(e,t,r)=>c("ternary",null,e,t,r),j=(e,t)=>c("uniform",{id:t,value:e}),ht=(e,t)=>c("varying",{id:t,value:e}),Et=(e,t)=>c("varying",{id:t,value:e}),Pt=e=>c("variable",{id:e}),Nt=e=>c("builtin",{id:e}),St=j([1280,800],"iResolution"),Rt=j([0,0],"iMouse"),wt=j(0,"iTime"),ze=c("builtin",{id:"position"}),We=c("builtin",{id:"vertex_index"}),Ct=c("builtin",{id:"instance_index"}),Lt=c("builtin",{id:"front_facing"}),Ot=c("builtin",{id:"frag_depth"}),It=c("builtin",{id:"sample_index"}),Ut=c("builtin",{id:"sample_mask"}),Gt=c("builtin",{id:"point_coord"}),Ft=c("builtin",{id:"position"}),At=c("builtin",{id:"positionWorld"}),$t=c("builtin",{id:"positionView"}),Bt=c("builtin",{id:"normalLocal"}),Mt=c("builtin",{id:"normalWorld"}),Vt=c("builtin",{id:"normalView"}),Dt=c("builtin",{id:"screenCoordinate"}),zt=c("builtin",{id:"screenUV"}),Wt=ze,qt=We,kt=e=>b("float",e),Yt=e=>b("int",e),jt=e=>b("uint",e),Kt=e=>b("bool",e),Ht=(e,t)=>b("vec2",e,t),be=(e,t,r)=>b("vec3",e,t,r),Zt=(e,t,r,n)=>b("vec4",e,t,r,n),Qt=(...e)=>b("mat2",...e),Jt=(...e)=>b("mat3",...e),er=(...e)=>b("mat4",...e),tr=(e,t)=>b("ivec2",e,t),rr=(e,t,r)=>b("ivec3",e,t,r),or=(e,t,r,n)=>b("ivec4",e,t,r,n),nr=(e,t)=>b("uvec2",e,t),sr=(e,t,r)=>b("uvec3",e,t,r),ir=(e,t,r,n)=>b("uvec4",e,t,r,n),ar=(e,t)=>b("bvec2",e,t),ur=(e,t,r)=>b("bvec3",e,t,r),cr=(e,t,r,n)=>b("bvec4",e,t,r,n),pr=(e,t,r)=>g.num(e)&&g.und(t)&&g.und(r)?be(...fe(e)):be(e,t,r),fr=(e,t,r)=>i("texture",e,t,r),lr=(e,t,r)=>i("cubeTexture",e,t,r),mr=(e,t)=>i("textureSize",e,t),dr=e=>i("abs",e),xr=e=>i("acos",e),gr=e=>i("all",e),br=e=>i("any",e),vr=e=>i("asin",e),yr=(e,t)=>t!==void 0?i("atan",e,t):i("atan",e),Xr=(e,t)=>i("atan",e,t),Tr=(e,t)=>i("bitcast",e,t),_r=e=>i("cbrt",e),hr=e=>i("ceil",e),Er=(e,t,r)=>i("clamp",e,t,r),Pr=e=>i("cos",e),Nr=(e,t)=>i("cross",e,t),Sr=e=>i("dFdx",e),Rr=e=>i("dFdy",e),wr=e=>i("degrees",e),Cr=(e,t)=>i("difference",e,t),Lr=(e,t)=>i("distance",e,t),Or=(e,t)=>i("dot",e,t),Ir=(e,t)=>i("equals",e,t),Ur=e=>i("exp",e),Gr=e=>i("exp2",e),Fr=(e,t,r)=>i("faceforward",e,t,r),Ar=e=>i("floor",e),$r=e=>i("fract",e),Br=e=>i("fwidth",e),Mr=e=>i("inverseSqrt",e),Vr=e=>i("length",e),Dr=e=>i("lengthSq",e),zr=e=>i("log",e),Wr=e=>i("log2",e),qr=(e,t)=>i("max",e,t),kr=(e,t)=>i("min",e,t),Yr=(e,t,r)=>i("mix",e,t,r),jr=e=>i("negate",e),Kr=e=>i("normalize",e),Hr=e=>i("oneMinus",e),Zr=(e,t)=>i("pow",e,t),Qr=e=>i("pow2",e),Jr=e=>i("pow3",e),eo=e=>i("pow4",e),to=e=>i("radians",e),ro=e=>i("reciprocal",e),oo=(e,t)=>i("reflect",e,t),no=(e,t,r)=>i("refract",e,t,r),so=e=>i("round",e),io=e=>i("saturate",e),ao=e=>i("sign",e),uo=e=>i("sin",e),co=(e,t,r)=>i("smoothstep",e,t,r),po=e=>i("sqrt",e),fo=(e,t)=>i("step",e,t),lo=e=>i("tan",e),mo=(e,t)=>i("transformDirection",e,t),xo=e=>i("trunc",e);var ke=`
|
|
41
|
+
#version 300 es
|
|
42
|
+
void main() {
|
|
43
|
+
float x = float(gl_VertexID % 2) * 4.0 - 1.0;
|
|
44
|
+
float y = float(gl_VertexID / 2) * 4.0 - 1.0;
|
|
45
|
+
gl_Position = vec4(x, y, 0.0, 1.0);
|
|
46
|
+
}
|
|
47
|
+
`,Ye=`
|
|
48
|
+
#version 300 es
|
|
49
|
+
precision mediump float;
|
|
50
|
+
uniform vec2 iResolution;
|
|
51
|
+
out vec4 fragColor;
|
|
52
|
+
void main() {
|
|
53
|
+
fragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
|
|
54
|
+
}
|
|
55
|
+
`,qe=(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}`)},ve=(e,t=ke,r=Ye,n=()=>{})=>{S(r)&&(r=G(r,{isWebGL:!0})),S(t)&&(t=F(r,{isWebGL:!0}));let o=e.createProgram(),s=qe(e,t,e.VERTEX_SHADER),u=qe(e,r,e.FRAGMENT_SHADER);if(!s||!u)return n();if(e.attachShader(o,s),e.attachShader(o,u),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS))return o;let a=e.getProgramInfoLog(o);e.deleteProgram(o),n(),console.warn(`Could not link pg: ${a}`)},ye=(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},Xe=(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)},_e=(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)},he=(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 Ee=async e=>{let t=e.el.getContext("webgl2"),r=ve(t,e.vs,e.fs,()=>void(e.isLoop=!1));t.useProgram(r);let n=0,o=(0,K.nested)(T=>t.getUniformLocation(r,T)),s=(0,K.nested)(T=>t.getAttribLocation(r,T)),u=(0,K.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:(T="",E,P)=>{let N=s(T,!0),X=ye(t,E),l=Xe(t,P),x=Te(e.count,E,P);_e(t,x,N,X,l)},_uniform:(T,E)=>{let P=o(T);if(g.num(E))return t.uniform1f(P,E);let N=E.length;if(N<=4)return t[`uniform${N}fv`](P,E);N=Math.sqrt(N)<<0,t[`uniformMatrix${N}fv`](P,!1,E)},_texture:(T,E)=>{let P=new Image;Object.assign(P,{src:E,crossOrigin:"anonymous"}),P.decode().then(()=>{let N=o(T),X=u(T);he(t,P,N,X)})}}};var H=require("reev");var go=`
|
|
56
|
+
@vertex
|
|
57
|
+
fn main(@builtin(vertex_index) vertex_index: u32) -> @builtin(position) vec4f {
|
|
58
|
+
let x = f32(vertex_index % 2u) * 4.0 - 1.0;
|
|
59
|
+
let y = f32(vertex_index / 2u) * 4.0 - 1.0;
|
|
60
|
+
return vec4f(x, y, 0.0, 1.0);
|
|
61
|
+
}
|
|
62
|
+
`,bo=`
|
|
63
|
+
@group(0) @binding(0) var<uniform> iResolution: vec2f;
|
|
64
|
+
|
|
65
|
+
@fragment
|
|
66
|
+
fn main(@builtin(position) position: vec4f) -> @location(0) vec4f {
|
|
67
|
+
return vec4f(position.xy / iResolution, 0.0, 1.0);
|
|
68
|
+
}
|
|
69
|
+
`,Pe=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}},Ne=(e,t,r,n,o=go,s=bo)=>{S(o)&&(o=F(o,{isWebGL:!1})),S(s)&&(s=G(s,{isWebGL:!1}));let u=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:u,primitive:{topology:"triangle-list"}})},Se=(e,t)=>{let r=[],n=[];t.forEach((u,a)=>{if(!u)return;let m="buffer"in u,y=u instanceof GPUTextureView,f=u instanceof GPUSampler;if(m)r.push({binding:a,visibility:3,buffer:{type:"uniform"}});else if(y)r.push({binding:a,visibility:2,texture:{}});else if(f)r.push({binding:a,visibility:2,sampler:{}});else return;n.push({binding:a,resource:u})});let o=e.createBindGroupLayout({entries:r}),s=e.createBindGroup({layout:o,entries:n});return{layout:o,bindGroup:s}},Re=e=>({colorAttachments:[{view:e.getCurrentTexture().createView(),clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]}),je=e=>Math.ceil(e/256)*256,we=(e,t)=>{let r=new Float32Array(t),n=e.createBuffer({size:r.byteLength,usage:40});return{array:r,buffer:n}},Ce=(e,t)=>{let r=new Float32Array(t),n=je(r.byteLength),o=e.createBuffer({size:n,usage:72});return{array:r,buffer:o}},Le=(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}},vo=(e,t)=>e/t,yo=e=>e===2?"float32x2":e===3?"float32x3":e===4?"float32x4":"float32",Oe=(e,t,r=6)=>{let n=vo(t,r);return{arrayStride:n*4,attributes:[{shaderLocation:e,offset:0,format:yo(n)}]}};var Ie=async e=>{let t=e.el.getContext("webgpu"),{device:r,format:n}=await Pe(t),o={device:r,context:t,resources:[[],[]],loadingImg:0,needsUpdate:!0},s=[],u=[],a=[],m=(0,H.nested)((X,l)=>{let{array:x,buffer:v}=we(r,l);return u.push(v),a.push(Oe(a.length,x.length,e.count)),o.needsUpdate=!0,{array:x,buffer:v}}),y=(0,H.nested)((X,l)=>{let{array:x,buffer:v}=Ce(r,l);return o.resources[0].push({buffer:v}),o.needsUpdate=!0,{array:x,buffer:v}}),f=(0,H.nested)((X,{width:l,height:x})=>{let{texture:v,sampler:Q}=Le(r,l,x);return o.resources[1].push(Q,v.createView()),o.needsUpdate=!0,{texture:v,width:l,height:x}}),d=()=>{let X=[];s.length=0,o.resources.forEach(l=>{if(!l.length)return;let{layout:x,bindGroup:v}=Se(r,l);X.push(x),s.push(v)}),o.pipeline=Ne(r,n,a,X,e.vs,e.fs)};return{webgpu:o,render:()=>{if(o.loadingImg)return;o.needsUpdate&&d(),o.needsUpdate=!1;let X=r.createCommandEncoder(),l=X.beginRenderPass(Re(t));l.setPipeline(o.pipeline),s.forEach((x,v)=>l.setBindGroup(v,x)),u.forEach((x,v)=>l.setVertexBuffer(v,x)),l.draw(e.count,1,0,0),l.end(),r.queue.submit([X.finish()])},clean:()=>{},_attribute:(X="",l)=>{let{array:x,buffer:v}=m(X,l);r.queue.writeBuffer(v,0,x)},_uniform:(X,l)=>{g.num(l)&&(l=[l]);let{array:x,buffer:v}=y(X,l);x.set(l),r.queue.writeBuffer(v,0,x)},_texture:(X,l)=>{o.loadingImg++;let x=Object.assign(new Image,{src:l,crossOrigin:"anonymous"});x.decode().then(()=>{let{texture:v,width:Q,height:Qe}=f(X,x);r.queue.copyExternalImageToTexture({source:x},{texture:v},{width:Q,height:Qe}),o.loadingImg--})}}};var Xo=e=>g.obj(e)?"isGL"in e:!1,Ke=()=>typeof window>"u",He=()=>Ke()?!1:"gpu"in navigator,Ue=performance.now(),Ze=e=>{let t=(0,O.event)({isNative:!1,isWebGL:!0,isLoop:!0,isGL:!0,size:[0,0],mouse:[0,0],count:6,webgl:{},webgpu:{}});return t.queue=(0,Z.createQueue)(),t.frame=(0,Z.createFrame)(),t.attribute=(0,O.durable)((r,n,o)=>t.queue(()=>t._attribute?.(r,n,o))),t.texture=(0,O.durable)((r,n)=>t.queue(()=>t._texture?.(r,n))),t.uniform=(0,O.durable)((r,n,o)=>t.queue(()=>t._uniform?.(r,n,o))),t.uniform({iResolution:t.size,iMouse:[0,0],iTime:Ue}),t("mount",async()=>{t.vs=t.vs||t.vert||t.vertex,t.fs=t.fs||t.frag||t.fragment,He()||(t.isWebGL=!0),t.isWebGL?t(await Ee(t)):t(await Ie(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,u]=t.size,{top:a,left:m}=t.el.getBoundingClientRect();t.mouse[0]=(n-a-s/2)/(s/2),t.mouse[1]=-(o-m-u/2)/(u/2),t.uniform("iMouse",t.mouse)}),t("loop",()=>{Ue=performance.now()/1e3,t.uniform("iTime",Ue)}),t(e)},To=Ze;0&&(module.exports={ADDITIONAL_FUNCTIONS,BOOL_RETURN_FUNCTIONS,BUILTIN_TYPES,COMPARISON_OPERATORS,COMPONENT_COUNT_TO_TYPE,CONSTANTS,CONVERSIONS,FIRST_ARG_TYPE_FUNCTIONS,FUNCTIONS,Fn,HIGHEST_TYPE_FUNCTIONS,If,LOGICAL_OPERATORS,Loop,OPERATORS,OPERATOR_KEYS,PRESERVE_TYPE_FUNCTIONS,SCALAR_RETURN_FUNCTIONS,SWIZZLES,Switch,TYPE_MAPPING,VEC3_RETURN_FUNCTIONS,VEC4_RETURN_FUNCTIONS,WGSL_TO_GLSL_BUILTIN,abs,acos,alignTo256,all,any,asin,assign,atan,atan2,attribute,bitcast,bool,builtin,bvec2,bvec3,bvec4,cbrt,ceil,clamp,code,color,conversion,cos,createAttrib,createBindGroup,createBufferLayout,createDescriptor,createDevice,createGL,createIbo,createPipeline,createProgram,createTexture,createTextureSampler,createUniformBuffer,createVbo,createVertexBuffer,cross,cubeTexture,dFdx,dFdy,defaultFragmentGLSL,defaultVertexGLSL,degrees,difference,dig,distance,dot,each,equals,exp,exp2,ext,faceforward,fig,float,floor,flush,formatConversions,fract,fragCoord,fragDepth,fragment,frontFacing,function_,fwidth,generateDefine,getId,getOperator,getStride,hex2rgb,iMouse,iResolution,iTime,infer,inferImpl,instanceIndex,int,inverseSqrt,is,isConversion,isFunction,isGL,isNodeProxy,isOperator,isServer,isSwizzle,isWebGPUSupported,ivec2,ivec3,ivec4,joins,length,lengthSq,log,log2,mat2,mat3,mat4,max,min,mix,negate,node,normalLocal,normalView,normalWorld,normalize,oneMinus,operator,pointCoord,position,positionLocal,positionView,positionWorld,pow,pow2,pow3,pow4,radians,reciprocal,reflect,refract,replace,round,sampleIndex,sampleMask,saturate,screenCoordinate,screenUV,select,sig,sign,sin,smoothstep,sqrt,step,swizzle,tan,texture,textureSize,toVar,transformDirection,trunc,uint,uniform,uvec2,uvec3,uvec4,variable,varying,vec2,vec3,vec4,vertex,vertexId,vertexIndex,webgl,webgpu});
|
|
70
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/webgl.ts","../src/utils/helpers.ts","../src/node/const.ts","../src/node/utils.ts","../src/node/infer.ts","../src/node/code.ts","../src/node/scope.ts","../src/node/node.ts","../src/node/index.ts","../src/utils/program.ts","../src/webgpu.ts","../src/utils/pipeline.ts"],"sourcesContent":["import { durable, event } from 'reev'\nimport { createFrame, createQueue } from 'refr'\nimport { webgl } from './webgl'\nimport { webgpu } from './webgpu'\nimport { is } from './utils/helpers'\nimport type { EventState } from 'reev'\nimport type { GL } from './types'\nexport * from './node'\nexport * from './types'\nexport * from './utils/helpers'\nexport * from './utils/pipeline'\nexport * from './utils/program'\nexport * from './webgl'\nexport * from './webgpu'\n\nexport const isGL = (a: unknown): a is EventState<GL> => {\n if (!is.obj(a)) return false\n if ('isGL' in a) return true\n return false\n}\n\nexport const isServer = () => {\n return typeof window === 'undefined'\n}\n\nexport const isWebGPUSupported = () => {\n if (isServer()) return false\n return 'gpu' in navigator\n}\n\nlet iTime = performance.now()\n\nexport const createGL = (props?: Partial<GL>) => {\n const gl = event<Partial<GL>>({\n isNative: false,\n isWebGL: true,\n isLoop: true,\n isGL: true,\n size: [0, 0],\n mouse: [0, 0],\n count: 6,\n webgl: {},\n webgpu: {},\n }) as EventState<GL>\n\n gl.queue = createQueue()\n gl.frame = createFrame()\n\n gl.attribute = durable((k, v, i) => gl.queue(() => gl._attribute?.(k, v, i)))\n gl.texture = durable((k, v) => gl.queue(() => gl._texture?.(k, v)))\n gl.uniform = durable((k, v, i) => gl.queue(() => gl._uniform?.(k, v, i)))\n gl.uniform({ iResolution: gl.size, iMouse: [0, 0], iTime })\n\n gl('mount', async () => {\n gl.vs = gl.vs || gl.vert || gl.vertex\n gl.fs = gl.fs || gl.frag || gl.fragment\n if (!isWebGPUSupported()) gl.isWebGL = true\n if (gl.isWebGL) {\n gl((await webgl(gl)) as GL)\n } else gl((await webgpu(gl)) as GL)\n gl.resize()\n gl.frame(() => {\n gl.loop()\n gl.queue.flush()\n gl.render()\n return gl.isLoop\n })\n if (gl.isNative) return\n window.addEventListener('resize', gl.resize)\n gl.el.addEventListener('mousemove', gl.mousemove)\n })\n\n gl('clean', () => {\n gl.frame.stop()\n gl.frame.clean(gl.render)\n if (gl.isNative) return\n window.removeEventListener('resize', gl.resize)\n gl.el.removeEventListener('mousemove', gl.mousemove)\n })\n\n gl('resize', () => {\n const w = gl.width || window.innerWidth\n const h = gl.height || window.innerHeight\n gl.size[0] = gl.el.width = w\n gl.size[1] = gl.el.height = h\n gl.uniform('iResolution', gl.size)\n })\n\n gl('mousemove', (_e: any, x = _e.clientX, y = _e.clientY) => {\n const [w, h] = gl.size\n const { top, left } = gl.el.getBoundingClientRect()\n gl.mouse[0] = (x - top - w / 2) / (w / 2)\n gl.mouse[1] = -(y - left - h / 2) / (h / 2)\n gl.uniform('iMouse', gl.mouse)\n })\n\n gl('loop', () => {\n iTime = performance.now() / 1000\n gl.uniform('iTime', iTime)\n })\n\n return gl(props)\n}\n\nexport default createGL\n","import { nested as cached } from 'reev'\nimport { is } from './utils/helpers'\nimport { createAttrib, createIbo, createProgram, createTexture, createVbo, getStride } from './utils/program'\nimport type { GL, WebGLState } from './types'\n\nexport const webgl = async (gl: Partial<GL>) => {\n const c = gl.el!.getContext('webgl2')!\n const pg = createProgram(c, gl.vs, gl.fs, () => void (gl.isLoop = false))!\n c.useProgram(pg)\n let _activeUnit = 0\n const uniforms = cached((key) => c.getUniformLocation(pg, key))\n const attribs = cached((key) => c.getAttribLocation(pg, key))\n const units = cached(() => _activeUnit++)\n const state = { context: c, program: pg } as WebGLState\n\n const clean = () => c.deleteProgram(pg)\n\n const render = () => {\n c.clear(c.COLOR_BUFFER_BIT)\n c.viewport(0, 0, ...gl.size!)\n c.drawArrays(c.TRIANGLES, 0, 3)\n }\n\n const _attribute = (key = '', value: number[], iboValue: number[]) => {\n const loc = attribs(key, true)\n const vbo = createVbo(c, value)\n const ibo = createIbo(c, iboValue)\n const str = getStride(gl.count!, value, iboValue)\n createAttrib(c, str, loc, vbo, ibo)\n }\n\n const _uniform = (key: string, value: number | number[]) => {\n const loc = uniforms(key)\n if (is.num(value)) return c.uniform1f(loc, value)\n let l = value.length\n if (l <= 4) return c[`uniform${l as 2}fv`](loc, value)\n l = Math.sqrt(l) << 0\n c[`uniformMatrix${l as 2}fv`](loc, false, value)\n }\n\n const _texture = (key: string, src: string) => {\n const image = new Image()\n Object.assign(image, { src, crossOrigin: 'anonymous' })\n image.decode().then(() => {\n const loc = uniforms(key)\n const unit = units(key)\n createTexture(c, image, loc, unit)\n })\n }\n\n return { webgl: state, render, clean, _attribute, _uniform, _texture }\n}\n","export const is = {\n arr: Array.isArray,\n bol: (a: unknown): a is boolean => typeof a === 'boolean',\n str: (a: unknown): a is string => typeof a === 'string',\n num: (a: unknown): a is number => typeof a === 'number',\n int: (a: unknown): a is number => Number.isInteger(a),\n fun: (a: unknown): a is Function => typeof a === 'function',\n und: (a: unknown): a is undefined => typeof a === 'undefined',\n nul: (a: unknown): a is null => a === null,\n set: (a: unknown): a is Set<unknown> => a instanceof Set,\n map: (a: unknown): a is Map<unknown, unknown> => a instanceof Map,\n obj: (a: unknown): a is object => !!a && a.constructor.name === 'Object',\n nan: (a: unknown): a is number => typeof a === 'number' && Number.isNaN(a),\n}\n\n/**\n * each\n */\ntype EachFn<Value, Key, This> = (this: This, value: Value, key: Key) => void\ntype Eachable<Value = any, Key = any, This = any> = {\n forEach(cb: EachFn<Value, Key, This>, ctx?: This): void\n}\n\nexport const each = <Value, Key, This>(obj: Eachable<Value, Key, This>, fn: EachFn<Value, Key, This>) => obj.forEach(fn)\n\nexport const flush = <Value extends Function, Key, This>(obj: Eachable<Value, Key, This>, ...args: any[]) => {\n each(obj, (f) => f(...args))\n}\n\n/**\n * other\n */\nexport const replace = (x = '', from = '_', to = '/') => x.split(from).join(to)\nexport const ext = (src = '.pdf') => src.split('.').pop()?.toLowerCase() ?? ''\nexport const fig = (x = 0) => `${x}`.split('.')[1]?.length ?? 0\nexport const dig = (x = 0) => `${x}`.split('.')[0]?.length - (x < 0 ? 1 : 0)\nexport const sig = (value = 0, digit = -2) => {\n digit *= -1\n digit = Math.pow(10, digit)\n value *= digit\n value = Math.round(value)\n value /= digit\n return value\n}\n","export const SWIZZLES = ['x', 'y', 'z', 'w', 'r', 'g', 'b', 'a', 's', 't', 'p', 'q'] as const\n\nexport const CONSTANTS = [\n 'bool',\n 'uint',\n 'int',\n 'float',\n 'bvec2',\n 'bvec3',\n 'bvec4',\n 'ivec2',\n 'ivec3',\n 'ivec4',\n 'uvec2',\n 'uvec3',\n 'uvec4',\n 'vec2',\n 'vec3',\n 'vec4',\n 'color',\n 'mat2',\n 'mat3',\n 'mat4',\n] as const\n\nexport const CONVERSIONS = [\n 'toFloat',\n 'toInt',\n 'toUint',\n 'toBool',\n 'toVec2',\n 'toVec3',\n 'toVec4',\n 'toIvec2',\n 'toIvec3',\n 'toIvec4',\n 'toUvec2',\n 'toUvec3',\n 'toUvec4',\n 'toBvec2',\n 'toBvec3',\n 'toBvec4',\n 'toMat2',\n 'toMat3',\n 'toMat4',\n 'toColor',\n] as const\n\nexport const OPERATORS = {\n add: '+',\n sub: '-',\n mul: '*',\n div: '/',\n mod: '%',\n equal: '==',\n notEqual: '!=',\n lessThan: '<',\n lessThanEqual: '<=',\n greaterThan: '>',\n greaterThanEqual: '>=',\n and: '&&',\n or: '||',\n bitAnd: '&',\n bitOr: '|',\n bitXor: '^',\n shiftLeft: '<<',\n shiftRight: '>>',\n} as const\n\nexport const OPERATOR_KEYS = Object.keys(OPERATORS) as (keyof typeof OPERATORS)[]\n\nexport const SCALAR_RETURN_FUNCTIONS = ['dot', 'distance', 'length', 'lengthSq', 'determinant', 'luminance'] as const\n\nexport const BOOL_RETURN_FUNCTIONS = ['all', 'any'] as const\n\nexport const PRESERVE_TYPE_FUNCTIONS = [\n 'abs',\n 'sign',\n 'floor',\n 'ceil',\n 'round',\n 'fract',\n 'trunc',\n 'sin',\n 'cos',\n 'tan',\n 'asin',\n 'acos',\n 'atan',\n 'exp',\n 'exp2',\n 'log',\n 'log2',\n 'sqrt',\n 'inverseSqrt',\n 'normalize',\n 'oneMinus',\n 'saturate',\n 'negate',\n 'reciprocal',\n 'dFdx',\n 'dFdy',\n 'fwidth',\n] as const\n\nexport const VEC3_RETURN_FUNCTIONS = ['cross'] as const\n\nexport const FIRST_ARG_TYPE_FUNCTIONS = ['reflect', 'refract'] as const\n\nexport const HIGHEST_TYPE_FUNCTIONS = ['min', 'max', 'mix', 'clamp', 'step', 'smoothstep'] as const\n\nexport const VEC4_RETURN_FUNCTIONS = ['texture', 'textureLod', 'textureSize', 'cubeTexture'] as const\n\nexport const ADDITIONAL_FUNCTIONS = [\n 'atan2',\n 'degrees',\n 'faceforward',\n 'bitcast',\n 'cbrt',\n 'difference',\n 'equals',\n 'pow',\n 'pow2',\n 'pow3',\n 'pow4',\n 'radians',\n 'transformDirection',\n] as const\n\nexport const FUNCTIONS = [\n ...SCALAR_RETURN_FUNCTIONS,\n ...BOOL_RETURN_FUNCTIONS,\n ...PRESERVE_TYPE_FUNCTIONS,\n ...VEC3_RETURN_FUNCTIONS,\n ...FIRST_ARG_TYPE_FUNCTIONS,\n ...HIGHEST_TYPE_FUNCTIONS,\n ...VEC4_RETURN_FUNCTIONS,\n ...ADDITIONAL_FUNCTIONS,\n] as const\n\nexport const TYPE_MAPPING = {\n float: 'f32',\n int: 'i32',\n uint: 'u32',\n bool: 'bool',\n vec2: 'vec2f',\n vec3: 'vec3f',\n vec4: 'vec4f',\n mat2: 'mat2x2f',\n mat3: 'mat3x3f',\n mat4: 'mat4x4f',\n ivec2: 'vec2i',\n ivec3: 'vec3i',\n ivec4: 'vec4i',\n uvec2: 'vec2u',\n uvec3: 'vec3u',\n uvec4: 'vec4u',\n bvec2: 'vec2<bool>',\n bvec3: 'vec3<bool>',\n bvec4: 'vec4<bool>',\n} as const\n\nexport const COMPONENT_COUNT_TO_TYPE = {\n 1: 'float',\n 2: 'vec2',\n 3: 'vec3',\n 4: 'vec4',\n 9: 'mat3',\n 16: 'mat4',\n} as const\n\nexport const BUILTIN_TYPES = {\n // WGSL builtin variables\n position: 'vec4',\n vertex_index: 'uint',\n instance_index: 'uint',\n front_facing: 'bool',\n frag_depth: 'float',\n sample_index: 'uint',\n sample_mask: 'uint',\n point_coord: 'vec2',\n\n // TSL compatible variables\n positionLocal: 'vec3',\n positionWorld: 'vec3',\n positionView: 'vec3',\n normalLocal: 'vec3',\n normalWorld: 'vec3',\n normalView: 'vec3',\n screenCoordinate: 'vec2',\n screenUV: 'vec2',\n\n // Legacy GLSL variables (for backward compatibility)\n gl_FragCoord: 'vec4',\n gl_VertexID: 'uint',\n gl_InstanceID: 'uint',\n gl_FrontFacing: 'bool',\n gl_FragDepth: 'float',\n gl_SampleID: 'uint',\n gl_SampleMask: 'uint',\n gl_PointCoord: 'vec2',\n\n // Common variables\n normal: 'vec3',\n uv: 'vec2',\n color: 'vec4',\n} as const\n\nexport const COMPARISON_OPERATORS = [\n 'equal',\n 'notEqual',\n 'lessThan',\n 'lessThanEqual',\n 'greaterThan',\n 'greaterThanEqual',\n] as const\n\nexport const LOGICAL_OPERATORS = ['and', 'or'] as const\n\nexport const WGSL_TO_GLSL_BUILTIN = {\n position: 'gl_FragCoord',\n vertex_index: 'gl_VertexID',\n instance_index: 'gl_InstanceID',\n front_facing: 'gl_FrontFacing',\n frag_depth: 'gl_FragDepth',\n sample_index: 'gl_SampleID',\n sample_mask: 'gl_SampleMask',\n point_coord: 'gl_PointCoord',\n} as const\n","import { NodeProps } from './../../../../node_modules/glre/src/node/types'\nimport { is } from '../utils/helpers'\nimport { code } from './code'\nimport { CONVERSIONS, FUNCTIONS, OPERATOR_KEYS, OPERATORS, TYPE_MAPPING } from './const'\nimport type { Conversions, Functions, NodeConfig, NodeProxy, Operators, Swizzles, X } from './types'\nimport { infer } from './infer'\n\nexport const isSwizzle = (key: unknown): key is Swizzles => {\n return is.str(key) && /^[xyzwrgbastpq]{1,4}$/.test(key)\n}\n\nexport const isOperator = (key: unknown): key is Operators => {\n return OPERATOR_KEYS.includes(key as Operators)\n}\n\nexport const isFunction = (key: unknown): key is Functions => {\n return FUNCTIONS.includes(key as Functions)\n}\n\nexport const isConversion = (key: unknown): key is Conversions => {\n return CONVERSIONS.includes(key as Conversions)\n}\n\nexport const isNodeProxy = (x: unknown): x is NodeProxy => {\n if (!x) return false\n if (typeof x !== 'object') return false // @ts-ignore\n return x.isProxy\n}\n\nlet count = 0\n\nexport const hex2rgb = (hex: number) => {\n const r = ((hex >> 16) & 0xff) / 255\n const g = ((hex >> 8) & 0xff) / 255\n const b = (hex & 0xff) / 255\n return [r, g, b]\n}\n\nexport const getId = () => `i${count++}`\n\nexport const joins = (children: X[], c: NodeConfig) => {\n return children\n .filter((x) => !is.und(x) && !is.nul(x))\n .map((x) => code(x, c))\n .join(', ')\n}\n\nexport const formatConversions = (x: X, c?: NodeConfig) => {\n if (!is.str(x)) return ''\n if (c?.isWebGL) return x\n return TYPE_MAPPING[x as keyof typeof TYPE_MAPPING]\n}\n\nexport const getOperator = (op: X) => {\n return OPERATORS[op as keyof typeof OPERATORS] || op\n}\n\nconst generateHead = (c: NodeConfig) => {\n return Array.from(c.headers!)\n .map(([, v]) => v)\n .join('\\n')\n}\n\nexport const generateDefine = (props: NodeProps, c: NodeConfig) => {\n const { id, children = [] } = props\n const [x, y, ...args] = children\n const returnType = y ? infer(y, c) : 'void'\n const params = args.map((arg, i) => [`p${i}`, infer(arg, c)])\n const lines = [code(x, c)]\n if (y) lines.push(`return ${code(y, c)};`)\n if (c?.isWebGL) {\n const paramList = params.map(([name, type]) => `${type} ${name}`)\n return `${returnType} ${id}(${paramList}) {\\n${lines.join('\\n')}\\n}`\n }\n const wgslReturnType = formatConversions(returnType, c)\n const wgslParams = params.map(([name, type]) => `${name}: ${formatConversions(type, c)}`)\n return `fn ${id}(${wgslParams}) -> ${wgslReturnType} {\\n${lines.join('\\n')}\\n}`\n}\n\nconst generateFragmentMain = (body: string, head: string, isWebGL = true) => {\n if (isWebGL)\n return `\n#version 300 es\nprecision mediump float;\nout vec4 fragColor;\n${head}\nvoid main() {\nfragColor = ${body};\n}`.trim()\n return `\n${head}\n@fragment\nfn main(@builtin(position) position: vec4f) -> @location(0) vec4f {\nreturn ${body};\n}`.trim()\n}\n\nexport const fragment = (x: X, c: NodeConfig = {}) => {\n const body = code(x, c)\n const head = generateHead(c)\n const main = generateFragmentMain(body, head, c.isWebGL)\n console.log(`// ↓↓↓ generated ↓↓↓\\n\\n${main}\\n\\n`)\n return main\n}\n\nexport const vertex = (x: X, c: NodeConfig) => {\n const body = code(x, c)\n const head = generateHead(c)\n return generateFragmentMain(body, head, c.isWebGL)\n}\n","import { is } from '../utils/helpers'\nimport { isNodeProxy } from './utils'\nimport {\n CONSTANTS,\n SCALAR_RETURN_FUNCTIONS,\n BOOL_RETURN_FUNCTIONS,\n PRESERVE_TYPE_FUNCTIONS,\n VEC3_RETURN_FUNCTIONS,\n FIRST_ARG_TYPE_FUNCTIONS,\n HIGHEST_TYPE_FUNCTIONS,\n VEC4_RETURN_FUNCTIONS,\n COMPARISON_OPERATORS,\n LOGICAL_OPERATORS,\n COMPONENT_COUNT_TO_TYPE,\n BUILTIN_TYPES,\n} from './const'\nimport type { Constants, NodeConfig, NodeProxy, X } from './types'\n\nconst inferPrimitiveType = (x: any): Constants => {\n if (is.bol(x)) return 'bool'\n if (is.num(x)) return 'float' // Number.isInteger(x) ? 'int' : 'float' // @TODO FIX\n if (is.arr(x)) return COMPONENT_COUNT_TO_TYPE[x.length as keyof typeof COMPONENT_COUNT_TO_TYPE] || 'float'\n return 'float'\n}\n\nconst inferBinaryOpType = (leftType: string, rightType: string, op: string): Constants => {\n if (COMPARISON_OPERATORS.includes(op as any)) return 'bool'\n if (LOGICAL_OPERATORS.includes(op as any)) return 'bool'\n if (leftType === rightType) return leftType as Constants\n if (leftType.includes('vec') && !rightType.includes('vec')) return leftType as Constants\n if (rightType.includes('vec') && !leftType.includes('vec')) return rightType as Constants\n const leftPriority = CONSTANTS.indexOf(leftType as any)\n const rightPriority = CONSTANTS.indexOf(rightType as any)\n return (leftPriority >= rightPriority ? leftType : rightType) as Constants\n}\n\nconst getHighestPriorityType = (args: X[], c: NodeConfig) => {\n return args.reduce((highest, current) => {\n const currentType = infer(current, c)\n const highestPriority = CONSTANTS.indexOf(highest as any)\n const currentPriority = CONSTANTS.indexOf(currentType as any)\n return currentPriority > highestPriority ? currentType : highest\n }, 'float') as Constants\n}\n\nconst inferSwizzleType = (count: number): Constants => {\n return COMPONENT_COUNT_TO_TYPE[count as keyof typeof COMPONENT_COUNT_TO_TYPE]!\n}\n\nconst inferBuiltinType = (id: string | undefined): Constants => {\n return BUILTIN_TYPES[id as keyof typeof BUILTIN_TYPES]!\n}\n\nconst inferMathType = (funcName: string, args: X[], c: NodeConfig): Constants => {\n const firstArgType = args.length > 0 ? infer(args[0], c) : 'float'\n if (FIRST_ARG_TYPE_FUNCTIONS.includes(funcName as any)) return firstArgType\n if (SCALAR_RETURN_FUNCTIONS.includes(funcName as any)) return 'float'\n if (BOOL_RETURN_FUNCTIONS.includes(funcName as any)) return 'bool'\n if (PRESERVE_TYPE_FUNCTIONS.includes(funcName as any)) return firstArgType\n if (VEC3_RETURN_FUNCTIONS.includes(funcName as any)) return 'vec3'\n if (VEC4_RETURN_FUNCTIONS.includes(funcName as any)) return 'vec4'\n if (HIGHEST_TYPE_FUNCTIONS.includes(funcName as any)) return getHighestPriorityType(args, c)\n return firstArgType\n}\n\nexport const inferImpl = (target: NodeProxy, c: NodeConfig): Constants => {\n const { type, props } = target\n const { id, children = [], value } = props\n const [x, y, z] = children\n if (\n type === 'uniform' ||\n type === 'variable' ||\n type === 'constant' ||\n type === 'attribute' ||\n type === 'varying'\n )\n return inferPrimitiveType(value)\n if (type === 'conversion') return x as Constants\n if (type === 'operator') return inferBinaryOpType(infer(y, c), infer(z, c), x as string)\n if (type === 'function') return inferMathType(x as string, children.slice(1), c)\n if (type === 'swizzle') return inferSwizzleType((x as string).length)\n if (type === 'ternary') return inferBinaryOpType(infer(y, c), infer(z, c), 'add')\n if (type === 'define') return y ? infer(y, c) : 'void'\n if (type === 'builtin') return inferBuiltinType(id)\n return 'float'\n}\n\nexport const infer = (target: X, c: NodeConfig | null): Constants => {\n if (!c) c = {}\n if (!isNodeProxy(target)) return inferPrimitiveType(target)\n if (!c.infers) c.infers = new WeakMap<NodeProxy, Constants>()\n if (c.infers.has(target)) return c.infers.get(target)!\n const ret = inferImpl(target, c)\n c.infers.set(target, ret)\n return ret\n}\n","import { is } from '../utils/helpers'\nimport { infer } from './infer'\nimport { joins, getOperator, formatConversions, generateDefine } from './utils'\nimport { WGSL_TO_GLSL_BUILTIN } from './const'\nimport type { NodeConfig, X } from './types'\n\nexport const code = (target: X, c?: NodeConfig | null): string => {\n if (!c) c = {}\n if (!c.headers) c.headers = new Map()\n if (is.str(target)) return target\n if (is.num(target)) return target.toFixed(1)\n if (is.bol(target)) return target ? 'true' : 'false'\n if (!target) return '' // ignore if no target\n const { type, props } = target\n const { id = '', children = [] } = props\n const [x, y, z] = children\n let head = ''\n if (type === 'uniform') {\n if (c.headers.has(id)) return id\n if (!c.binding) c.binding = 0\n const varType = infer(target, c)\n head = c.isWebGL\n ? `uniform ${varType} ${id};`\n : `@group(0) @binding(${c.binding++}) var<uniform> ${id}: ${formatConversions(varType, c)};`\n }\n if (type === 'attribute') {\n if (c.headers.has(id)) return id\n head = `${infer(target, c)} ${id}`\n }\n if (type === 'constant') {\n if (c.headers.has(id)) return id\n head = `${infer(target, c)} ${id}`\n }\n if (type === 'varying') {\n if (c.headers.has(id)) return id\n head = `${infer(target, c)} ${id}`\n }\n if (head) {\n c.headers.set(id, head)\n c.onMount?.(id, props.value)\n return id\n }\n if (type === 'variable') return id\n if (type === 'swizzle') return `${code(y, c)}.${code(x, c)}`\n if (type === 'operator') {\n if (x === 'not' || x === 'bitNot') return `!${code(y, c)}`\n return `(${code(y, c)} ${getOperator(x)} ${code(z, c)})`\n }\n if (type === 'function') {\n // Handle special functions that need to be converted to operators\n if (x === 'negate') return `(-${joins(children.slice(1), c)})`\n return `${x}(${joins(children.slice(1), c)})`\n }\n if (type === 'conversion') return `${formatConversions(x, c)}(${joins(children.slice(1), c)})`\n if (type === 'scope') return children.map((child: any) => code(child, c)).join('\\n')\n if (type === 'assign') return `${code(x, c)} = ${code(y, c)};`\n if (type === 'define') {\n const args = children.slice(2)\n const ret = `${id}(${args.map((arg) => code(arg, c))})`\n if (c.headers.has(id)) return ret\n c.headers.set(id, generateDefine(props, c))\n return ret\n }\n if (type === 'loop') return `for (int i = 0; i < ${x}; i++) {\\n${code(y, c)}\\n}`\n if (type === 'if') {\n let ret = `if (${code(x, c)}) {\\n${code(y, c)}\\n}`\n for (let i = 2; i < children.length; i += 2) {\n const isElseIf = i >= children.length - 1\n ret += !isElseIf\n ? ` else if (${code(children[i], c)}) {\\n${code(children[i + 1], c)}\\n}`\n : ` else {\\n${code(children[i], c)}\\n}`\n }\n return ret\n }\n if (type === 'switch') {\n let ret = `switch (${code(x, c)}) {\\n`\n for (let i = 1; i < children.length; i += 2) {\n const isDefault = i >= children.length - 1\n if (isDefault && children.length % 2 === 0) {\n ret += `default:\\n${code(children[i], c)}\\nbreak;\\n`\n } else if (i + 1 < children.length)\n ret += `case ${code(children[i], c)}:\\n${code(children[i + 1], c)}\\nbreak;\\n`\n }\n ret += '}'\n return ret\n }\n if (type === 'ternary') return `(${code(x, c)} ? ${code(y, c)} : ${code(z, c)})`\n if (type === 'declare') {\n const varType = infer(y, c)\n const varName = (x as any)?.props?.id\n if (c.isWebGL) return `${varType} ${varName} = ${code(y, c)};`\n const wgslType = formatConversions(varType)\n return `var ${varName}: ${wgslType} = ${code(y, c)};`\n }\n if (type === 'builtin') {\n if (c?.isWebGL) {\n const glslBuiltin = WGSL_TO_GLSL_BUILTIN[id as keyof typeof WGSL_TO_GLSL_BUILTIN]\n if (glslBuiltin) return glslBuiltin\n if (id === 'uv') return 'gl_FragCoord.xy'\n }\n return id\n }\n return code(x, c)\n}\n","import { node } from './node'\nimport { getId } from './utils'\nimport type { NodeProxy, X } from './types'\n\nlet _scope: NodeProxy | null = null\n\nconst scoped = (x: NodeProxy | null, fun = () => {}) => {\n const prev = _scope\n _scope = x\n fun()\n _scope = prev\n}\n\nconst addToScope = (x: NodeProxy) => {\n if (!_scope) return // ignore\n if (!_scope.props.children) _scope.props.children = []\n _scope.props.children.push(x)\n}\n\nexport const toVar = (x: X, id?: string) => {\n if (!id) id = getId()\n const y = node('variable', { id })\n const z = node('declare', null, y, x)\n addToScope(z)\n return y\n}\n\nexport const assign = (x: X, y: X) => {\n const z = node('assign', null, x, y)\n addToScope(z)\n return x\n}\n\nexport const If = (condition: X, fun: () => void) => {\n const scope = node('scope')\n scoped(scope, fun)\n const ifNode = node('if', null, condition, scope)\n addToScope(ifNode)\n const createChain = () => ({\n ElseIf: (x: X, _fun: () => void) => {\n const y = node('scope')\n scoped(y, _fun)\n ifNode.props.children!.push(x, y)\n return createChain()\n },\n Else: (_fun: () => void) => {\n const x = node('scope')\n scoped(x, _fun)\n ifNode.props.children!.push(x)\n },\n })\n return createChain()\n}\n\nexport const Loop = (x: X, fun: (params: { i?: NodeProxy }) => void) => {\n const y = node('scope')\n scoped(y, () => fun({ i: node('variable', { id: 'i' }) }))\n const ret = node('loop', null, x, y)\n addToScope(ret)\n return ret\n}\n\nexport const Switch = (value: X) => {\n const switchNode = node('switch', null, value)\n addToScope(switchNode)\n const createChain = () => ({\n Case: (...values: X[]) => {\n return (fun: () => void) => {\n const scope = node('scope')\n scoped(scope, fun)\n // 複数のcase値を処理\n for (const val of values) {\n switchNode.props.children!.push(val, scope)\n }\n return createChain()\n }\n },\n Default: (fun: () => void) => {\n const scope = node('scope')\n scoped(scope, fun)\n switchNode.props.children!.push(scope)\n },\n })\n\n return createChain()\n}\n\nexport const Fn = (fun: (paramVars: NodeProxy[]) => NodeProxy) => {\n const id = getId()\n return (...args: X[]) => {\n const x = node('scope')\n let y: NodeProxy | undefined\n const paramVars: NodeProxy[] = []\n for (let i = 0; i < args.length; i++) {\n const paramId = `p${i}`\n const paramVar = node('variable', { id: paramId })\n paramVars.push(paramVar)\n }\n scoped(x, () => (y = fun(paramVars)))\n return node('define', { id }, x, y, ...args)\n }\n}\n","import { code } from './code'\nimport { assign, toVar } from './scope'\nimport { getId, isConversion, isFunction, isOperator, isSwizzle } from './utils'\nimport type { Functions, NodeProps, NodeProxy, NodeTypes, Operators, Swizzles, X } from './types'\n\nconst toPrimitive = (x: X, hint: string) => {\n if (hint === 'string') return code(x)\n}\n\nexport const node = (type: NodeTypes, props?: NodeProps | null, ...args: X[]) => {\n if (!props) props = {}\n if (args.length) props.children = args\n const get = (_: unknown, key: string | Symbol) => {\n if (key === 'type') return type\n if (key === 'props') return props\n if (key === 'toVar') return toVar.bind(null, x)\n if (key === 'assign') return assign.bind(null, x)\n if (key === 'isProxy') return true\n if (key === 'toString') return code.bind(null, x)\n if (key === Symbol.toPrimitive) return toPrimitive.bind(null, x)\n if (isSwizzle(key)) return swizzle(key, x)\n if (isOperator(key)) return (...y: X[]) => operator(key, x, ...y)\n if (isFunction(key)) return (...y: X[]) => function_(key, x, ...y)\n if (isConversion(key)) return conversion(key, x)\n }\n const set = (_: unknown, key: string, value: X) => {\n if (isSwizzle(key)) {\n swizzle(key, x).assign(value)\n return true\n }\n return false\n }\n const x = new Proxy({}, { get, set }) as unknown as NodeProxy\n return x\n}\n\n// Node shorthands\nexport const variable = (...args: X[]) => node('variable', { id: getId() }, ...args)\nexport const swizzle = (key: Swizzles, arg: X) => node('swizzle', null, key, arg)\nexport const operator = (key: Operators, ...args: X[]) => node('operator', null, key, ...args)\nexport const function_ = (key: Functions, ...args: X[]) => node('function', null, key, ...args)\nexport const conversion = (key: string, ...args: X[]) => node('conversion', null, key, ...args)\n","import { conversion as c, function_ as f, node } from './node'\nimport { hex2rgb } from './utils'\nimport { is } from '../utils/helpers'\nimport type { X } from './types'\nexport * from './code'\nexport * from './const'\nexport * from './infer'\nexport * from './node'\nexport * from './scope'\nexport * from './types'\nexport * from './utils'\n\n// x ? y : z\nexport const select = (x: X, y: X, z: X) => node('ternary', null, x, y, z)\n\n// uniform and attribute\nexport const uniform = (value: number | number[], id?: string) => node('uniform', { id, value })\nexport const varying = (value: number | number[], id?: string) => node('varying', { id, value })\nexport const attribute = (value: number | number[], id?: string) => node('varying', { id, value })\nexport const variable = (id: string) => node('variable', { id })\nexport const builtin = (id: string) => node('builtin', { id })\n\n// Default uniforms\nexport const iResolution = uniform([1280, 800], 'iResolution')\nexport const iMouse = uniform([0, 0], 'iMouse')\nexport const iTime = uniform(0, 'iTime')\n\n// Builtin Variables\nexport const position = node('builtin', { id: 'position' })\nexport const vertexIndex = node('builtin', { id: 'vertex_index' })\nexport const instanceIndex = node('builtin', { id: 'instance_index' })\nexport const frontFacing = node('builtin', { id: 'front_facing' })\nexport const fragDepth = node('builtin', { id: 'frag_depth' })\nexport const sampleIndex = node('builtin', { id: 'sample_index' })\nexport const sampleMask = node('builtin', { id: 'sample_mask' })\nexport const pointCoord = node('builtin', { id: 'point_coord' })\n\n// TSL Compatible Builtin Variables\nexport const positionLocal = node('builtin', { id: 'position' })\nexport const positionWorld = node('builtin', { id: 'positionWorld' })\nexport const positionView = node('builtin', { id: 'positionView' })\nexport const normalLocal = node('builtin', { id: 'normalLocal' })\nexport const normalWorld = node('builtin', { id: 'normalWorld' })\nexport const normalView = node('builtin', { id: 'normalView' })\nexport const screenCoordinate = node('builtin', { id: 'screenCoordinate' })\nexport const screenUV = node('builtin', { id: 'screenUV' })\n\n// Legacy aliases for backward compatibility\nexport const fragCoord = position\nexport const vertexId = vertexIndex\n\n// Type constructors\nexport const float = (x: X) => c('float', x)\nexport const int = (x: X) => c('int', x)\nexport const uint = (x: X) => c('uint', x)\nexport const bool = (x: X) => c('bool', x)\nexport const vec2 = (x?: X, y?: X) => c('vec2', x, y)\nexport const vec3 = (x?: X, y?: X, z?: X) => c('vec3', x, y, z)\nexport const vec4 = (x?: X, y?: X, z?: X, w?: X) => c('vec4', x, y, z, w)\nexport const mat2 = (...args: X[]) => c('mat2', ...args)\nexport const mat3 = (...args: X[]) => c('mat3', ...args)\nexport const mat4 = (...args: X[]) => c('mat4', ...args)\nexport const ivec2 = (x?: X, y?: X) => c('ivec2', x, y)\nexport const ivec3 = (x?: X, y?: X, z?: X) => c('ivec3', x, y, z)\nexport const ivec4 = (x?: X, y?: X, z?: X, w?: X) => c('ivec4', x, y, z, w)\nexport const uvec2 = (x?: X, y?: X) => c('uvec2', x, y)\nexport const uvec3 = (x?: X, y?: X, z?: X) => c('uvec3', x, y, z)\nexport const uvec4 = (x?: X, y?: X, z?: X, w?: X) => c('uvec4', x, y, z, w)\nexport const bvec2 = (x?: X, y?: X) => c('bvec2', x, y)\nexport const bvec3 = (x?: X, y?: X, z?: X) => c('bvec3', x, y, z)\nexport const bvec4 = (x?: X, y?: X, z?: X, w?: X) => c('bvec4', x, y, z, w)\nexport const color = (r?: X, g?: X, b?: X) => {\n if (is.num(r) && is.und(g) && is.und(b)) return vec3(...hex2rgb(r))\n return vec3(r, g, b)\n}\n\n// Texture Functions\nexport const texture = (x: X, y: X, z?: X) => f('texture', x, y, z)\nexport const cubeTexture = (x: X, y: X, z?: X) => f('cubeTexture', x, y, z)\nexport const textureSize = (x: X, y?: X) => f('textureSize', x, y)\n\n// Math Functions\nexport const abs = (x: X) => f('abs', x)\nexport const acos = (x: X) => f('acos', x)\nexport const all = (x: X) => f('all', x)\nexport const any = (x: X) => f('any', x)\nexport const asin = (x: X) => f('asin', x)\nexport const atan = (y: X, x?: X) => (x !== undefined ? f('atan', y, x) : f('atan', y))\nexport const atan2 = (y: X, x: X) => f('atan', y, x)\nexport const bitcast = (x: X, y: X) => f('bitcast', x, y)\nexport const cbrt = (x: X) => f('cbrt', x)\nexport const ceil = (x: X) => f('ceil', x)\nexport const clamp = (x: X, min: X, max: X) => f('clamp', x, min, max)\nexport const cos = (x: X) => f('cos', x)\nexport const cross = (x: X, y: X) => f('cross', x, y)\nexport const dFdx = (p: X) => f('dFdx', p)\nexport const dFdy = (p: X) => f('dFdy', p)\nexport const degrees = (radians: X) => f('degrees', radians)\nexport const difference = (x: X, y: X) => f('difference', x, y)\nexport const distance = (x: X, y: X) => f('distance', x, y)\nexport const dot = (x: X, y: X) => f('dot', x, y)\nexport const equals = (x: X, y: X) => f('equals', x, y)\nexport const exp = (x: X) => f('exp', x)\nexport const exp2 = (x: X) => f('exp2', x)\nexport const faceforward = (N: X, I: X, Nref: X) => f('faceforward', N, I, Nref)\nexport const floor = (x: X) => f('floor', x)\nexport const fract = (x: X) => f('fract', x)\nexport const fwidth = (x: X) => f('fwidth', x)\nexport const inverseSqrt = (x: X) => f('inverseSqrt', x)\nexport const length = (x: X) => f('length', x)\nexport const lengthSq = (x: X) => f('lengthSq', x)\nexport const log = (x: X) => f('log', x)\nexport const log2 = (x: X) => f('log2', x)\nexport const max = (x: X, y: X) => f('max', x, y)\nexport const min = (x: X, y: X) => f('min', x, y)\nexport const mix = (x: X, y: X, a: X) => f('mix', x, y, a)\nexport const negate = (x: X) => f('negate', x)\nexport const normalize = (x: X) => f('normalize', x)\nexport const oneMinus = (x: X) => f('oneMinus', x)\nexport const pow = (x: X, y: X) => f('pow', x, y)\nexport const pow2 = (x: X) => f('pow2', x)\nexport const pow3 = (x: X) => f('pow3', x)\nexport const pow4 = (x: X) => f('pow4', x)\nexport const radians = (degrees: X) => f('radians', degrees)\nexport const reciprocal = (x: X) => f('reciprocal', x)\nexport const reflect = (I: X, N: X) => f('reflect', I, N)\nexport const refract = (I: X, N: X, eta: X) => f('refract', I, N, eta)\nexport const round = (x: X) => f('round', x)\nexport const saturate = (x: X) => f('saturate', x)\nexport const sign = (x: X) => f('sign', x)\nexport const sin = (x: X) => f('sin', x)\nexport const smoothstep = (e0: X, e1: X, x: X) => f('smoothstep', e0, e1, x)\nexport const sqrt = (x: X) => f('sqrt', x)\nexport const step = (edge: X, x: X) => f('step', edge, x)\nexport const tan = (x: X) => f('tan', x)\nexport const transformDirection = (dir: X, matrix: X) => f('transformDirection', dir, matrix)\nexport const trunc = (x: X) => f('trunc', x)\n","import { fragment, isNodeProxy, vertex } from '../node'\nimport type { NodeProxy } from '../node'\n\nexport const defaultVertexGLSL = /* cpp */ `\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`\n\nexport const defaultFragmentGLSL = /* cpp */ `\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`\n\nconst createShader = (c: WebGLRenderingContext, source: string, type: number) => {\n const shader = c.createShader(type)\n if (!shader) throw new Error('Failed to create shader')\n c.shaderSource(shader, source.trim())\n c.compileShader(shader)\n if (c.getShaderParameter(shader, c.COMPILE_STATUS)) return shader\n const error = c.getShaderInfoLog(shader)\n c.deleteShader(shader)\n console.warn(`Could not compile shader: ${error}`)\n}\n\nexport const createProgram = (\n c: WebGLRenderingContext,\n vs: string | NodeProxy = defaultVertexGLSL,\n fs: string | NodeProxy = defaultFragmentGLSL,\n onError = () => {}\n) => {\n if (isNodeProxy(fs)) fs = fragment(fs, { isWebGL: true })\n if (isNodeProxy(vs)) vs = vertex(fs, { isWebGL: true })\n const pg = c.createProgram()\n const _vs = createShader(c, vs, c.VERTEX_SHADER)\n const _fs = createShader(c, fs, c.FRAGMENT_SHADER)\n if (!_vs || !_fs) return onError()\n c.attachShader(pg, _vs)\n c.attachShader(pg, _fs)\n c.linkProgram(pg)\n if (c.getProgramParameter(pg, c.LINK_STATUS)) return pg\n const error = c.getProgramInfoLog(pg)\n c.deleteProgram(pg)\n onError()\n console.warn(`Could not link pg: ${error}`)\n}\n\nexport const createVbo = (c: WebGLRenderingContext, data: number[]) => {\n const buffer = c.createBuffer()\n c.bindBuffer(c.ARRAY_BUFFER, buffer)\n c.bufferData(c.ARRAY_BUFFER, new Float32Array(data), c.STATIC_DRAW)\n c.bindBuffer(c.ARRAY_BUFFER, null)\n return buffer\n}\n\nexport const createIbo = (c: WebGLRenderingContext, data: number[]) => {\n const buffer = c.createBuffer()\n c.bindBuffer(c.ELEMENT_ARRAY_BUFFER, buffer)\n c.bufferData(c.ELEMENT_ARRAY_BUFFER, new Int16Array(data), c.STATIC_DRAW)\n c.bindBuffer(c.ELEMENT_ARRAY_BUFFER, null)\n return buffer\n}\n\nexport const getStride = (count: number, value: number[], iboValue?: number[]) => {\n if (iboValue) count = Math.max(...iboValue) + 1\n const stride = value.length / count\n return Math.floor(stride)\n}\n\nexport const createAttrib = (\n c: WebGLRenderingContext,\n stride: number,\n loc: any,\n vbo: WebGLBuffer,\n ibo?: WebGLBuffer\n) => {\n c.bindBuffer(c.ARRAY_BUFFER, vbo)\n c.enableVertexAttribArray(loc)\n c.vertexAttribPointer(loc, stride, c.FLOAT, false, 0, 0)\n if (ibo) c.bindBuffer(c.ELEMENT_ARRAY_BUFFER, ibo)\n}\n\nexport const createTexture = (c: WebGLRenderingContext, img: HTMLImageElement, loc: any, unit: number) => {\n const texture = c.createTexture()\n c.bindTexture(c.TEXTURE_2D, texture)\n c.texImage2D(c.TEXTURE_2D, 0, c.RGBA, c.RGBA, c.UNSIGNED_BYTE, img)\n c.generateMipmap(c.TEXTURE_2D)\n c.texParameteri(c.TEXTURE_2D, c.TEXTURE_MIN_FILTER, c.LINEAR)\n c.texParameteri(c.TEXTURE_2D, c.TEXTURE_MAG_FILTER, c.LINEAR)\n c.texParameteri(c.TEXTURE_2D, c.TEXTURE_WRAP_S, c.CLAMP_TO_EDGE)\n c.texParameteri(c.TEXTURE_2D, c.TEXTURE_WRAP_T, c.CLAMP_TO_EDGE)\n c.bindTexture(c.TEXTURE_2D, null)\n c.uniform1i(loc, unit)\n c.activeTexture(c.TEXTURE0 + unit)\n c.bindTexture(c.TEXTURE_2D, texture)\n}\n","import { nested as cached } from 'reev'\nimport { is } from './utils/helpers'\nimport {\n createDevice,\n createPipeline,\n createDescriptor,\n createUniformBuffer,\n createBindGroup,\n createTextureSampler,\n createVertexBuffer,\n createBufferLayout,\n} from './utils/pipeline'\nimport type { GL, WebGPUState } from './types'\n\nexport const webgpu = async (gl: Partial<GL>) => {\n const c = gl.el!.getContext('webgpu') as any\n const { device, format } = await createDevice(c)\n const state = {\n device,\n context: c,\n resources: [[], []],\n loadingImg: 0,\n needsUpdate: true,\n } as WebGPUState\n\n const bindGroups = [] as any[]\n const vertexBuffers = [] as any[]\n const bufferLayouts = [] as any[]\n\n const attributes = cached((_, value: number[]) => {\n const { array, buffer } = createVertexBuffer(device, value)\n vertexBuffers.push(buffer)\n bufferLayouts.push(createBufferLayout(bufferLayouts.length, array.length, gl.count))\n state.needsUpdate = true\n return { array, buffer }\n })\n\n const uniforms = cached((_, value: number[]) => {\n const { array, buffer } = createUniformBuffer(device, value)\n state.resources[0].push({ buffer })\n state.needsUpdate = true\n return { array, buffer }\n })\n\n const textures = cached((_, { width, height }: HTMLImageElement) => {\n const { texture, sampler } = createTextureSampler(device, width, height)\n state.resources[1].push(sampler, texture.createView())\n state.needsUpdate = true\n return { texture, width, height }\n })\n\n const update = () => {\n const bindGroupLayouts = [] as any\n bindGroups.length = 0\n state.resources.forEach((resource) => {\n if (!resource.length) return\n const { layout, bindGroup } = createBindGroup(device, resource)\n bindGroupLayouts.push(layout)\n bindGroups.push(bindGroup)\n })\n state.pipeline = createPipeline(device, format, bufferLayouts, bindGroupLayouts, gl.vs, gl.fs)\n }\n\n const render = () => {\n if (state.loadingImg) return // ignore if loading img\n if (state.needsUpdate) update() // first rendering\n state.needsUpdate = false\n const encoder = device.createCommandEncoder()\n const pass = encoder.beginRenderPass(createDescriptor(c))\n pass.setPipeline(state.pipeline)\n bindGroups.forEach((v, i) => pass.setBindGroup(i, v))\n vertexBuffers.forEach((v, i) => pass.setVertexBuffer(i, v))\n pass.draw(gl.count, 1, 0, 0)\n pass.end()\n device.queue.submit([encoder.finish()])\n }\n\n const clean = () => {}\n\n const _attribute = (key = '', value: number[]) => {\n const { array, buffer } = attributes(key, value)\n device.queue.writeBuffer(buffer, 0, array)\n }\n\n const _uniform = (key: string, value: number | number[]) => {\n if (is.num(value)) value = [value]\n const { array, buffer } = uniforms(key, value)\n array.set(value)\n device.queue.writeBuffer(buffer, 0, array)\n }\n\n const _texture = (key: string, src: string) => {\n state.loadingImg++\n const source = Object.assign(new Image(), { src, crossOrigin: 'anonymous' })\n source.decode().then(() => {\n const { texture, width, height } = textures(key, source)\n device.queue.copyExternalImageToTexture({ source }, { texture }, { width, height })\n state.loadingImg--\n })\n }\n\n return { webgpu: state, render, clean, _attribute, _uniform, _texture }\n}\n","import { fragment, isNodeProxy, vertex } from '../node'\nimport type { NodeProxy } from '../node'\nimport type { GPUContext, GPUDevice, GPUPipeline } from '../types'\n\nconst defaultVertexWGSL = `\n@vertex\nfn main(@builtin(vertex_index) vertex_index: u32) -> @builtin(position) vec4f {\n let x = f32(vertex_index % 2u) * 4.0 - 1.0;\n let y = f32(vertex_index / 2u) * 4.0 - 1.0;\n return vec4f(x, y, 0.0, 1.0);\n}\n`\n\nconst defaultFragmentWGSL = `\n@group(0) @binding(0) var<uniform> iResolution: vec2f;\n\n@fragment\nfn main(@builtin(position) position: vec4f) -> @location(0) vec4f {\n return vec4f(position.xy / iResolution, 0.0, 1.0);\n}\n`\n\nexport const createDevice = async (c: GPUContext) => {\n const gpu = (navigator as any).gpu\n const format = gpu.getPreferredCanvasFormat()\n const adapter = await gpu.requestAdapter()\n const device = await adapter.requestDevice()\n c.configure({ device, format, alphaMode: 'opaque' })\n return { device, format }\n}\n\nexport const createPipeline = (\n device: GPUDevice,\n format: string,\n bufferLayouts: any[],\n bindGroupLayouts: any[],\n vs: string | NodeProxy = defaultVertexWGSL,\n fs: string | NodeProxy = defaultFragmentWGSL\n) => {\n if (isNodeProxy(vs)) vs = vertex(vs, { isWebGL: false })\n if (isNodeProxy(fs)) fs = fragment(fs, { isWebGL: false })\n const layout = device.createPipelineLayout({ bindGroupLayouts })\n return device.createRenderPipeline({\n vertex: {\n module: device.createShaderModule({ code: vs.trim() }),\n entryPoint: 'main',\n buffers: bufferLayouts,\n },\n fragment: {\n module: device.createShaderModule({ code: fs.trim() }),\n entryPoint: 'main',\n targets: [{ format }],\n },\n layout,\n primitive: { topology: 'triangle-list' },\n }) as GPUPipeline\n}\n\nexport const createBindGroup = (device: GPUDevice, resources: any[]) => {\n const entries0 = [] as any[]\n const entries1 = [] as any[]\n resources.forEach((resource, binding) => {\n if (!resource) return\n const isUniform = 'buffer' in resource // @ts-ignore\n const isTexture = resource instanceof GPUTextureView // @ts-ignore\n const isSampler = resource instanceof GPUSampler // @ts-ignore\n if (isUniform) entries0.push({ binding, visibility: 3, buffer: { type: 'uniform' } })\n else if (isTexture) entries0.push({ binding, visibility: 2, texture: {} })\n else if (isSampler) entries0.push({ binding, visibility: 2, sampler: {} })\n else return\n entries1.push({ binding, resource })\n })\n const layout = device.createBindGroupLayout({ entries: entries0 })\n const bindGroup = device.createBindGroup({ layout, entries: entries1 })\n return { layout, bindGroup }\n}\n\nexport const createDescriptor = (c: GPUContext) => {\n return {\n colorAttachments: [\n {\n view: c.getCurrentTexture().createView(),\n clearValue: { r: 0, g: 0, b: 0, a: 1 },\n loadOp: 'clear',\n storeOp: 'store',\n },\n ],\n }\n}\n\nexport const alignTo256 = (size: number) => Math.ceil(size / 256) * 256\n\nexport const createVertexBuffer = (device: GPUDevice, value: number[]) => {\n const array = new Float32Array(value)\n const buffer = device.createBuffer({ size: array.byteLength, usage: 40 }) // 40 === // GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST\n return { array, buffer }\n}\n\nexport const createUniformBuffer = (device: GPUDevice, value: number[]) => {\n const array = new Float32Array(value)\n const size = alignTo256(array.byteLength)\n const buffer = device.createBuffer({ size, usage: 72 }) as Buffer // 72 === GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n return { array, buffer }\n}\n\nexport const createTextureSampler = (device: GPUDevice, width = 1280, height = 800) => {\n const texture = device.createTexture({ size: [width, height], format: 'rgba8unorm', usage: 22 })\n const sampler = device.createSampler({ magFilter: 'linear', minFilter: 'linear' })\n return { texture, sampler }\n}\n\nconst getVertexStride = (dataLength: number, vertexCount: number) => {\n return dataLength / vertexCount\n}\n\nconst getVertexFormat = (stride: number) => {\n if (stride === 2) return 'float32x2'\n if (stride === 3) return 'float32x3'\n if (stride === 4) return 'float32x4'\n return 'float32'\n}\n\nexport const createBufferLayout = (shaderLocation: number, dataLength: number, count = 6) => {\n const stride = getVertexStride(dataLength, count)\n return {\n arrayStride: stride * 4,\n attributes: [\n {\n shaderLocation,\n offset: 0,\n format: getVertexFormat(stride),\n },\n ],\n }\n}\n"],"mappings":"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","names":["index_exports","__export","ADDITIONAL_FUNCTIONS","BOOL_RETURN_FUNCTIONS","BUILTIN_TYPES","COMPARISON_OPERATORS","COMPONENT_COUNT_TO_TYPE","CONSTANTS","CONVERSIONS","FIRST_ARG_TYPE_FUNCTIONS","FUNCTIONS","Fn","HIGHEST_TYPE_FUNCTIONS","If","LOGICAL_OPERATORS","Loop","OPERATORS","OPERATOR_KEYS","PRESERVE_TYPE_FUNCTIONS","SCALAR_RETURN_FUNCTIONS","SWIZZLES","Switch","TYPE_MAPPING","VEC3_RETURN_FUNCTIONS","VEC4_RETURN_FUNCTIONS","WGSL_TO_GLSL_BUILTIN","abs","acos","alignTo256","all","any","asin","assign","atan","atan2","attribute","bitcast","bool","builtin","bvec2","bvec3","bvec4","cbrt","ceil","clamp","code","color","conversion","cos","createAttrib","createBindGroup","createBufferLayout","createDescriptor","createDevice","createGL","createIbo","createPipeline","createProgram","createTexture","createTextureSampler","createUniformBuffer","createVbo","createVertexBuffer","cross","cubeTexture","dFdx","dFdy","index_default","defaultFragmentGLSL","defaultVertexGLSL","degrees","difference","dig","distance","dot","each","equals","exp","exp2","ext","faceforward","fig","float","floor","flush","formatConversions","fract","fragCoord","fragDepth","fragment","frontFacing","function_","fwidth","generateDefine","getId","getOperator","getStride","hex2rgb","iMouse","iResolution","iTime","infer","inferImpl","instanceIndex","int","inverseSqrt","is","isConversion","isFunction","isGL","isNodeProxy","isOperator","isServer","isSwizzle","isWebGPUSupported","ivec2","ivec3","ivec4","joins","length","lengthSq","log","log2","mat2","mat3","mat4","max","min","mix","negate","node","normalLocal","normalView","normalWorld","normalize","oneMinus","operator","pointCoord","position","positionLocal","positionView","positionWorld","pow","pow2","pow3","pow4","radians","reciprocal","reflect","refract","replace","round","sampleIndex","sampleMask","saturate","screenCoordinate","screenUV","select","sig","sign","sin","smoothstep","sqrt","step","swizzle","tan","texture","textureSize","toVar","transformDirection","trunc","uint","uniform","uvec2","uvec3","uvec4","variable","varying","vec2","vec3","vec4","vertex","vertexId","vertexIndex","webgl","webgpu","__toCommonJS","import_reev","import_refr","import_reev","is","a","each","obj","fn","flush","args","f","replace","x","from","to","ext","src","fig","dig","sig","value","digit","SWIZZLES","CONSTANTS","CONVERSIONS","OPERATORS","OPERATOR_KEYS","SCALAR_RETURN_FUNCTIONS","BOOL_RETURN_FUNCTIONS","PRESERVE_TYPE_FUNCTIONS","VEC3_RETURN_FUNCTIONS","FIRST_ARG_TYPE_FUNCTIONS","HIGHEST_TYPE_FUNCTIONS","VEC4_RETURN_FUNCTIONS","ADDITIONAL_FUNCTIONS","FUNCTIONS","TYPE_MAPPING","COMPONENT_COUNT_TO_TYPE","BUILTIN_TYPES","COMPARISON_OPERATORS","LOGICAL_OPERATORS","WGSL_TO_GLSL_BUILTIN","isSwizzle","key","is","isOperator","OPERATOR_KEYS","isFunction","FUNCTIONS","isConversion","CONVERSIONS","isNodeProxy","x","count","hex2rgb","hex","r","g","b","getId","joins","children","c","code","formatConversions","TYPE_MAPPING","getOperator","op","OPERATORS","generateHead","v","generateDefine","props","id","y","args","returnType","infer","params","arg","i","lines","paramList","name","type","wgslReturnType","wgslParams","generateFragmentMain","body","head","isWebGL","fragment","main","vertex","inferPrimitiveType","x","is","COMPONENT_COUNT_TO_TYPE","inferBinaryOpType","leftType","rightType","op","COMPARISON_OPERATORS","LOGICAL_OPERATORS","leftPriority","CONSTANTS","rightPriority","getHighestPriorityType","args","c","highest","current","currentType","infer","highestPriority","inferSwizzleType","count","inferBuiltinType","id","BUILTIN_TYPES","inferMathType","funcName","firstArgType","FIRST_ARG_TYPE_FUNCTIONS","SCALAR_RETURN_FUNCTIONS","BOOL_RETURN_FUNCTIONS","PRESERVE_TYPE_FUNCTIONS","VEC3_RETURN_FUNCTIONS","VEC4_RETURN_FUNCTIONS","HIGHEST_TYPE_FUNCTIONS","inferImpl","target","type","props","children","value","y","z","isNodeProxy","ret","code","target","c","is","type","props","id","children","x","y","z","head","varType","infer","formatConversions","getOperator","joins","child","args","ret","arg","generateDefine","i","isElseIf","varName","wgslType","glslBuiltin","WGSL_TO_GLSL_BUILTIN","_scope","scoped","x","fun","prev","addToScope","toVar","id","getId","y","node","z","assign","If","condition","scope","ifNode","createChain","_fun","Loop","ret","Switch","value","switchNode","values","val","Fn","args","paramVars","i","paramId","paramVar","toPrimitive","x","hint","code","node","type","props","args","get","_","key","toVar","assign","isSwizzle","swizzle","isOperator","y","operator","isFunction","function_","isConversion","conversion","set","value","swizzle","key","arg","node","operator","args","function_","conversion","select","x","y","z","node","uniform","value","id","varying","attribute","variable","builtin","iResolution","iMouse","iTime","position","vertexIndex","instanceIndex","frontFacing","fragDepth","sampleIndex","sampleMask","pointCoord","positionLocal","positionWorld","positionView","normalLocal","normalWorld","normalView","screenCoordinate","screenUV","fragCoord","vertexId","float","conversion","int","uint","bool","vec2","vec3","vec4","w","mat2","args","mat3","mat4","ivec2","ivec3","ivec4","uvec2","uvec3","uvec4","bvec2","bvec3","bvec4","color","r","g","b","is","hex2rgb","texture","function_","cubeTexture","textureSize","abs","acos","all","any","asin","atan","atan2","bitcast","cbrt","ceil","clamp","min","max","cos","cross","dFdx","p","dFdy","degrees","radians","difference","distance","dot","equals","exp","exp2","faceforward","N","I","Nref","floor","fract","fwidth","inverseSqrt","length","lengthSq","log","log2","mix","a","negate","normalize","oneMinus","pow","pow2","pow3","pow4","reciprocal","reflect","refract","eta","round","saturate","sign","sin","smoothstep","e0","e1","sqrt","step","edge","tan","transformDirection","dir","matrix","trunc","defaultVertexGLSL","defaultFragmentGLSL","createShader","c","source","type","shader","error","createProgram","vs","fs","onError","isNodeProxy","fragment","vertex","pg","_vs","_fs","createVbo","data","buffer","createIbo","getStride","count","value","iboValue","stride","createAttrib","loc","vbo","ibo","createTexture","img","unit","texture","webgl","gl","c","pg","createProgram","_activeUnit","uniforms","cached","key","attribs","units","value","iboValue","loc","vbo","createVbo","ibo","createIbo","str","getStride","createAttrib","is","l","src","image","unit","createTexture","import_reev","defaultVertexWGSL","defaultFragmentWGSL","createDevice","c","gpu","format","device","createPipeline","bufferLayouts","bindGroupLayouts","vs","fs","isNodeProxy","vertex","fragment","layout","createBindGroup","resources","entries0","entries1","resource","binding","isUniform","isTexture","isSampler","bindGroup","createDescriptor","alignTo256","size","createVertexBuffer","value","array","buffer","createUniformBuffer","createTextureSampler","width","height","texture","sampler","getVertexStride","dataLength","vertexCount","getVertexFormat","stride","createBufferLayout","shaderLocation","count","webgpu","gl","c","device","format","createDevice","state","bindGroups","vertexBuffers","bufferLayouts","attributes","cached","_","value","array","buffer","createVertexBuffer","createBufferLayout","uniforms","createUniformBuffer","textures","width","height","texture","sampler","createTextureSampler","update","bindGroupLayouts","resource","layout","bindGroup","createBindGroup","createPipeline","encoder","pass","createDescriptor","v","i","key","is","src","source","isGL","a","is","isServer","isWebGPUSupported","iTime","createGL","props","gl","k","v","i","webgl","webgpu","w","h","_e","x","y","top","left","index_default"]}
|