glre 0.26.0 → 0.28.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 +10 -9
- package/dist/index.cjs +66 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +547 -0
- package/dist/index.js +39 -21
- package/dist/index.js.map +1 -1
- package/dist/native.cjs +66 -0
- package/dist/native.cjs.map +1 -0
- package/dist/native.d.cts +53 -0
- package/dist/native.js +39 -21
- package/dist/native.js.map +1 -1
- package/dist/react.cjs +66 -0
- package/dist/react.cjs.map +1 -0
- package/dist/react.d.cts +8 -0
- package/dist/react.js +40 -22
- package/dist/react.js.map +1 -1
- package/dist/solid.cjs +66 -0
- package/dist/solid.cjs.map +1 -0
- package/dist/solid.d.cts +8 -0
- package/dist/solid.js +40 -22
- package/dist/solid.js.map +1 -1
- package/package.json +2 -1
- package/src/index.ts +0 -2
- package/src/native.ts +2 -2
- package/src/node/code.ts +103 -0
- package/src/node/const.ts +158 -98
- package/src/node/index.ts +109 -82
- package/src/node/infer.ts +93 -0
- package/src/node/node.ts +43 -92
- package/src/node/scope.ts +121 -0
- package/src/node/types.ts +120 -86
- package/src/node/utils.ts +95 -0
- package/src/utils/pipeline.ts +4 -5
- package/src/utils/program.ts +13 -9
- package/src/webgl.ts +1 -1
- package/src/webgpu.ts +2 -2
- package/dist/index.d.ts +0 -399
- package/dist/index.mjs +0 -48
- package/dist/index.mjs.map +0 -1
- package/dist/native.d.ts +0 -53
- package/dist/native.mjs +0 -48
- package/dist/native.mjs.map +0 -1
- package/dist/react.d.ts +0 -8
- package/dist/react.mjs +0 -48
- package/dist/react.mjs.map +0 -1
- package/dist/solid.d.ts +0 -8
- package/dist/solid.mjs +0 -48
- package/dist/solid.mjs.map +0 -1
- package/src/code/glsl.ts +0 -148
- package/src/code/wgsl.ts +0 -134
- package/src/node/cache.ts +0 -60
- package/src/node/conv.ts +0 -111
- package/src/node/uniform.ts +0 -92
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 =
|
|
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 })
|
|
@@ -177,8 +177,9 @@ esm supported ([codesandbox demo](https://codesandbox.io/s/glre-basic-demo3-3bhr
|
|
|
177
177
|
|
|
178
178
|
```html
|
|
179
179
|
<script type="module">
|
|
180
|
-
import
|
|
181
|
-
|
|
180
|
+
import createGL from 'https://esm.sh/glre'
|
|
181
|
+
import { vec4, fract, position, iResolution } from 'https://esm.sh/glre'
|
|
182
|
+
const frag = vec4(fract(position.xy.div(iResolution)), 0, 1)
|
|
182
183
|
function App() {
|
|
183
184
|
const el = document.createElement('canvas')
|
|
184
185
|
createGL({ el, frag }).mount()
|
|
@@ -207,7 +208,7 @@ The node system provides various types and functions that mirror GLSL functional
|
|
|
207
208
|
import { float, int, vec2, vec3, vec4, mat3, mat4 } from 'glre'
|
|
208
209
|
|
|
209
210
|
// Built-in variables
|
|
210
|
-
import {
|
|
211
|
+
import { position, position, iResolution, iTime } from 'glre'
|
|
211
212
|
|
|
212
213
|
// Math functions
|
|
213
214
|
import { sin, cos, abs, pow, mix, clamp, normalize } from 'glre'
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";var Q=Object.defineProperty;var Ke=Object.getOwnPropertyDescriptor;var He=Object.getOwnPropertyNames;var Ze=Object.prototype.hasOwnProperty;var Qe=(e,t)=>{for(var r in t)Q(e,r,{get:t[r],enumerable:!0})},Je=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of He(t))!Ze.call(e,n)&&n!==r&&Q(e,n,{get:()=>t[n],enumerable:!(o=Ke(t,n))||o.enumerable});return e};var et=e=>Je(Q({},"__esModule",{value:!0}),e);var mo={};Qe(mo,{ADDITIONAL_FUNCTIONS:()=>Ie,BOOL_RETURN_FUNCTIONS:()=>B,BUILTIN_TYPES:()=>oe,COMPARISON_OPERATORS:()=>ne,COMPONENT_COUNT_TO_TYPE:()=>q,CONSTANTS:()=>L,CONVERSIONS:()=>J,FIRST_ARG_TYPE_FUNCTIONS:()=>M,FUNCTIONS:()=>te,Fn:()=>gt,HIGHEST_TYPE_FUNCTIONS:()=>W,If:()=>xt,LOGICAL_OPERATORS:()=>se,Loop:()=>dt,OPERATORS:()=>F,OPERATOR_KEYS:()=>ee,PRESERVE_TYPE_FUNCTIONS:()=>z,SCALAR_RETURN_FUNCTIONS:()=>$,SWIZZLES:()=>at,Switch:()=>bt,TYPE_MAPPING:()=>re,VEC3_RETURN_FUNCTIONS:()=>V,VEC4_RETURN_FUNCTIONS:()=>D,abs:()=>ir,acos:()=>ar,alignTo256:()=>De,all:()=>ur,any:()=>cr,asin:()=>fr,assign:()=>xe,atan:()=>pr,atan2:()=>lr,attribute:()=>Nt,bitcast:()=>mr,bool:()=>Vt,bvec2:()=>Jt,bvec3:()=>er,bvec4:()=>tr,cbrt:()=>xr,ceil:()=>dr,clamp:()=>br,code:()=>c,color:()=>rr,cos:()=>gr,createAttrib:()=>Te,createBindGroup:()=>Re,createBufferLayout:()=>Le,createDescriptor:()=>Se,createDevice:()=>_e,createGL:()=>ke,createIbo:()=>Xe,createPipeline:()=>Pe,createProgram:()=>ge,createTexture:()=>Ee,createTextureSampler:()=>Ce,createUniformBuffer:()=>we,createVbo:()=>ve,createVertexBuffer:()=>Ne,cross:()=>vr,cubeTexture:()=>nr,dFdx:()=>Xr,dFdy:()=>yr,default:()=>lo,defaultFragmentGLSL:()=>We,defaultVertexGLSL:()=>Me,degrees:()=>Tr,difference:()=>Er,dig:()=>st,distance:()=>hr,dot:()=>_r,each:()=>Ge,equals:()=>Pr,exp:()=>Rr,exp2:()=>Sr,ext:()=>ot,f:()=>i,faceforward:()=>Nr,fig:()=>nt,float:()=>$t,floor:()=>wr,flush:()=>tt,formatConversions:()=>O,fract:()=>Cr,fragment:()=>G,fwidth:()=>Lr,getId:()=>R,getOperator:()=>pe,getStride:()=>ye,hex2rgb:()=>fe,iMouse:()=>ht,iResolution:()=>Et,iTime:()=>_t,infer:()=>_,inferParameterTypes:()=>mt,int:()=>Bt,inverseSqrt:()=>Or,is:()=>l,isConversion:()=>ue,isFunction:()=>ae,isGL:()=>po,isNodeProxy:()=>ce,isOperator:()=>ie,isServer:()=>qe,isSwizzle:()=>Y,isWebGPUSupported:()=>Ye,ivec2:()=>kt,ivec3:()=>jt,ivec4:()=>Kt,joins:()=>k,length:()=>Ur,lengthSq:()=>Gr,log:()=>Ir,log2:()=>Ar,mat2:()=>Dt,mat3:()=>qt,mat4:()=>Yt,max:()=>Fr,min:()=>$r,mix:()=>Br,n:()=>b,negate:()=>zr,node:()=>u,normalLocal:()=>Ut,normalView:()=>It,normalWorld:()=>Gt,normalize:()=>Vr,o:()=>ze,oneMinus:()=>Mr,position:()=>Pt,positionLocal:()=>Ct,positionView:()=>Ot,positionWorld:()=>Lt,pow:()=>Wr,pow2:()=>Dr,pow3:()=>qr,pow4:()=>Yr,radians:()=>kr,reciprocal:()=>jr,reflect:()=>Kr,refract:()=>Hr,replace:()=>rt,round:()=>Zr,s:()=>de,saturate:()=>Qr,screenCoordinate:()=>At,screenUV:()=>Ft,select:()=>Tt,sig:()=>it,sign:()=>Jr,sin:()=>eo,smoothstep:()=>to,sqrt:()=>ro,step:()=>oo,tan:()=>no,texture:()=>or,textureSize:()=>sr,toConst:()=>me,toVar:()=>le,transformDirection:()=>so,trunc:()=>io,u:()=>A,uint:()=>zt,uv:()=>Rt,uvec2:()=>Ht,uvec3:()=>Zt,uvec4:()=>Qt,v:()=>yt,varying:()=>vt,vec2:()=>Mt,vec3:()=>be,vec4:()=>Wt,vertex:()=>I,vertexColor:()=>St,vertexStage:()=>wt,webgl:()=>he,webgpu:()=>Oe});module.exports=et(mo);var U=require("reev"),H=require("refr");var j=require("reev");var l={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),tt=(e,...t)=>{Ge(e,r=>r(...t))},rt=(e="",t="_",r="/")=>e.split(t).join(r),ot=(e=".pdf")=>e.split(".").pop()?.toLowerCase()??"",nt=(e=0)=>`${e}`.split(".")[1]?.length??0,st=(e=0)=>`${e}`.split(".")[0]?.length-(e<0?1:0),it=(e=0,t=-2)=>(t*=-1,t=Math.pow(10,t),e*=t,e=Math.round(e),e/=t,e);var at=["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"],J=["toFloat","toInt","toUint","toBool","toVec2","toVec3","toVec4","toIvec2","toIvec3","toIvec4","toUvec2","toUvec3","toUvec4","toBvec2","toBvec3","toBvec4","toMat2","toMat3","toMat4","toColor"],F={add:"+",sub:"-",mul:"*",div:"/",mod:"%",equal:"==",notEqual:"!=",lessThan:"<",lessThanEqual:"<=",greaterThan:">",greaterThanEqual:">=",and:"&&",or:"||",bitAnd:"&",bitOr:"|",bitXor:"^",shiftLeft:"<<",shiftRight:">>"},ee=Object.keys(F),$=["dot","distance","length","lengthSq","determinant","luminance"],B=["all","any"],z=["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"],V=["cross"],M=["reflect","refract"],W=["min","max","mix","clamp","step","smoothstep"],D=["texture","textureLod","textureSize","cubeTexture"],Ie=["atan2","degrees","faceforward","bitcast","cbrt","difference","equals","pow","pow2","pow3","pow4","radians","transformDirection"],te=[...$,...B,...z,...V,...M,...W,...D,...Ie],re={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>"},q={1:"float",2:"vec2",3:"vec3",4:"vec4",9:"mat3",16:"mat4"},oe={gl_FragCoord:"vec4",position:"vec3",normal:"vec3",uv:"vec2",color:"vec4"},ne=["equal","notEqual","lessThan","lessThanEqual","greaterThan","greaterThanEqual"],se=["and","or"];var Y=e=>l.str(e)&&/^[xyzwrgbastpq]{1,4}$/.test(e),ie=e=>ee.includes(e),ae=e=>te.includes(e),ue=e=>J.includes(e),ce=e=>!e||!l.fun(e)?!1:e.isProxy,ut=0,fe=e=>{let t=(e>>16&255)/255,r=(e>>8&255)/255,o=(e&255)/255;return[t,r,o]},R=()=>`i${ut++}`,k=(e,t)=>e.filter(r=>!l.und(r)&&!l.nul(r)).map(r=>c(r,t)).join(", "),O=(e,t)=>l.str(e)?t?.isWebGL?e:re[e]:"",pe=e=>F[e]||e,Ae=e=>{let t=Array.from(e.uniforms).map((o,n)=>e.isWebGL?`uniform ${o};`:`@group(0) @binding(${n}) var<uniform> ${o};`).join(`
|
|
2
|
+
`),r=Array.from(e.functions).join(`
|
|
3
|
+
`);return`${t}
|
|
4
|
+
${r}`},Fe=(e,t,r=!0)=>r?`
|
|
5
|
+
#version 300 es
|
|
6
|
+
precision mediump float;
|
|
7
|
+
out vec4 fragColor;
|
|
8
|
+
${t}
|
|
9
|
+
void main() {
|
|
10
|
+
fragColor = ${e};
|
|
11
|
+
}`.trim():`
|
|
12
|
+
${t}
|
|
13
|
+
@fragment
|
|
14
|
+
fn main(@builtin(position) position: vec4f) -> @location(0) vec4f {
|
|
15
|
+
return ${e};
|
|
16
|
+
}`.trim(),G=(e,t)=>{let r=c(e,t),o=Ae(t);return Fe(r,o,t.isWebGL)},I=(e,t)=>{let r=c(e,t),o=Ae(t);return Fe(r,o,t.isWebGL)};var $e=e=>l.bol(e)?"bool":l.num(e)?Number.isInteger(e)?"int":"float":l.arr(e)&&q[e.length]||"float",Be=(e,t,r)=>{if(ne.includes(r)||se.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 o=L.indexOf(e),n=L.indexOf(t);return o>=n?e:t},ct=e=>e.reduce((t,r)=>{let o=_(r),n=L.indexOf(t);return L.indexOf(o)>n?o:t},"float"),ft=e=>q[e]||"vec4",pt=e=>e?oe[e]:"vec3",lt=(e,t)=>{let r=t.length>0?_(t[0]):"float";return M.includes(e)?r:$.includes(e)?"float":B.includes(e)?"bool":z.includes(e)?r:V.includes(e)?"vec3":D.includes(e)?"vec4":W.includes(e)?ct(t):r},_=(e,t)=>{if(!e)throw"";if(!ce(e))return $e(e);let{type:r,props:o}=e,{id:n,children:s=[],value:a,returnType:f}=o,[X,p,m]=s;return r==="uniform"||r==="variable"||r==="constant"||r==="attribute"||r==="varying"?$e(a):r==="conversions"?X:r==="operator"?Be(_(p,t),_(m,t),X):r==="math_fun"?lt(X,s.slice(1)):r==="swizzle"?ft(X.length):r==="ternary"?Be(_(p,t),_(m,t),"add"):r==="fn_run"||r==="fn_def"?f:r==="builtin"?pt(n):"float"},mt=(e,t)=>e.map(r=>_(r,t));var c=(e,t)=>{if(t||(t={}),t.uniforms||(t.uniforms=new Set),t.functions||(t.functions=new Set),l.num(e))return e.toFixed(1);if(l.str(e))return e;if(l.bol(e))return e.toString();if(!e)return"";let{type:r,props:o}=e,{id:n="",children:s=[]}=o,[a,f,X]=s;if(r==="uniform"){let p=_(e,t);return t.uniforms.add(`${p} ${n}`),t.onUniform?.(n,o.value),n}if(r==="variable"||r==="varying"||r==="constant"||r==="attribute")return n;if(r==="vertex_stage")return c(a,t);if(r==="swizzle")return`${c(f,t)}.${c(a,t)}`;if(r==="operator")return a==="not"||a==="bitNot"?`!${c(f,t)}`:`(${c(f,t)} ${pe(a)} ${c(X,t)})`;if(r==="math_fun")return`${a}(${k(s.slice(1),t)})`;if(r==="conversions")return`${O(a,t)}(${k(s.slice(1),t)})`;if(r==="scope")return s.map(p=>c(p,t)).join(`
|
|
17
|
+
`);if(r==="assign")return`${c(a,t)} = ${c(f,t)};`;if(r==="fn_run")return t.functions.add(c(a,t)),`${n}(${s.slice(1).map(p=>c(p,t)).join(", ")})`;if(r==="fn_def"){let{paramInfo:p=[],returnType:m}=o,y=c(a,t),C=f?`return ${c(f,t)};`:"";if(t?.isWebGL){let T=p.map(({name:E,type:h})=>`${h} ${E}`).join(", ");return`${m} ${n}(${T}) {
|
|
18
|
+
${y}
|
|
19
|
+
${C}
|
|
20
|
+
}`}else{let T=O(m,t),E=p.map(({name:h,type:P})=>{let g=O(P,t);return`${h}: ${g}`}).join(", ");return`fn ${n}(${E}) -> ${T} {
|
|
21
|
+
${y}
|
|
22
|
+
${C}
|
|
23
|
+
}`}}if(r==="loop")return`for (int i = 0; i < ${a}; i++) {
|
|
24
|
+
${c(f,t)}
|
|
25
|
+
}`;if(r==="if"){let p=`if (${c(a,t)}) {
|
|
26
|
+
${c(f,t)}
|
|
27
|
+
}`;for(let m=2;m<s.length;m+=2){let y=m>=s.length-1;p+=y?` else {
|
|
28
|
+
${c(s[m],t)}
|
|
29
|
+
}`:` else if (${c(s[m],t)}) {
|
|
30
|
+
${c(s[m+1],t)}
|
|
31
|
+
}`}return p}if(r==="switch"){let p=`switch (${c(a,t)}) {
|
|
32
|
+
`;for(let m of s.slice(1))p+=c(m,t)+`
|
|
33
|
+
`;return p+="}",p}if(r==="case"){let p=s.slice(0,-1),m=s[s.length-1],y="";for(let C of p)y+=`case ${c(C,t)}:
|
|
34
|
+
`;return y+=`${c(m,t)}
|
|
35
|
+
break;
|
|
36
|
+
`,y}if(r==="default"&&`${c(a,t)}`,r==="ternary")return`(${c(a,t)} ? ${c(f,t)} : ${c(X,t)})`;if(r==="declare"){let p=_(f,t),m=a?.props?.id;if(t.isWebGL)return`${p} ${m} = ${c(f,t)};`;let y=O(p);return`var ${m}: ${y} = ${c(f,t)};`}if(r==="builtin"){if(t?.isWebGL){if(n==="position")return"gl_FragCoord";if(n==="uv")return"gl_FragCoord.xy"}return n}return c(a,t)};var S=null,N=(e,t=()=>{})=>{let r=S;S=e,t(),S=r},w=e=>{S&&(S.props.children||(S.props.children=[]),S.props.children.push(e))},xt=(e,t)=>{let r=u("scope");N(r,t);let o=u("if",null,e,r);w(o);let n=()=>({ElseIf:(s,a)=>{let f=u("scope");return N(f,a),o.props.children.push(s,f),n()},Else:s=>{let a=u("scope");N(a,s),o.props.children.push(a)}});return n()},dt=(e,t)=>{let r=u("scope");N(r,()=>t?.({i:u("variable",{id:"i"})}));let o=u("loop",null,e,r);return w(o),o},bt=e=>{let t=u("switch",null,e);w(t);let r=()=>({Case:(...o)=>n=>{let s=u("scope");N(s,n);let a=u("case",null,...o,s);return t.props.children.push(a),r()},Default:o=>{let n=u("scope");N(n,o);let s=u("default",null,n);t.props.children.push(s)}});return r()},gt=e=>{let t=R();return(...r)=>{let o=u("scope"),n,s=[];for(let p=0;p<r.length;p++){let m=`p${p}`,y=u("variable",{id:m});s.push(y)}N(o,()=>n=e(s));let a=n?_(n):"void",f=r.map((p,m)=>({name:`p${m}`,type:_(p)})),X=u("fn_def",{id:t,returnType:a,paramInfo:f,args:r},o,n);return u("fn_run",{id:t,returnType:a},X,...s)}},le=e=>t=>{t||(t=R());let r=u("variable",{id:t}),o=u("declare",null,r,e);return w(o),r},me=e=>t=>{t||(t=R());let r=u("constant",{id:t}),o=u("declare",null,r,e);return w(o),r},xe=e=>t=>{let r=u("assign",null,e,t);return w(r),e},vt=(e,t)=>{t||(t=R());let r=u("varying",{id:t}),o=u("declare",null,r,e);return w(o),r};var Xt=e=>t=>{if(t==="string")return c(e)},u=(e,t,...r)=>{t||(t={}),r.length&&(t.children=r);let o=new Proxy(()=>{},{get(n,s){if(s==="type")return e;if(s==="props")return t;if(s==="toVar")return le(o);if(s==="toConst")return me(o);if(s==="assign")return xe(o);if(s==="isProxy")return!0;if(s==="toString")return c.bind(null,o);if(s===Symbol.toPrimitive)return Xt(o);if(Y(s))return de(s,o);if(ie(s))return(...a)=>ze(s,o,...a);if(ae(s))return(...a)=>i(s,o,...a);if(ue(s))return b(s,o)},set(n,s,a){return Y(s)?(de(s,o).assign(a),!0):!1}});return o},yt=(...e)=>u("variable",{id:R()},...e),de=(e,t)=>u("swizzle",null,e,t),b=(e,...t)=>u("conversions",null,e,...t),ze=(e,...t)=>u("operator",null,e,...t),i=(e,...t)=>u("math_fun",null,e,...t),A=(e,t)=>u("uniform",{id:e,value:t}),Tt=(e,t,r)=>u("ternary",null,e,t,r);var Et=A("iResolution",[1280,800]),ht=A("iMouse",[0,0]),_t=A("iTime",0),Pt=u("variable",{id:"gl_FragCoord"}),Rt=(e=0)=>u("attribute",{id:`uv${e||""}`}),St=(e=0)=>u("attribute",{id:`color${e||""}`}),Nt=(e,t)=>u("attribute",{id:e,type:t}),wt=e=>u("vertex_stage",null,e),Ct=u("builtin",{id:"positionLocal"}),Lt=u("builtin",{id:"positionWorld"}),Ot=u("builtin",{id:"positionView"}),Ut=u("builtin",{id:"normalLocal"}),Gt=u("builtin",{id:"normalWorld"}),It=u("builtin",{id:"normalView"}),At=u("builtin",{id:"screenCoordinate"}),Ft=u("builtin",{id:"screenUV"}),$t=e=>b("float",e),Bt=e=>b("int",e),zt=e=>b("uint",e),Vt=e=>b("bool",e),Mt=(e,t)=>b("vec2",e,t),be=(e,t,r)=>b("vec3",e,t,r),Wt=(e,t,r,o)=>b("vec4",e,t,r,o),Dt=(...e)=>b("mat2",...e),qt=(...e)=>b("mat3",...e),Yt=(...e)=>b("mat4",...e),kt=(e,t)=>b("ivec2",e,t),jt=(e,t,r)=>b("ivec3",e,t,r),Kt=(e,t,r,o)=>b("ivec4",e,t,r,o),Ht=(e,t)=>b("uvec2",e,t),Zt=(e,t,r)=>b("uvec3",e,t,r),Qt=(e,t,r,o)=>b("uvec4",e,t,r,o),Jt=(e,t)=>b("bvec2",e,t),er=(e,t,r)=>b("bvec3",e,t,r),tr=(e,t,r,o)=>b("bvec4",e,t,r,o),rr=(e,t,r)=>l.num(e)&&l.und(t)&&l.und(r)?be(...fe(e)):be(e,t,r),or=(e,t,r)=>i("texture",e,t,r),nr=(e,t,r)=>i("cubeTexture",e,t,r),sr=(e,t)=>i("textureSize",e,t),ir=e=>i("abs",e),ar=e=>i("acos",e),ur=e=>i("all",e),cr=e=>i("any",e),fr=e=>i("asin",e),pr=(e,t)=>t!==void 0?i("atan",e,t):i("atan",e),lr=(e,t)=>i("atan",e,t),mr=(e,t)=>i("bitcast",e,t),xr=e=>i("cbrt",e),dr=e=>i("ceil",e),br=(e,t,r)=>i("clamp",e,t,r),gr=e=>i("cos",e),vr=(e,t)=>i("cross",e,t),Xr=e=>i("dFdx",e),yr=e=>i("dFdy",e),Tr=e=>i("degrees",e),Er=(e,t)=>i("difference",e,t),hr=(e,t)=>i("distance",e,t),_r=(e,t)=>i("dot",e,t),Pr=(e,t)=>i("equals",e,t),Rr=e=>i("exp",e),Sr=e=>i("exp2",e),Nr=(e,t,r)=>i("faceforward",e,t,r),wr=e=>i("floor",e),Cr=e=>i("fract",e),Lr=e=>i("fwidth",e),Or=e=>i("inverseSqrt",e),Ur=e=>i("length",e),Gr=e=>i("lengthSq",e),Ir=e=>i("log",e),Ar=e=>i("log2",e),Fr=(e,t)=>i("max",e,t),$r=(e,t)=>i("min",e,t),Br=(e,t,r)=>i("mix",e,t,r),zr=e=>i("negate",e),Vr=e=>i("normalize",e),Mr=e=>i("oneMinus",e),Wr=(e,t)=>i("pow",e,t),Dr=e=>i("pow2",e),qr=e=>i("pow3",e),Yr=e=>i("pow4",e),kr=e=>i("radians",e),jr=e=>i("reciprocal",e),Kr=(e,t)=>i("reflect",e,t),Hr=(e,t,r)=>i("refract",e,t,r),Zr=e=>i("round",e),Qr=e=>i("saturate",e),Jr=e=>i("sign",e),eo=e=>i("sin",e),to=(e,t,r)=>i("smoothstep",e,t,r),ro=e=>i("sqrt",e),oo=(e,t)=>i("step",e,t),no=e=>i("tan",e),so=(e,t)=>i("transformDirection",e,t),io=e=>i("trunc",e);var Me=`
|
|
37
|
+
#version 300 es
|
|
38
|
+
void main() {
|
|
39
|
+
float x = float(gl_VertexID % 2) * 4.0 - 1.0;
|
|
40
|
+
float y = float(gl_VertexID / 2) * 4.0 - 1.0;
|
|
41
|
+
gl_Position = vec4(x, y, 0.0, 1.0);
|
|
42
|
+
}
|
|
43
|
+
`,We=`
|
|
44
|
+
#version 300 es
|
|
45
|
+
precision mediump float;
|
|
46
|
+
uniform vec2 iResolution;
|
|
47
|
+
out vec4 fragColor;
|
|
48
|
+
void main() {
|
|
49
|
+
fragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
|
|
50
|
+
}
|
|
51
|
+
`,Ve=(e,t,r)=>{let o=e.createShader(r);if(!o)throw new Error("Failed to create shader");if(e.shaderSource(o,t.trim()),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS))return o;let n=e.getShaderInfoLog(o);e.deleteShader(o),console.warn(`Could not compile shader: ${n}`)},ge=(e,t=Me,r=We,o=()=>{})=>{l.str(r)||(r=G(r,{isWebGL:!0})),l.str(t)||(t=I(r,{isWebGL:!0}));let n=e.createProgram(),s=Ve(e,t,e.VERTEX_SHADER),a=Ve(e,r,e.FRAGMENT_SHADER);if(!s||!a)return o();if(e.attachShader(n,s),e.attachShader(n,a),e.linkProgram(n),e.getProgramParameter(n,e.LINK_STATUS))return n;let f=e.getProgramInfoLog(n);e.deleteProgram(n),o(),console.warn(`Could not link pg: ${f}`)},ve=(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},ye=(e,t,r)=>{r&&(e=Math.max(...r)+1);let o=t.length/e;return Math.floor(o)},Te=(e,t,r,o,n)=>{e.bindBuffer(e.ARRAY_BUFFER,o),e.enableVertexAttribArray(r),e.vertexAttribPointer(r,t,e.FLOAT,!1,0,0),n&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n)},Ee=(e,t,r,o)=>{let n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n),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,o),e.activeTexture(e.TEXTURE0+o),e.bindTexture(e.TEXTURE_2D,n)};var he=async e=>{let t=e.el.getContext("webgl2"),r=ge(t,e.vs,e.fs,()=>void(e.isLoop=!1)),o={context:t,program:r};t.useProgram(r);let n=0,s=(0,j.nested)(T=>t.getUniformLocation(r,T)),a=(0,j.nested)(T=>t.getAttribLocation(r,T)),f=(0,j.nested)(()=>n++);return{webgl:o,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,h)=>{let P=a(T,!0),g=ve(t,E),x=Xe(t,h),d=ye(e.count,E,h);Te(t,d,P,g,x)},_uniform:(T,E)=>{let h=s(T);if(l.num(E))return t.uniform1f(h,E);let P=E.length;if(P<=4)return t[`uniform${P}fv`](h,E);P=Math.sqrt(P)<<0,t[`uniformMatrix${P}fv`](h,!1,E)},_texture:(T,E)=>{let h=new Image;Object.assign(h,{src:E,crossOrigin:"anonymous"}),h.decode().then(()=>{let P=s(T),g=f(T);Ee(t,h,P,g)})}}};var K=require("reev");var ao=`
|
|
52
|
+
@vertex
|
|
53
|
+
fn main(@builtin(vertex_index) vertex_index: u32) -> @builtin(position) vec4f {
|
|
54
|
+
let x = f32(vertex_index % 2u) * 4.0 - 1.0;
|
|
55
|
+
let y = f32(vertex_index / 2u) * 4.0 - 1.0;
|
|
56
|
+
return vec4f(x, y, 0.0, 1.0);
|
|
57
|
+
}
|
|
58
|
+
`,uo=`
|
|
59
|
+
@group(0) @binding(0) var<uniform> iResolution: vec2f;
|
|
60
|
+
|
|
61
|
+
@fragment
|
|
62
|
+
fn main(@builtin(position) position: vec4f) -> @location(0) vec4f {
|
|
63
|
+
return vec4f(position.xy / iResolution, 0.0, 1.0);
|
|
64
|
+
}
|
|
65
|
+
`,_e=async e=>{let t=navigator.gpu,r=t.getPreferredCanvasFormat(),n=await(await t.requestAdapter()).requestDevice();return e.configure({device:n,format:r,alphaMode:"opaque"}),{device:n,format:r}},Pe=(e,t,r,o,n=ao,s=uo)=>{l.str(s)||(s=G(s,{isWebGL:!1})),l.str(n)||(n=I(n,{isWebGL:!1}));let a=e.createPipelineLayout({bindGroupLayouts:o});return e.createRenderPipeline({vertex:{module:e.createShaderModule({code:n.trim()}),entryPoint:"main",buffers:r},fragment:{module:e.createShaderModule({code:s.trim()}),entryPoint:"main",targets:[{format:t}]},layout:a,primitive:{topology:"triangle-list"}})},Re=(e,t)=>{let r=[],o=[];t.forEach((a,f)=>{if(!a)return;let X="buffer"in a,p=a instanceof GPUTextureView,m=a instanceof GPUSampler;if(X)r.push({binding:f,visibility:3,buffer:{type:"uniform"}});else if(p)r.push({binding:f,visibility:2,texture:{}});else if(m)r.push({binding:f,visibility:2,sampler:{}});else return;o.push({binding:f,resource:a})});let n=e.createBindGroupLayout({entries:r}),s=e.createBindGroup({layout:n,entries:o});return{layout:n,bindGroup:s}},Se=e=>({colorAttachments:[{view:e.getCurrentTexture().createView(),clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]}),De=e=>Math.ceil(e/256)*256,Ne=(e,t)=>{let r=new Float32Array(t),o=e.createBuffer({size:r.byteLength,usage:40});return{array:r,buffer:o}},we=(e,t)=>{let r=new Float32Array(t),o=De(r.byteLength),n=e.createBuffer({size:o,usage:72});return{array:r,buffer:n}},Ce=(e,t=1280,r=800)=>{let o=e.createTexture({size:[t,r],format:"rgba8unorm",usage:22}),n=e.createSampler({magFilter:"linear",minFilter:"linear"});return{texture:o,sampler:n}},co=(e,t)=>e/t,fo=e=>e===2?"float32x2":e===3?"float32x3":e===4?"float32x4":"float32",Le=(e,t,r=6)=>{let o=co(t,r);return{arrayStride:o*4,attributes:[{shaderLocation:e,offset:0,format:fo(o)}]}};var Oe=async e=>{let t=e.el.getContext("webgpu"),{device:r,format:o}=await _e(t),n={device:r,context:t,resources:[[],[]],loadingImg:0,needsUpdate:!0},s=[],a=[],f=[],X=(0,K.nested)((g,x)=>{let{array:d,buffer:v}=Ne(r,x);return a.push(v),f.push(Le(f.length,d.length,e.count)),n.needsUpdate=!0,{array:d,buffer:v}}),p=(0,K.nested)((g,x)=>{let{array:d,buffer:v}=we(r,x);return n.resources[0].push({buffer:v}),n.needsUpdate=!0,{array:d,buffer:v}}),m=(0,K.nested)((g,{width:x,height:d})=>{let{texture:v,sampler:Z}=Ce(r,x,d);return n.resources[1].push(Z,v.createView()),n.needsUpdate=!0,{texture:v,width:x,height:d}}),y=()=>{let g=[];s.length=0,n.resources.forEach(x=>{if(!x.length)return;let{layout:d,bindGroup:v}=Re(r,x);g.push(d),s.push(v)}),n.pipeline=Pe(r,o,f,g,e.vs,e.fs)};return{webgpu:n,render:()=>{if(n.loadingImg)return;n.needsUpdate&&y(),n.needsUpdate=!1;let g=r.createCommandEncoder(),x=g.beginRenderPass(Se(t));x.setPipeline(n.pipeline),s.forEach((d,v)=>x.setBindGroup(v,d)),a.forEach((d,v)=>x.setVertexBuffer(v,d)),x.draw(e.count,1,0,0),x.end(),r.queue.submit([g.finish()])},clean:()=>{},_attribute:(g="",x)=>{let{array:d,buffer:v}=X(g,x);r.queue.writeBuffer(v,0,d)},_uniform:(g,x)=>{l.num(x)&&(x=[x]);let{array:d,buffer:v}=p(g,x);d.set(x),r.queue.writeBuffer(v,0,d)},_texture:(g,x)=>{n.loadingImg++;let d=Object.assign(new Image,{src:x,crossOrigin:"anonymous"});d.decode().then(()=>{let{texture:v,width:Z,height:je}=m(g,d);r.queue.copyExternalImageToTexture({source:d},{texture:v},{width:Z,height:je}),n.loadingImg--})}}};var po=e=>l.obj(e)?"isGL"in e:!1,qe=()=>typeof window>"u",Ye=()=>qe()?!1:"gpu"in navigator,Ue=performance.now(),ke=e=>{let t=(0,U.event)({isNative:!1,isWebGL:!0,isLoop:!0,isGL:!0,size:[0,0],mouse:[0,0],count:6,webgl:{},webgpu:{}});return t.queue=(0,H.createQueue)(),t.frame=(0,H.createFrame)(),t.attribute=(0,U.durable)((r,o,n)=>t.queue(()=>t._attribute?.(r,o,n))),t.texture=(0,U.durable)((r,o)=>t.queue(()=>t._texture?.(r,o))),t.uniform=(0,U.durable)((r,o,n)=>t.queue(()=>t._uniform?.(r,o,n))),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,Ye()||(t.isWebGL=!0),t.isWebGL?t(await he(t)):t(await Oe(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,o=t.height||window.innerHeight;t.size[0]=t.el.width=r,t.size[1]=t.el.height=o,t.uniform("iResolution",t.size)}),t("mousemove",(r,o=r.clientX,n=r.clientY)=>{let[s,a]=t.size,{top:f,left:X}=t.el.getBoundingClientRect();t.mouse[0]=(o-f-s/2)/(s/2),t.mouse[1]=-(n-X-a/2)/(a/2),t.uniform("iMouse",t.mouse)}),t("loop",()=>{Ue=performance.now()/1e3,t.uniform("iTime",Ue)}),t(e)},lo=ke;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,abs,acos,alignTo256,all,any,asin,assign,atan,atan2,attribute,bitcast,bool,bvec2,bvec3,bvec4,cbrt,ceil,clamp,code,color,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,f,faceforward,fig,float,floor,flush,formatConversions,fract,fragment,fwidth,getId,getOperator,getStride,hex2rgb,iMouse,iResolution,iTime,infer,inferParameterTypes,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,n,negate,node,normalLocal,normalView,normalWorld,normalize,o,oneMinus,position,positionLocal,positionView,positionWorld,pow,pow2,pow3,pow4,radians,reciprocal,reflect,refract,replace,round,s,saturate,screenCoordinate,screenUV,select,sig,sign,sin,smoothstep,sqrt,step,tan,texture,textureSize,toConst,toVar,transformDirection,trunc,u,uint,uv,uvec2,uvec3,uvec4,v,varying,vec2,vec3,vec4,vertex,vertexColor,vertexStage,webgl,webgpu});
|
|
66
|
+
//# 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 const state = { context: c, program: pg } as WebGLState\n c.useProgram(pg)\n\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\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\n// Function return type classification\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 gl_FragCoord: 'vec4',\n position: 'vec3',\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","import { 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'\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 (!is.fun(x)) 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 const uniforms = Array.from(c.uniforms!)\n .map((uniform, i) => {\n if (c.isWebGL) return `uniform ${uniform};`\n else return `@group(0) @binding(${i}) var<uniform> ${uniform};`\n })\n .join('\\n')\n const functions = Array.from(c.functions!).join('\\n')\n return `${uniforms}\\n${functions}`\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 return generateFragmentMain(body, head, c.isWebGL)\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, X } from './types'\n\nconst inferPrimitiveType = (x: any): Constants => {\n if (is.bol(x)) return 'bool'\n if (is.num(x)) return Number.isInteger(x) ? 'int' : 'float'\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[]) => {\n return args.reduce((highest, current) => {\n const currentType = infer(current)\n const highestPriority = CONSTANTS.indexOf(highest as any)\n const currentPriority = CONSTANTS.indexOf(currentType as any)\n return currentPriority > highestPriority ? currentType : highest\n }, 'float')\n}\nconst inferSwizzleType = (count: number): Constants => {\n return COMPONENT_COUNT_TO_TYPE[count as keyof typeof COMPONENT_COUNT_TO_TYPE] || 'vec4'\n}\n\nconst inferBuiltinType = (id: string | undefined): Constants => {\n if (!id) return 'vec3'\n return BUILTIN_TYPES[id as keyof typeof BUILTIN_TYPES]!\n}\n\nconst inferMathType = (funcName: string, args: X[]): Constants => {\n const firstArgType = args.length > 0 ? infer(args[0]) : 'float'\n if (FIRST_ARG_TYPE_FUNCTIONS.includes(funcName as any)) return firstArgType as Constants\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 as Constants\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) as Constants\n return firstArgType as Constants\n}\n\nexport const infer = (target: X, c?: NodeConfig): Constants => {\n if (!target) throw ``\n if (!isNodeProxy(target)) return inferPrimitiveType(target)\n const { type, props } = target\n const { id, children = [], value, returnType } = 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 === 'conversions') return x as Constants\n if (type === 'operator') return inferBinaryOpType(infer(y, c), infer(z, c), x as string)\n if (type === 'math_fun') return inferMathType(x as string, children.slice(1))\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 === 'fn_run') return returnType!\n if (type === 'fn_def') return returnType!\n if (type === 'builtin') return inferBuiltinType(id)\n return 'float'\n}\n\nexport const inferParameterTypes = (args: X[], c?: NodeConfig): Constants[] => {\n return args.map((arg) => infer(arg, c))\n}\n","import { is } from '../utils/helpers'\nimport { infer } from './infer'\nimport { joins, getOperator, formatConversions } from './utils'\nimport type { NodeConfig, X } from './types'\n\nexport const code = (target: X, c?: NodeConfig | null): string => {\n if (!c) c = {}\n if (!c.uniforms) c.uniforms = new Set()\n if (!c.functions) c.functions = new Set()\n if (is.num(target)) return target.toFixed(1)\n if (is.str(target)) return target\n if (is.bol(target)) return target.toString()\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 if (type === 'uniform') {\n const varType = infer(target, c)\n c.uniforms.add(`${varType} ${id}`)\n c.onUniform?.(id, props.value)\n return id\n }\n if (type === 'variable' || type === 'varying' || type === 'constant' || type === 'attribute') return id\n if (type === 'vertex_stage') return code(x, c)\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 === 'math_fun') return `${x}(${joins(children.slice(1), c)})`\n if (type === 'conversions') 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 === 'fn_run') {\n c.functions.add(code(x, c))\n return `${id}(${children\n .slice(1)\n .map((child) => code(child, c))\n .join(', ')})`\n }\n if (type === 'fn_def') {\n const { paramInfo = [], returnType } = props\n const scopeCode = code(x, c)\n const returnCode = y ? `return ${code(y, c)};` : ''\n if (c?.isWebGL) {\n const params = paramInfo.map(({ name, type }) => `${type} ${name}`).join(', ')\n return `${returnType} ${id}(${params}) {\\n${scopeCode}\\n${returnCode}\\n}`\n } else {\n const wgslReturnType = formatConversions(returnType, c)\n const wgslParams = paramInfo\n .map(({ name, type }) => {\n const wgslParamType = formatConversions(type, c)\n return `${name}: ${wgslParamType}`\n })\n .join(', ')\n return `fn ${id}(${wgslParams}) -> ${wgslReturnType} {\\n${scopeCode}\\n${returnCode}\\n}`\n }\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 isLast = i >= children.length - 1\n ret += !isLast\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 (const child of children.slice(1)) ret += code(child, c) + '\\n'\n ret += '}'\n return ret\n }\n if (type === 'case') {\n const values = children.slice(0, -1)\n const scope = children[children.length - 1]\n let ret = ''\n for (const value of values) {\n ret += `case ${code(value, c)}:\\n`\n }\n ret += `${code(scope, c)}\\nbreak;\\n`\n return ret\n }\n if (type === 'default') `default:\\n${code(x, c)}\\nbreak;\\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 if (id === 'position') return 'gl_FragCoord'\n if (id === 'uv') return 'gl_FragCoord.xy'\n }\n return id\n }\n return code(x, c)\n}\n","import { infer } from './infer'\nimport { 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, callback = () => {}) => {\n const prev = _scope\n _scope = x\n callback()\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 If = (condition: X, callback: () => void) => {\n const scope = node('scope')\n scoped(scope, callback)\n const ifNode = node('if', null, condition, scope)\n addToScope(ifNode)\n const createChain = () => ({\n ElseIf: (newCondition: X, elseIfCallback: () => void) => {\n const elseIfScope = node('scope')\n scoped(elseIfScope, elseIfCallback)\n ifNode.props.children!.push(newCondition, elseIfScope)\n return createChain()\n },\n Else: (elseCallback: () => void) => {\n const elseScope = node('scope')\n scoped(elseScope, elseCallback)\n ifNode.props.children!.push(elseScope)\n },\n })\n return createChain()\n}\n\nexport const Loop = (x: X, callback?: (params: { i: NodeProxy }) => void) => {\n const y = node('scope')\n scoped(y, () => callback?.({ 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 (callback: () => void) => {\n const caseScope = node('scope')\n scoped(caseScope, callback)\n const caseNode = node('case', null, ...values, caseScope)\n switchNode.props.children!.push(caseNode)\n return createChain()\n }\n },\n Default: (callback: () => void) => {\n const defaultScope = node('scope')\n scoped(defaultScope, callback)\n const defaultNode = node('default', null, defaultScope)\n switchNode.props.children!.push(defaultNode)\n },\n })\n\n return createChain()\n}\n\nexport const Fn = (callback: (args: NodeProxy[]) => NodeProxy) => {\n const id = getId()\n return (...args: NodeProxy[]) => {\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 = callback(paramVars)))\n const returnType = y ? infer(y) : 'void'\n const paramInfo = args.map((arg, i) => ({ name: `p${i}`, type: infer(arg) }))\n const def = node('fn_def', { id, returnType, paramInfo, args }, x, y)\n return node('fn_run', { id, returnType }, def, ...paramVars)\n }\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 toConst = (x: X) => (id?: string) => {\n if (!id) id = getId()\n const y = node('constant', { 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 assignNode = node('assign', null, x, y)\n addToScope(assignNode)\n return x\n}\n\nexport const varying = (value: X, name?: string) => {\n if (!name) name = getId()\n const varyingVar = node('varying', { id: name })\n const declaration = node('declare', null, varyingVar, value)\n addToScope(declaration)\n return varyingVar\n}\n","import { code } from './code'\nimport { assign, toVar, toConst } 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) => {\n return (hint: string) => {\n if (hint === 'string') return code(x)\n }\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 x = new Proxy(() => {}, {\n get(_, key) {\n if (key === 'type') return type\n if (key === 'props') return props\n if (key === 'toVar') return toVar(x)\n if (key === 'toConst') return toConst(x)\n if (key === 'assign') return assign(x)\n if (key === 'isProxy') return true\n if (key === 'toString') return code.bind(null, x)\n if (key === Symbol.toPrimitive) return toPrimitive(x)\n if (isSwizzle(key)) return s(key, x)\n if (isOperator(key)) return (...y: X[]) => o(key, x, ...y)\n if (isFunction(key)) return (...y: X[]) => f(key, x, ...y)\n if (isConversion(key)) return n(key, x)\n },\n set(_, key, value) {\n if (isSwizzle(key)) {\n s(key, x).assign(value)\n return true\n }\n return false\n },\n }) as unknown as NodeProxy\n return x\n}\n\n// Node shorthands\nexport const v = (...args: X[]) => node('variable', { id: getId() }, ...args)\nexport const s = (key: Swizzles, arg: X) => node('swizzle', null, key, arg)\nexport const n = (key: string, ...args: X[]) => node('conversions', null, key, ...args)\nexport const o = (key: Operators, ...args: X[]) => node('operator', null, key, ...args)\nexport const f = (key: Functions, ...args: X[]) => node('math_fun', null, key, ...args)\n\n// uniform and attribute\nexport const u = (id: string, value?: number | number[] | boolean) => node('uniform', { id, value })\n\nexport const select = (x: X, y: X, z: X) => node('ternary', null, x, y, z)\n","import { f, n, node, u } 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// Default uniforms\nexport const iResolution = u('iResolution', [1280, 800])\nexport const iMouse = u('iMouse', [0, 0])\nexport const iTime = u('iTime', 0)\nexport const position = node('variable', { id: 'gl_FragCoord' })\n\n// Default attributes\nexport const uv = (index = 0) => node('attribute', { id: `uv${index || ''}` })\nexport const vertexColor = (index = 0) => node('attribute', { id: `color${index || ''}` })\nexport const attribute = (id: string, type?: string) => node('attribute', { id, type })\nexport const vertexStage = (value: X) => node('vertex_stage', null, value)\n\n// Buildin Variables\nexport const positionLocal = node('builtin', { id: 'positionLocal' })\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// Type constructors\nexport const float = (x: X) => n('float', x)\nexport const int = (x: X) => n('int', x)\nexport const uint = (x: X) => n('uint', x)\nexport const bool = (x: X) => n('bool', x)\nexport const vec2 = (x?: X, y?: X) => n('vec2', x, y)\nexport const vec3 = (x?: X, y?: X, z?: X) => n('vec3', x, y, z)\nexport const vec4 = (x?: X, y?: X, z?: X, w?: X) => n('vec4', x, y, z, w)\nexport const mat2 = (...args: X[]) => n('mat2', ...args)\nexport const mat3 = (...args: X[]) => n('mat3', ...args)\nexport const mat4 = (...args: X[]) => n('mat4', ...args)\nexport const ivec2 = (x?: X, y?: X) => n('ivec2', x, y)\nexport const ivec3 = (x?: X, y?: X, z?: X) => n('ivec3', x, y, z)\nexport const ivec4 = (x?: X, y?: X, z?: X, w?: X) => n('ivec4', x, y, z, w)\nexport const uvec2 = (x?: X, y?: X) => n('uvec2', x, y)\nexport const uvec3 = (x?: X, y?: X, z?: X) => n('uvec3', x, y, z)\nexport const uvec4 = (x?: X, y?: X, z?: X, w?: X) => n('uvec4', x, y, z, w)\nexport const bvec2 = (x?: X, y?: X) => n('bvec2', x, y)\nexport const bvec3 = (x?: X, y?: X, z?: X) => n('bvec3', x, y, z)\nexport const bvec4 = (x?: X, y?: X, z?: X, w?: X) => n('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, vertex, X } from '../node'\nimport { is } from './helpers'\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 | X = defaultVertexGLSL,\n fs: string | X = defaultFragmentGLSL,\n onError = () => {}\n) => {\n if (!is.str(fs)) fs = fragment(fs, { isWebGL: true })\n if (!is.str(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, vertex, X } from '../node'\nimport { is } from './helpers'\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 | X = defaultVertexWGSL,\n fs: string | X = defaultFragmentWGSL\n) => {\n if (!is.str(fs)) fs = fragment(fs, { isWebGL: false })\n if (!is.str(vs)) vs = vertex(vs, { 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","abs","acos","alignTo256","all","any","asin","assign","atan","atan2","attribute","bitcast","bool","bvec2","bvec3","bvec4","cbrt","ceil","clamp","code","color","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","f","faceforward","fig","float","floor","flush","formatConversions","fract","fragment","fwidth","getId","getOperator","getStride","hex2rgb","iMouse","iResolution","iTime","infer","inferParameterTypes","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","n","negate","node","normalLocal","normalView","normalWorld","normalize","o","oneMinus","position","positionLocal","positionView","positionWorld","pow","pow2","pow3","pow4","radians","reciprocal","reflect","refract","replace","round","s","saturate","screenCoordinate","screenUV","select","sig","sign","sin","smoothstep","sqrt","step","tan","texture","textureSize","toConst","toVar","transformDirection","trunc","u","uint","uv","uvec2","uvec3","uvec4","v","varying","vec2","vec3","vec4","vertex","vertexColor","vertexStage","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","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","uniforms","uniform","i","functions","generateFragmentMain","body","head","isWebGL","fragment","vertex","inferPrimitiveType","x","is","COMPONENT_COUNT_TO_TYPE","inferBinaryOpType","leftType","rightType","op","COMPARISON_OPERATORS","LOGICAL_OPERATORS","leftPriority","CONSTANTS","rightPriority","getHighestPriorityType","args","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","target","c","isNodeProxy","type","props","children","value","returnType","y","z","inferParameterTypes","arg","code","target","c","is","type","props","id","children","x","y","z","varType","infer","getOperator","joins","formatConversions","child","paramInfo","returnType","scopeCode","returnCode","params","name","wgslReturnType","wgslParams","wgslParamType","ret","i","isLast","values","scope","value","varName","wgslType","_scope","scoped","x","callback","prev","addToScope","If","condition","scope","node","ifNode","createChain","newCondition","elseIfCallback","elseIfScope","elseCallback","elseScope","Loop","y","ret","Switch","value","switchNode","values","caseScope","caseNode","defaultScope","defaultNode","Fn","id","getId","args","paramVars","i","paramId","paramVar","returnType","infer","paramInfo","arg","def","toVar","z","toConst","assign","assignNode","varying","name","varyingVar","declaration","toPrimitive","x","hint","code","node","type","props","args","_","key","toVar","toConst","assign","isSwizzle","s","isOperator","y","o","isFunction","f","isConversion","n","value","v","getId","arg","u","id","select","z","iResolution","u","iMouse","iTime","position","node","uv","index","vertexColor","attribute","id","type","vertexStage","value","positionLocal","positionWorld","positionView","normalLocal","normalWorld","normalView","screenCoordinate","screenUV","float","x","n","int","uint","bool","vec2","y","vec3","z","vec4","w","mat2","args","mat3","mat4","ivec2","ivec3","ivec4","uvec2","uvec3","uvec4","bvec2","bvec3","bvec4","color","r","g","b","is","hex2rgb","texture","f","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","is","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","state","_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","is","fragment","vertex","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"]}
|