glre 0.27.0 → 0.29.0

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