glre 0.23.0 → 0.24.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 +11 -13
- package/dist/index.d.ts +5 -18
- package/dist/index.js +20 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +20 -12
- package/dist/index.mjs.map +1 -1
- package/dist/native.d.ts +1 -1
- package/dist/native.js +20 -12
- package/dist/native.js.map +1 -1
- package/dist/native.mjs +19 -11
- package/dist/native.mjs.map +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.js +20 -12
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +19 -11
- package/dist/react.mjs.map +1 -1
- package/dist/solid.d.ts +1 -1
- package/dist/solid.js +20 -12
- package/dist/solid.js.map +1 -1
- package/dist/solid.mjs +19 -11
- package/dist/solid.mjs.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +9 -12
- package/src/node/index.ts +2 -2
- package/src/types.ts +1 -0
- package/src/utils/pipeline.ts +72 -76
- package/src/webgl.ts +0 -1
- package/src/webgpu.ts +42 -10
package/README.md
CHANGED
|
@@ -114,11 +114,11 @@ npm install glre
|
|
|
114
114
|
|
|
115
115
|
```ts
|
|
116
116
|
import { createRoot } from 'react-dom/client'
|
|
117
|
-
import { useGL, vec4, fract,
|
|
118
|
-
const
|
|
117
|
+
import { useGL, vec4, fract, fragCoord, iResolution } from 'glre/react'
|
|
118
|
+
const frag = vec4(fract(fragCoord.xy / iResolution), 0, 1)
|
|
119
119
|
|
|
120
120
|
const App = () => {
|
|
121
|
-
const gl = useGL({
|
|
121
|
+
const gl = useGL({ frag })
|
|
122
122
|
return <canvas ref={gl.ref} />
|
|
123
123
|
}
|
|
124
124
|
|
|
@@ -136,10 +136,10 @@ react-native supported ([codesandbox demo](https://codesandbox.io/p/sandbox/glre
|
|
|
136
136
|
import { GLView } from 'expo-gl'
|
|
137
137
|
import { registerRootComponent } from 'expo'
|
|
138
138
|
import { useGL, vec4, fract, fragCoord, iResolution } from 'glre/native'
|
|
139
|
-
const
|
|
139
|
+
const frag = vec4(fract(fragCoord.xy / iResolution), 0, 1)
|
|
140
140
|
|
|
141
141
|
const App = () => {
|
|
142
|
-
const { gl, ref } = useGL({
|
|
142
|
+
const { gl, ref } = useGL({ frag })
|
|
143
143
|
return <GLView style={{ flex: 1 }} onContextCreate={ref} />
|
|
144
144
|
}
|
|
145
145
|
|
|
@@ -157,10 +157,10 @@ solid js supported ([codesandbox demo](https://codesandbox.io/p/sandbox/glre-sol
|
|
|
157
157
|
```ts
|
|
158
158
|
import { render } from 'solid-js/web'
|
|
159
159
|
import { onGL, vec4, fract, fragCoord, iResolution } from 'glre/solid'
|
|
160
|
-
const
|
|
160
|
+
const frag = vec4(fract(fragCoord.xy / iResolution), 0, 1)
|
|
161
161
|
|
|
162
162
|
const App = () => {
|
|
163
|
-
const gl = onGL({
|
|
163
|
+
const gl = onGL({ frag })
|
|
164
164
|
return <canvas ref={gl.ref} />
|
|
165
165
|
}
|
|
166
166
|
|
|
@@ -177,13 +177,11 @@ esm supported ([codesandbox demo](https://codesandbox.io/s/glre-basic-demo3-3bhr
|
|
|
177
177
|
|
|
178
178
|
```html
|
|
179
179
|
<script type="module">
|
|
180
|
-
import createGL from 'https://esm.sh/glre'
|
|
181
|
-
|
|
182
|
-
const fragment = vec4(fract(fragCoord.xy / iResolution), 0, 1)
|
|
180
|
+
import { createGL, vec4, fract, fragCoord, iResolution } from 'https://esm.sh/glre'
|
|
181
|
+
const frag = vec4(fract(fragCoord.xy / iResolution), 0, 1)
|
|
183
182
|
function App() {
|
|
184
183
|
const el = document.createElement('canvas')
|
|
185
|
-
|
|
186
|
-
createGL({ el, gl, fragment }).mount()
|
|
184
|
+
createGL({ el, frag }).mount()
|
|
187
185
|
document.body.append(el)
|
|
188
186
|
}
|
|
189
187
|
document.addEventListener('DOMContentLoaded', App)
|
|
@@ -209,7 +207,7 @@ The node system provides various types and functions that mirror GLSL functional
|
|
|
209
207
|
import { float, int, vec2, vec3, vec4, mat3, mat4 } from 'glre'
|
|
210
208
|
|
|
211
209
|
// Built-in variables
|
|
212
|
-
import {
|
|
210
|
+
import { fragCoord, gl_Position, iResolution, iTime } from 'glre'
|
|
213
211
|
|
|
214
212
|
// Math functions
|
|
215
213
|
import { sin, cos, abs, pow, mix, clamp, normalize } from 'glre'
|
package/dist/index.d.ts
CHANGED
|
@@ -124,8 +124,8 @@ declare const updateUniforms: (context: UpdateContext) => void;
|
|
|
124
124
|
|
|
125
125
|
declare const Fn: (jsFunc: Function) => FunctionNode;
|
|
126
126
|
declare const If: (condition: X, callback: () => void) => ConditionalNode;
|
|
127
|
-
declare const
|
|
128
|
-
declare const
|
|
127
|
+
declare const fragCoord: X;
|
|
128
|
+
declare const position: X;
|
|
129
129
|
declare const iTime: UniformNode;
|
|
130
130
|
declare const iResolution: UniformNode;
|
|
131
131
|
declare const iMouse: UniformNode;
|
|
@@ -144,6 +144,7 @@ type GPUContext = any;
|
|
|
144
144
|
type GPUDevice = any;
|
|
145
145
|
type GPUBuffer = any;
|
|
146
146
|
type GPUPipeline = any;
|
|
147
|
+
type GPUBindGroup = any;
|
|
147
148
|
type Uniform = number | number[];
|
|
148
149
|
type Attribute = number[];
|
|
149
150
|
type Attributes = Record<string, Attribute>;
|
|
@@ -271,12 +272,7 @@ declare const fig: (x?: number) => number;
|
|
|
271
272
|
declare const dig: (x?: number) => number;
|
|
272
273
|
declare const sig: (value?: number, digit?: number) => number;
|
|
273
274
|
|
|
274
|
-
declare const
|
|
275
|
-
device: any;
|
|
276
|
-
context: any;
|
|
277
|
-
format: any;
|
|
278
|
-
} | null>;
|
|
279
|
-
declare const createRenderPipeline: (device: GPUDevice, format: string, vs: string | undefined, fs: string | undefined, buffers: any[]) => GPUPipeline;
|
|
275
|
+
declare const createPipeline: (device: GPUDevice, format: string, vs: string | undefined, fs: string | undefined, buffers: any[]) => GPUPipeline;
|
|
280
276
|
declare const createDescriptor: (c: GPUContext) => {
|
|
281
277
|
colorAttachments: {
|
|
282
278
|
view: any;
|
|
@@ -290,15 +286,6 @@ declare const createDescriptor: (c: GPUContext) => {
|
|
|
290
286
|
storeOp: string;
|
|
291
287
|
}[];
|
|
292
288
|
};
|
|
293
|
-
declare const alignTo256: (size: number) => number;
|
|
294
|
-
declare const createUniformBuffer: (device: GPUDevice, size: number) => Buffer;
|
|
295
|
-
declare const createVertexBuffer: (device: GPUDevice, value: number[]) => Buffer;
|
|
296
|
-
declare const createBindGroup: (device: GPUDevice, pipeline: GPUPipeline, entries: any[]) => any;
|
|
297
|
-
declare const updateBindGroup: (device: GPUDevice, pipeline: GPUPipeline, uniformBuffer: Buffer, textures?: any, sampler?: any) => any;
|
|
298
|
-
declare const createUniform: (device: GPUDevice, buffer: any, data: Float32Array, offset?: number) => void;
|
|
299
|
-
declare const createDeviceTexture: (device: GPUDevice, image: HTMLImageElement) => any;
|
|
300
|
-
declare const createSampler: (device: GPUDevice) => any;
|
|
301
|
-
declare const getDefaultVertices: () => Float32Array<ArrayBuffer>;
|
|
302
289
|
|
|
303
290
|
declare const defaultVertexGLSL = "\n#version 300 es\nvoid main() {\n float x = float(gl_VertexID % 2) * 4.0 - 1.0;\n float y = float(gl_VertexID / 2) * 4.0 - 1.0;\n gl_Position = vec4(x, y, 0.0, 1.0);\n}\n";
|
|
304
291
|
declare const defaultFragmentGLSL = "\n#version 300 es\nprecision mediump float;\nuniform vec2 iResolution;\nout vec4 fragColor;\nvoid main() {\n fragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);\n}\n";
|
|
@@ -363,4 +350,4 @@ declare const createGL: (props?: Partial<GL>) => EventState<{
|
|
|
363
350
|
}): GL;
|
|
364
351
|
}, any[] | unknown[]>;
|
|
365
352
|
|
|
366
|
-
export { Attribute, Attributes, CACHE_BOOLS, CACHE_FLOATS, CACHE_INTS, ConditionalNode, ConversionContext, FUNCTIONS, Fn, FunctionNode, GL, GLClearMode, GLDrawMode, GLDrawType, GPUBuffer, GPUContext, GPUDevice, GPUPipeline, If, MathFunction, MathMethods, Node, NodeCreator, NodeType, OPERATORS, Operator, OperatorMethods, PrecisionMode, ProxyCallback, SWIZZLES, Swillzes, SwizzleProperties, TYPES, Uniform, UniformNode, Uniforms, WebGLState, WebGPUState, X, abs, activeTexture,
|
|
353
|
+
export { Attribute, Attributes, CACHE_BOOLS, CACHE_FLOATS, CACHE_INTS, ConditionalNode, ConversionContext, FUNCTIONS, Fn, FunctionNode, GL, GLClearMode, GLDrawMode, GLDrawType, GPUBindGroup, GPUBuffer, GPUContext, GPUDevice, GPUPipeline, If, MathFunction, MathMethods, Node, NodeCreator, NodeType, OPERATORS, Operator, OperatorMethods, PrecisionMode, ProxyCallback, SWIZZLES, Swillzes, SwizzleProperties, TYPES, Uniform, UniformNode, Uniforms, WebGLState, WebGPUState, X, abs, activeTexture, bool, ceil, color, convertToNode, cos, createAttrib, createDescriptor, createGL, createIbo, createNode, createPipeline, createProgram, createShader, createTexture, createVbo, createGL as default, defaultFragmentGLSL, defaultVertexGLSL, dig, each, ext, fig, findDuplicateNodes, float, floor, flush, fract, fragCoord, getCachedBool, getCachedFloat, getCachedInt, glsl, iDeltaTime, iMouse, iPrevTime, iResolution, iTime, int, is, isGL, isServer, isWebGPUSupported, length, node, nodeToGLSL, nodeToWGSL, normalize, position, replace, sig, sin, sqrt, tan, uniform, updateUniforms, vec2, vec3, vec4, webgl, webgpu, wgsl };
|
package/dist/index.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var F=Object.defineProperty;var be=Object.getOwnPropertyDescriptor;var xe=Object.getOwnPropertyNames;var ye=Object.prototype.hasOwnProperty;var ve=(e,r)=>{for(var t in r)F(e,t,{get:r[t],enumerable:!0})},Te=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of xe(r))!ye.call(e,o)&&o!==t&&F(e,o,{get:()=>r[o],enumerable:!(n=be(r,o))||n.enumerable});return e};var Ee=e=>Te(F({},"__esModule",{value:!0}),e);var Lr={};ve(Lr,{CACHE_BOOLS:()=>K,CACHE_FLOATS:()=>Q,CACHE_INTS:()=>Z,FUNCTIONS:()=>H,Fn:()=>ar,If:()=>sr,OPERATORS:()=>j,SWIZZLES:()=>k,TYPES:()=>Oe,abs:()=>lr,activeTexture:()=>W,bool:()=>ke,ceil:()=>yr,color:()=>Ke,convertToNode:()=>De,cos:()=>gr,createAttrib:()=>O,createDescriptor:()=>V,createGL:()=>he,createIbo:()=>B,createNode:()=>L,createPipeline:()=>D,createProgram:()=>M,createShader:()=>P,createTexture:()=>z,createVbo:()=>I,default:()=>wr,defaultFragmentGLSL:()=>ie,defaultVertexGLSL:()=>oe,dig:()=>Ce,each:()=>te,ext:()=>Le,fig:()=>Ne,findDuplicateNodes:()=>We,float:()=>U,floor:()=>xr,flush:()=>$e,fract:()=>vr,fragCoord:()=>ur,getCachedBool:()=>R,getCachedFloat:()=>_,getCachedInt:()=>G,glsl:()=>C,iDeltaTime:()=>me,iMouse:()=>mr,iPrevTime:()=>pe,iResolution:()=>pr,iTime:()=>cr,int:()=>Ye,is:()=>i,isGL:()=>$r,isServer:()=>de,isWebGPUSupported:()=>ge,length:()=>Er,node:()=>a,nodeToGLSL:()=>ne,nodeToWGSL:()=>ae,normalize:()=>Tr,position:()=>fr,replace:()=>we,sig:()=>Se,sin:()=>dr,sqrt:()=>br,tan:()=>hr,uniform:()=>b,updateUniforms:()=>ir,vec2:()=>je,vec3:()=>fe,vec4:()=>He,webgl:()=>q,webgpu:()=>Y,wgsl:()=>S});module.exports=Ee(Lr);var v=require("reev"),X=require("refr");var $=require("reev");var i={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)},te=(e,r)=>e.forEach(r),$e=(e,...r)=>{te(e,t=>t(...r))},we=(e="",r="_",t="/")=>e.split(r).join(t),Le=(e=".pdf")=>e.split(".").pop()?.toLowerCase()??"",Ne=(e=0)=>`${e}`.split(".")[1]?.length??0,Ce=(e=0)=>`${e}`.split(".")[0]?.length-(e<0?1:0),Se=(e=0,r=-2)=>(r*=-1,r=Math.pow(10,r),e*=r,e=Math.round(e),e/=r,e);var ne=(e,r)=>{let t={target:"webgl",precision:"mediump",version:"300 es",nodes:new Map,variables:new Map,functions:new Map,...r};return E(e,t)},E=(e,r)=>e?i.und(e.value)?e.property&&e.parent?`${E(e.parent,r)}.${e.property}`:e.operator&&e.children&&e.children.length>=2?Ge(e,r):e.mathFunction&&e.children&&e.children.length>=1?_e(e,r):"0.0":Re(e.value,e.type):"0.0",Re=(e,r)=>{if(r==="float"){let t=Number(e);return t%1===0?`${t}.0`:`${t}`}if(r==="int")return`${Math.floor(Number(e))}`;if(r==="bool")return e?"true":"false";if(i.arr(e)){let t=e.map(n=>{let o=Number(n);return o%1===0?`${o}.0`:`${o}`}).join(", ");if(r==="vec2")return`vec2(${t})`;if(r==="vec3")return`vec3(${t})`;if(r==="vec4")return`vec4(${t})`;if(r==="color")return`vec3(${t})`}return"0.0"},Ge=(e,r)=>{if(!e.children||e.children.length<2)return"0.0";let t=E(e.children[0],r),n=E(e.children[1],r);return e.operator==="add"?`(${t} + ${n})`:e.operator==="sub"?`(${t} - ${n})`:e.operator==="mul"?`(${t} * ${n})`:e.operator==="div"?`(${t} / ${n})`:e.operator==="mod"?`mod(${t}, ${n})`:e.operator==="equal"?`(${t} == ${n})`:e.operator==="notEqual"?`(${t} != ${n})`:e.operator==="lessThan"?`(${t} < ${n})`:e.operator==="lessThanEqual"?`(${t} <= ${n})`:e.operator==="greaterThan"?`(${t} > ${n})`:e.operator==="greaterThanEqual"?`(${t} >= ${n})`:e.operator==="and"?`(${t} && ${n})`:e.operator==="or"?`(${t} || ${n})`:`(${t} + ${n})`},_e=(e,r)=>{if(!e.children||e.children.length<1)return"0.0";let t=e.mathFunction,n=e.children.map(d=>E(d,r)),[o,s,u]=n;return n.length===1?`${t}(${o})`:n.length===2?`${t}(${o}, ${s})`:n.length===3?`${t}(${o}, ${s}, ${u})`:o||"0.0"},Ue=e=>{if(i.num(e))return"float";if(i.bol(e))return"bool";if(i.arr(e)){let r=e.length;if(r===2)return"vec2";if(r===3)return"vec3";if(r===4)return"vec4"}return"float"},C=(e,r)=>{let t=r?.precision||"mediump",o=(r?.version||"300 es")==="300 es",s=ne(e),u="";return o&&(u+=`#version 300 es
|
|
2
2
|
`),u+=`precision ${t} float;
|
|
3
3
|
|
|
4
|
-
`,r?.uniforms&&(Object.entries(r.uniforms).forEach(([
|
|
4
|
+
`,r?.uniforms&&(Object.entries(r.uniforms).forEach(([d,h])=>{let x=Ue(h);u+=`uniform ${x} ${d};
|
|
5
5
|
`}),u+=`
|
|
6
6
|
`),o&&(u+=`out vec4 fragColor;
|
|
7
7
|
|
|
8
8
|
`),u+=`void main() {
|
|
9
|
-
`,u+=o?` fragColor = ${
|
|
10
|
-
`:` gl_FragColor = ${
|
|
9
|
+
`,u+=o?` fragColor = ${s};
|
|
10
|
+
`:` gl_FragColor = ${s};
|
|
11
11
|
`,u+=`}
|
|
12
|
-
`,u};var
|
|
12
|
+
`,u};var oe=`
|
|
13
13
|
#version 300 es
|
|
14
14
|
void main() {
|
|
15
15
|
float x = float(gl_VertexID % 2) * 4.0 - 1.0;
|
|
16
16
|
float y = float(gl_VertexID / 2) * 4.0 - 1.0;
|
|
17
17
|
gl_Position = vec4(x, y, 0.0, 1.0);
|
|
18
18
|
}
|
|
19
|
-
`,
|
|
19
|
+
`,ie=`
|
|
20
20
|
#version 300 es
|
|
21
21
|
precision mediump float;
|
|
22
22
|
uniform vec2 iResolution;
|
|
@@ -24,23 +24,31 @@ out vec4 fragColor;
|
|
|
24
24
|
void main() {
|
|
25
25
|
fragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
|
|
26
26
|
}
|
|
27
|
-
`,P=(e,r,t)=>{let n=e.createShader(t);if(!n)throw new Error("Failed to create shader");if(e.shaderSource(n,r.trim()),e.compileShader(n),e.getShaderParameter(n,e.COMPILE_STATUS))return n;let o=e.getShaderInfoLog(n);throw e.deleteShader(n),new Error(`Could not compile shader: ${o}`)},
|
|
27
|
+
`,P=(e,r,t)=>{let n=e.createShader(t);if(!n)throw new Error("Failed to create shader");if(e.shaderSource(n,r.trim()),e.compileShader(n),e.getShaderParameter(n,e.COMPILE_STATUS))return n;let o=e.getShaderInfoLog(n);throw e.deleteShader(n),new Error(`Could not compile shader: ${o}`)},M=(e,r=oe,t=ie)=>{let n=e.createProgram();if(e.attachShader(n,P(e,r,e.VERTEX_SHADER)),e.attachShader(n,P(e,t,e.FRAGMENT_SHADER)),e.linkProgram(n),e.getProgramParameter(n,e.LINK_STATUS))return n;let o=e.getProgramInfoLog(n);throw e.deleteProgram(n),new Error(`Could not link pg: ${o}`)},I=(e,r)=>{let t=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,t),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),t},B=(e,r)=>{let t=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Int16Array(r),e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),t},O=(e,r,t,n,o)=>{e.bindBuffer(e.ARRAY_BUFFER,n),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,r,e.FLOAT,!1,0,0),o&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,o)},z=(e,r)=>{let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r),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),t},W=(e,r,t,n)=>{r&&(e.uniform1i(r,t),e.activeTexture(e.TEXTURE0+t),e.bindTexture(e.TEXTURE_2D,n))};var q=async e=>{let r=e.vs||e.vert||e.vertex,t=e.fs||e.frag||e.fragment;i.obj(t)&&(t=C(t)),i.obj(r)&&(r=C(r));let n=e.el.getContext("webgl2"),o=M(n,r,t),s=0,u=(0,$.nested)(()=>s++),d=(0,$.nested)((f,c=!1)=>c?n.getAttribLocation(o,f):n.getUniformLocation(o,f)),h=(0,$.nested)((f,c,m,l)=>{l&&(c=Math.max(...l)+1);let p=m.length/c;return p!==Math.floor(p)&&console.warn(`Vertex Stride Error: count ${c} is mismatch`),Math.floor(p)}),x=(0,$.nested)((f,c)=>{let m=d(f);if(i.num(c))return p=>n.uniform1f(m,p);let l=c.length;return l<=4?p=>n[`uniform${l}fv`](m,p):(l=Math.sqrt(l)<<0,p=>n[`uniformMatrix${l}fv`](m,!1,p))});e("clean",()=>n.deleteProgram(o)),e("render",()=>{n.useProgram(o),n.clear(n.COLOR_BUFFER_BIT),n.viewport(0,0,...e.size),n.drawArrays(n.TRIANGLES,0,3)}),e("_attribute",(f="",c,m)=>{let l=d(f,!0),p=I(n,c),T=B(n,m),N=h(f,e.count,c,m);O(n,N,l,p,T)}),e("_uniform",(f,c)=>{x(f,c)(c)});let g=f=>{let c=d(f.alt),m=u(f.alt),l=z(n,f);W(n,c,m,l)};return e("_texture",(f,c)=>{let m=new Image;m.addEventListener("load",g.bind(null,m),!1),Object.assign(m,{src:c,alt:f,crossOrigin:"anonymous"})}),e.webgl={context:n,program:o},e};var ae=(e,r)=>{let t={target:"webgpu",nodes:new Map,variables:new Map,functions:new Map,...r};return w(e,t)},w=(e,r)=>e?e.value!==void 0?Ae(e.value,e.type):e.property&&e.parent?`${w(e.parent,r)}.${e.property}`:e.operator&&e.children&&e.children.length>=2?Xe(e,r):e.mathFunction&&e.children&&e.children.length>=1?Fe(e,r):"0.0":"0.0",Ae=(e,r)=>{if(r==="float"){let t=Number(e);return t%1===0?`${t}.0`:`${t}`}if(r==="int")return`${Math.floor(Number(e))}`;if(r==="bool")return e?"true":"false";if(i.arr(e)){let t=e.map(n=>{let o=Number(n);return o%1===0?`${o}.0`:`${o}`}).join(", ");if(r==="vec2")return`vec2<f32>(${t})`;if(r==="vec3")return`vec3<f32>(${t})`;if(r==="vec4")return`vec4<f32>(${t})`;if(r==="color")return`vec3<f32>(${t})`}return"0.0"},Xe=(e,r)=>{if(!e.children||e.children.length<2)return"0.0";let t=w(e.children[0],r),n=w(e.children[1],r);return e.operator==="add"?`(${t} + ${n})`:e.operator==="sub"?`(${t} - ${n})`:e.operator==="mul"?`(${t} * ${n})`:e.operator==="div"?`(${t} / ${n})`:e.operator==="mod"?`(${t} % ${n})`:e.operator==="equal"?`(${t} == ${n})`:e.operator==="notEqual"?`(${t} != ${n})`:e.operator==="lessThan"?`(${t} < ${n})`:e.operator==="lessThanEqual"?`(${t} <= ${n})`:e.operator==="greaterThan"?`(${t} > ${n})`:e.operator==="greaterThanEqual"?`(${t} >= ${n})`:e.operator==="and"?`(${t} && ${n})`:e.operator==="or"?`(${t} || ${n})`:`(${t} + ${n})`},Fe=(e,r)=>{if(!e.children||e.children.length<1)return"0.0";let t=e.mathFunction,n=e.children.map(d=>w(d,r)),[o,s,u]=n;return n.length===1?`${t}(${o})`:n.length===2?`${t}(${o}, ${s})`:n.length===3?`${t}(${o}, ${s}, ${u})`:o||"0.0"},S=(e,r)=>{let t="";r?.uniforms&&(Object.entries(r.uniforms).forEach(([o,s])=>{let u=Pe(s);t+=`@group(0) @binding(0) var<uniform> ${o}: ${u};
|
|
28
28
|
`}),t+=`
|
|
29
29
|
`),t+=`@fragment
|
|
30
30
|
`,t+=`fn main() -> @location(0) vec4<f32> {
|
|
31
|
-
`;let n=
|
|
31
|
+
`;let n=ae(e);return t+=` return ${n};
|
|
32
32
|
`,t+=`}
|
|
33
|
-
`,t},
|
|
33
|
+
`,t},Pe=e=>{if(i.num(e))return"f32";if(i.bol(e))return"bool";if(i.arr(e)){let r=e.length;if(r===2)return"vec2<f32>";if(r===3)return"vec3<f32>";if(r===4)return"vec4<f32>"}return"f32"};var Me=`
|
|
34
34
|
@vertex
|
|
35
35
|
fn main(@builtin(vertex_index) vertex_index: u32) -> @builtin(position) vec4f {
|
|
36
36
|
let x = f32(vertex_index % 2u) * 4.0 - 1.0;
|
|
37
37
|
let y = f32(vertex_index / 2u) * 4.0 - 1.0;
|
|
38
38
|
return vec4f(x, y, 0.0, 1.0);
|
|
39
39
|
}
|
|
40
|
-
`,
|
|
40
|
+
`,Ie=`
|
|
41
|
+
struct Uniforms {
|
|
42
|
+
iResolution: vec2f,
|
|
43
|
+
iMouse: vec2f,
|
|
44
|
+
iTime: f32,
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@group(0) @binding(0) var<uniform> u: Uniforms;
|
|
48
|
+
|
|
41
49
|
@fragment
|
|
42
50
|
fn main(@builtin(position) position: vec4f) -> @location(0) vec4f {
|
|
43
|
-
return vec4f(position.xy /
|
|
51
|
+
return vec4f(position.xy / iResolution, 0.0, 1.0);
|
|
44
52
|
}
|
|
45
|
-
`,
|
|
53
|
+
`,D=(e,r,t=Me,n=Ie,o)=>e.createRenderPipeline({vertex:{module:e.createShaderModule({code:t.trim()}),entryPoint:"main",buffers:o},fragment:{module:e.createShaderModule({code:n.trim()}),entryPoint:"main",targets:[{format:r}]},layout:"auto",primitive:{topology:"triangle-list"}}),V=e=>({colorAttachments:[{view:e.getCurrentTexture().createView(),clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]});var se=require("reev"),Be=3,Y=async e=>{let r=e.vs||e.vert||e.vertex,t=e.fs||e.frag||e.fragment;i.obj(r)&&(r=S(r)),i.obj(t)&&(t=S(t));let n=e.el.getContext("webgpu"),o=navigator.gpu,u=await(await o.requestAdapter()).requestDevice(),d=o.getPreferredCanvasFormat();n.configure({device:u,format:d,alphaMode:"opaque"});let h=u.createBuffer({size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});e("clean",()=>{});let x=(0,se.nested)((l,p)=>g+=p),g=0,f,c,m=new Float32Array(0);return e("render",()=>{f||(f=D(u,d,r,t,[]),c=u.createBindGroup({layout:f.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:h}}]}));let l=u.createCommandEncoder(),p=l.beginRenderPass(V(n));return p.setPipeline(f),p.setBindGroup(0,c),p.draw(Be,1,0,0),p.end(),u.queue.submit([l.finish()]),!0}),e("_attribute",(l="",p)=>{}),e("_uniform",(l,p)=>{i.num(p)&&(p=[p]);let T=p.length,N=x(l,T);if(N===g){let y=new Float32Array(g);m&&y.set(m),m=y}for(let y=0;y<T;y++)m[N-T+y]=p[y];u.queue.writeBuffer(h,0,m)}),e("_texture",(l,p)=>{}),e};var Oe=["float","int","uint","bool","color","vec2","vec3","vec4","mat2","mat3","mat4","ivec2","ivec3","ivec4","uvec2","uvec3","uvec4","bvec2","bvec3","bvec4"],k=["x","y","z","w","r","g","b","a","s","t","p","q"],j=["add","sub","mul","div","mod","equal","notEqual","lessThan","lessThanEqual","greaterThan","greaterThanEqual","and","or","not","assign","xor","bitAnd","bitNot","bitOr","bitXor","shiftLeft","shiftRight"],H=["abs","acos","asin","atan","atan2","ceil","clamp","cos","cross","degrees","distance","dot","exp","exp2","faceforward","floor","fract","length","all","any","bitcast","cbrt","dFdx","dFdy","difference","equals","fwidth","inverseSqrt","lengthSq","log","log2","max","min","mix","negate","normalize","oneMinus","pow","pow2","pow3","pow4","radians","reciprocal","reflect","refract","round","saturate","sign","sin","smoothstep","sqrt","step","tan","transformDirection","trunc"],K=[!0,!1],Z=[0,1,2,3,4,5],Q=[0,1,.5,2];var J=new Map,ee=new Map,re=new Map,ze=()=>{K.forEach(e=>{J.set(e,a("bool",e))}),Z.forEach(e=>{ee.set(e,a("int",e))}),Q.forEach(e=>{re.set(e,a("float",e))})},R=e=>(J.has(e)||ze(),J.get(e)||a("bool",e)),G=e=>ee.has(e)?ee.get(e):a("int",e),_=e=>re.has(e)?re.get(e):a("float",e),We=e=>{let r=new Map,t=new Map;return e.forEach(n=>{let o=qe(n);t.has(o)?(r.has(o)||r.set(o,[t.get(o)]),r.get(o).push(n)):t.set(o,n)}),r},qe=e=>[e.type,`${e.value}`,e.property||""].join("|");var De=e=>i.bol(e)?R(e):i.num(e)?i.int(e)?G(e):_(e):i.arr(e)?ue(e):i.obj(e)?Ve(e):a("float",0),ue=e=>{let r=e.length;return r===2?a("vec2",e):r===3?a("vec3",e):r===4?a("vec4",e):r===9?a("mat3",e):r===16?a("mat4",e):a("float",e[0])},Ve=e=>{if("r"in e&&"g"in e&&"b"in e){let r=[e.r,e.g,e.b];return"a"in e&&r.push(e.a),a("color",r)}if("x"in e&&"y"in e){let r=[e.x,e.y];return"z"in e&&r.push(e.z),"w"in e&&r.push(e.w),ue(r)}return a("float",0)},U=e=>i.num(e)?_(e):a("float",Number(e)),Ye=e=>i.num(e)&&Number.isInteger(e)?G(e):a("int",Math.floor(Number(e))),ke=e=>R(!!e),je=(e,r)=>i.und(e)?a("vec2",[0,0]):i.und(r)?i.arr(e)?a("vec2",e.slice(0,2)):i.obj(e)&&"x"in e&&"y"in e?a("vec2",[e.x,e.y]):a("vec2",[Number(e),Number(e)]):a("vec2",[Number(e),Number(r)]),fe=(e,r,t)=>i.und(e)?a("vec3",[0,0,0]):i.und(r)?i.arr(e)?a("vec3",e.slice(0,3)):i.obj(e)&&"x"in e&&"y"in e&&"z"in e?a("vec3",[e.x,e.y,e.z]):a("vec3",[Number(e),Number(e),Number(e)]):t===void 0?a("vec3",[Number(e),Number(r),0]):a("vec3",[Number(e),Number(r),Number(t)]),He=(e,r,t,n)=>i.und(e)?a("vec4",[0,0,0,1]):i.und(r)?i.arr(e)?a("vec4",e.slice(0,4)):i.obj(e)&&"x"in e&&"y"in e&&"z"in e&&"w"in e?a("vec4",[e.x,e.y,e.z,e.w]):a("vec4",[Number(e),Number(e),Number(e),1]):a("vec4",[Number(e),Number(r),Number(t),Number(n)]),Ke=(e,r,t)=>{if(e===void 0)return a("color",[1,1,1]);if(i.str(e)&&e.startsWith("#")){let n=e.slice(1),o=parseInt(n,16);return a("color",[(o>>16&255)/255,(o>>8&255)/255,(o&255)/255])}return i.num(e)&&r===void 0&&t===void 0?a("color",[(e>>16&255)/255,(e>>8&255)/255,(e&255)/255]):fe(e,r,t)};var Ze=0,Qe=()=>`node_${++Ze}`,L=(e,r,t)=>({id:Qe(),type:e,value:r,children:[],...t}),Je=(e="")=>k.includes(e),er=(e="")=>j.includes(e),rr=(e="")=>H.includes(e),A=(e,r)=>{let t=(o,s)=>{if(!(!i.str(s)||s==="then"))return s==="id"?e.id:s==="type"?e.type:s==="value"?e.value:s==="property"?e.property:Je(s)?A(L(tr(s),void 0,{parent:e,property:s}),r):er(s)?(...u)=>A(L(e.type,void 0,{operator:s,children:[e,...u]}),r):rr(s)?(...u)=>A(L(nr(s,e.type),void 0,{mathFunction:s,children:[e,...u]}),r):r?.({path:[s],args:[]})},n=(o,s,u)=>r?.({path:[],args:u});return new Proxy(()=>{},{get:t,apply:n})},tr=e=>e.length===1?"float":e.length===2?"vec2":e.length===3?"vec3":e.length===4?"vec4":"float",nr=(e,r)=>e==="length"?"float":r,a=(e,r,t)=>{let n=L(e,r,t);return A(n)};var or=e=>{if(i.num(e))return"float";if(i.bol(e))return"bool";if(i.arr(e)){let r=e.length;if(r===2)return"vec2";if(r===3)return"vec3";if(r===4)return"vec4";if(r===9)return"mat3";if(r===16)return"mat4"}return i.obj(e)&&"r"in e&&"g"in e&&"b"in e?"color":"float"},b=e=>{let r=or(e),t=e,n=null,o=null,s=a(r,t),u=f=>{t=f,s.value=f},d=f=>(n=f,g),h=f=>(o=f,g),x=f=>{if(n){let c=n(f);c!==void 0&&u(c)}if(o){let c=o(f);c!==void 0&&u(c)}},g=Object.create(s);return g.set=u,g.onObjectUpdate=d,g.onRenderUpdate=h,g._updateFromContext=x,g.isUniform=!0,g},ce=b(0),pe=b(0),me=b(0),rt=b([1920,1080]),tt=b([0,0]),ir=e=>{if(e.time!==void 0){let r=ce.value||0;ce.set(e.time),pe.set(r),me.set(e.time-r)}};var ar=e=>{let r=(...t)=>{let n=t.map(s=>i.obj(s)&&"type"in s&&s.type?s:U(s));return e(n)||U(0)};return r.call=t=>e(t),r},sr=(e,r)=>{r();let t={ElseIf(n,o){return o(),t},Else(n){n()}};return t},ur=a("vec4",void 0),fr=a("vec4",void 0),cr=b(0),pr=b([1920,1080]),mr=b([0,0]),lr=e=>e.abs(),dr=e=>e.sin(),gr=e=>e.cos(),hr=e=>e.tan(),br=e=>e.sqrt(),xr=e=>e.floor(),yr=e=>e.ceil(),vr=e=>e.fract(),Tr=e=>e.normalize(),Er=e=>e.length();var $r=e=>i.obj(e)?"isGL"in e:!1,de=()=>typeof window>"u",ge=()=>de()?!1:"gpu"in navigator,le=performance.now(),he=e=>{let r=(0,v.event)({isNative:!1,isWebGL:!0,isLoop:!0,isGL:!0,size:[0,0],mouse:[0,0],count:3,webgl:{},webgpu:{}});return r.queue=(0,X.createQueue)(),r.frame=(0,X.createFrame)(),r.attribute=(0,v.durable)((t,n,o)=>r.queue(()=>r._attribute?.(t,n,o))),r.texture=(0,v.durable)((t,n)=>r.queue(()=>r._texture?.(t,n))),r.uniform=(0,v.durable)((t,n,o)=>r.queue(()=>r._uniform?.(t,n,o))),r.uniform({iResolution:r.size,iMouse:[0,0],iTime:0}),r("mount",async()=>{ge()||(r.isWebGL=!0),r.isWebGL?await q(r):await Y(r),r.resize(),r.frame(()=>(r.loop(),r.queue.flush(),r.render(),r.isLoop)),!r.isNative&&(window.addEventListener("resize",r.resize),r.el.addEventListener("mousemove",r.mousemove))}),r("clean",()=>{r.frame.stop(),r.frame.clean(r.render),!r.isNative&&(window.removeEventListener("resize",r.resize),r.el.removeEventListener("mousemove",r.mousemove))}),r("resize",()=>{let t=r.width||window.innerWidth,n=r.height||window.innerHeight;r.size[0]=r.el.width=t,r.size[1]=r.el.height=n,r.uniform("iResolution",r.size)}),r("mousemove",(t,n=t.clientX,o=t.clientY)=>{let[s,u]=r.size,{top:d,left:h}=r.el.getBoundingClientRect();r.mouse[0]=(n-d-s/2)/(s/2),r.mouse[1]=-(o-h-u/2)/(u/2),r.uniform("iMouse",r.mouse)}),r("loop",()=>{le=performance.now()/1e3,r.uniform("iTime",le)}),r(e)},wr=he;0&&(module.exports={CACHE_BOOLS,CACHE_FLOATS,CACHE_INTS,FUNCTIONS,Fn,If,OPERATORS,SWIZZLES,TYPES,abs,activeTexture,bool,ceil,color,convertToNode,cos,createAttrib,createDescriptor,createGL,createIbo,createNode,createPipeline,createProgram,createShader,createTexture,createVbo,defaultFragmentGLSL,defaultVertexGLSL,dig,each,ext,fig,findDuplicateNodes,float,floor,flush,fract,fragCoord,getCachedBool,getCachedFloat,getCachedInt,glsl,iDeltaTime,iMouse,iPrevTime,iResolution,iTime,int,is,isGL,isServer,isWebGPUSupported,length,node,nodeToGLSL,nodeToWGSL,normalize,position,replace,sig,sin,sqrt,tan,uniform,updateUniforms,vec2,vec3,vec4,webgl,webgpu,wgsl});
|
|
46
54
|
//# sourceMappingURL=index.js.map
|