typegpu 0.4.6 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chunk-3JTP2ATR.cjs +2 -0
- package/chunk-3JTP2ATR.cjs.map +1 -0
- package/chunk-3QXCKMEJ.cjs +2 -0
- package/chunk-3QXCKMEJ.cjs.map +1 -0
- package/chunk-DR55IHDD.js +4 -0
- package/chunk-DR55IHDD.js.map +1 -0
- package/chunk-KVOFUY5A.js +2 -0
- package/chunk-KVOFUY5A.js.map +1 -0
- package/chunk-QRLTUOBJ.cjs +4 -0
- package/chunk-QRLTUOBJ.cjs.map +1 -0
- package/chunk-VOFHV4Z6.js +2 -0
- package/chunk-VOFHV4Z6.js.map +1 -0
- package/data/index.cjs +1 -1
- package/data/index.cjs.map +1 -1
- package/data/index.js +1 -1
- package/index.cjs +18 -13
- package/index.cjs.map +1 -1
- package/index.d.cts +44 -4
- package/index.d.ts +44 -4
- package/index.js +18 -13
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/std/index.cjs +1 -1
- package/std/index.cjs.map +1 -1
- package/std/index.d.cts +72 -40
- package/std/index.d.ts +72 -40
- package/std/index.js +1 -1
- package/std/index.js.map +1 -1
- package/chunk-7S2KQX6O.js +0 -4
- package/chunk-7S2KQX6O.js.map +0 -1
- package/chunk-JSF3RDCP.js +0 -2
- package/chunk-JSF3RDCP.js.map +0 -1
- package/chunk-TLEBUZ6A.cjs +0 -4
- package/chunk-TLEBUZ6A.cjs.map +0 -1
- package/chunk-WVFPBCIE.cjs +0 -2
- package/chunk-WVFPBCIE.cjs.map +0 -1
package/std/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/std/discard.ts","../../src/data/vectorOps.ts","../../src/std/numeric.ts","../../src/std/atomic.ts"],"sourcesContent":["import { inGPUMode } from '../gpuMode.js';\n\nexport function discard(): never {\n if (!inGPUMode()) {\n throw new Error('discard() can only be used on the GPU.');\n }\n return 'discard;' as never;\n}\n","import { mat2x2f, mat3x3f, mat4x4f } from './matrix';\nimport {\n vec2f,\n vec2h,\n vec2i,\n vec2u,\n vec3f,\n vec3h,\n vec3i,\n vec3u,\n vec4f,\n vec4h,\n vec4i,\n vec4u,\n} from './vector';\nimport type * as wgsl from './wgslTypes';\nimport type { VecKind } from './wgslTypes';\n\ntype vBase = { kind: VecKind };\ntype v2 = wgsl.v2f | wgsl.v2h | wgsl.v2i | wgsl.v2u;\ntype v3 = wgsl.v3f | wgsl.v3h | wgsl.v3i | wgsl.v3u;\ntype v4 = wgsl.v4f | wgsl.v4h | wgsl.v4i | wgsl.v4u;\n\ntype MatKind = 'mat2x2f' | 'mat3x3f' | 'mat4x4f';\n\nconst lengthVec2 = (v: v2) => Math.sqrt(v.x ** 2 + v.y ** 2);\nconst lengthVec3 = (v: v3) => Math.sqrt(v.x ** 2 + v.y ** 2 + v.z ** 2);\nconst lengthVec4 = (v: v4) =>\n Math.sqrt(v.x ** 2 + v.y ** 2 + v.z ** 2 + v.w ** 2);\n\nconst dotVec2 = (lhs: v2, rhs: v2) => lhs.x * rhs.x + lhs.y * rhs.y;\nconst dotVec3 = (lhs: v3, rhs: v3) =>\n lhs.x * rhs.x + lhs.y * rhs.y + lhs.z * rhs.z;\nconst dotVec4 = (lhs: v4, rhs: v4) =>\n lhs.x * rhs.x + lhs.y * rhs.y + lhs.z * rhs.z + lhs.w * rhs.w;\n\nconst clamp = (value: number, low: number, high: number) =>\n Math.min(Math.max(low, value), high);\n\ntype UnaryOp = (a: number) => number;\ntype BinaryOp = (a: number, b: number) => number;\n\nconst unary2f = (op: UnaryOp) => (a: wgsl.v2f) => vec2f(op(a.x), op(a.y));\nconst unary2h = (op: UnaryOp) => (a: wgsl.v2h) => vec2h(op(a.x), op(a.y));\nconst unary2i = (op: UnaryOp) => (a: wgsl.v2i) => vec2i(op(a.x), op(a.y));\nconst unary2u = (op: UnaryOp) => (a: wgsl.v2u) => vec2u(op(a.x), op(a.y));\n\nconst unary3f = (op: UnaryOp) => (a: wgsl.v3f) =>\n vec3f(op(a.x), op(a.y), op(a.z));\n\nconst unary3h = (op: UnaryOp) => (a: wgsl.v3h) =>\n vec3h(op(a.x), op(a.y), op(a.z));\n\nconst unary3i = (op: UnaryOp) => (a: wgsl.v3i) =>\n vec3i(op(a.x), op(a.y), op(a.z));\n\nconst unary3u = (op: UnaryOp) => (a: wgsl.v3u) =>\n vec3u(op(a.x), op(a.y), op(a.z));\n\nconst unary4f = (op: UnaryOp) => (a: wgsl.v4f) =>\n vec4f(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst unary4h = (op: UnaryOp) => (a: wgsl.v4h) =>\n vec4h(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst unary4i = (op: UnaryOp) => (a: wgsl.v4i) =>\n vec4i(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst unary4u = (op: UnaryOp) => (a: wgsl.v4u) =>\n vec4u(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst binaryComponentWise2f = (op: BinaryOp) => (a: wgsl.v2f, b: wgsl.v2f) =>\n vec2f(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise2h = (op: BinaryOp) => (a: wgsl.v2h, b: wgsl.v2h) =>\n vec2h(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise2i = (op: BinaryOp) => (a: wgsl.v2i, b: wgsl.v2i) =>\n vec2i(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise2u = (op: BinaryOp) => (a: wgsl.v2u, b: wgsl.v2u) =>\n vec2u(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise3f = (op: BinaryOp) => (a: wgsl.v3f, b: wgsl.v3f) =>\n vec3f(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise3h = (op: BinaryOp) => (a: wgsl.v3h, b: wgsl.v3h) =>\n vec3h(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise3i = (op: BinaryOp) => (a: wgsl.v3i, b: wgsl.v3i) =>\n vec3i(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise3u = (op: BinaryOp) => (a: wgsl.v3u, b: wgsl.v3u) =>\n vec3u(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise4f = (op: BinaryOp) => (a: wgsl.v4f, b: wgsl.v4f) =>\n vec4f(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nconst binaryComponentWise4h = (op: BinaryOp) => (a: wgsl.v4h, b: wgsl.v4h) =>\n vec4h(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nconst binaryComponentWise4i = (op: BinaryOp) => (a: wgsl.v4i, b: wgsl.v4i) =>\n vec4i(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nconst binaryComponentWise4u = (op: BinaryOp) => (a: wgsl.v4u, b: wgsl.v4u) =>\n vec4u(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nexport const VectorOps = {\n abs: {\n vec2f: unary2f(Math.abs),\n vec2h: unary2h(Math.abs),\n vec2i: unary2i(Math.abs),\n vec2u: unary2u(Math.abs),\n\n vec3f: unary3f(Math.abs),\n vec3h: unary3h(Math.abs),\n vec3i: unary3i(Math.abs),\n vec3u: unary3u(Math.abs),\n\n vec4f: unary4f(Math.abs),\n vec4h: unary4h(Math.abs),\n vec4i: unary4i(Math.abs),\n vec4u: unary4u(Math.abs),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n atan2: {\n vec2f: binaryComponentWise2f(Math.atan2),\n vec2h: binaryComponentWise2h(Math.atan2),\n vec2i: binaryComponentWise2i(Math.atan2),\n vec2u: binaryComponentWise2u(Math.atan2),\n\n vec3f: binaryComponentWise3f(Math.atan2),\n vec3h: binaryComponentWise3h(Math.atan2),\n vec3i: binaryComponentWise3i(Math.atan2),\n vec3u: binaryComponentWise3u(Math.atan2),\n\n vec4f: binaryComponentWise4f(Math.atan2),\n vec4h: binaryComponentWise4h(Math.atan2),\n vec4i: binaryComponentWise4i(Math.atan2),\n vec4u: binaryComponentWise4u(Math.atan2),\n } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n ceil: {\n vec2f: unary2f(Math.ceil),\n vec2h: unary2h(Math.ceil),\n vec2i: unary2i(Math.ceil),\n vec2u: unary2u(Math.ceil),\n\n vec3f: unary3f(Math.ceil),\n vec3h: unary3h(Math.ceil),\n vec3i: unary3i(Math.ceil),\n vec3u: unary3u(Math.ceil),\n\n vec4f: unary4f(Math.ceil),\n vec4h: unary4h(Math.ceil),\n vec4i: unary4i(Math.ceil),\n vec4u: unary4u(Math.ceil),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n clamp: {\n vec2f: (v: wgsl.v2f, low: wgsl.v2f, high: wgsl.v2f) =>\n vec2f(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n vec2h: (v: wgsl.v2h, low: wgsl.v2h, high: wgsl.v2h) =>\n vec2h(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n vec2i: (v: wgsl.v2i, low: wgsl.v2i, high: wgsl.v2i) =>\n vec2i(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n vec2u: (v: wgsl.v2u, low: wgsl.v2u, high: wgsl.v2u) =>\n vec2u(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n\n vec3f: (v: wgsl.v3f, low: wgsl.v3f, high: wgsl.v3f) =>\n vec3f(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n ),\n vec3h: (v: wgsl.v3h, low: wgsl.v3h, high: wgsl.v3h) =>\n vec3h(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n ),\n vec3i: (v: wgsl.v3i, low: wgsl.v3i, high: wgsl.v3f) =>\n vec3i(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n ),\n vec3u: (v: wgsl.v3u, low: wgsl.v3u, high: wgsl.v3f) =>\n vec3u(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n ),\n\n vec4f: (v: wgsl.v4f, low: wgsl.v4f, high: wgsl.v4f) =>\n vec4f(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n clamp(v.w, low.w, high.w),\n ),\n vec4h: (v: wgsl.v4h, low: wgsl.v4h, high: wgsl.v4h) =>\n vec4h(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n clamp(v.w, low.w, high.w),\n ),\n vec4i: (v: wgsl.v4i, low: wgsl.v4i, high: wgsl.v4i) =>\n vec4i(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n clamp(v.w, low.w, high.w),\n ),\n vec4u: (v: wgsl.v4u, low: wgsl.v4u, high: wgsl.v4u) =>\n vec4u(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n clamp(v.w, low.w, high.w),\n ),\n } as Record<VecKind, <T extends vBase>(v: T, low: T, high: T) => T>,\n\n length: {\n vec2f: lengthVec2,\n vec2h: lengthVec2,\n vec2i: lengthVec2,\n vec2u: lengthVec2,\n vec3f: lengthVec3,\n vec3h: lengthVec3,\n vec3i: lengthVec3,\n vec3u: lengthVec3,\n vec4f: lengthVec4,\n vec4h: lengthVec4,\n vec4i: lengthVec4,\n vec4u: lengthVec4,\n } as Record<VecKind, (v: vBase) => number>,\n\n add: {\n vec2f: (a: wgsl.v2f, b: wgsl.v2f) => vec2f(a.x + b.x, a.y + b.y),\n vec2h: (a: wgsl.v2h, b: wgsl.v2h) => vec2h(a.x + b.x, a.y + b.y),\n vec2i: (a: wgsl.v2i, b: wgsl.v2i) => vec2i(a.x + b.x, a.y + b.y),\n vec2u: (a: wgsl.v2u, b: wgsl.v2u) => vec2u(a.x + b.x, a.y + b.y),\n\n vec3f: (a: wgsl.v3f, b: wgsl.v3f) => vec3f(a.x + b.x, a.y + b.y, a.z + b.z),\n vec3h: (a: wgsl.v3h, b: wgsl.v3h) => vec3h(a.x + b.x, a.y + b.y, a.z + b.z),\n vec3i: (a: wgsl.v3i, b: wgsl.v3i) => vec3i(a.x + b.x, a.y + b.y, a.z + b.z),\n vec3u: (a: wgsl.v3u, b: wgsl.v3u) => vec3u(a.x + b.x, a.y + b.y, a.z + b.z),\n\n vec4f: (a: wgsl.v4f, b: wgsl.v4f) =>\n vec4f(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w),\n vec4h: (a: wgsl.v4h, b: wgsl.v4h) =>\n vec4h(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w),\n vec4i: (a: wgsl.v4i, b: wgsl.v4i) =>\n vec4i(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w),\n vec4u: (a: wgsl.v4u, b: wgsl.v4u) =>\n vec4u(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w),\n } as Record<VecKind, <T extends vBase>(lhs: T, rhs: T) => T>,\n\n sub: {\n vec2f: (a: wgsl.v2f, b: wgsl.v2f) => vec2f(a.x - b.x, a.y - b.y),\n vec2h: (a: wgsl.v2h, b: wgsl.v2h) => vec2h(a.x - b.x, a.y - b.y),\n vec2i: (a: wgsl.v2i, b: wgsl.v2i) => vec2i(a.x - b.x, a.y - b.y),\n vec2u: (a: wgsl.v2u, b: wgsl.v2u) => vec2u(a.x - b.x, a.y - b.y),\n\n vec3f: (a: wgsl.v3f, b: wgsl.v3f) => vec3f(a.x - b.x, a.y - b.y, a.z - b.z),\n vec3h: (a: wgsl.v3h, b: wgsl.v3h) => vec3h(a.x - b.x, a.y - b.y, a.z - b.z),\n vec3i: (a: wgsl.v3i, b: wgsl.v3i) => vec3i(a.x - b.x, a.y - b.y, a.z - b.z),\n vec3u: (a: wgsl.v3u, b: wgsl.v3u) => vec3u(a.x - b.x, a.y - b.y, a.z - b.z),\n\n vec4f: (a: wgsl.v4f, b: wgsl.v4f) =>\n vec4f(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w),\n vec4h: (a: wgsl.v4h, b: wgsl.v4h) =>\n vec4h(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w),\n vec4i: (a: wgsl.v4i, b: wgsl.v4i) =>\n vec4i(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w),\n vec4u: (a: wgsl.v4u, b: wgsl.v4u) =>\n vec4u(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w),\n } as Record<VecKind, <T extends vBase>(lhs: T, rhs: T) => T>,\n\n mulSxV: {\n vec2f: (s: number, v: wgsl.v2f) => vec2f(s * v.x, s * v.y),\n vec2h: (s: number, v: wgsl.v2h) => vec2h(s * v.x, s * v.y),\n vec2i: (s: number, v: wgsl.v2i) => vec2i(s * v.x, s * v.y),\n vec2u: (s: number, v: wgsl.v2u) => vec2u(s * v.x, s * v.y),\n\n vec3f: (s: number, v: wgsl.v3f) => vec3f(s * v.x, s * v.y, s * v.z),\n vec3h: (s: number, v: wgsl.v3h) => vec3h(s * v.x, s * v.y, s * v.z),\n vec3i: (s: number, v: wgsl.v3i) => vec3i(s * v.x, s * v.y, s * v.z),\n vec3u: (s: number, v: wgsl.v3u) => vec3u(s * v.x, s * v.y, s * v.z),\n\n vec4f: (s: number, v: wgsl.v4f) =>\n vec4f(s * v.x, s * v.y, s * v.z, s * v.w),\n vec4h: (s: number, v: wgsl.v4h) =>\n vec4h(s * v.x, s * v.y, s * v.z, s * v.w),\n vec4i: (s: number, v: wgsl.v4i) =>\n vec4i(s * v.x, s * v.y, s * v.z, s * v.w),\n vec4u: (s: number, v: wgsl.v4u) =>\n vec4u(s * v.x, s * v.y, s * v.z, s * v.w),\n\n mat2x2f: (s: number, m: wgsl.m2x2f) => {\n const m_ = m.columns as [wgsl.v2f, wgsl.v2f];\n return mat2x2f(s * m_[0].x, s * m_[0].y, s * m_[1].x, s * m_[1].y);\n },\n\n mat3x3f: (s: number, m: wgsl.m3x3f) => {\n const m_ = m.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n return mat3x3f(\n s * m_[0].x,\n s * m_[0].y,\n s * m_[0].z,\n\n s * m_[1].x,\n s * m_[1].y,\n s * m_[1].z,\n\n s * m_[2].x,\n s * m_[2].y,\n s * m_[2].z,\n );\n },\n\n mat4x4f: (s: number, m: wgsl.m4x4f) => {\n const m_ = m.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n return mat4x4f(\n s * m_[0].x,\n s * m_[0].y,\n s * m_[0].z,\n s * m_[0].w,\n\n s * m_[1].x,\n s * m_[1].y,\n s * m_[1].z,\n s * m_[1].w,\n\n s * m_[2].x,\n s * m_[2].y,\n s * m_[2].z,\n s * m_[2].w,\n\n s * m_[3].x,\n s * m_[3].y,\n s * m_[3].z,\n s * m_[3].w,\n );\n },\n } as Record<\n VecKind | MatKind,\n <T extends vBase | wgsl.AnyMatInstance>(s: number, v: T) => T\n >,\n\n mulVxV: {\n vec2f: (a: wgsl.v2f, b: wgsl.v2f) => vec2f(a.x * b.x, a.y * b.y),\n vec2h: (a: wgsl.v2h, b: wgsl.v2h) => vec2h(a.x * b.x, a.y * b.y),\n vec2i: (a: wgsl.v2i, b: wgsl.v2i) => vec2i(a.x * b.x, a.y * b.y),\n vec2u: (a: wgsl.v2u, b: wgsl.v2u) => vec2u(a.x * b.x, a.y * b.y),\n\n vec3f: (a: wgsl.v3f, b: wgsl.v3f) => vec3f(a.x * b.x, a.y * b.y, a.z * b.z),\n vec3h: (a: wgsl.v3h, b: wgsl.v3h) => vec3h(a.x * b.x, a.y * b.y, a.z * b.z),\n vec3i: (a: wgsl.v3i, b: wgsl.v3i) => vec3i(a.x * b.x, a.y * b.y, a.z * b.z),\n vec3u: (a: wgsl.v3u, b: wgsl.v3u) => vec3u(a.x * b.x, a.y * b.y, a.z * b.z),\n\n vec4f: (a: wgsl.v4f, b: wgsl.v4f) =>\n vec4f(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w),\n vec4h: (a: wgsl.v4h, b: wgsl.v4h) =>\n vec4h(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w),\n vec4i: (a: wgsl.v4i, b: wgsl.v4i) =>\n vec4i(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w),\n vec4u: (a: wgsl.v4u, b: wgsl.v4u) =>\n vec4u(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w),\n\n mat2x2f: (a: wgsl.m2x2f, b: wgsl.m2x2f) => {\n const a_ = a.columns as [wgsl.v2f, wgsl.v2f];\n const b_ = b.columns as [wgsl.v2f, wgsl.v2f];\n\n return mat2x2f(\n a_[0].x * b_[0].x + a_[1].x * b_[0].y,\n a_[0].y * b_[0].x + a_[1].y * b_[0].y,\n\n a_[0].x * b_[1].x + a_[1].x * b_[1].y,\n a_[0].y * b_[1].x + a_[1].y * b_[1].y,\n );\n },\n\n mat3x3f: (a: wgsl.m3x3f, b: wgsl.m3x3f) => {\n const a_ = a.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n const b_ = b.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n\n return mat3x3f(\n a_[0].x * b_[0].x + a_[1].x * b_[0].y + a_[2].x * b_[0].z,\n a_[0].y * b_[0].x + a_[1].y * b_[0].y + a_[2].y * b_[0].z,\n a_[0].z * b_[0].x + a_[1].z * b_[0].y + a_[2].z * b_[0].z,\n\n a_[0].x * b_[1].x + a_[1].x * b_[1].y + a_[2].x * b_[1].z,\n a_[0].y * b_[1].x + a_[1].y * b_[1].y + a_[2].y * b_[1].z,\n a_[0].z * b_[1].x + a_[1].z * b_[1].y + a_[2].z * b_[1].z,\n\n a_[0].x * b_[2].x + a_[1].x * b_[2].y + a_[2].x * b_[2].z,\n a_[0].y * b_[2].x + a_[1].y * b_[2].y + a_[2].y * b_[2].z,\n a_[0].z * b_[2].x + a_[1].z * b_[2].y + a_[2].z * b_[2].z,\n );\n },\n\n mat4x4f: (a: wgsl.m4x4f, b: wgsl.m4x4f) => {\n const a_ = a.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n const b_ = b.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n\n return mat4x4f(\n a_[0].x * b_[0].x +\n a_[1].x * b_[0].y +\n a_[2].x * b_[0].z +\n a_[3].x * b_[0].w,\n a_[0].y * b_[0].x +\n a_[1].y * b_[0].y +\n a_[2].y * b_[0].z +\n a_[3].y * b_[0].w,\n a_[0].z * b_[0].x +\n a_[1].z * b_[0].y +\n a_[2].z * b_[0].z +\n a_[3].z * b_[0].w,\n a_[0].w * b_[0].x +\n a_[1].w * b_[0].y +\n a_[2].w * b_[0].z +\n a_[3].w * b_[0].w,\n\n a_[0].x * b_[1].x +\n a_[1].x * b_[1].y +\n a_[2].x * b_[1].z +\n a_[3].x * b_[1].w,\n a_[0].y * b_[1].x +\n a_[1].y * b_[1].y +\n a_[2].y * b_[1].z +\n a_[3].y * b_[1].w,\n a_[0].z * b_[1].x +\n a_[1].z * b_[1].y +\n a_[2].z * b_[1].z +\n a_[3].z * b_[1].w,\n a_[0].w * b_[1].x +\n a_[1].w * b_[1].y +\n a_[2].w * b_[1].z +\n a_[3].w * b_[1].w,\n\n a_[0].x * b_[2].x +\n a_[1].x * b_[2].y +\n a_[2].x * b_[2].z +\n a_[3].x * b_[2].w,\n a_[0].y * b_[2].x +\n a_[1].y * b_[2].y +\n a_[2].y * b_[2].z +\n a_[3].y * b_[2].w,\n a_[0].z * b_[2].x +\n a_[1].z * b_[2].y +\n a_[2].z * b_[2].z +\n a_[3].z * b_[2].w,\n a_[0].w * b_[2].x +\n a_[1].w * b_[2].y +\n a_[2].w * b_[2].z +\n a_[3].w * b_[2].w,\n\n a_[0].x * b_[3].x +\n a_[1].x * b_[3].y +\n a_[2].x * b_[3].z +\n a_[3].x * b_[3].w,\n a_[0].y * b_[3].x +\n a_[1].y * b_[3].y +\n a_[2].y * b_[3].z +\n a_[3].y * b_[3].w,\n a_[0].z * b_[3].x +\n a_[1].z * b_[3].y +\n a_[2].z * b_[3].z +\n a_[3].z * b_[3].w,\n a_[0].w * b_[3].x +\n a_[1].w * b_[3].y +\n a_[2].w * b_[3].z +\n a_[3].w * b_[3].w,\n );\n },\n } as Record<\n VecKind | MatKind,\n <T extends vBase | wgsl.AnyMatInstance>(lhs: T, rhs: T) => T\n >,\n\n mulMxV: {\n mat2x2f: (m: wgsl.m2x2f, v: wgsl.v2f) => {\n const m_ = m.columns as [wgsl.v2f, wgsl.v2f];\n return vec2f(\n m_[0].x * v.x + m_[1].x * v.y,\n m_[0].y * v.x + m_[1].y * v.y,\n );\n },\n\n mat3x3f: (m: wgsl.m3x3f, v: wgsl.v3f) => {\n const m_ = m.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n return vec3f(\n m_[0].x * v.x + m_[1].x * v.y + m_[2].x * v.z,\n m_[0].y * v.x + m_[1].y * v.y + m_[2].y * v.z,\n m_[0].z * v.x + m_[1].z * v.y + m_[2].z * v.z,\n );\n },\n\n mat4x4f: (m: wgsl.m4x4f, v: wgsl.v4f) => {\n const m_ = m.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n return vec4f(\n m_[0].x * v.x + m_[1].x * v.y + m_[2].x * v.z + m_[3].x * v.w,\n m_[0].y * v.x + m_[1].y * v.y + m_[2].y * v.z + m_[3].y * v.w,\n m_[0].z * v.x + m_[1].z * v.y + m_[2].z * v.z + m_[3].z * v.w,\n m_[0].w * v.x + m_[1].w * v.y + m_[2].w * v.z + m_[3].w * v.w,\n );\n },\n } as Record<\n MatKind,\n <T extends wgsl.AnyMatInstance>(\n m: T,\n v: wgsl.vBaseForMat<T>,\n ) => wgsl.vBaseForMat<T>\n >,\n\n mulVxM: {\n mat2x2f: (v: wgsl.v2f, m: wgsl.m2x2f) => {\n const m_ = m.columns as [wgsl.v2f, wgsl.v2f];\n return vec2f(\n v.x * m_[0].x + v.y * m_[0].y,\n v.x * m_[1].x + v.y * m_[1].y,\n );\n },\n\n mat3x3f: (v: wgsl.v3f, m: wgsl.m3x3f) => {\n const m_ = m.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n return vec3f(\n v.x * m_[0].x + v.y * m_[0].y + v.z * m_[0].z,\n v.x * m_[1].x + v.y * m_[1].y + v.z * m_[1].z,\n v.x * m_[2].x + v.y * m_[2].y + v.z * m_[2].z,\n );\n },\n\n mat4x4f: (v: wgsl.v4f, m: wgsl.m4x4f) => {\n const m_ = m.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n return vec4f(\n v.x * m_[0].x + v.y * m_[0].y + v.z * m_[0].z + v.w * m_[0].w,\n v.x * m_[1].x + v.y * m_[1].y + v.z * m_[1].z + v.w * m_[1].w,\n v.x * m_[2].x + v.y * m_[2].y + v.z * m_[2].z + v.w * m_[2].w,\n v.x * m_[3].x + v.y * m_[3].y + v.z * m_[3].z + v.w * m_[3].w,\n );\n },\n } as Record<\n MatKind,\n <T extends wgsl.AnyMatInstance>(\n v: wgsl.vBaseForMat<T>,\n m: T,\n ) => wgsl.vBaseForMat<T>\n >,\n\n dot: {\n vec2f: dotVec2,\n vec2h: dotVec2,\n vec2i: dotVec2,\n vec2u: dotVec2,\n vec3f: dotVec3,\n vec3h: dotVec3,\n vec3i: dotVec3,\n vec3u: dotVec3,\n vec4f: dotVec4,\n vec4h: dotVec4,\n vec4i: dotVec4,\n vec4u: dotVec4,\n } as Record<VecKind, <T extends vBase>(lhs: T, rhs: T) => number>,\n\n normalize: {\n vec2f: (v: wgsl.v2f) => {\n const len = lengthVec2(v);\n return vec2f(v.x / len, v.y / len);\n },\n vec2h: (v: wgsl.v2h) => {\n const len = lengthVec2(v);\n return vec2h(v.x / len, v.y / len);\n },\n vec2i: (v: wgsl.v2i) => {\n const len = lengthVec2(v);\n return vec2i(v.x / len, v.y / len);\n },\n vec2u: (v: wgsl.v2u) => {\n const len = lengthVec2(v);\n return vec2u(v.x / len, v.y / len);\n },\n\n vec3f: (v: wgsl.v3f) => {\n const len = lengthVec3(v);\n return vec3f(v.x / len, v.y / len, v.z / len);\n },\n vec3h: (v: wgsl.v3h) => {\n const len = lengthVec3(v);\n return vec3h(v.x / len, v.y / len, v.z / len);\n },\n vec3i: (v: wgsl.v3i) => {\n const len = lengthVec3(v);\n return vec3i(v.x / len, v.y / len, v.z / len);\n },\n vec3u: (v: wgsl.v3u) => {\n const len = lengthVec3(v);\n return vec3u(v.x / len, v.y / len, v.z / len);\n },\n\n vec4f: (v: wgsl.v4f) => {\n const len = lengthVec4(v);\n return vec4f(v.x / len, v.y / len, v.z / len, v.w / len);\n },\n vec4h: (v: wgsl.v4h) => {\n const len = lengthVec4(v);\n return vec4h(v.x / len, v.y / len, v.z / len, v.w / len);\n },\n vec4i: (v: wgsl.v4i) => {\n const len = lengthVec4(v);\n return vec4i(v.x / len, v.y / len, v.z / len, v.w / len);\n },\n vec4u: (v: wgsl.v4u) => {\n const len = lengthVec4(v);\n return vec4u(v.x / len, v.y / len, v.z / len, v.w / len);\n },\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n cross: {\n vec3f: (a: wgsl.v3f, b: wgsl.v3f) => {\n return vec3f(\n a.y * b.z - a.z * b.y,\n a.z * b.x - a.x * b.z,\n a.x * b.y - a.y * b.x,\n );\n },\n vec3h: (a: wgsl.v3h, b: wgsl.v3h) => {\n return vec3h(\n a.y * b.z - a.z * b.y,\n a.z * b.x - a.x * b.z,\n a.x * b.y - a.y * b.x,\n );\n },\n vec3i: (a: wgsl.v3i, b: wgsl.v3i) => {\n return vec3i(\n a.y * b.z - a.z * b.y,\n a.z * b.x - a.x * b.z,\n a.x * b.y - a.y * b.x,\n );\n },\n vec3u: (a: wgsl.v3u, b: wgsl.v3u) => {\n return vec3u(\n a.y * b.z - a.z * b.y,\n a.z * b.x - a.x * b.z,\n a.x * b.y - a.y * b.x,\n );\n },\n } as Record<\n 'vec3f' | 'vec3i' | 'vec3u',\n <T extends wgsl.v3f | wgsl.v3i | wgsl.v3u>(a: T, b: T) => T\n >,\n\n floor: {\n vec2f: unary2f(Math.floor),\n vec2h: unary2h(Math.floor),\n vec2i: unary2i(Math.floor),\n vec2u: unary2u(Math.floor),\n\n vec3f: unary3f(Math.floor),\n vec3h: unary3h(Math.floor),\n vec3i: unary3i(Math.floor),\n vec3u: unary3u(Math.floor),\n\n vec4f: unary4f(Math.floor),\n vec4h: unary4h(Math.floor),\n vec4i: unary4i(Math.floor),\n vec4u: unary4u(Math.floor),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n max: {\n vec2f: binaryComponentWise2f(Math.max),\n vec2h: binaryComponentWise2h(Math.max),\n vec2i: binaryComponentWise2i(Math.max),\n vec2u: binaryComponentWise2u(Math.max),\n\n vec3f: binaryComponentWise3f(Math.max),\n vec3h: binaryComponentWise3h(Math.max),\n vec3i: binaryComponentWise3i(Math.max),\n vec3u: binaryComponentWise3u(Math.max),\n\n vec4f: binaryComponentWise4f(Math.max),\n vec4h: binaryComponentWise4h(Math.max),\n vec4i: binaryComponentWise4i(Math.max),\n vec4u: binaryComponentWise4u(Math.max),\n } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n min: {\n vec2f: binaryComponentWise2f(Math.min),\n vec2h: binaryComponentWise2h(Math.min),\n vec2i: binaryComponentWise2i(Math.min),\n vec2u: binaryComponentWise2u(Math.min),\n\n vec3f: binaryComponentWise3f(Math.min),\n vec3h: binaryComponentWise3h(Math.min),\n vec3i: binaryComponentWise3i(Math.min),\n vec3u: binaryComponentWise3u(Math.min),\n\n vec4f: binaryComponentWise4f(Math.min),\n vec4h: binaryComponentWise4h(Math.min),\n vec4i: binaryComponentWise4i(Math.min),\n vec4u: binaryComponentWise4u(Math.min),\n } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n pow: {\n vec2f: (base: wgsl.v2f, exponent: wgsl.v2f) =>\n vec2f(base.x ** exponent.x, base.y ** exponent.y),\n vec2h: (base: wgsl.v2h, exponent: wgsl.v2h) =>\n vec2h(base.x ** exponent.x, base.y ** exponent.y),\n\n vec3f: (base: wgsl.v3f, exponent: wgsl.v3f) =>\n vec3f(base.x ** exponent.x, base.y ** exponent.y, base.z ** exponent.z),\n vec3h: (base: wgsl.v3h, exponent: wgsl.v3h) =>\n vec3h(base.x ** exponent.x, base.y ** exponent.y, base.z ** exponent.z),\n\n vec4f: (base: wgsl.v4f, exponent: wgsl.v4f) =>\n vec4f(\n base.x ** exponent.x,\n base.y ** exponent.y,\n base.z ** exponent.z,\n base.w ** exponent.w,\n ),\n vec4h: (base: wgsl.v4h, exponent: wgsl.v4h) =>\n vec4h(\n base.x ** exponent.x,\n base.y ** exponent.y,\n base.z ** exponent.z,\n base.w ** exponent.w,\n ),\n } as Record<\n 'vec2f' | 'vec3f' | 'vec4f' | 'vec2h' | 'vec3h' | 'vec4h' | 'number',\n <\n T extends\n | wgsl.v2f\n | wgsl.v3f\n | wgsl.v4f\n | wgsl.v2h\n | wgsl.v3h\n | wgsl.v4h\n | number,\n >(\n a: T,\n b: T,\n ) => T\n >,\n\n mix: {\n vec2f: (e1: wgsl.v2f, e2: wgsl.v2f, e3: wgsl.v2f | number) => {\n if (typeof e3 === 'number') {\n return vec2f(e1.x * (1 - e3) + e2.x * e3, e1.y * (1 - e3) + e2.y * e3);\n }\n return vec2f(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n );\n },\n vec2h: (e1: wgsl.v2h, e2: wgsl.v2h, e3: wgsl.v2h | number) => {\n if (typeof e3 === 'number') {\n return vec2h(e1.x * (1 - e3) + e2.x * e3, e1.y * (1 - e3) + e2.y * e3);\n }\n return vec2h(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n );\n },\n\n vec3f: (e1: wgsl.v3f, e2: wgsl.v3f, e3: wgsl.v3f | number) => {\n if (typeof e3 === 'number') {\n return vec3f(\n e1.x * (1 - e3) + e2.x * e3,\n e1.y * (1 - e3) + e2.y * e3,\n e1.z * (1 - e3) + e2.z * e3,\n );\n }\n return vec3f(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n e1.z * (1 - e3.z) + e2.z * e3.z,\n );\n },\n vec3h: (e1: wgsl.v3h, e2: wgsl.v3h, e3: wgsl.v3h | number) => {\n if (typeof e3 === 'number') {\n return vec3h(\n e1.x * (1 - e3) + e2.x * e3,\n e1.y * (1 - e3) + e2.y * e3,\n e1.z * (1 - e3) + e2.z * e3,\n );\n }\n return vec3h(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n e1.z * (1 - e3.z) + e2.z * e3.z,\n );\n },\n\n vec4f: (e1: wgsl.v4f, e2: wgsl.v4f, e3: wgsl.v4f | number) => {\n if (typeof e3 === 'number') {\n return vec4f(\n e1.x * (1 - e3) + e2.x * e3,\n e1.y * (1 - e3) + e2.y * e3,\n e1.z * (1 - e3) + e2.z * e3,\n e1.w * (1 - e3) + e2.w * e3,\n );\n }\n return vec4f(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n e1.z * (1 - e3.z) + e2.z * e3.z,\n e1.w * (1 - e3.w) + e2.w * e3.w,\n );\n },\n vec4h: (e1: wgsl.v4h, e2: wgsl.v4h, e3: wgsl.v4h | number) => {\n if (typeof e3 === 'number') {\n return vec4h(\n e1.x * (1 - e3) + e2.x * e3,\n e1.y * (1 - e3) + e2.y * e3,\n e1.z * (1 - e3) + e2.z * e3,\n e1.w * (1 - e3) + e2.w * e3,\n );\n }\n return vec4h(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n e1.z * (1 - e3.z) + e2.z * e3.z,\n e1.w * (1 - e3.w) + e2.w * e3.w,\n );\n },\n } as Record<\n 'vec2f' | 'vec3f' | 'vec4f' | 'vec2h' | 'vec3h' | 'vec4h',\n <T extends wgsl.v2f | wgsl.v3f | wgsl.v4f | wgsl.v2h | wgsl.v3h | wgsl.v4h>(\n a: T,\n b: T,\n c: T | number,\n ) => T\n >,\n};\n","import { VectorOps } from '../data/vectorOps';\nimport type {\n AnyMatInstance,\n VecKind,\n v2f,\n v2h,\n v3f,\n v3h,\n v3i,\n v3u,\n v4f,\n v4h,\n vBaseForMat,\n} from '../data/wgslTypes';\nimport { inGPUMode } from '../gpuMode';\n\ntype vBase = { kind: VecKind };\n\nexport function add<T extends vBase>(lhs: T, rhs: T): T {\n if (inGPUMode()) {\n return `(${lhs} + ${rhs})` as unknown as T;\n }\n return VectorOps.add[lhs.kind](lhs, rhs);\n}\n\nexport function sub<T extends vBase>(lhs: T, rhs: T): T {\n if (inGPUMode()) {\n return `(${lhs} - ${rhs})` as unknown as T;\n }\n return VectorOps.sub[lhs.kind](lhs, rhs);\n}\n\nexport function mul<T extends AnyMatInstance, TVec extends vBaseForMat<T>>(\n s: T,\n v: TVec,\n): TVec;\nexport function mul<T extends AnyMatInstance, TVec extends vBaseForMat<T>>(\n s: TVec,\n v: T,\n): TVec;\nexport function mul<T extends vBase | AnyMatInstance>(s: number | T, v: T): T;\nexport function mul(\n s: vBase | AnyMatInstance | number,\n v: vBase | AnyMatInstance,\n): vBase | AnyMatInstance {\n if (inGPUMode()) {\n return `(${s} * ${v})` as unknown as vBase | AnyMatInstance;\n }\n if (typeof s === 'number') {\n // Scalar * Vector/Matrix case\n return VectorOps.mulSxV[v.kind](s, v);\n }\n if (\n typeof s === 'object' &&\n typeof v === 'object' &&\n 'kind' in s &&\n 'kind' in v\n ) {\n const sIsVector = !s.kind.startsWith('mat');\n const vIsVector = !v.kind.startsWith('mat');\n if (!sIsVector && vIsVector) {\n // Matrix * Vector case\n return VectorOps.mulMxV[(s as AnyMatInstance).kind](\n s as AnyMatInstance,\n v as vBaseForMat<AnyMatInstance>,\n );\n }\n if (sIsVector && !vIsVector) {\n // Vector * Matrix case\n return VectorOps.mulVxM[(v as AnyMatInstance).kind](\n s as vBaseForMat<AnyMatInstance>,\n v as AnyMatInstance,\n );\n }\n }\n // Vector * Vector or Matrix * Matrix case\n return VectorOps.mulVxV[v.kind](s, v);\n}\n\nexport function abs<T extends vBase | number>(value: T): T {\n if (inGPUMode()) {\n return `abs(${value})` as unknown as T;\n }\n if (typeof value === 'number') {\n return Math.abs(value) as T;\n }\n return VectorOps.abs[value.kind](value) as T;\n}\n\nexport function atan2<T extends vBase | number>(y: T, x: T): T {\n if (inGPUMode()) {\n return `atan2(${y}, ${x})` as unknown as T;\n }\n if (typeof y === 'number' && typeof x === 'number') {\n return Math.atan2(y, x) as T;\n }\n return VectorOps.atan2[(y as vBase).kind](y as never, x as never) as T;\n}\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#ceil-builtin\n */\nexport function ceil<T extends vBase | number>(value: T): T {\n if (inGPUMode()) {\n return `ceil(${value})` as unknown as T;\n }\n if (typeof value === 'number') {\n return Math.ceil(value) as T;\n }\n return VectorOps.ceil[value.kind](value) as T;\n}\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#clamp\n */\nexport function clamp<T extends vBase | number>(value: T, low: T, high: T): T {\n if (inGPUMode()) {\n return `clamp(${value}, ${low}, ${high})` as unknown as T;\n }\n if (typeof value === 'number') {\n return Math.min(Math.max(low as number, value), high as number) as T;\n }\n return VectorOps.clamp[value.kind](value, low as vBase, high as vBase) as T;\n}\n\n// TODO: Accept vectors into `cos`\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#cos-builtin\n */\nexport function cos(radians: number): number {\n if (inGPUMode()) {\n return `cos(${radians})` as unknown as number;\n }\n return Math.cos(radians);\n}\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#cross-builtin\n */\nexport function cross<T extends v3f | v3i | v3u>(a: T, b: T): T {\n if (inGPUMode()) {\n return `cross(${a}, ${b})` as unknown as T;\n }\n return VectorOps.cross[a.kind](a, b);\n}\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#dot-builtin\n */\nexport function dot<T extends vBase>(lhs: T, rhs: T): number {\n if (inGPUMode()) {\n return `dot(${lhs}, ${rhs})` as unknown as number;\n }\n return VectorOps.dot[lhs.kind](lhs, rhs);\n}\n\nexport function normalize<T extends vBase>(v: T): T {\n if (inGPUMode()) {\n return `normalize(${v})` as unknown as T;\n }\n return VectorOps.normalize[v.kind](v);\n}\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#floor-builtin\n */\nexport function floor<T extends vBase | number>(value: T): T {\n if (inGPUMode()) {\n return `floor(${value})` as unknown as T;\n }\n if (typeof value === 'number') {\n return Math.floor(value) as T;\n }\n return VectorOps.floor[value.kind](value) as T;\n}\n\nexport function fract(a: number): number {\n if (inGPUMode()) {\n return `fract(${a})` as unknown as number;\n }\n return a - Math.floor(a);\n}\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#length-builtin\n */\nexport function length<T extends vBase | number>(value: T): number {\n if (inGPUMode()) {\n return `length(${value})` as unknown as number;\n }\n if (typeof value === 'number') {\n return Math.abs(value);\n }\n return VectorOps.length[value.kind](value);\n}\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#max-float-builtin\n */\nexport function max<T extends vBase | number>(a: T, b: T): T {\n if (inGPUMode()) {\n return `max(${a}, ${b})` as unknown as T;\n }\n if (typeof a === 'number') {\n return Math.max(a, b as number) as T;\n }\n return VectorOps.max[a.kind](a, b as vBase) as T;\n}\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#min-float-builtin\n */\nexport function min<T extends vBase | number>(a: T, b: T): T {\n if (inGPUMode()) {\n return `min(${a}, ${b})` as unknown as T;\n }\n if (typeof a === 'number') {\n return Math.min(a, b as number) as T;\n }\n return VectorOps.min[a.kind](a, b as vBase) as T;\n}\n\nexport function sin(radians: number): number {\n if (inGPUMode()) {\n return `sin(${radians})` as unknown as number;\n }\n return Math.sin(radians);\n}\n\nexport function exp(value: number): number {\n if (inGPUMode()) {\n return `exp(${value})` as unknown as number;\n }\n return Math.exp(value);\n}\n\nexport function pow(base: number, exponent: number): number;\nexport function pow<T extends v2f | v3f | v4f | v2h | v3h | v4h>(\n base: T,\n exponent: T,\n): T;\nexport function pow<T extends v2f | v3f | v4f | v2h | v3h | v4h | number>(\n base: T,\n exponent: T,\n): T {\n if (inGPUMode()) {\n return `pow(${base}, ${exponent})` as unknown as T;\n }\n if (typeof base === 'number' && typeof exponent === 'number') {\n return (base ** exponent) as T;\n }\n if (\n typeof base === 'object' &&\n typeof exponent === 'object' &&\n 'kind' in base &&\n 'kind' in exponent\n ) {\n return VectorOps.pow[base.kind](base, exponent) as T;\n }\n throw new Error('Invalid arguments to pow()');\n}\n\nexport function mix(e1: number, e2: number, e3: number): number;\nexport function mix<T extends v2f | v3f | v4f | v2h | v3h | v4h>(\n e1: T,\n e2: T,\n e3: number,\n): T;\nexport function mix<T extends v2f | v3f | v4f | v2h | v3h | v4h>(\n e1: T,\n e2: T,\n e3: T,\n): T;\n\nexport function mix<T extends v2f | v3f | v4f | v2h | v3h | v4h | number>(\n e1: T,\n e2: T,\n e3: T | number,\n): T {\n if (inGPUMode()) {\n return `mix(${e1}, ${e2}, ${e3})` as unknown as T;\n }\n\n if (typeof e1 === 'number') {\n if (typeof e3 !== 'number' || typeof e2 !== 'number') {\n throw new Error(\n 'When e1 and e2 are numbers, the blend factor must be a number.',\n );\n }\n return (e1 * (1 - e3) + e2 * e3) as T;\n }\n\n if (typeof e1 === 'number' || typeof e2 === 'number') {\n throw new Error('e1 and e2 need to both be vectors of the same kind.');\n }\n\n return VectorOps.mix[e1.kind](e1, e2, e3) as T;\n}\n\nexport function reflect<T extends vBase>(e1: T, e2: T): T {\n if (inGPUMode()) {\n return `reflect(${e1}, ${e2})` as unknown as T;\n }\n\n return sub(e1, mul(2 * dot(e2, e1), e2));\n}\n","import type { atomicI32, atomicU32 } from '../data/wgslTypes';\nimport { inGPUMode } from '../gpuMode';\n\ntype AnyAtomic = atomicI32 | atomicU32;\n\nexport function workgroupBarrier(): void {\n if (inGPUMode()) {\n // biome-ignore lint/correctness/noVoidTypeReturn: <string-void duality>\n return 'workgroupBarrier()' as unknown as undefined;\n }\n console.warn('workgroupBarrier is a no-op outside of GPU mode.');\n}\n\nexport function storageBarrier(): void {\n if (inGPUMode()) {\n // biome-ignore lint/correctness/noVoidTypeReturn: <string-void duality>\n return 'storageBarrier()' as unknown as undefined;\n }\n console.warn('storageBarrier is a no-op outside of GPU mode.');\n}\n\nexport function textureBarrier(): void {\n if (inGPUMode()) {\n // biome-ignore lint/correctness/noVoidTypeReturn: <string-void duality>\n return 'textureBarrier()' as unknown as undefined;\n }\n console.warn('textureBarrier is a no-op outside of GPU mode.');\n}\n\nexport function atomicLoad<T extends AnyAtomic>(a: T): number {\n if (inGPUMode()) {\n return `atomicLoad(&${a})` as unknown as number;\n }\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n}\n\nexport function atomicStore<T extends AnyAtomic>(a: T, value: number): void {\n if (inGPUMode()) {\n // biome-ignore lint/correctness/noVoidTypeReturn: <string-void duality>\n return `atomicStore(&${a}, ${value})` as unknown as undefined;\n }\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n}\n\nexport function atomicAdd<T extends AnyAtomic>(a: T, value: number): number {\n if (inGPUMode()) {\n return `atomicAdd(&${a}, ${value})` as unknown as number;\n }\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n}\n\nexport function atomicSub<T extends AnyAtomic>(a: T, value: number): number {\n if (inGPUMode()) {\n return `atomicSub(&${a}, ${value})` as unknown as number;\n }\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n}\n\nexport function atomicMax<T extends AnyAtomic>(a: T, value: number): number {\n if (inGPUMode()) {\n return `atomicMax(&${a}, ${value})` as unknown as number;\n }\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n}\n\nexport function atomicMin<T extends AnyAtomic>(a: T, value: number): number {\n if (inGPUMode()) {\n return `atomicMin(&${a}, ${value})` as unknown as number;\n }\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n}\n\nexport function atomicAnd<T extends AnyAtomic>(a: T, value: number): number {\n if (inGPUMode()) {\n return `atomicAnd(&${a}, ${value})` as unknown as number;\n }\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n}\n\nexport function atomicOr<T extends AnyAtomic>(a: T, value: number): number {\n if (inGPUMode()) {\n return `atomicOr(&${a}, ${value})` as unknown as number;\n }\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n}\n\nexport function atomicXor<T extends AnyAtomic>(a: T, value: number): number {\n if (inGPUMode()) {\n return `atomicXor(&${a}, ${value})` as unknown as number;\n }\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n}\n"],"mappings":"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AE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAElBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,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","names":["discard","inGPUMode","lengthVec2","v","lengthVec3","lengthVec4","dotVec2","lhs","rhs","dotVec3","dotVec4","clamp","value","low","high","unary2f","op","a","vec2f","unary2h","vec2h","unary2i","vec2i","unary2u","vec2u","unary3f","vec3f","unary3h","vec3h","unary3i","vec3i","unary3u","vec3u","unary4f","vec4f","unary4h","vec4h","unary4i","vec4i","unary4u","vec4u","binaryComponentWise2f","b","binaryComponentWise2h","binaryComponentWise2i","binaryComponentWise2u","binaryComponentWise3f","binaryComponentWise3h","binaryComponentWise3i","binaryComponentWise3u","binaryComponentWise4f","binaryComponentWise4h","binaryComponentWise4i","binaryComponentWise4u","VectorOps","s","m","m_","mat2x2f","mat3x3f","mat4x4f","a_","b_","len","base","exponent","e1","e2","e3","add","lhs","rhs","inGPUMode","VectorOps","sub","mul","s","v","sIsVector","vIsVector","abs","value","atan2","y","x","ceil","clamp","low","high","cos","radians","cross","a","b","dot","normalize","floor","fract","length","max","min","sin","exp","pow","base","exponent","mix","e1","e2","e3","reflect","workgroupBarrier","inGPUMode","storageBarrier","textureBarrier","atomicLoad","a","atomicStore","value","atomicAdd","atomicSub","atomicMax","atomicMin","atomicAnd","atomicOr","atomicXor"]}
|
1
|
+
{"version":3,"sources":["../../src/std/discard.ts","../../src/data/vectorOps.ts","../../src/std/numeric.ts","../../src/std/atomic.ts","../../src/std/array.ts"],"sourcesContent":["import { createDualImpl } from '../shared/generators.js';\nimport { Void } from '../types.js';\n\nexport const discard = createDualImpl(\n // CPU\n (): never => {\n throw new Error('discard() can only be used on the GPU.');\n },\n // GPU\n () => ({\n value: 'discard;',\n dataType: Void,\n }),\n);\n","import { mat2x2f, mat3x3f, mat4x4f } from './matrix';\nimport {\n vec2f,\n vec2h,\n vec2i,\n vec2u,\n vec3f,\n vec3h,\n vec3i,\n vec3u,\n vec4f,\n vec4h,\n vec4i,\n vec4u,\n} from './vector';\nimport type * as wgsl from './wgslTypes';\nimport type { VecKind } from './wgslTypes';\n\ntype vBase = { kind: VecKind };\ntype v2 = wgsl.v2f | wgsl.v2h | wgsl.v2i | wgsl.v2u;\ntype v3 = wgsl.v3f | wgsl.v3h | wgsl.v3i | wgsl.v3u;\ntype v4 = wgsl.v4f | wgsl.v4h | wgsl.v4i | wgsl.v4u;\n\ntype MatKind = 'mat2x2f' | 'mat3x3f' | 'mat4x4f';\n\nconst lengthVec2 = (v: v2) => Math.sqrt(v.x ** 2 + v.y ** 2);\nconst lengthVec3 = (v: v3) => Math.sqrt(v.x ** 2 + v.y ** 2 + v.z ** 2);\nconst lengthVec4 = (v: v4) =>\n Math.sqrt(v.x ** 2 + v.y ** 2 + v.z ** 2 + v.w ** 2);\n\nconst dotVec2 = (lhs: v2, rhs: v2) => lhs.x * rhs.x + lhs.y * rhs.y;\nconst dotVec3 = (lhs: v3, rhs: v3) =>\n lhs.x * rhs.x + lhs.y * rhs.y + lhs.z * rhs.z;\nconst dotVec4 = (lhs: v4, rhs: v4) =>\n lhs.x * rhs.x + lhs.y * rhs.y + lhs.z * rhs.z + lhs.w * rhs.w;\n\nconst clamp = (value: number, low: number, high: number) =>\n Math.min(Math.max(low, value), high);\n\ntype UnaryOp = (a: number) => number;\ntype BinaryOp = (a: number, b: number) => number;\n\nconst unary2f = (op: UnaryOp) => (a: wgsl.v2f) => vec2f(op(a.x), op(a.y));\nconst unary2h = (op: UnaryOp) => (a: wgsl.v2h) => vec2h(op(a.x), op(a.y));\nconst unary2i = (op: UnaryOp) => (a: wgsl.v2i) => vec2i(op(a.x), op(a.y));\nconst unary2u = (op: UnaryOp) => (a: wgsl.v2u) => vec2u(op(a.x), op(a.y));\n\nconst unary3f = (op: UnaryOp) => (a: wgsl.v3f) =>\n vec3f(op(a.x), op(a.y), op(a.z));\n\nconst unary3h = (op: UnaryOp) => (a: wgsl.v3h) =>\n vec3h(op(a.x), op(a.y), op(a.z));\n\nconst unary3i = (op: UnaryOp) => (a: wgsl.v3i) =>\n vec3i(op(a.x), op(a.y), op(a.z));\n\nconst unary3u = (op: UnaryOp) => (a: wgsl.v3u) =>\n vec3u(op(a.x), op(a.y), op(a.z));\n\nconst unary4f = (op: UnaryOp) => (a: wgsl.v4f) =>\n vec4f(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst unary4h = (op: UnaryOp) => (a: wgsl.v4h) =>\n vec4h(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst unary4i = (op: UnaryOp) => (a: wgsl.v4i) =>\n vec4i(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst unary4u = (op: UnaryOp) => (a: wgsl.v4u) =>\n vec4u(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst binaryComponentWise2f = (op: BinaryOp) => (a: wgsl.v2f, b: wgsl.v2f) =>\n vec2f(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise2h = (op: BinaryOp) => (a: wgsl.v2h, b: wgsl.v2h) =>\n vec2h(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise2i = (op: BinaryOp) => (a: wgsl.v2i, b: wgsl.v2i) =>\n vec2i(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise2u = (op: BinaryOp) => (a: wgsl.v2u, b: wgsl.v2u) =>\n vec2u(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise3f = (op: BinaryOp) => (a: wgsl.v3f, b: wgsl.v3f) =>\n vec3f(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise3h = (op: BinaryOp) => (a: wgsl.v3h, b: wgsl.v3h) =>\n vec3h(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise3i = (op: BinaryOp) => (a: wgsl.v3i, b: wgsl.v3i) =>\n vec3i(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise3u = (op: BinaryOp) => (a: wgsl.v3u, b: wgsl.v3u) =>\n vec3u(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise4f = (op: BinaryOp) => (a: wgsl.v4f, b: wgsl.v4f) =>\n vec4f(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nconst binaryComponentWise4h = (op: BinaryOp) => (a: wgsl.v4h, b: wgsl.v4h) =>\n vec4h(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nconst binaryComponentWise4i = (op: BinaryOp) => (a: wgsl.v4i, b: wgsl.v4i) =>\n vec4i(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nconst binaryComponentWise4u = (op: BinaryOp) => (a: wgsl.v4u, b: wgsl.v4u) =>\n vec4u(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nexport const VectorOps = {\n abs: {\n vec2f: unary2f(Math.abs),\n vec2h: unary2h(Math.abs),\n vec2i: unary2i(Math.abs),\n vec2u: unary2u(Math.abs),\n\n vec3f: unary3f(Math.abs),\n vec3h: unary3h(Math.abs),\n vec3i: unary3i(Math.abs),\n vec3u: unary3u(Math.abs),\n\n vec4f: unary4f(Math.abs),\n vec4h: unary4h(Math.abs),\n vec4i: unary4i(Math.abs),\n vec4u: unary4u(Math.abs),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n atan2: {\n vec2f: binaryComponentWise2f(Math.atan2),\n vec2h: binaryComponentWise2h(Math.atan2),\n vec2i: binaryComponentWise2i(Math.atan2),\n vec2u: binaryComponentWise2u(Math.atan2),\n\n vec3f: binaryComponentWise3f(Math.atan2),\n vec3h: binaryComponentWise3h(Math.atan2),\n vec3i: binaryComponentWise3i(Math.atan2),\n vec3u: binaryComponentWise3u(Math.atan2),\n\n vec4f: binaryComponentWise4f(Math.atan2),\n vec4h: binaryComponentWise4h(Math.atan2),\n vec4i: binaryComponentWise4i(Math.atan2),\n vec4u: binaryComponentWise4u(Math.atan2),\n } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n acos: {\n vec2f: unary2f(Math.acos),\n vec2h: unary2h(Math.acos),\n vec2i: unary2i(Math.acos),\n vec2u: unary2u(Math.acos),\n\n vec3f: unary3f(Math.acos),\n vec3h: unary3h(Math.acos),\n vec3i: unary3i(Math.acos),\n vec3u: unary3u(Math.acos),\n\n vec4f: unary4f(Math.acos),\n vec4h: unary4h(Math.acos),\n vec4i: unary4i(Math.acos),\n vec4u: unary4u(Math.acos),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n asin: {\n vec2f: unary2f(Math.asin),\n vec2h: unary2h(Math.asin),\n vec2i: unary2i(Math.asin),\n vec2u: unary2u(Math.asin),\n\n vec3f: unary3f(Math.asin),\n vec3h: unary3h(Math.asin),\n vec3i: unary3i(Math.asin),\n vec3u: unary3u(Math.asin),\n\n vec4f: unary4f(Math.asin),\n vec4h: unary4h(Math.asin),\n vec4i: unary4i(Math.asin),\n vec4u: unary4u(Math.asin),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n ceil: {\n vec2f: unary2f(Math.ceil),\n vec2h: unary2h(Math.ceil),\n vec2i: unary2i(Math.ceil),\n vec2u: unary2u(Math.ceil),\n\n vec3f: unary3f(Math.ceil),\n vec3h: unary3h(Math.ceil),\n vec3i: unary3i(Math.ceil),\n vec3u: unary3u(Math.ceil),\n\n vec4f: unary4f(Math.ceil),\n vec4h: unary4h(Math.ceil),\n vec4i: unary4i(Math.ceil),\n vec4u: unary4u(Math.ceil),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n clamp: {\n vec2f: (v: wgsl.v2f, low: wgsl.v2f, high: wgsl.v2f) =>\n vec2f(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n vec2h: (v: wgsl.v2h, low: wgsl.v2h, high: wgsl.v2h) =>\n vec2h(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n vec2i: (v: wgsl.v2i, low: wgsl.v2i, high: wgsl.v2i) =>\n vec2i(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n vec2u: (v: wgsl.v2u, low: wgsl.v2u, high: wgsl.v2u) =>\n vec2u(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n\n vec3f: (v: wgsl.v3f, low: wgsl.v3f, high: wgsl.v3f) =>\n vec3f(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n ),\n vec3h: (v: wgsl.v3h, low: wgsl.v3h, high: wgsl.v3h) =>\n vec3h(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n ),\n vec3i: (v: wgsl.v3i, low: wgsl.v3i, high: wgsl.v3f) =>\n vec3i(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n ),\n vec3u: (v: wgsl.v3u, low: wgsl.v3u, high: wgsl.v3f) =>\n vec3u(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n ),\n\n vec4f: (v: wgsl.v4f, low: wgsl.v4f, high: wgsl.v4f) =>\n vec4f(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n clamp(v.w, low.w, high.w),\n ),\n vec4h: (v: wgsl.v4h, low: wgsl.v4h, high: wgsl.v4h) =>\n vec4h(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n clamp(v.w, low.w, high.w),\n ),\n vec4i: (v: wgsl.v4i, low: wgsl.v4i, high: wgsl.v4i) =>\n vec4i(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n clamp(v.w, low.w, high.w),\n ),\n vec4u: (v: wgsl.v4u, low: wgsl.v4u, high: wgsl.v4u) =>\n vec4u(\n clamp(v.x, low.x, high.x),\n clamp(v.y, low.y, high.y),\n clamp(v.z, low.z, high.z),\n clamp(v.w, low.w, high.w),\n ),\n } as Record<VecKind, <T extends vBase>(v: T, low: T, high: T) => T>,\n\n length: {\n vec2f: lengthVec2,\n vec2h: lengthVec2,\n vec2i: lengthVec2,\n vec2u: lengthVec2,\n vec3f: lengthVec3,\n vec3h: lengthVec3,\n vec3i: lengthVec3,\n vec3u: lengthVec3,\n vec4f: lengthVec4,\n vec4h: lengthVec4,\n vec4i: lengthVec4,\n vec4u: lengthVec4,\n } as Record<VecKind, (v: vBase) => number>,\n\n add: {\n vec2f: (a: wgsl.v2f, b: wgsl.v2f) => vec2f(a.x + b.x, a.y + b.y),\n vec2h: (a: wgsl.v2h, b: wgsl.v2h) => vec2h(a.x + b.x, a.y + b.y),\n vec2i: (a: wgsl.v2i, b: wgsl.v2i) => vec2i(a.x + b.x, a.y + b.y),\n vec2u: (a: wgsl.v2u, b: wgsl.v2u) => vec2u(a.x + b.x, a.y + b.y),\n\n vec3f: (a: wgsl.v3f, b: wgsl.v3f) => vec3f(a.x + b.x, a.y + b.y, a.z + b.z),\n vec3h: (a: wgsl.v3h, b: wgsl.v3h) => vec3h(a.x + b.x, a.y + b.y, a.z + b.z),\n vec3i: (a: wgsl.v3i, b: wgsl.v3i) => vec3i(a.x + b.x, a.y + b.y, a.z + b.z),\n vec3u: (a: wgsl.v3u, b: wgsl.v3u) => vec3u(a.x + b.x, a.y + b.y, a.z + b.z),\n\n vec4f: (a: wgsl.v4f, b: wgsl.v4f) =>\n vec4f(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w),\n vec4h: (a: wgsl.v4h, b: wgsl.v4h) =>\n vec4h(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w),\n vec4i: (a: wgsl.v4i, b: wgsl.v4i) =>\n vec4i(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w),\n vec4u: (a: wgsl.v4u, b: wgsl.v4u) =>\n vec4u(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w),\n } as Record<VecKind, <T extends vBase>(lhs: T, rhs: T) => T>,\n\n sub: {\n vec2f: (a: wgsl.v2f, b: wgsl.v2f) => vec2f(a.x - b.x, a.y - b.y),\n vec2h: (a: wgsl.v2h, b: wgsl.v2h) => vec2h(a.x - b.x, a.y - b.y),\n vec2i: (a: wgsl.v2i, b: wgsl.v2i) => vec2i(a.x - b.x, a.y - b.y),\n vec2u: (a: wgsl.v2u, b: wgsl.v2u) => vec2u(a.x - b.x, a.y - b.y),\n\n vec3f: (a: wgsl.v3f, b: wgsl.v3f) => vec3f(a.x - b.x, a.y - b.y, a.z - b.z),\n vec3h: (a: wgsl.v3h, b: wgsl.v3h) => vec3h(a.x - b.x, a.y - b.y, a.z - b.z),\n vec3i: (a: wgsl.v3i, b: wgsl.v3i) => vec3i(a.x - b.x, a.y - b.y, a.z - b.z),\n vec3u: (a: wgsl.v3u, b: wgsl.v3u) => vec3u(a.x - b.x, a.y - b.y, a.z - b.z),\n\n vec4f: (a: wgsl.v4f, b: wgsl.v4f) =>\n vec4f(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w),\n vec4h: (a: wgsl.v4h, b: wgsl.v4h) =>\n vec4h(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w),\n vec4i: (a: wgsl.v4i, b: wgsl.v4i) =>\n vec4i(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w),\n vec4u: (a: wgsl.v4u, b: wgsl.v4u) =>\n vec4u(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w),\n } as Record<VecKind, <T extends vBase>(lhs: T, rhs: T) => T>,\n\n mulSxV: {\n vec2f: (s: number, v: wgsl.v2f) => vec2f(s * v.x, s * v.y),\n vec2h: (s: number, v: wgsl.v2h) => vec2h(s * v.x, s * v.y),\n vec2i: (s: number, v: wgsl.v2i) => vec2i(s * v.x, s * v.y),\n vec2u: (s: number, v: wgsl.v2u) => vec2u(s * v.x, s * v.y),\n\n vec3f: (s: number, v: wgsl.v3f) => vec3f(s * v.x, s * v.y, s * v.z),\n vec3h: (s: number, v: wgsl.v3h) => vec3h(s * v.x, s * v.y, s * v.z),\n vec3i: (s: number, v: wgsl.v3i) => vec3i(s * v.x, s * v.y, s * v.z),\n vec3u: (s: number, v: wgsl.v3u) => vec3u(s * v.x, s * v.y, s * v.z),\n\n vec4f: (s: number, v: wgsl.v4f) =>\n vec4f(s * v.x, s * v.y, s * v.z, s * v.w),\n vec4h: (s: number, v: wgsl.v4h) =>\n vec4h(s * v.x, s * v.y, s * v.z, s * v.w),\n vec4i: (s: number, v: wgsl.v4i) =>\n vec4i(s * v.x, s * v.y, s * v.z, s * v.w),\n vec4u: (s: number, v: wgsl.v4u) =>\n vec4u(s * v.x, s * v.y, s * v.z, s * v.w),\n\n mat2x2f: (s: number, m: wgsl.m2x2f) => {\n const m_ = m.columns as [wgsl.v2f, wgsl.v2f];\n return mat2x2f(s * m_[0].x, s * m_[0].y, s * m_[1].x, s * m_[1].y);\n },\n\n mat3x3f: (s: number, m: wgsl.m3x3f) => {\n const m_ = m.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n return mat3x3f(\n s * m_[0].x,\n s * m_[0].y,\n s * m_[0].z,\n\n s * m_[1].x,\n s * m_[1].y,\n s * m_[1].z,\n\n s * m_[2].x,\n s * m_[2].y,\n s * m_[2].z,\n );\n },\n\n mat4x4f: (s: number, m: wgsl.m4x4f) => {\n const m_ = m.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n return mat4x4f(\n s * m_[0].x,\n s * m_[0].y,\n s * m_[0].z,\n s * m_[0].w,\n\n s * m_[1].x,\n s * m_[1].y,\n s * m_[1].z,\n s * m_[1].w,\n\n s * m_[2].x,\n s * m_[2].y,\n s * m_[2].z,\n s * m_[2].w,\n\n s * m_[3].x,\n s * m_[3].y,\n s * m_[3].z,\n s * m_[3].w,\n );\n },\n } as Record<\n VecKind | MatKind,\n <T extends vBase | wgsl.AnyMatInstance>(s: number, v: T) => T\n >,\n\n mulVxV: {\n vec2f: (a: wgsl.v2f, b: wgsl.v2f) => vec2f(a.x * b.x, a.y * b.y),\n vec2h: (a: wgsl.v2h, b: wgsl.v2h) => vec2h(a.x * b.x, a.y * b.y),\n vec2i: (a: wgsl.v2i, b: wgsl.v2i) => vec2i(a.x * b.x, a.y * b.y),\n vec2u: (a: wgsl.v2u, b: wgsl.v2u) => vec2u(a.x * b.x, a.y * b.y),\n\n vec3f: (a: wgsl.v3f, b: wgsl.v3f) => vec3f(a.x * b.x, a.y * b.y, a.z * b.z),\n vec3h: (a: wgsl.v3h, b: wgsl.v3h) => vec3h(a.x * b.x, a.y * b.y, a.z * b.z),\n vec3i: (a: wgsl.v3i, b: wgsl.v3i) => vec3i(a.x * b.x, a.y * b.y, a.z * b.z),\n vec3u: (a: wgsl.v3u, b: wgsl.v3u) => vec3u(a.x * b.x, a.y * b.y, a.z * b.z),\n\n vec4f: (a: wgsl.v4f, b: wgsl.v4f) =>\n vec4f(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w),\n vec4h: (a: wgsl.v4h, b: wgsl.v4h) =>\n vec4h(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w),\n vec4i: (a: wgsl.v4i, b: wgsl.v4i) =>\n vec4i(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w),\n vec4u: (a: wgsl.v4u, b: wgsl.v4u) =>\n vec4u(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w),\n\n mat2x2f: (a: wgsl.m2x2f, b: wgsl.m2x2f) => {\n const a_ = a.columns as [wgsl.v2f, wgsl.v2f];\n const b_ = b.columns as [wgsl.v2f, wgsl.v2f];\n\n return mat2x2f(\n a_[0].x * b_[0].x + a_[1].x * b_[0].y,\n a_[0].y * b_[0].x + a_[1].y * b_[0].y,\n\n a_[0].x * b_[1].x + a_[1].x * b_[1].y,\n a_[0].y * b_[1].x + a_[1].y * b_[1].y,\n );\n },\n\n mat3x3f: (a: wgsl.m3x3f, b: wgsl.m3x3f) => {\n const a_ = a.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n const b_ = b.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n\n return mat3x3f(\n a_[0].x * b_[0].x + a_[1].x * b_[0].y + a_[2].x * b_[0].z,\n a_[0].y * b_[0].x + a_[1].y * b_[0].y + a_[2].y * b_[0].z,\n a_[0].z * b_[0].x + a_[1].z * b_[0].y + a_[2].z * b_[0].z,\n\n a_[0].x * b_[1].x + a_[1].x * b_[1].y + a_[2].x * b_[1].z,\n a_[0].y * b_[1].x + a_[1].y * b_[1].y + a_[2].y * b_[1].z,\n a_[0].z * b_[1].x + a_[1].z * b_[1].y + a_[2].z * b_[1].z,\n\n a_[0].x * b_[2].x + a_[1].x * b_[2].y + a_[2].x * b_[2].z,\n a_[0].y * b_[2].x + a_[1].y * b_[2].y + a_[2].y * b_[2].z,\n a_[0].z * b_[2].x + a_[1].z * b_[2].y + a_[2].z * b_[2].z,\n );\n },\n\n mat4x4f: (a: wgsl.m4x4f, b: wgsl.m4x4f) => {\n const a_ = a.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n const b_ = b.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n\n return mat4x4f(\n a_[0].x * b_[0].x +\n a_[1].x * b_[0].y +\n a_[2].x * b_[0].z +\n a_[3].x * b_[0].w,\n a_[0].y * b_[0].x +\n a_[1].y * b_[0].y +\n a_[2].y * b_[0].z +\n a_[3].y * b_[0].w,\n a_[0].z * b_[0].x +\n a_[1].z * b_[0].y +\n a_[2].z * b_[0].z +\n a_[3].z * b_[0].w,\n a_[0].w * b_[0].x +\n a_[1].w * b_[0].y +\n a_[2].w * b_[0].z +\n a_[3].w * b_[0].w,\n\n a_[0].x * b_[1].x +\n a_[1].x * b_[1].y +\n a_[2].x * b_[1].z +\n a_[3].x * b_[1].w,\n a_[0].y * b_[1].x +\n a_[1].y * b_[1].y +\n a_[2].y * b_[1].z +\n a_[3].y * b_[1].w,\n a_[0].z * b_[1].x +\n a_[1].z * b_[1].y +\n a_[2].z * b_[1].z +\n a_[3].z * b_[1].w,\n a_[0].w * b_[1].x +\n a_[1].w * b_[1].y +\n a_[2].w * b_[1].z +\n a_[3].w * b_[1].w,\n\n a_[0].x * b_[2].x +\n a_[1].x * b_[2].y +\n a_[2].x * b_[2].z +\n a_[3].x * b_[2].w,\n a_[0].y * b_[2].x +\n a_[1].y * b_[2].y +\n a_[2].y * b_[2].z +\n a_[3].y * b_[2].w,\n a_[0].z * b_[2].x +\n a_[1].z * b_[2].y +\n a_[2].z * b_[2].z +\n a_[3].z * b_[2].w,\n a_[0].w * b_[2].x +\n a_[1].w * b_[2].y +\n a_[2].w * b_[2].z +\n a_[3].w * b_[2].w,\n\n a_[0].x * b_[3].x +\n a_[1].x * b_[3].y +\n a_[2].x * b_[3].z +\n a_[3].x * b_[3].w,\n a_[0].y * b_[3].x +\n a_[1].y * b_[3].y +\n a_[2].y * b_[3].z +\n a_[3].y * b_[3].w,\n a_[0].z * b_[3].x +\n a_[1].z * b_[3].y +\n a_[2].z * b_[3].z +\n a_[3].z * b_[3].w,\n a_[0].w * b_[3].x +\n a_[1].w * b_[3].y +\n a_[2].w * b_[3].z +\n a_[3].w * b_[3].w,\n );\n },\n } as Record<\n VecKind | MatKind,\n <T extends vBase | wgsl.AnyMatInstance>(lhs: T, rhs: T) => T\n >,\n\n mulMxV: {\n mat2x2f: (m: wgsl.m2x2f, v: wgsl.v2f) => {\n const m_ = m.columns as [wgsl.v2f, wgsl.v2f];\n return vec2f(\n m_[0].x * v.x + m_[1].x * v.y,\n m_[0].y * v.x + m_[1].y * v.y,\n );\n },\n\n mat3x3f: (m: wgsl.m3x3f, v: wgsl.v3f) => {\n const m_ = m.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n return vec3f(\n m_[0].x * v.x + m_[1].x * v.y + m_[2].x * v.z,\n m_[0].y * v.x + m_[1].y * v.y + m_[2].y * v.z,\n m_[0].z * v.x + m_[1].z * v.y + m_[2].z * v.z,\n );\n },\n\n mat4x4f: (m: wgsl.m4x4f, v: wgsl.v4f) => {\n const m_ = m.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n return vec4f(\n m_[0].x * v.x + m_[1].x * v.y + m_[2].x * v.z + m_[3].x * v.w,\n m_[0].y * v.x + m_[1].y * v.y + m_[2].y * v.z + m_[3].y * v.w,\n m_[0].z * v.x + m_[1].z * v.y + m_[2].z * v.z + m_[3].z * v.w,\n m_[0].w * v.x + m_[1].w * v.y + m_[2].w * v.z + m_[3].w * v.w,\n );\n },\n } as Record<\n MatKind,\n <T extends wgsl.AnyMatInstance>(\n m: T,\n v: wgsl.vBaseForMat<T>,\n ) => wgsl.vBaseForMat<T>\n >,\n\n mulVxM: {\n mat2x2f: (v: wgsl.v2f, m: wgsl.m2x2f) => {\n const m_ = m.columns as [wgsl.v2f, wgsl.v2f];\n return vec2f(\n v.x * m_[0].x + v.y * m_[0].y,\n v.x * m_[1].x + v.y * m_[1].y,\n );\n },\n\n mat3x3f: (v: wgsl.v3f, m: wgsl.m3x3f) => {\n const m_ = m.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n return vec3f(\n v.x * m_[0].x + v.y * m_[0].y + v.z * m_[0].z,\n v.x * m_[1].x + v.y * m_[1].y + v.z * m_[1].z,\n v.x * m_[2].x + v.y * m_[2].y + v.z * m_[2].z,\n );\n },\n\n mat4x4f: (v: wgsl.v4f, m: wgsl.m4x4f) => {\n const m_ = m.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n return vec4f(\n v.x * m_[0].x + v.y * m_[0].y + v.z * m_[0].z + v.w * m_[0].w,\n v.x * m_[1].x + v.y * m_[1].y + v.z * m_[1].z + v.w * m_[1].w,\n v.x * m_[2].x + v.y * m_[2].y + v.z * m_[2].z + v.w * m_[2].w,\n v.x * m_[3].x + v.y * m_[3].y + v.z * m_[3].z + v.w * m_[3].w,\n );\n },\n } as Record<\n MatKind,\n <T extends wgsl.AnyMatInstance>(\n v: wgsl.vBaseForMat<T>,\n m: T,\n ) => wgsl.vBaseForMat<T>\n >,\n\n dot: {\n vec2f: dotVec2,\n vec2h: dotVec2,\n vec2i: dotVec2,\n vec2u: dotVec2,\n vec3f: dotVec3,\n vec3h: dotVec3,\n vec3i: dotVec3,\n vec3u: dotVec3,\n vec4f: dotVec4,\n vec4h: dotVec4,\n vec4i: dotVec4,\n vec4u: dotVec4,\n } as Record<VecKind, <T extends vBase>(lhs: T, rhs: T) => number>,\n\n normalize: {\n vec2f: (v: wgsl.v2f) => {\n const len = lengthVec2(v);\n return vec2f(v.x / len, v.y / len);\n },\n vec2h: (v: wgsl.v2h) => {\n const len = lengthVec2(v);\n return vec2h(v.x / len, v.y / len);\n },\n vec2i: (v: wgsl.v2i) => {\n const len = lengthVec2(v);\n return vec2i(v.x / len, v.y / len);\n },\n vec2u: (v: wgsl.v2u) => {\n const len = lengthVec2(v);\n return vec2u(v.x / len, v.y / len);\n },\n\n vec3f: (v: wgsl.v3f) => {\n const len = lengthVec3(v);\n return vec3f(v.x / len, v.y / len, v.z / len);\n },\n vec3h: (v: wgsl.v3h) => {\n const len = lengthVec3(v);\n return vec3h(v.x / len, v.y / len, v.z / len);\n },\n vec3i: (v: wgsl.v3i) => {\n const len = lengthVec3(v);\n return vec3i(v.x / len, v.y / len, v.z / len);\n },\n vec3u: (v: wgsl.v3u) => {\n const len = lengthVec3(v);\n return vec3u(v.x / len, v.y / len, v.z / len);\n },\n\n vec4f: (v: wgsl.v4f) => {\n const len = lengthVec4(v);\n return vec4f(v.x / len, v.y / len, v.z / len, v.w / len);\n },\n vec4h: (v: wgsl.v4h) => {\n const len = lengthVec4(v);\n return vec4h(v.x / len, v.y / len, v.z / len, v.w / len);\n },\n vec4i: (v: wgsl.v4i) => {\n const len = lengthVec4(v);\n return vec4i(v.x / len, v.y / len, v.z / len, v.w / len);\n },\n vec4u: (v: wgsl.v4u) => {\n const len = lengthVec4(v);\n return vec4u(v.x / len, v.y / len, v.z / len, v.w / len);\n },\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n cross: {\n vec3f: (a: wgsl.v3f, b: wgsl.v3f) => {\n return vec3f(\n a.y * b.z - a.z * b.y,\n a.z * b.x - a.x * b.z,\n a.x * b.y - a.y * b.x,\n );\n },\n vec3h: (a: wgsl.v3h, b: wgsl.v3h) => {\n return vec3h(\n a.y * b.z - a.z * b.y,\n a.z * b.x - a.x * b.z,\n a.x * b.y - a.y * b.x,\n );\n },\n vec3i: (a: wgsl.v3i, b: wgsl.v3i) => {\n return vec3i(\n a.y * b.z - a.z * b.y,\n a.z * b.x - a.x * b.z,\n a.x * b.y - a.y * b.x,\n );\n },\n vec3u: (a: wgsl.v3u, b: wgsl.v3u) => {\n return vec3u(\n a.y * b.z - a.z * b.y,\n a.z * b.x - a.x * b.z,\n a.x * b.y - a.y * b.x,\n );\n },\n } as Record<\n 'vec3f' | 'vec3i' | 'vec3u',\n <T extends wgsl.v3f | wgsl.v3i | wgsl.v3u>(a: T, b: T) => T\n >,\n\n floor: {\n vec2f: unary2f(Math.floor),\n vec2h: unary2h(Math.floor),\n vec2i: unary2i(Math.floor),\n vec2u: unary2u(Math.floor),\n\n vec3f: unary3f(Math.floor),\n vec3h: unary3h(Math.floor),\n vec3i: unary3i(Math.floor),\n vec3u: unary3u(Math.floor),\n\n vec4f: unary4f(Math.floor),\n vec4h: unary4h(Math.floor),\n vec4i: unary4i(Math.floor),\n vec4u: unary4u(Math.floor),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n max: {\n vec2f: binaryComponentWise2f(Math.max),\n vec2h: binaryComponentWise2h(Math.max),\n vec2i: binaryComponentWise2i(Math.max),\n vec2u: binaryComponentWise2u(Math.max),\n\n vec3f: binaryComponentWise3f(Math.max),\n vec3h: binaryComponentWise3h(Math.max),\n vec3i: binaryComponentWise3i(Math.max),\n vec3u: binaryComponentWise3u(Math.max),\n\n vec4f: binaryComponentWise4f(Math.max),\n vec4h: binaryComponentWise4h(Math.max),\n vec4i: binaryComponentWise4i(Math.max),\n vec4u: binaryComponentWise4u(Math.max),\n } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n min: {\n vec2f: binaryComponentWise2f(Math.min),\n vec2h: binaryComponentWise2h(Math.min),\n vec2i: binaryComponentWise2i(Math.min),\n vec2u: binaryComponentWise2u(Math.min),\n\n vec3f: binaryComponentWise3f(Math.min),\n vec3h: binaryComponentWise3h(Math.min),\n vec3i: binaryComponentWise3i(Math.min),\n vec3u: binaryComponentWise3u(Math.min),\n\n vec4f: binaryComponentWise4f(Math.min),\n vec4h: binaryComponentWise4h(Math.min),\n vec4i: binaryComponentWise4i(Math.min),\n vec4u: binaryComponentWise4u(Math.min),\n } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n pow: {\n vec2f: (base: wgsl.v2f, exponent: wgsl.v2f) =>\n vec2f(base.x ** exponent.x, base.y ** exponent.y),\n vec2h: (base: wgsl.v2h, exponent: wgsl.v2h) =>\n vec2h(base.x ** exponent.x, base.y ** exponent.y),\n\n vec3f: (base: wgsl.v3f, exponent: wgsl.v3f) =>\n vec3f(base.x ** exponent.x, base.y ** exponent.y, base.z ** exponent.z),\n vec3h: (base: wgsl.v3h, exponent: wgsl.v3h) =>\n vec3h(base.x ** exponent.x, base.y ** exponent.y, base.z ** exponent.z),\n\n vec4f: (base: wgsl.v4f, exponent: wgsl.v4f) =>\n vec4f(\n base.x ** exponent.x,\n base.y ** exponent.y,\n base.z ** exponent.z,\n base.w ** exponent.w,\n ),\n vec4h: (base: wgsl.v4h, exponent: wgsl.v4h) =>\n vec4h(\n base.x ** exponent.x,\n base.y ** exponent.y,\n base.z ** exponent.z,\n base.w ** exponent.w,\n ),\n } as Record<\n 'vec2f' | 'vec3f' | 'vec4f' | 'vec2h' | 'vec3h' | 'vec4h' | 'number',\n <\n T extends\n | wgsl.v2f\n | wgsl.v3f\n | wgsl.v4f\n | wgsl.v2h\n | wgsl.v3h\n | wgsl.v4h\n | number,\n >(\n a: T,\n b: T,\n ) => T\n >,\n\n mix: {\n vec2f: (e1: wgsl.v2f, e2: wgsl.v2f, e3: wgsl.v2f | number) => {\n if (typeof e3 === 'number') {\n return vec2f(e1.x * (1 - e3) + e2.x * e3, e1.y * (1 - e3) + e2.y * e3);\n }\n return vec2f(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n );\n },\n vec2h: (e1: wgsl.v2h, e2: wgsl.v2h, e3: wgsl.v2h | number) => {\n if (typeof e3 === 'number') {\n return vec2h(e1.x * (1 - e3) + e2.x * e3, e1.y * (1 - e3) + e2.y * e3);\n }\n return vec2h(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n );\n },\n\n vec3f: (e1: wgsl.v3f, e2: wgsl.v3f, e3: wgsl.v3f | number) => {\n if (typeof e3 === 'number') {\n return vec3f(\n e1.x * (1 - e3) + e2.x * e3,\n e1.y * (1 - e3) + e2.y * e3,\n e1.z * (1 - e3) + e2.z * e3,\n );\n }\n return vec3f(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n e1.z * (1 - e3.z) + e2.z * e3.z,\n );\n },\n vec3h: (e1: wgsl.v3h, e2: wgsl.v3h, e3: wgsl.v3h | number) => {\n if (typeof e3 === 'number') {\n return vec3h(\n e1.x * (1 - e3) + e2.x * e3,\n e1.y * (1 - e3) + e2.y * e3,\n e1.z * (1 - e3) + e2.z * e3,\n );\n }\n return vec3h(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n e1.z * (1 - e3.z) + e2.z * e3.z,\n );\n },\n\n vec4f: (e1: wgsl.v4f, e2: wgsl.v4f, e3: wgsl.v4f | number) => {\n if (typeof e3 === 'number') {\n return vec4f(\n e1.x * (1 - e3) + e2.x * e3,\n e1.y * (1 - e3) + e2.y * e3,\n e1.z * (1 - e3) + e2.z * e3,\n e1.w * (1 - e3) + e2.w * e3,\n );\n }\n return vec4f(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n e1.z * (1 - e3.z) + e2.z * e3.z,\n e1.w * (1 - e3.w) + e2.w * e3.w,\n );\n },\n vec4h: (e1: wgsl.v4h, e2: wgsl.v4h, e3: wgsl.v4h | number) => {\n if (typeof e3 === 'number') {\n return vec4h(\n e1.x * (1 - e3) + e2.x * e3,\n e1.y * (1 - e3) + e2.y * e3,\n e1.z * (1 - e3) + e2.z * e3,\n e1.w * (1 - e3) + e2.w * e3,\n );\n }\n return vec4h(\n e1.x * (1 - e3.x) + e2.x * e3.x,\n e1.y * (1 - e3.y) + e2.y * e3.y,\n e1.z * (1 - e3.z) + e2.z * e3.z,\n e1.w * (1 - e3.w) + e2.w * e3.w,\n );\n },\n } as Record<\n 'vec2f' | 'vec3f' | 'vec4f' | 'vec2h' | 'vec3h' | 'vec4h',\n <T extends wgsl.v2f | wgsl.v3f | wgsl.v4f | wgsl.v2h | wgsl.v3h | wgsl.v4h>(\n a: T,\n b: T,\n c: T | number,\n ) => T\n >,\n\n sin: {\n vec2f: unary2f(Math.sin),\n vec2h: unary2h(Math.sin),\n vec2i: unary2i(Math.sin),\n vec2u: unary2u(Math.sin),\n\n vec3f: unary3f(Math.sin),\n vec3h: unary3h(Math.sin),\n vec3i: unary3i(Math.sin),\n vec3u: unary3u(Math.sin),\n\n vec4f: unary4f(Math.sin),\n vec4h: unary4h(Math.sin),\n vec4i: unary4i(Math.sin),\n vec4u: unary4u(Math.sin),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n cos: {\n vec2f: unary2f(Math.cos),\n vec2h: unary2h(Math.cos),\n vec2i: unary2i(Math.cos),\n vec2u: unary2u(Math.cos),\n\n vec3f: unary3f(Math.cos),\n vec3h: unary3h(Math.cos),\n vec3i: unary3i(Math.cos),\n vec3u: unary3u(Math.cos),\n\n vec4f: unary4f(Math.cos),\n vec4h: unary4h(Math.cos),\n vec4i: unary4i(Math.cos),\n vec4u: unary4u(Math.cos),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n exp: {\n vec2f: unary2f(Math.exp),\n vec2h: unary2h(Math.exp),\n vec2i: unary2i(Math.exp),\n vec2u: unary2u(Math.exp),\n\n vec3f: unary3f(Math.exp),\n vec3h: unary3h(Math.exp),\n vec3i: unary3i(Math.exp),\n vec3u: unary3u(Math.exp),\n\n vec4f: unary4f(Math.exp),\n vec4h: unary4h(Math.exp),\n vec4i: unary4i(Math.exp),\n vec4u: unary4u(Math.exp),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n fract: {\n vec2f: unary2f((value) => value - Math.floor(value)),\n vec2h: unary2h((value) => value - Math.floor(value)),\n vec2i: unary2i((value) => value - Math.floor(value)),\n vec2u: unary2u((value) => value - Math.floor(value)),\n\n vec3f: unary3f((value) => value - Math.floor(value)),\n vec3h: unary3h((value) => value - Math.floor(value)),\n vec3i: unary3i((value) => value - Math.floor(value)),\n vec3u: unary3u((value) => value - Math.floor(value)),\n\n vec4f: unary4f((value) => value - Math.floor(value)),\n vec4h: unary4h((value) => value - Math.floor(value)),\n vec4i: unary4i((value) => value - Math.floor(value)),\n vec4u: unary4u((value) => value - Math.floor(value)),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n isCloseToZero: {\n vec2f: (v: wgsl.v2f, n: number) => Math.abs(v.x) <= n && Math.abs(v.y) <= n,\n vec2h: (v: wgsl.v2h, n: number) => Math.abs(v.x) <= n && Math.abs(v.y) <= n,\n\n vec3f: (v: wgsl.v3f, n: number) =>\n Math.abs(v.x) <= n && Math.abs(v.y) <= n && Math.abs(v.z) <= n,\n vec3h: (v: wgsl.v3h, n: number) =>\n Math.abs(v.x) <= n && Math.abs(v.y) <= n && Math.abs(v.z) <= n,\n\n vec4f: (v: wgsl.v4f, n: number) =>\n Math.abs(v.x) <= n &&\n Math.abs(v.y) <= n &&\n Math.abs(v.z) <= n &&\n Math.abs(v.w) <= n,\n vec4h: (v: wgsl.v4h, n: number) =>\n Math.abs(v.x) <= n &&\n Math.abs(v.y) <= n &&\n Math.abs(v.z) <= n &&\n Math.abs(v.w) <= n,\n } as Record<VecKind, <T extends vBase>(v: T, n: number) => boolean>,\n};\n","import { bool, f32 } from '../data/numeric';\nimport { VectorOps } from '../data/vectorOps';\nimport type {\n AnyMatInstance,\n AnyWgslData,\n VecKind,\n v2f,\n v2h,\n v3f,\n v3h,\n v3i,\n v3u,\n v4f,\n v4h,\n vBaseForMat,\n} from '../data/wgslTypes';\nimport { createDualImpl } from '../shared/generators';\nimport type { Resource } from '../types';\n\nfunction isNumeric(element: Resource) {\n const type = element.dataType.type;\n return (\n type === 'abstractInt' ||\n type === 'abstractFloat' ||\n type === 'f32' ||\n type === 'f16' ||\n type === 'i32' ||\n type === 'u32'\n );\n}\n\ntype vBase = { kind: VecKind };\n\nexport const add = createDualImpl(\n // CPU implementation\n <T extends vBase>(lhs: T, rhs: T): T => VectorOps.add[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) => ({\n value: `(${lhs.value} + ${rhs.value})`,\n dataType: lhs.dataType,\n }),\n);\n\nexport const sub = createDualImpl(\n // CPU implementation\n <T extends vBase>(lhs: T, rhs: T): T => VectorOps.sub[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) => ({\n value: `(${lhs.value} - ${rhs.value})`,\n dataType: lhs.dataType,\n }),\n);\n\ntype MulOverload = {\n <T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: T, v: TVec): TVec;\n <T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: TVec, v: T): TVec;\n <T extends vBase | AnyMatInstance>(s: number | T, v: T): T;\n};\n\nexport const mul: MulOverload = createDualImpl(\n // CPU implementation\n (\n s: number | vBase | AnyMatInstance,\n v: vBase | AnyMatInstance,\n ): vBase | AnyMatInstance => {\n if (typeof s === 'number') {\n // Scalar * Vector/Matrix case\n return VectorOps.mulSxV[v.kind](s, v);\n }\n if (\n typeof s === 'object' &&\n typeof v === 'object' &&\n 'kind' in s &&\n 'kind' in v\n ) {\n const sIsVector = !s.kind.startsWith('mat');\n const vIsVector = !v.kind.startsWith('mat');\n if (!sIsVector && vIsVector) {\n // Matrix * Vector case\n return VectorOps.mulMxV[(s as AnyMatInstance).kind](\n s as AnyMatInstance,\n v as vBaseForMat<AnyMatInstance>,\n );\n }\n if (sIsVector && !vIsVector) {\n // Vector * Matrix case\n return VectorOps.mulVxM[(v as AnyMatInstance).kind](\n s as vBaseForMat<AnyMatInstance>,\n v as AnyMatInstance,\n );\n }\n }\n // Vector * Vector or Matrix * Matrix case\n return VectorOps.mulVxV[v.kind](s, v);\n },\n // GPU implementation\n (s, v) => {\n const returnType = isNumeric(s)\n ? // Scalar * Vector/Matrix\n (v.dataType as AnyWgslData)\n : !s.dataType.type.startsWith('mat')\n ? // Vector * Matrix\n (s.dataType as AnyWgslData)\n : !v.dataType.type.startsWith('mat')\n ? // Matrix * Vector\n (v.dataType as AnyWgslData)\n : // Vector * Vector or Matrix * Matrix\n (s.dataType as AnyWgslData);\n return { value: `(${s.value} * ${v.value})`, dataType: returnType };\n },\n);\n\nexport const abs = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.abs(value) as T;\n }\n return VectorOps.abs[value.kind](value) as T;\n },\n // GPU implementation\n (value) => ({ value: `abs(${value.value})`, dataType: value.dataType }),\n);\n\nexport const atan2 = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(y: T, x: T): T => {\n if (typeof y === 'number' && typeof x === 'number') {\n return Math.atan2(y, x) as T;\n }\n return VectorOps.atan2[(y as vBase).kind](y as never, x as never) as T;\n },\n // GPU implementation\n (y, x) => ({ value: `atan2(${y.value}, ${x.value})`, dataType: y.dataType }),\n);\n\nexport const acos = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.acos(value) as T;\n }\n return VectorOps.acos[(value as vBase).kind](value as never) as T;\n },\n // GPU implementation\n (value) => ({ value: `acos(${value.value})`, dataType: value.dataType }),\n);\n\nexport const asin = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.asin(value) as T;\n }\n return VectorOps.asin[(value as vBase).kind](value as never) as T;\n },\n // GPU implementation\n (value) => ({ value: `asin(${value.value})`, dataType: value.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#ceil-builtin\n */\nexport const ceil = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.ceil(value) as T;\n }\n return VectorOps.ceil[value.kind](value) as T;\n },\n // GPU implementation\n (value) => ({ value: `ceil(${value.value})`, dataType: value.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#clamp\n */\nexport const clamp = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(value: T, low: T, high: T): T => {\n if (typeof value === 'number') {\n return Math.min(Math.max(low as number, value), high as number) as T;\n }\n return VectorOps.clamp[value.kind](value, low as vBase, high as vBase) as T;\n },\n // GPU implementation\n (value, low, high) => {\n return {\n value: `clamp(${value.value}, ${low.value}, ${high.value})`,\n dataType: value.dataType,\n };\n },\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#cos-builtin\n */\nexport const cos = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.cos(value) as T;\n }\n return VectorOps.cos[value.kind](value) as T;\n },\n // GPU implementation\n (value) => ({ value: `cos(${value.value})`, dataType: value.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#cross-builtin\n */\nexport const cross = createDualImpl(\n // CPU implementation\n <T extends v3f | v3i | v3u>(a: T, b: T): T => VectorOps.cross[a.kind](a, b),\n // GPU implementation\n (a, b) => ({ value: `cross(${a.value}, ${b.value})`, dataType: a.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#dot-builtin\n */\nexport const dot = createDualImpl(\n // CPU implementation\n <T extends vBase>(lhs: T, rhs: T): number =>\n VectorOps.dot[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) => ({ value: `dot(${lhs.value}, ${rhs.value})`, dataType: f32 }),\n);\n\nexport const normalize = createDualImpl(\n // CPU implementation\n <T extends vBase>(v: T): T => VectorOps.normalize[v.kind](v),\n // GPU implementation\n (v) => ({ value: `normalize(${v.value})`, dataType: v.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#floor-builtin\n */\nexport const floor = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.floor(value) as T;\n }\n return VectorOps.floor[value.kind](value) as T;\n },\n // GPU implementation\n (value) => ({ value: `floor(${value.value})`, dataType: value.dataType }),\n);\n\nexport const fract = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(a: T): T => {\n if (typeof a === 'number') {\n return (a - Math.floor(a)) as T;\n }\n return VectorOps.fract[a.kind](a) as T;\n },\n // GPU implementation\n (a) => ({ value: `fract(${a.value})`, dataType: a.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#length-builtin\n */\nexport const length = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(value: T): number => {\n if (typeof value === 'number') {\n return Math.abs(value);\n }\n return VectorOps.length[value.kind](value);\n },\n // GPU implementation\n (value) => ({ value: `length(${value.value})`, dataType: f32 }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#max-float-builtin\n */\nexport const max = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(a: T, b: T): T => {\n if (typeof a === 'number') {\n return Math.max(a, b as number) as T;\n }\n return VectorOps.max[a.kind](a, b as vBase) as T;\n },\n // GPU implementation\n (a, b) => ({ value: `max(${a.value}, ${b.value})`, dataType: a.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#min-float-builtin\n */\nexport const min = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(a: T, b: T): T => {\n if (typeof a === 'number') {\n return Math.min(a, b as number) as T;\n }\n return VectorOps.min[a.kind](a, b as vBase) as T;\n },\n // GPU implementation\n (a, b) => ({ value: `min(${a.value}, ${b.value})`, dataType: a.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#sin-builtin\n */\nexport const sin = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.sin(value) as T;\n }\n return VectorOps.sin[value.kind](value) as T;\n },\n // GPU implementation\n (value) => ({ value: `sin(${value.value})`, dataType: value.dataType }),\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#exp-builtin\n */\nexport const exp = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.exp(value) as T;\n }\n return VectorOps.exp[value.kind](value) as T;\n },\n // GPU implementation\n (value) => ({ value: `exp(${value.value})`, dataType: value.dataType }),\n);\n\ntype PowOverload = {\n (base: number, exponent: number): number;\n <T extends v2f | v3f | v4f | v2h | v3h | v4h>(base: T, exponent: T): T;\n};\n\nexport const pow: PowOverload = createDualImpl(\n // CPU implementation\n <T extends v2f | v3f | v4f | v2h | v3h | v4h | number>(\n base: T,\n exponent: T,\n ): T => {\n if (typeof base === 'number' && typeof exponent === 'number') {\n return (base ** exponent) as T;\n }\n if (\n typeof base === 'object' &&\n typeof exponent === 'object' &&\n 'kind' in base &&\n 'kind' in exponent\n ) {\n return VectorOps.pow[base.kind](base, exponent) as T;\n }\n throw new Error('Invalid arguments to pow()');\n },\n // GPU implementation\n (base, exponent) => {\n return {\n value: `pow(${base.value}, ${exponent.value})`,\n dataType: base.dataType,\n };\n },\n);\n\ntype MixOverload = {\n (e1: number, e2: number, e3: number): number;\n <T extends v2f | v3f | v4f | v2h | v3h | v4h>(e1: T, e2: T, e3: number): T;\n <T extends v2f | v3f | v4f | v2h | v3h | v4h>(e1: T, e2: T, e3: T): T;\n};\n\nexport const mix: MixOverload = createDualImpl(\n // CPU implementation\n <T extends v2f | v3f | v4f | v2h | v3h | v4h | number>(\n e1: T,\n e2: T,\n e3: T | number,\n ): T => {\n if (typeof e1 === 'number') {\n if (typeof e3 !== 'number' || typeof e2 !== 'number') {\n throw new Error(\n 'When e1 and e2 are numbers, the blend factor must be a number.',\n );\n }\n return (e1 * (1 - e3) + e2 * e3) as T;\n }\n\n if (typeof e1 === 'number' || typeof e2 === 'number') {\n throw new Error('e1 and e2 need to both be vectors of the same kind.');\n }\n\n return VectorOps.mix[e1.kind](e1, e2, e3) as T;\n },\n // GPU implementation\n (e1, e2, e3) => {\n return {\n value: `mix(${e1.value}, ${e2.value}, ${e3.value})`,\n dataType: e1.dataType,\n };\n },\n);\n\nexport const reflect = createDualImpl(\n // CPU implementation\n <T extends vBase>(e1: T, e2: T): T => sub(e1, mul(2 * dot(e2, e1), e2)),\n // GPU implementation\n (e1, e2) => {\n return {\n value: `reflect(${e1.value}, ${e2.value})`,\n dataType: e1.dataType,\n };\n },\n);\n\nexport const distance = createDualImpl(\n // CPU implementation\n <T extends vBase | number>(a: T, b: T): number => {\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b);\n }\n return length(sub(a as vBase, b as vBase)) as number;\n },\n // GPU implementation\n (a, b) => ({ value: `distance(${a.value}, ${b.value})`, dataType: f32 }),\n);\n\n/**\n * Checks whether the given elements differ by at most 0.01.\n * Component-wise if arguments are vectors.\n * @example\n * isCloseTo(0, 0.1) // returns false\n * isCloseTo(vec3f(0, 0, 0), vec3f(0.002, -0.009, 0)) // returns true\n *\n * @param {number} precision argument that specifies the maximum allowed difference, 0.01 by default.\n */\nexport const isCloseTo = createDualImpl(\n // CPU implementation\n <T extends v2f | v3f | v4f | v2h | v3h | v4h | number>(\n e1: T,\n e2: T,\n precision = 0.01,\n ) => {\n if (typeof e1 === 'number' && typeof e2 === 'number') {\n return Math.abs(e1 - e2) < precision;\n }\n if (typeof e1 !== 'number' && typeof e2 !== 'number') {\n return VectorOps.isCloseToZero[e1.kind](sub(e1, e2), precision);\n }\n return false;\n },\n // GPU implementation\n (e1, e2, precision = { value: 0.01, dataType: f32 }) => {\n if (isNumeric(e1) && isNumeric(e2)) {\n return {\n value: `abs(f32(${e1.value})-f32(${e2.value})) <= ${precision.value}`,\n dataType: bool,\n };\n }\n if (!isNumeric(e1) && !isNumeric(e2)) {\n return {\n // https://www.w3.org/TR/WGSL/#vector-multi-component:~:text=Binary%20arithmetic%20expressions%20with%20mixed%20scalar%20and%20vector%20operands\n // (a-a)+prec creates a vector of a.length elements, all equal to prec\n value: `all(abs(${e1.value}-${e2.value}) <= (${e1.value} - ${e1.value})+${precision.value})`,\n dataType: bool,\n };\n }\n return {\n value: 'false',\n dataType: bool,\n };\n },\n);\n","import { type atomicI32, type atomicU32, isWgslData } from '../data/wgslTypes';\nimport { createDualImpl } from '../shared/generators';\nimport { Void } from '../types';\n\ntype AnyAtomic = atomicI32 | atomicU32;\n\nexport const workgroupBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('workgroupBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => ({ value: 'workgroupBarrier()', dataType: Void }),\n);\n\nexport const storageBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('storageBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => ({ value: 'storageBarrier()', dataType: Void }),\n);\n\nexport const textureBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('textureBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => ({ value: 'textureBarrier()', dataType: Void }),\n);\n\nexport const atomicLoad = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return { value: `atomicLoad(&${a.value})`, dataType: a.dataType.inner };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicStore = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): void => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (!isWgslData(a.dataType) || a.dataType.type !== 'atomic') {\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n }\n return {\n value: `atomicStore(&${a.value}, ${value.value})`,\n dataType: Void,\n };\n },\n);\n\nexport const atomicAdd = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicAdd(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicSub = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicSub(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicMax = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicMax(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicMin = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicMin(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicAnd = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicAnd(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicOr = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicOr(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicXor = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return {\n value: `atomicXor(&${a.value}, ${value.value})`,\n dataType: a.dataType.inner,\n };\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n","import { u32 } from '../data/numeric';\nimport { createDualImpl } from '../shared/generators';\n\nexport const arrayLength = createDualImpl(\n // CPU implementation\n (a: unknown[]) => a.length,\n // GPU implementation\n (a) => ({ value: `arrayLength(&${a.value})`, dataType: u32 }),\n);\n"],"mappings":"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dD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAElBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAElBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAElBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAClBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EACdD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,EAChBD,EAAG,CAAC,EAAE,EAAIC,EAAG,CAAC,EAAE,CACpB,CACF,CACF,EAKA,OAAQ,CACN,QAAS,CAACN,EAAerD,IAAgB,CACvC,IAAMsD,EAAKD,EAAE,QACb,OAAOtC,EACLuC,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAC5BsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,CAC9B,CACF,EAEA,QAAS,CAACqD,EAAerD,IAAgB,CACvC,IAAMsD,EAAKD,EAAE,QACb,OAAO9B,EACL+B,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAC5CsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAC5CsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,CAC9C,CACF,EAEA,QAAS,CAACqD,EAAerD,IAAgB,CACvC,IAAMsD,EAAKD,EAAE,QACb,OAAOtB,EACLuB,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAC5DsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAC5DsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAC5DsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,CAC9D,CACF,CACF,EAQA,OAAQ,CACN,QAAS,CAACA,EAAaqD,IAAkB,CACvC,IAAMC,EAAKD,EAAE,QACb,OAAOtC,EACLf,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAC5BtD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,CAC9B,CACF,EAEA,QAAS,CAACtD,EAAaqD,IAAkB,CACvC,IAAMC,EAAKD,EAAE,QACb,OAAO9B,EACLvB,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAC5CtD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAC5CtD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,CAC9C,CACF,EAEA,QAAS,CAACtD,EAAaqD,IAAkB,CACvC,IAAMC,EAAKD,EAAE,QACb,OAAOtB,EACL/B,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAC5DtD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAC5DtD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAC5DtD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,EAAItD,EAAE,EAAIsD,EAAG,CAAC,EAAE,CAC9D,CACF,CACF,EAQA,IAAK,CACH,MAAOnD,EACP,MAAOA,EACP,MAAOA,EACP,MAAOA,EACP,MAAOG,EACP,MAAOA,EACP,MAAOA,EACP,MAAOA,EACP,MAAOC,EACP,MAAOA,EACP,MAAOA,EACP,MAAOA,CACT,EAEA,UAAW,CACT,MAAQP,GAAgB,CACtB,IAAM4D,EAAM7D,EAAWC,CAAC,EACxB,OAAOe,EAAMf,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,CAAG,CACnC,EACA,MAAQ5D,GAAgB,CACtB,IAAM4D,EAAM7D,EAAWC,CAAC,EACxB,OAAOiB,EAAMjB,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,CAAG,CACnC,EACA,MAAQ5D,GAAgB,CACtB,IAAM4D,EAAM7D,EAAWC,CAAC,EACxB,OAAOmB,EAAMnB,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,CAAG,CACnC,EACA,MAAQ5D,GAAgB,CACtB,IAAM4D,EAAM7D,EAAWC,CAAC,EACxB,OAAOqB,EAAMrB,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,CAAG,CACnC,EAEA,MAAQ5D,GAAgB,CACtB,IAAM4D,EAAM3D,EAAWD,CAAC,EACxB,OAAOuB,EAAMvB,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,CAAG,CAC9C,EACA,MAAQ5D,GAAgB,CACtB,IAAM4D,EAAM3D,EAAWD,CAAC,EACxB,OAAOyB,EAAMzB,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,CAAG,CAC9C,EACA,MAAQ5D,GAAgB,CACtB,IAAM4D,EAAM3D,EAAWD,CAAC,EACxB,OAAO2B,EAAM3B,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,CAAG,CAC9C,EACA,MAAQ5D,GAAgB,CACtB,IAAM4D,EAAM3D,EAAWD,CAAC,EACxB,OAAO6B,EAAM7B,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,CAAG,CAC9C,EAEA,MAAQ5D,GAAgB,CACtB,IAAM4D,EAAM1D,EAAWF,CAAC,EACxB,OAAO+B,EAAM/B,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,CAAG,CACzD,EACA,MAAQ5D,GAAgB,CACtB,IAAM4D,EAAM1D,EAAWF,CAAC,EACxB,OAAOiC,EAAMjC,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,CAAG,CACzD,EACA,MAAQ5D,GAAgB,CACtB,IAAM4D,EAAM1D,EAAWF,CAAC,EACxB,OAAOmC,EAAMnC,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,CAAG,CACzD,EACA,MAAQ5D,GAAgB,CACtB,IAAM4D,EAAM1D,EAAWF,CAAC,EACxB,OAAOqC,EAAMrC,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,EAAK5D,EAAE,EAAI4D,CAAG,CACzD,CACF,EAEA,MAAO,CACL,MAAO,CAAC9C,EAAayB,IACZhB,EACLT,EAAE,EAAIyB,EAAE,EAAIzB,EAAE,EAAIyB,EAAE,EACpBzB,EAAE,EAAIyB,EAAE,EAAIzB,EAAE,EAAIyB,EAAE,EACpBzB,EAAE,EAAIyB,EAAE,EAAIzB,EAAE,EAAIyB,EAAE,CACtB,EAEF,MAAO,CAACzB,EAAayB,IACZd,EACLX,EAAE,EAAIyB,EAAE,EAAIzB,EAAE,EAAIyB,EAAE,EACpBzB,EAAE,EAAIyB,EAAE,EAAIzB,EAAE,EAAIyB,EAAE,EACpBzB,EAAE,EAAIyB,EAAE,EAAIzB,EAAE,EAAIyB,EAAE,CACtB,EAEF,MAAO,CAACzB,EAAayB,IACZZ,EACLb,EAAE,EAAIyB,EAAE,EAAIzB,EAAE,EAAIyB,EAAE,EACpBzB,EAAE,EAAIyB,EAAE,EAAIzB,EAAE,EAAIyB,EAAE,EACpBzB,EAAE,EAAIyB,EAAE,EAAIzB,EAAE,EAAIyB,EAAE,CACtB,EAEF,MAAO,CAACzB,EAAayB,IACZV,EACLf,EAAE,EAAIyB,EAAE,EAAIzB,EAAE,EAAIyB,EAAE,EACpBzB,EAAE,EAAIyB,EAAE,EAAIzB,EAAE,EAAIyB,EAAE,EACpBzB,EAAE,EAAIyB,EAAE,EAAIzB,EAAE,EAAIyB,EAAE,CACtB,CAEJ,EAKA,MAAO,CACL,MAAO3B,EAAQ,KAAK,KAAK,EACzB,MAAOI,EAAQ,KAAK,KAAK,EACzB,MAAOE,EAAQ,KAAK,KAAK,EACzB,MAAOE,EAAQ,KAAK,KAAK,EAEzB,MAAOE,EAAQ,KAAK,KAAK,EACzB,MAAOE,EAAQ,KAAK,KAAK,EACzB,MAAOE,EAAQ,KAAK,KAAK,EACzB,MAAOE,EAAQ,KAAK,KAAK,EAEzB,MAAOE,EAAQ,KAAK,KAAK,EACzB,MAAOE,EAAQ,KAAK,KAAK,EACzB,MAAOE,EAAQ,KAAK,KAAK,EACzB,MAAOE,EAAQ,KAAK,KAAK,CAC3B,EAEA,IAAK,CACH,MAAOE,EAAsB,KAAK,GAAG,EACrC,MAAOE,EAAsB,KAAK,GAAG,EACrC,MAAOC,EAAsB,KAAK,GAAG,EACrC,MAAOC,EAAsB,KAAK,GAAG,EAErC,MAAOC,EAAsB,KAAK,GAAG,EACrC,MAAOC,EAAsB,KAAK,GAAG,EACrC,MAAOC,EAAsB,KAAK,GAAG,EACrC,MAAOC,EAAsB,KAAK,GAAG,EAErC,MAAOC,GAAsB,KAAK,GAAG,EACrC,MAAOC,GAAsB,KAAK,GAAG,EACrC,MAAOC,GAAsB,KAAK,GAAG,EACrC,MAAOC,GAAsB,KAAK,GAAG,CACvC,EAEA,IAAK,CACH,MAAOZ,EAAsB,KAAK,GAAG,EACrC,MAAOE,EAAsB,KAAK,GAAG,EACrC,MAAOC,EAAsB,KAAK,GAAG,EACrC,MAAOC,EAAsB,KAAK,GAAG,EAErC,MAAOC,EAAsB,KAAK,GAAG,EACrC,MAAOC,EAAsB,KAAK,GAAG,EACrC,MAAOC,EAAsB,KAAK,GAAG,EACrC,MAAOC,EAAsB,KAAK,GAAG,EAErC,MAAOC,GAAsB,KAAK,GAAG,EACrC,MAAOC,GAAsB,KAAK,GAAG,EACrC,MAAOC,GAAsB,KAAK,GAAG,EACrC,MAAOC,GAAsB,KAAK,GAAG,CACvC,EAEA,IAAK,CACH,MAAO,CAACW,EAAgBC,IACtB/C,EAAM8C,EAAK,GAAKC,EAAS,EAAGD,EAAK,GAAKC,EAAS,CAAC,EAClD,MAAO,CAACD,EAAgBC,IACtB7C,EAAM4C,EAAK,GAAKC,EAAS,EAAGD,EAAK,GAAKC,EAAS,CAAC,EAElD,MAAO,CAACD,EAAgBC,IACtBvC,EAAMsC,EAAK,GAAKC,EAAS,EAAGD,EAAK,GAAKC,EAAS,EAAGD,EAAK,GAAKC,EAAS,CAAC,EACxE,MAAO,CAACD,EAAgBC,IACtBrC,EAAMoC,EAAK,GAAKC,EAAS,EAAGD,EAAK,GAAKC,EAAS,EAAGD,EAAK,GAAKC,EAAS,CAAC,EAExE,MAAO,CAACD,EAAgBC,IACtB/B,EACE8B,EAAK,GAAKC,EAAS,EACnBD,EAAK,GAAKC,EAAS,EACnBD,EAAK,GAAKC,EAAS,EACnBD,EAAK,GAAKC,EAAS,CACrB,EACF,MAAO,CAACD,EAAgBC,IACtB7B,EACE4B,EAAK,GAAKC,EAAS,EACnBD,EAAK,GAAKC,EAAS,EACnBD,EAAK,GAAKC,EAAS,EACnBD,EAAK,GAAKC,EAAS,CACrB,CACJ,EAiBA,IAAK,CACH,MAAO,CAACC,EAAcC,EAAcC,IAC9B,OAAOA,GAAO,SACTlD,EAAMgD,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,EAAIF,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,CAAE,EAEhElD,EACLgD,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,EAC9BF,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,CAChC,EAEF,MAAO,CAACF,EAAcC,EAAcC,IAC9B,OAAOA,GAAO,SACThD,EAAM8C,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,EAAIF,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,CAAE,EAEhEhD,EACL8C,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,EAC9BF,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,CAChC,EAGF,MAAO,CAACF,EAAcC,EAAcC,IAC9B,OAAOA,GAAO,SACT1C,EACLwC,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,EACzBF,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,EACzBF,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,CAC3B,EAEK1C,EACLwC,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,EAC9BF,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,EAC9BF,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,CAChC,EAEF,MAAO,CAACF,EAAcC,EAAcC,IAC9B,OAAOA,GAAO,SACTxC,EACLsC,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,EACzBF,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,EACzBF,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,CAC3B,EAEKxC,EACLsC,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,EAC9BF,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,EAC9BF,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,CAChC,EAGF,MAAO,CAACF,EAAcC,EAAcC,IAC9B,OAAOA,GAAO,SACTlC,EACLgC,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,EACzBF,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,EACzBF,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,EACzBF,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,CAC3B,EAEKlC,EACLgC,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,EAC9BF,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,EAC9BF,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,EAC9BF,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,CAChC,EAEF,MAAO,CAACF,EAAcC,EAAcC,IAC9B,OAAOA,GAAO,SACThC,EACL8B,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,EACzBF,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,EACzBF,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,EACzBF,EAAG,GAAK,EAAIE,GAAMD,EAAG,EAAIC,CAC3B,EAEKhC,EACL8B,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,EAC9BF,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,EAC9BF,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,EAC9BF,EAAG,GAAK,EAAIE,EAAG,GAAKD,EAAG,EAAIC,EAAG,CAChC,CAEJ,EASA,IAAK,CACH,MAAOrD,EAAQ,KAAK,GAAG,EACvB,MAAOI,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EAEvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EAEvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,CACzB,EAEA,IAAK,CACH,MAAOxB,EAAQ,KAAK,GAAG,EACvB,MAAOI,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EAEvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EAEvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,CACzB,EAEA,IAAK,CACH,MAAOxB,EAAQ,KAAK,GAAG,EACvB,MAAOI,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EAEvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EAEvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,EACvB,MAAOE,EAAQ,KAAK,GAAG,CACzB,EAEA,MAAO,CACL,MAAOxB,EAASH,GAAUA,EAAQ,KAAK,MAAMA,CAAK,CAAC,EACnD,MAAOO,EAASP,GAAUA,EAAQ,KAAK,MAAMA,CAAK,CAAC,EACnD,MAAOS,EAAST,GAAUA,EAAQ,KAAK,MAAMA,CAAK,CAAC,EACnD,MAAOW,EAASX,GAAUA,EAAQ,KAAK,MAAMA,CAAK,CAAC,EAEnD,MAAOa,EAASb,GAAUA,EAAQ,KAAK,MAAMA,CAAK,CAAC,EACnD,MAAOe,EAASf,GAAUA,EAAQ,KAAK,MAAMA,CAAK,CAAC,EACnD,MAAOiB,EAASjB,GAAUA,EAAQ,KAAK,MAAMA,CAAK,CAAC,EACnD,MAAOmB,EAASnB,GAAUA,EAAQ,KAAK,MAAMA,CAAK,CAAC,EAEnD,MAAOqB,EAASrB,GAAUA,EAAQ,KAAK,MAAMA,CAAK,CAAC,EACnD,MAAOuB,EAASvB,GAAUA,EAAQ,KAAK,MAAMA,CAAK,CAAC,EACnD,MAAOyB,EAASzB,GAAUA,EAAQ,KAAK,MAAMA,CAAK,CAAC,EACnD,MAAO2B,EAAS3B,GAAUA,EAAQ,KAAK,MAAMA,CAAK,CAAC,CACrD,EAEA,cAAe,CACb,MAAO,CAACT,EAAakE,IAAc,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,GAAK,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,EAC1E,MAAO,CAAClE,EAAakE,IAAc,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,GAAK,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,EAE1E,MAAO,CAAClE,EAAakE,IACnB,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,GAAK,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,GAAK,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,EAC/D,MAAO,CAAClE,EAAakE,IACnB,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,GAAK,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,GAAK,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,EAE/D,MAAO,CAAClE,EAAakE,IACnB,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,GACjB,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,GACjB,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,GACjB,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,EACnB,MAAO,CAAClE,EAAakE,IACnB,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,GACjB,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,GACjB,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,GACjB,KAAK,IAAIlE,EAAE,CAAC,GAAKkE,CACrB,CACF,EC76BA,SAASC,EAAUC,EAAmB,CACpC,IAAMC,EAAOD,EAAQ,SAAS,KAC9B,OACEC,IAAS,eACTA,IAAS,iBACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,KAEb,CAIO,IAAMC,GAAMC,EAEjB,CAAkBC,EAAQC,IAAcC,EAAU,IAAIF,EAAI,IAAI,EAAEA,EAAKC,CAAG,EAExE,CAACD,EAAKC,KAAS,CACb,MAAO,IAAID,EAAI,KAAK,MAAMC,EAAI,KAAK,IACnC,SAAUD,EAAI,QAChB,EACF,EAEaG,EAAMJ,EAEjB,CAAkBC,EAAQC,IAAcC,EAAU,IAAIF,EAAI,IAAI,EAAEA,EAAKC,CAAG,EAExE,CAACD,EAAKC,KAAS,CACb,MAAO,IAAID,EAAI,KAAK,MAAMC,EAAI,KAAK,IACnC,SAAUD,EAAI,QAChB,EACF,EAQaI,GAAmBL,EAE9B,CACEM,EACAC,IAC2B,CAC3B,GAAI,OAAOD,GAAM,SAEf,OAAOH,EAAU,OAAOI,EAAE,IAAI,EAAED,EAAGC,CAAC,EAEtC,GACE,OAAOD,GAAM,UACb,OAAOC,GAAM,UACb,SAAUD,GACV,SAAUC,EACV,CACA,IAAMC,EAAY,CAACF,EAAE,KAAK,WAAW,KAAK,EACpCG,EAAY,CAACF,EAAE,KAAK,WAAW,KAAK,EAC1C,GAAI,CAACC,GAAaC,EAEhB,OAAON,EAAU,OAAQG,EAAqB,IAAI,EAChDA,EACAC,CACF,EAEF,GAAIC,GAAa,CAACC,EAEhB,OAAON,EAAU,OAAQI,EAAqB,IAAI,EAChDD,EACAC,CACF,CAEJ,CAEA,OAAOJ,EAAU,OAAOI,EAAE,IAAI,EAAED,EAAGC,CAAC,CACtC,EAEA,CAACD,EAAGC,IAAM,CACR,IAAMG,EAAad,EAAUU,CAAC,EAEzBC,EAAE,SACFD,EAAE,SAAS,KAAK,WAAW,KAAK,EAG9BC,EAAE,SAAS,KAAK,WAAW,KAAK,EAI9BD,EAAE,SAFFC,EAAE,SAHJD,EAAE,SAMT,MAAO,CAAE,MAAO,IAAIA,EAAE,KAAK,MAAMC,EAAE,KAAK,IAAK,SAAUG,CAAW,CACpE,CACF,EAEaC,GAAMX,EAEUY,GACrB,OAAOA,GAAU,SACZ,KAAK,IAAIA,CAAK,EAEhBT,EAAU,IAAIS,EAAM,IAAI,EAAEA,CAAK,EAGvCA,IAAW,CAAE,MAAO,OAAOA,EAAM,KAAK,IAAK,SAAUA,EAAM,QAAS,EACvE,EAEaC,GAAQb,EAEnB,CAA2Bc,EAAMC,IAC3B,OAAOD,GAAM,UAAY,OAAOC,GAAM,SACjC,KAAK,MAAMD,EAAGC,CAAC,EAEjBZ,EAAU,MAAOW,EAAY,IAAI,EAAEA,EAAYC,CAAU,EAGlE,CAACD,EAAGC,KAAO,CAAE,MAAO,SAASD,EAAE,KAAK,KAAKC,EAAE,KAAK,IAAK,SAAUD,EAAE,QAAS,EAC5E,EAEaE,GAAOhB,EAESY,GACrB,OAAOA,GAAU,SACZ,KAAK,KAAKA,CAAK,EAEjBT,EAAU,KAAMS,EAAgB,IAAI,EAAEA,CAAc,EAG5DA,IAAW,CAAE,MAAO,QAAQA,EAAM,KAAK,IAAK,SAAUA,EAAM,QAAS,EACxE,EAEaK,GAAOjB,EAESY,GACrB,OAAOA,GAAU,SACZ,KAAK,KAAKA,CAAK,EAEjBT,EAAU,KAAMS,EAAgB,IAAI,EAAEA,CAAc,EAG5DA,IAAW,CAAE,MAAO,QAAQA,EAAM,KAAK,IAAK,SAAUA,EAAM,QAAS,EACxE,EAMaM,GAAOlB,EAESY,GACrB,OAAOA,GAAU,SACZ,KAAK,KAAKA,CAAK,EAEjBT,EAAU,KAAKS,EAAM,IAAI,EAAEA,CAAK,EAGxCA,IAAW,CAAE,MAAO,QAAQA,EAAM,KAAK,IAAK,SAAUA,EAAM,QAAS,EACxE,EAMaO,GAAQnB,EAEnB,CAA2BY,EAAUQ,EAAQC,IACvC,OAAOT,GAAU,SACZ,KAAK,IAAI,KAAK,IAAIQ,EAAeR,CAAK,EAAGS,CAAc,EAEzDlB,EAAU,MAAMS,EAAM,IAAI,EAAEA,EAAOQ,EAAcC,CAAa,EAGvE,CAACT,EAAOQ,EAAKC,KACJ,CACL,MAAO,SAAST,EAAM,KAAK,KAAKQ,EAAI,KAAK,KAAKC,EAAK,KAAK,IACxD,SAAUT,EAAM,QAClB,EAEJ,EAMaU,GAAMtB,EAEUY,GACrB,OAAOA,GAAU,SACZ,KAAK,IAAIA,CAAK,EAEhBT,EAAU,IAAIS,EAAM,IAAI,EAAEA,CAAK,EAGvCA,IAAW,CAAE,MAAO,OAAOA,EAAM,KAAK,IAAK,SAAUA,EAAM,QAAS,EACvE,EAMaW,GAAQvB,EAEnB,CAA4BwB,EAAMC,IAAYtB,EAAU,MAAMqB,EAAE,IAAI,EAAEA,EAAGC,CAAC,EAE1E,CAACD,EAAGC,KAAO,CAAE,MAAO,SAASD,EAAE,KAAK,KAAKC,EAAE,KAAK,IAAK,SAAUD,EAAE,QAAS,EAC5E,EAMaE,GAAM1B,EAEjB,CAAkBC,EAAQC,IACxBC,EAAU,IAAIF,EAAI,IAAI,EAAEA,EAAKC,CAAG,EAElC,CAACD,EAAKC,KAAS,CAAE,MAAO,OAAOD,EAAI,KAAK,KAAKC,EAAI,KAAK,IAAK,SAAUyB,CAAI,EAC3E,EAEaC,GAAY5B,EAELO,GAAYJ,EAAU,UAAUI,EAAE,IAAI,EAAEA,CAAC,EAE1DA,IAAO,CAAE,MAAO,aAAaA,EAAE,KAAK,IAAK,SAAUA,EAAE,QAAS,EACjE,EAMasB,GAAQ7B,EAEQY,GACrB,OAAOA,GAAU,SACZ,KAAK,MAAMA,CAAK,EAElBT,EAAU,MAAMS,EAAM,IAAI,EAAEA,CAAK,EAGzCA,IAAW,CAAE,MAAO,SAASA,EAAM,KAAK,IAAK,SAAUA,EAAM,QAAS,EACzE,EAEakB,GAAQ9B,EAEQwB,GACrB,OAAOA,GAAM,SACPA,EAAI,KAAK,MAAMA,CAAC,EAEnBrB,EAAU,MAAMqB,EAAE,IAAI,EAAEA,CAAC,EAGjCA,IAAO,CAAE,MAAO,SAASA,EAAE,KAAK,IAAK,SAAUA,EAAE,QAAS,EAC7D,EAMaO,GAAS/B,EAEOY,GACrB,OAAOA,GAAU,SACZ,KAAK,IAAIA,CAAK,EAEhBT,EAAU,OAAOS,EAAM,IAAI,EAAEA,CAAK,EAG1CA,IAAW,CAAE,MAAO,UAAUA,EAAM,KAAK,IAAK,SAAUe,CAAI,EAC/D,EAMaK,GAAMhC,EAEjB,CAA2BwB,EAAMC,IAC3B,OAAOD,GAAM,SACR,KAAK,IAAIA,EAAGC,CAAW,EAEzBtB,EAAU,IAAIqB,EAAE,IAAI,EAAEA,EAAGC,CAAU,EAG5C,CAACD,EAAGC,KAAO,CAAE,MAAO,OAAOD,EAAE,KAAK,KAAKC,EAAE,KAAK,IAAK,SAAUD,EAAE,QAAS,EAC1E,EAMaS,GAAMjC,EAEjB,CAA2BwB,EAAMC,IAC3B,OAAOD,GAAM,SACR,KAAK,IAAIA,EAAGC,CAAW,EAEzBtB,EAAU,IAAIqB,EAAE,IAAI,EAAEA,EAAGC,CAAU,EAG5C,CAACD,EAAGC,KAAO,CAAE,MAAO,OAAOD,EAAE,KAAK,KAAKC,EAAE,KAAK,IAAK,SAAUD,EAAE,QAAS,EAC1E,EAMaU,GAAMlC,EAEUY,GACrB,OAAOA,GAAU,SACZ,KAAK,IAAIA,CAAK,EAEhBT,EAAU,IAAIS,EAAM,IAAI,EAAEA,CAAK,EAGvCA,IAAW,CAAE,MAAO,OAAOA,EAAM,KAAK,IAAK,SAAUA,EAAM,QAAS,EACvE,EAMauB,GAAMnC,EAEUY,GACrB,OAAOA,GAAU,SACZ,KAAK,IAAIA,CAAK,EAEhBT,EAAU,IAAIS,EAAM,IAAI,EAAEA,CAAK,EAGvCA,IAAW,CAAE,MAAO,OAAOA,EAAM,KAAK,IAAK,SAAUA,EAAM,QAAS,EACvE,EAOawB,GAAmBpC,EAE9B,CACEqC,EACAC,IACM,CACN,GAAI,OAAOD,GAAS,UAAY,OAAOC,GAAa,SAClD,OAAQD,GAAQC,EAElB,GACE,OAAOD,GAAS,UAChB,OAAOC,GAAa,UACpB,SAAUD,GACV,SAAUC,EAEV,OAAOnC,EAAU,IAAIkC,EAAK,IAAI,EAAEA,EAAMC,CAAQ,EAEhD,MAAM,IAAI,MAAM,4BAA4B,CAC9C,EAEA,CAACD,EAAMC,KACE,CACL,MAAO,OAAOD,EAAK,KAAK,KAAKC,EAAS,KAAK,IAC3C,SAAUD,EAAK,QACjB,EAEJ,EAQaE,GAAmBvC,EAE9B,CACEwC,EACAC,EACAC,IACM,CACN,GAAI,OAAOF,GAAO,SAAU,CAC1B,GAAI,OAAOE,GAAO,UAAY,OAAOD,GAAO,SAC1C,MAAM,IAAI,MACR,gEACF,EAEF,OAAQD,GAAM,EAAIE,GAAMD,EAAKC,CAC/B,CAEA,GAAI,OAAOF,GAAO,UAAY,OAAOC,GAAO,SAC1C,MAAM,IAAI,MAAM,qDAAqD,EAGvE,OAAOtC,EAAU,IAAIqC,EAAG,IAAI,EAAEA,EAAIC,EAAIC,CAAE,CAC1C,EAEA,CAACF,EAAIC,EAAIC,KACA,CACL,MAAO,OAAOF,EAAG,KAAK,KAAKC,EAAG,KAAK,KAAKC,EAAG,KAAK,IAChD,SAAUF,EAAG,QACf,EAEJ,EAEaG,GAAU3C,EAErB,CAAkBwC,EAAOC,IAAarC,EAAIoC,EAAInC,GAAI,EAAIqB,GAAIe,EAAID,CAAE,EAAGC,CAAE,CAAC,EAEtE,CAACD,EAAIC,KACI,CACL,MAAO,WAAWD,EAAG,KAAK,KAAKC,EAAG,KAAK,IACvC,SAAUD,EAAG,QACf,EAEJ,EAEaI,GAAW5C,EAEtB,CAA2BwB,EAAMC,IAC3B,OAAOD,GAAM,UAAY,OAAOC,GAAM,SACjC,KAAK,IAAID,EAAIC,CAAC,EAEhBM,GAAO3B,EAAIoB,EAAYC,CAAU,CAAC,EAG3C,CAACD,EAAGC,KAAO,CAAE,MAAO,YAAYD,EAAE,KAAK,KAAKC,EAAE,KAAK,IAAK,SAAUE,CAAI,EACxE,EAWakB,GAAY7C,EAEvB,CACEwC,EACAC,EACAK,EAAY,MAER,OAAON,GAAO,UAAY,OAAOC,GAAO,SACnC,KAAK,IAAID,EAAKC,CAAE,EAAIK,EAEzB,OAAON,GAAO,UAAY,OAAOC,GAAO,SACnCtC,EAAU,cAAcqC,EAAG,IAAI,EAAEpC,EAAIoC,EAAIC,CAAE,EAAGK,CAAS,EAEzD,GAGT,CAACN,EAAIC,EAAIK,EAAY,CAAE,MAAO,IAAM,SAAUnB,CAAI,IAC5C/B,EAAU4C,CAAE,GAAK5C,EAAU6C,CAAE,EACxB,CACL,MAAO,WAAWD,EAAG,KAAK,SAASC,EAAG,KAAK,SAASK,EAAU,KAAK,GACnE,SAAUC,CACZ,EAEE,CAACnD,EAAU4C,CAAE,GAAK,CAAC5C,EAAU6C,CAAE,EAC1B,CAGL,MAAO,WAAWD,EAAG,KAAK,IAAIC,EAAG,KAAK,SAASD,EAAG,KAAK,MAAMA,EAAG,KAAK,KAAKM,EAAU,KAAK,IACzF,SAAUC,CACZ,EAEK,CACL,MAAO,QACP,SAAUA,CACZ,CAEJ,ECpeO,IAAMC,GAAmBC,EAE9B,IAAM,QAAQ,KAAK,kDAAkD,EAErE,KAAO,CAAE,MAAO,qBAAsB,SAAUC,CAAK,EACvD,EAEaC,GAAiBF,EAE5B,IAAM,QAAQ,KAAK,gDAAgD,EAEnE,KAAO,CAAE,MAAO,mBAAoB,SAAUC,CAAK,EACrD,EAEaE,GAAiBH,EAE5B,IAAM,QAAQ,KAAK,gDAAgD,EAEnE,KAAO,CAAE,MAAO,mBAAoB,SAAUC,CAAK,EACrD,EAEaG,GAAaJ,EAEFK,GAAiB,CACrC,MAAM,IAAI,MAAM,0DAA0D,CAC5E,EAECA,GAAM,CACL,GAAIC,EAAWD,EAAE,QAAQ,GAAKA,EAAE,SAAS,OAAS,SAChD,MAAO,CAAE,MAAO,eAAeA,EAAE,KAAK,IAAK,SAAUA,EAAE,SAAS,KAAM,EAExE,MAAM,IAAI,MACR,wBAAwB,KAAK,UAAUA,EAAE,SAAU,KAAM,CAAC,CAAC,EAC7D,CACF,CACF,EAEaE,GAAcP,EAEzB,CAAsBK,EAAMG,IAAwB,CAClD,MAAM,IAAI,MAAM,0DAA0D,CAC5E,EAEA,CAACH,EAAGG,IAAU,CACZ,GAAI,CAACF,EAAWD,EAAE,QAAQ,GAAKA,EAAE,SAAS,OAAS,SACjD,MAAM,IAAI,MACR,wBAAwB,KAAK,UAAUA,EAAE,SAAU,KAAM,CAAC,CAAC,EAC7D,EAEF,MAAO,CACL,MAAO,gBAAgBA,EAAE,KAAK,KAAKG,EAAM,KAAK,IAC9C,SAAUP,CACZ,CACF,CACF,EAEaQ,GAAYT,EAEvB,CAAsBK,EAAMG,IAA0B,CACpD,MAAM,IAAI,MAAM,0DAA0D,CAC5E,EAEA,CAACH,EAAGG,IAAU,CACZ,GAAIF,EAAWD,EAAE,QAAQ,GAAKA,EAAE,SAAS,OAAS,SAChD,MAAO,CACL,MAAO,cAAcA,EAAE,KAAK,KAAKG,EAAM,KAAK,IAC5C,SAAUH,EAAE,SAAS,KACvB,EAEF,MAAM,IAAI,MACR,wBAAwB,KAAK,UAAUA,EAAE,SAAU,KAAM,CAAC,CAAC,EAC7D,CACF,CACF,EAEaK,GAAYV,EAEvB,CAAsBK,EAAMG,IAA0B,CACpD,MAAM,IAAI,MAAM,0DAA0D,CAC5E,EAEA,CAACH,EAAGG,IAAU,CACZ,GAAIF,EAAWD,EAAE,QAAQ,GAAKA,EAAE,SAAS,OAAS,SAChD,MAAO,CACL,MAAO,cAAcA,EAAE,KAAK,KAAKG,EAAM,KAAK,IAC5C,SAAUH,EAAE,SAAS,KACvB,EAEF,MAAM,IAAI,MACR,wBAAwB,KAAK,UAAUA,EAAE,SAAU,KAAM,CAAC,CAAC,EAC7D,CACF,CACF,EAEaM,GAAYX,EAEvB,CAAsBK,EAAMG,IAA0B,CACpD,MAAM,IAAI,MAAM,0DAA0D,CAC5E,EAEA,CAACH,EAAGG,IAAU,CACZ,GAAIF,EAAWD,EAAE,QAAQ,GAAKA,EAAE,SAAS,OAAS,SAChD,MAAO,CACL,MAAO,cAAcA,EAAE,KAAK,KAAKG,EAAM,KAAK,IAC5C,SAAUH,EAAE,SAAS,KACvB,EAEF,MAAM,IAAI,MACR,wBAAwB,KAAK,UAAUA,EAAE,SAAU,KAAM,CAAC,CAAC,EAC7D,CACF,CACF,EAEaO,GAAYZ,EAEvB,CAAsBK,EAAMG,IAA0B,CACpD,MAAM,IAAI,MAAM,0DAA0D,CAC5E,EAEA,CAACH,EAAGG,IAAU,CACZ,GAAIF,EAAWD,EAAE,QAAQ,GAAKA,EAAE,SAAS,OAAS,SAChD,MAAO,CACL,MAAO,cAAcA,EAAE,KAAK,KAAKG,EAAM,KAAK,IAC5C,SAAUH,EAAE,SAAS,KACvB,EAEF,MAAM,IAAI,MACR,wBAAwB,KAAK,UAAUA,EAAE,SAAU,KAAM,CAAC,CAAC,EAC7D,CACF,CACF,EAEaQ,GAAYb,EAEvB,CAAsBK,EAAMG,IAA0B,CACpD,MAAM,IAAI,MAAM,0DAA0D,CAC5E,EAEA,CAACH,EAAGG,IAAU,CACZ,GAAIF,EAAWD,EAAE,QAAQ,GAAKA,EAAE,SAAS,OAAS,SAChD,MAAO,CACL,MAAO,cAAcA,EAAE,KAAK,KAAKG,EAAM,KAAK,IAC5C,SAAUH,EAAE,SAAS,KACvB,EAEF,MAAM,IAAI,MACR,wBAAwB,KAAK,UAAUA,EAAE,SAAU,KAAM,CAAC,CAAC,EAC7D,CACF,CACF,EAEaS,GAAWd,EAEtB,CAAsBK,EAAMG,IAA0B,CACpD,MAAM,IAAI,MAAM,0DAA0D,CAC5E,EAEA,CAACH,EAAGG,IAAU,CACZ,GAAIF,EAAWD,EAAE,QAAQ,GAAKA,EAAE,SAAS,OAAS,SAChD,MAAO,CACL,MAAO,aAAaA,EAAE,KAAK,KAAKG,EAAM,KAAK,IAC3C,SAAUH,EAAE,SAAS,KACvB,EAEF,MAAM,IAAI,MACR,wBAAwB,KAAK,UAAUA,EAAE,SAAU,KAAM,CAAC,CAAC,EAC7D,CACF,CACF,EAEaU,GAAYf,EAEvB,CAAsBK,EAAMG,IAA0B,CACpD,MAAM,IAAI,MAAM,0DAA0D,CAC5E,EAEA,CAACH,EAAGG,IAAU,CACZ,GAAIF,EAAWD,EAAE,QAAQ,GAAKA,EAAE,SAAS,OAAS,SAChD,MAAO,CACL,MAAO,cAAcA,EAAE,KAAK,KAAKG,EAAM,KAAK,IAC5C,SAAUH,EAAE,SAAS,KACvB,EAEF,MAAM,IAAI,MACR,wBAAwB,KAAK,UAAUA,EAAE,SAAU,KAAM,CAAC,CAAC,EAC7D,CACF,CACF,EC9LO,IAAMW,GAAcC,EAExBC,GAAiBA,EAAE,OAEnBA,IAAO,CAAE,MAAO,gBAAgBA,EAAE,KAAK,IAAK,SAAUC,EAAI,EAC7D","names":["discard","createDualImpl","Void","lengthVec2","v","lengthVec3","lengthVec4","dotVec2","lhs","rhs","dotVec3","dotVec4","clamp","value","low","high","unary2f","op","a","vec2f","unary2h","vec2h","unary2i","vec2i","unary2u","vec2u","unary3f","vec3f","unary3h","vec3h","unary3i","vec3i","unary3u","vec3u","unary4f","vec4f","unary4h","vec4h","unary4i","vec4i","unary4u","vec4u","binaryComponentWise2f","b","binaryComponentWise2h","binaryComponentWise2i","binaryComponentWise2u","binaryComponentWise3f","binaryComponentWise3h","binaryComponentWise3i","binaryComponentWise3u","binaryComponentWise4f","binaryComponentWise4h","binaryComponentWise4i","binaryComponentWise4u","VectorOps","s","m","m_","mat2x2f","mat3x3f","mat4x4f","a_","b_","len","base","exponent","e1","e2","e3","n","isNumeric","element","type","add","createDualImpl","lhs","rhs","VectorOps","sub","mul","s","v","sIsVector","vIsVector","returnType","abs","value","atan2","y","x","acos","asin","ceil","clamp","low","high","cos","cross","a","b","dot","f32","normalize","floor","fract","length","max","min","sin","exp","pow","base","exponent","mix","e1","e2","e3","reflect","distance","isCloseTo","precision","bool","workgroupBarrier","createDualImpl","Void","storageBarrier","textureBarrier","atomicLoad","a","isWgslData","atomicStore","value","atomicAdd","atomicSub","atomicMax","atomicMin","atomicAnd","atomicOr","atomicXor","arrayLength","createDualImpl","a","u32"]}
|
package/chunk-7S2KQX6O.js
DELETED
@@ -1,4 +0,0 @@
|
|
1
|
-
var X=Object.defineProperty,Y=Object.defineProperties;var Z=Object.getOwnPropertyDescriptors;var D=Object.getOwnPropertySymbols;var I=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable;var P=(e,t,s)=>t in e?X(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,ht=(e,t)=>{for(var s in t||(t={}))I.call(t,s)&&P(e,s,t[s]);if(D)for(var s of D(t))tt.call(t,s)&&P(e,s,t[s]);return e},nt=(e,t)=>Y(e,Z(t));var r=(e,t,s)=>P(e,typeof t!="symbol"?t+"":t,s);var S="Invariant failed";function j(e,t){if(e)return;throw new Error(S)}var F=class e extends Error{constructor(s,i){let h=i.map(n=>`- ${n}`);h.length>20&&(h=[...h.slice(0,11),"...",...h.slice(-10)]);super(`Resolution of the following tree failed:
|
2
|
-
${h.join(`
|
3
|
-
`)}`);this.cause=s;this.trace=i;Object.setPrototypeOf(this,e.prototype)}appendToTrace(s){let i=[s,...this.trace];return new e(this.cause,i)}},K=class e extends Error{constructor(s){super(`Missing value for '${s}'`);this.slot=s;Object.setPrototypeOf(this,e.prototype)}},L=class e extends Error{constructor(t){var s;super(`Buffer '${(s=t.label)!=null?s:"<unnamed>"}' is not bindable as a uniform. Use .$usage('uniform') to allow it.`),Object.setPrototypeOf(this,e.prototype)}},W=class e extends Error{constructor(t,s){super(`The function '${t!=null?t:"<unnamed>"}' is missing links to the following external values: ${s}.`),Object.setPrototypeOf(this,e.prototype)}},N=class e extends Error{constructor(t){super(`Missing bind groups for layouts: '${[...t].map(s=>{var i;return(i=s.label)!=null?i:"<unnamed>"}).join(", ")}'. Please provide it using pipeline.with(layout, bindGroup).(...)`),Object.setPrototypeOf(this,e.prototype)}},q=class e extends Error{constructor(t){super(`Missing vertex buffers for layouts: '${[...t].map(s=>{var i;return(i=s.label)!=null?i:"<unnamed>"}).join(", ")}'. Please provide it using pipeline.with(layout, buffer).(...)`),Object.setPrototypeOf(this,e.prototype)}};var $=null,et=Symbol("CPU"),st=Symbol("GPU"),it={CPU:et,GPU:st},C=[];function wt(e,t){j($===null,"Cannot nest context providers"),$=e;try{return t()}finally{$=null}}function gt(){return $}function ot(e){C.push(e)}function yt(e){let t=C.pop();e!==void 0&&j(t===e,"Unexpected mode")}var M=()=>C.length>0&&C[C.length-1]===it.GPU;var k=class extends Array{"~resolve"(){return`${this.kind}(${this.join(", ")})`}toString(){return this["~resolve"]()}get xx(){return new this._Vec2(this[0],this[0])}get xy(){return new this._Vec2(this[0],this[1])}get xz(){return new this._Vec2(this[0],this[2])}get xw(){return new this._Vec2(this[0],this[3])}get yx(){return new this._Vec2(this[1],this[0])}get yy(){return new this._Vec2(this[1],this[1])}get yz(){return new this._Vec2(this[1],this[2])}get yw(){return new this._Vec2(this[1],this[3])}get zx(){return new this._Vec2(this[2],this[0])}get zy(){return new this._Vec2(this[2],this[1])}get zz(){return new this._Vec2(this[2],this[2])}get zw(){return new this._Vec2(this[2],this[3])}get wx(){return new this._Vec2(this[3],this[0])}get wy(){return new this._Vec2(this[3],this[1])}get wz(){return new this._Vec2(this[3],this[2])}get ww(){return new this._Vec2(this[3],this[3])}get xxx(){return new this._Vec3(this[0],this[0],this[0])}get xxy(){return new this._Vec3(this[0],this[0],this[1])}get xxz(){return new this._Vec3(this[0],this[0],this[2])}get xxw(){return new this._Vec3(this[0],this[0],this[3])}get xyx(){return new this._Vec3(this[0],this[1],this[0])}get xyy(){return new this._Vec3(this[0],this[1],this[1])}get xyz(){return new this._Vec3(this[0],this[1],this[2])}get xyw(){return new this._Vec3(this[0],this[1],this[3])}get xzx(){return new this._Vec3(this[0],this[2],this[0])}get xzy(){return new this._Vec3(this[0],this[2],this[1])}get xzz(){return new this._Vec3(this[0],this[2],this[2])}get xzw(){return new this._Vec3(this[0],this[2],this[3])}get xwx(){return new this._Vec3(this[0],this[3],this[0])}get xwy(){return new this._Vec3(this[0],this[3],this[1])}get xwz(){return new this._Vec3(this[0],this[3],this[2])}get xww(){return new this._Vec3(this[0],this[3],this[3])}get yxx(){return new this._Vec3(this[1],this[0],this[0])}get yxy(){return new this._Vec3(this[1],this[0],this[1])}get yxz(){return new this._Vec3(this[1],this[0],this[2])}get yxw(){return new this._Vec3(this[1],this[0],this[3])}get yyx(){return new this._Vec3(this[1],this[1],this[0])}get yyy(){return new this._Vec3(this[1],this[1],this[1])}get yyz(){return new this._Vec3(this[1],this[1],this[2])}get yyw(){return new this._Vec3(this[1],this[1],this[3])}get yzx(){return new this._Vec3(this[1],this[2],this[0])}get yzy(){return new this._Vec3(this[1],this[2],this[1])}get yzz(){return new this._Vec3(this[1],this[2],this[2])}get yzw(){return new this._Vec3(this[1],this[2],this[3])}get ywx(){return new this._Vec3(this[1],this[3],this[0])}get ywy(){return new this._Vec3(this[1],this[3],this[1])}get ywz(){return new this._Vec3(this[1],this[3],this[2])}get yww(){return new this._Vec3(this[1],this[3],this[3])}get zxx(){return new this._Vec3(this[2],this[0],this[0])}get zxy(){return new this._Vec3(this[2],this[0],this[1])}get zxz(){return new this._Vec3(this[2],this[0],this[2])}get zxw(){return new this._Vec3(this[2],this[0],this[3])}get zyx(){return new this._Vec3(this[2],this[1],this[0])}get zyy(){return new this._Vec3(this[2],this[1],this[1])}get zyz(){return new this._Vec3(this[2],this[1],this[2])}get zyw(){return new this._Vec3(this[2],this[1],this[3])}get zzx(){return new this._Vec3(this[2],this[2],this[0])}get zzy(){return new this._Vec3(this[2],this[2],this[1])}get zzz(){return new this._Vec3(this[2],this[2],this[2])}get zzw(){return new this._Vec3(this[2],this[2],this[3])}get zwx(){return new this._Vec3(this[2],this[3],this[0])}get zwy(){return new this._Vec3(this[2],this[3],this[1])}get zwz(){return new this._Vec3(this[2],this[3],this[2])}get zww(){return new this._Vec3(this[2],this[3],this[3])}get wxx(){return new this._Vec3(this[3],this[0],this[0])}get wxy(){return new this._Vec3(this[3],this[0],this[1])}get wxz(){return new this._Vec3(this[3],this[0],this[2])}get wxw(){return new this._Vec3(this[3],this[0],this[3])}get wyx(){return new this._Vec3(this[3],this[1],this[0])}get wyy(){return new this._Vec3(this[3],this[1],this[1])}get wyz(){return new this._Vec3(this[3],this[1],this[2])}get wyw(){return new this._Vec3(this[3],this[1],this[3])}get wzx(){return new this._Vec3(this[3],this[2],this[0])}get wzy(){return new this._Vec3(this[3],this[2],this[1])}get wzz(){return new this._Vec3(this[3],this[2],this[2])}get wzw(){return new this._Vec3(this[3],this[2],this[3])}get wwx(){return new this._Vec3(this[3],this[3],this[0])}get wwy(){return new this._Vec3(this[3],this[3],this[1])}get wwz(){return new this._Vec3(this[3],this[3],this[2])}get www(){return new this._Vec3(this[3],this[3],this[3])}get xxxx(){return new this._Vec4(this[0],this[0],this[0],this[0])}get xxxy(){return new this._Vec4(this[0],this[0],this[0],this[1])}get xxxz(){return new this._Vec4(this[0],this[0],this[0],this[2])}get xxxw(){return new this._Vec4(this[0],this[0],this[0],this[3])}get xxyx(){return new this._Vec4(this[0],this[0],this[1],this[0])}get xxyy(){return new this._Vec4(this[0],this[0],this[1],this[1])}get xxyz(){return new this._Vec4(this[0],this[0],this[1],this[2])}get xxyw(){return new this._Vec4(this[0],this[0],this[1],this[3])}get xxzx(){return new this._Vec4(this[0],this[0],this[2],this[0])}get xxzy(){return new this._Vec4(this[0],this[0],this[2],this[1])}get xxzz(){return new this._Vec4(this[0],this[0],this[2],this[2])}get xxzw(){return new this._Vec4(this[0],this[0],this[2],this[3])}get xxwx(){return new this._Vec4(this[0],this[0],this[3],this[0])}get xxwy(){return new this._Vec4(this[0],this[0],this[3],this[1])}get xxwz(){return new this._Vec4(this[0],this[0],this[3],this[2])}get xxww(){return new this._Vec4(this[0],this[0],this[3],this[3])}get xyxx(){return new this._Vec4(this[0],this[1],this[0],this[0])}get xyxy(){return new this._Vec4(this[0],this[1],this[0],this[1])}get xyxz(){return new this._Vec4(this[0],this[1],this[0],this[2])}get xyxw(){return new this._Vec4(this[0],this[1],this[0],this[3])}get xyyx(){return new this._Vec4(this[0],this[1],this[1],this[0])}get xyyy(){return new this._Vec4(this[0],this[1],this[1],this[1])}get xyyz(){return new this._Vec4(this[0],this[1],this[1],this[2])}get xyyw(){return new this._Vec4(this[0],this[1],this[1],this[3])}get xyzx(){return new this._Vec4(this[0],this[1],this[2],this[0])}get xyzy(){return new this._Vec4(this[0],this[1],this[2],this[1])}get xyzz(){return new this._Vec4(this[0],this[1],this[2],this[2])}get xyzw(){return new this._Vec4(this[0],this[1],this[2],this[3])}get xywx(){return new this._Vec4(this[0],this[1],this[3],this[0])}get xywy(){return new this._Vec4(this[0],this[1],this[3],this[1])}get xywz(){return new this._Vec4(this[0],this[1],this[3],this[2])}get xyww(){return new this._Vec4(this[0],this[1],this[3],this[3])}get xzxx(){return new this._Vec4(this[0],this[2],this[0],this[0])}get xzxy(){return new this._Vec4(this[0],this[2],this[0],this[1])}get xzxz(){return new this._Vec4(this[0],this[2],this[0],this[2])}get xzxw(){return new this._Vec4(this[0],this[2],this[0],this[3])}get xzyx(){return new this._Vec4(this[0],this[2],this[1],this[0])}get xzyy(){return new this._Vec4(this[0],this[2],this[1],this[1])}get xzyz(){return new this._Vec4(this[0],this[2],this[1],this[2])}get xzyw(){return new this._Vec4(this[0],this[2],this[1],this[3])}get xzzx(){return new this._Vec4(this[0],this[2],this[2],this[0])}get xzzy(){return new this._Vec4(this[0],this[2],this[2],this[1])}get xzzz(){return new this._Vec4(this[0],this[2],this[2],this[2])}get xzzw(){return new this._Vec4(this[0],this[2],this[2],this[3])}get xzwx(){return new this._Vec4(this[0],this[2],this[3],this[0])}get xzwy(){return new this._Vec4(this[0],this[2],this[3],this[1])}get xzwz(){return new this._Vec4(this[0],this[2],this[3],this[2])}get xzww(){return new this._Vec4(this[0],this[2],this[3],this[3])}get xwxx(){return new this._Vec4(this[0],this[3],this[0],this[0])}get xwxy(){return new this._Vec4(this[0],this[3],this[0],this[1])}get xwxz(){return new this._Vec4(this[0],this[3],this[0],this[2])}get xwxw(){return new this._Vec4(this[0],this[3],this[0],this[3])}get xwyx(){return new this._Vec4(this[0],this[3],this[1],this[0])}get xwyy(){return new this._Vec4(this[0],this[3],this[1],this[1])}get xwyz(){return new this._Vec4(this[0],this[3],this[1],this[2])}get xwyw(){return new this._Vec4(this[0],this[3],this[1],this[3])}get xwzx(){return new this._Vec4(this[0],this[3],this[2],this[0])}get xwzy(){return new this._Vec4(this[0],this[3],this[2],this[1])}get xwzz(){return new this._Vec4(this[0],this[3],this[2],this[2])}get xwzw(){return new this._Vec4(this[0],this[3],this[2],this[3])}get xwwx(){return new this._Vec4(this[0],this[3],this[3],this[0])}get xwwy(){return new this._Vec4(this[0],this[3],this[3],this[1])}get xwwz(){return new this._Vec4(this[0],this[3],this[3],this[2])}get xwww(){return new this._Vec4(this[0],this[3],this[3],this[3])}get yxxx(){return new this._Vec4(this[1],this[0],this[0],this[0])}get yxxy(){return new this._Vec4(this[1],this[0],this[0],this[1])}get yxxz(){return new this._Vec4(this[1],this[0],this[0],this[2])}get yxxw(){return new this._Vec4(this[1],this[0],this[0],this[3])}get yxyx(){return new this._Vec4(this[1],this[0],this[1],this[0])}get yxyy(){return new this._Vec4(this[1],this[0],this[1],this[1])}get yxyz(){return new this._Vec4(this[1],this[0],this[1],this[2])}get yxyw(){return new this._Vec4(this[1],this[0],this[1],this[3])}get yxzx(){return new this._Vec4(this[1],this[0],this[2],this[0])}get yxzy(){return new this._Vec4(this[1],this[0],this[2],this[1])}get yxzz(){return new this._Vec4(this[1],this[0],this[2],this[2])}get yxzw(){return new this._Vec4(this[1],this[0],this[2],this[3])}get yxwx(){return new this._Vec4(this[1],this[0],this[3],this[0])}get yxwy(){return new this._Vec4(this[1],this[0],this[3],this[1])}get yxwz(){return new this._Vec4(this[1],this[0],this[3],this[2])}get yxww(){return new this._Vec4(this[1],this[0],this[3],this[3])}get yyxx(){return new this._Vec4(this[1],this[1],this[0],this[0])}get yyxy(){return new this._Vec4(this[1],this[1],this[0],this[1])}get yyxz(){return new this._Vec4(this[1],this[1],this[0],this[2])}get yyxw(){return new this._Vec4(this[1],this[1],this[0],this[3])}get yyyx(){return new this._Vec4(this[1],this[1],this[1],this[0])}get yyyy(){return new this._Vec4(this[1],this[1],this[1],this[1])}get yyyz(){return new this._Vec4(this[1],this[1],this[1],this[2])}get yyyw(){return new this._Vec4(this[1],this[1],this[1],this[3])}get yyzx(){return new this._Vec4(this[1],this[1],this[2],this[0])}get yyzy(){return new this._Vec4(this[1],this[1],this[2],this[1])}get yyzz(){return new this._Vec4(this[1],this[1],this[2],this[2])}get yyzw(){return new this._Vec4(this[1],this[1],this[2],this[3])}get yywx(){return new this._Vec4(this[1],this[1],this[3],this[0])}get yywy(){return new this._Vec4(this[1],this[1],this[3],this[1])}get yywz(){return new this._Vec4(this[1],this[1],this[3],this[2])}get yyww(){return new this._Vec4(this[1],this[1],this[3],this[3])}get yzxx(){return new this._Vec4(this[1],this[2],this[0],this[0])}get yzxy(){return new this._Vec4(this[1],this[2],this[0],this[1])}get yzxz(){return new this._Vec4(this[1],this[2],this[0],this[2])}get yzxw(){return new this._Vec4(this[1],this[2],this[0],this[3])}get yzyx(){return new this._Vec4(this[1],this[2],this[1],this[0])}get yzyy(){return new this._Vec4(this[1],this[2],this[1],this[1])}get yzyz(){return new this._Vec4(this[1],this[2],this[1],this[2])}get yzyw(){return new this._Vec4(this[1],this[2],this[1],this[3])}get yzzx(){return new this._Vec4(this[1],this[2],this[2],this[0])}get yzzy(){return new this._Vec4(this[1],this[2],this[2],this[1])}get yzzz(){return new this._Vec4(this[1],this[2],this[2],this[2])}get yzzw(){return new this._Vec4(this[1],this[2],this[2],this[3])}get yzwx(){return new this._Vec4(this[1],this[2],this[3],this[0])}get yzwy(){return new this._Vec4(this[1],this[2],this[3],this[1])}get yzwz(){return new this._Vec4(this[1],this[2],this[3],this[2])}get yzww(){return new this._Vec4(this[1],this[2],this[3],this[3])}get ywxx(){return new this._Vec4(this[1],this[3],this[0],this[0])}get ywxy(){return new this._Vec4(this[1],this[3],this[0],this[1])}get ywxz(){return new this._Vec4(this[1],this[3],this[0],this[2])}get ywxw(){return new this._Vec4(this[1],this[3],this[0],this[3])}get ywyx(){return new this._Vec4(this[1],this[3],this[1],this[0])}get ywyy(){return new this._Vec4(this[1],this[3],this[1],this[1])}get ywyz(){return new this._Vec4(this[1],this[3],this[1],this[2])}get ywyw(){return new this._Vec4(this[1],this[3],this[1],this[3])}get ywzx(){return new this._Vec4(this[1],this[3],this[2],this[0])}get ywzy(){return new this._Vec4(this[1],this[3],this[2],this[1])}get ywzz(){return new this._Vec4(this[1],this[3],this[2],this[2])}get ywzw(){return new this._Vec4(this[1],this[3],this[2],this[3])}get ywwx(){return new this._Vec4(this[1],this[3],this[3],this[0])}get ywwy(){return new this._Vec4(this[1],this[3],this[3],this[1])}get ywwz(){return new this._Vec4(this[1],this[3],this[3],this[2])}get ywww(){return new this._Vec4(this[1],this[3],this[3],this[3])}get zxxx(){return new this._Vec4(this[2],this[0],this[0],this[0])}get zxxy(){return new this._Vec4(this[2],this[0],this[0],this[1])}get zxxz(){return new this._Vec4(this[2],this[0],this[0],this[2])}get zxxw(){return new this._Vec4(this[2],this[0],this[0],this[3])}get zxyx(){return new this._Vec4(this[2],this[0],this[1],this[0])}get zxyy(){return new this._Vec4(this[2],this[0],this[1],this[1])}get zxyz(){return new this._Vec4(this[2],this[0],this[1],this[2])}get zxyw(){return new this._Vec4(this[2],this[0],this[1],this[3])}get zxzx(){return new this._Vec4(this[2],this[0],this[2],this[0])}get zxzy(){return new this._Vec4(this[2],this[0],this[2],this[1])}get zxzz(){return new this._Vec4(this[2],this[0],this[2],this[2])}get zxzw(){return new this._Vec4(this[2],this[0],this[2],this[3])}get zxwx(){return new this._Vec4(this[2],this[0],this[3],this[0])}get zxwy(){return new this._Vec4(this[2],this[0],this[3],this[1])}get zxwz(){return new this._Vec4(this[2],this[0],this[3],this[2])}get zxww(){return new this._Vec4(this[2],this[0],this[3],this[3])}get zyxx(){return new this._Vec4(this[2],this[1],this[0],this[0])}get zyxy(){return new this._Vec4(this[2],this[1],this[0],this[1])}get zyxz(){return new this._Vec4(this[2],this[1],this[0],this[2])}get zyxw(){return new this._Vec4(this[2],this[1],this[0],this[3])}get zyyx(){return new this._Vec4(this[2],this[1],this[1],this[0])}get zyyy(){return new this._Vec4(this[2],this[1],this[1],this[1])}get zyyz(){return new this._Vec4(this[2],this[1],this[1],this[2])}get zyyw(){return new this._Vec4(this[2],this[1],this[1],this[3])}get zyzx(){return new this._Vec4(this[2],this[1],this[2],this[0])}get zyzy(){return new this._Vec4(this[2],this[1],this[2],this[1])}get zyzz(){return new this._Vec4(this[2],this[1],this[2],this[2])}get zyzw(){return new this._Vec4(this[2],this[1],this[2],this[3])}get zywx(){return new this._Vec4(this[2],this[1],this[3],this[0])}get zywy(){return new this._Vec4(this[2],this[1],this[3],this[1])}get zywz(){return new this._Vec4(this[2],this[1],this[3],this[2])}get zyww(){return new this._Vec4(this[2],this[1],this[3],this[3])}get zzxx(){return new this._Vec4(this[2],this[2],this[0],this[0])}get zzxy(){return new this._Vec4(this[2],this[2],this[0],this[1])}get zzxz(){return new this._Vec4(this[2],this[2],this[0],this[2])}get zzxw(){return new this._Vec4(this[2],this[2],this[0],this[3])}get zzyx(){return new this._Vec4(this[2],this[2],this[1],this[0])}get zzyy(){return new this._Vec4(this[2],this[2],this[1],this[1])}get zzyz(){return new this._Vec4(this[2],this[2],this[1],this[2])}get zzyw(){return new this._Vec4(this[2],this[2],this[1],this[3])}get zzzx(){return new this._Vec4(this[2],this[2],this[2],this[0])}get zzzy(){return new this._Vec4(this[2],this[2],this[2],this[1])}get zzzz(){return new this._Vec4(this[2],this[2],this[2],this[2])}get zzzw(){return new this._Vec4(this[2],this[2],this[2],this[3])}get zzwx(){return new this._Vec4(this[2],this[2],this[3],this[0])}get zzwy(){return new this._Vec4(this[2],this[2],this[3],this[1])}get zzwz(){return new this._Vec4(this[2],this[2],this[3],this[2])}get zzww(){return new this._Vec4(this[2],this[2],this[3],this[3])}get zwxx(){return new this._Vec4(this[2],this[3],this[0],this[0])}get zwxy(){return new this._Vec4(this[2],this[3],this[0],this[1])}get zwxz(){return new this._Vec4(this[2],this[3],this[0],this[2])}get zwxw(){return new this._Vec4(this[2],this[3],this[0],this[3])}get zwyx(){return new this._Vec4(this[2],this[3],this[1],this[0])}get zwyy(){return new this._Vec4(this[2],this[3],this[1],this[1])}get zwyz(){return new this._Vec4(this[2],this[3],this[1],this[2])}get zwyw(){return new this._Vec4(this[2],this[3],this[1],this[3])}get zwzx(){return new this._Vec4(this[2],this[3],this[2],this[0])}get zwzy(){return new this._Vec4(this[2],this[3],this[2],this[1])}get zwzz(){return new this._Vec4(this[2],this[3],this[2],this[2])}get zwzw(){return new this._Vec4(this[2],this[3],this[2],this[3])}get zwwx(){return new this._Vec4(this[2],this[3],this[3],this[0])}get zwwy(){return new this._Vec4(this[2],this[3],this[3],this[1])}get zwwz(){return new this._Vec4(this[2],this[3],this[3],this[2])}get zwww(){return new this._Vec4(this[2],this[3],this[3],this[3])}get wxxx(){return new this._Vec4(this[3],this[0],this[0],this[0])}get wxxy(){return new this._Vec4(this[3],this[0],this[0],this[1])}get wxxz(){return new this._Vec4(this[3],this[0],this[0],this[2])}get wxxw(){return new this._Vec4(this[3],this[0],this[0],this[3])}get wxyx(){return new this._Vec4(this[3],this[0],this[1],this[0])}get wxyy(){return new this._Vec4(this[3],this[0],this[1],this[1])}get wxyz(){return new this._Vec4(this[3],this[0],this[1],this[2])}get wxyw(){return new this._Vec4(this[3],this[0],this[1],this[3])}get wxzx(){return new this._Vec4(this[3],this[0],this[2],this[0])}get wxzy(){return new this._Vec4(this[3],this[0],this[2],this[1])}get wxzz(){return new this._Vec4(this[3],this[0],this[2],this[2])}get wxzw(){return new this._Vec4(this[3],this[0],this[2],this[3])}get wxwx(){return new this._Vec4(this[3],this[0],this[3],this[0])}get wxwy(){return new this._Vec4(this[3],this[0],this[3],this[1])}get wxwz(){return new this._Vec4(this[3],this[0],this[3],this[2])}get wxww(){return new this._Vec4(this[3],this[0],this[3],this[3])}get wyxx(){return new this._Vec4(this[3],this[1],this[0],this[0])}get wyxy(){return new this._Vec4(this[3],this[1],this[0],this[1])}get wyxz(){return new this._Vec4(this[3],this[1],this[0],this[2])}get wyxw(){return new this._Vec4(this[3],this[1],this[0],this[3])}get wyyx(){return new this._Vec4(this[3],this[1],this[1],this[0])}get wyyy(){return new this._Vec4(this[3],this[1],this[1],this[1])}get wyyz(){return new this._Vec4(this[3],this[1],this[1],this[2])}get wyyw(){return new this._Vec4(this[3],this[1],this[1],this[3])}get wyzx(){return new this._Vec4(this[3],this[1],this[2],this[0])}get wyzy(){return new this._Vec4(this[3],this[1],this[2],this[1])}get wyzz(){return new this._Vec4(this[3],this[1],this[2],this[2])}get wyzw(){return new this._Vec4(this[3],this[1],this[2],this[3])}get wywx(){return new this._Vec4(this[3],this[1],this[3],this[0])}get wywy(){return new this._Vec4(this[3],this[1],this[3],this[1])}get wywz(){return new this._Vec4(this[3],this[1],this[3],this[2])}get wyww(){return new this._Vec4(this[3],this[1],this[3],this[3])}get wzxx(){return new this._Vec4(this[3],this[2],this[0],this[0])}get wzxy(){return new this._Vec4(this[3],this[2],this[0],this[1])}get wzxz(){return new this._Vec4(this[3],this[2],this[0],this[2])}get wzxw(){return new this._Vec4(this[3],this[2],this[0],this[3])}get wzyx(){return new this._Vec4(this[3],this[2],this[1],this[0])}get wzyy(){return new this._Vec4(this[3],this[2],this[1],this[1])}get wzyz(){return new this._Vec4(this[3],this[2],this[1],this[2])}get wzyw(){return new this._Vec4(this[3],this[2],this[1],this[3])}get wzzx(){return new this._Vec4(this[3],this[2],this[2],this[0])}get wzzy(){return new this._Vec4(this[3],this[2],this[2],this[1])}get wzzz(){return new this._Vec4(this[3],this[2],this[2],this[2])}get wzzw(){return new this._Vec4(this[3],this[2],this[2],this[3])}get wzwx(){return new this._Vec4(this[3],this[2],this[3],this[0])}get wzwy(){return new this._Vec4(this[3],this[2],this[3],this[1])}get wzwz(){return new this._Vec4(this[3],this[2],this[3],this[2])}get wzww(){return new this._Vec4(this[3],this[2],this[3],this[3])}get wwxx(){return new this._Vec4(this[3],this[3],this[0],this[0])}get wwxy(){return new this._Vec4(this[3],this[3],this[0],this[1])}get wwxz(){return new this._Vec4(this[3],this[3],this[0],this[2])}get wwxw(){return new this._Vec4(this[3],this[3],this[0],this[3])}get wwyx(){return new this._Vec4(this[3],this[3],this[1],this[0])}get wwyy(){return new this._Vec4(this[3],this[3],this[1],this[1])}get wwyz(){return new this._Vec4(this[3],this[3],this[1],this[2])}get wwyw(){return new this._Vec4(this[3],this[3],this[1],this[3])}get wwzx(){return new this._Vec4(this[3],this[3],this[2],this[0])}get wwzy(){return new this._Vec4(this[3],this[3],this[2],this[1])}get wwzz(){return new this._Vec4(this[3],this[3],this[2],this[2])}get wwzw(){return new this._Vec4(this[3],this[3],this[2],this[3])}get wwwx(){return new this._Vec4(this[3],this[3],this[3],this[0])}get wwwy(){return new this._Vec4(this[3],this[3],this[3],this[1])}get wwwz(){return new this._Vec4(this[3],this[3],this[3],this[2])}get wwww(){return new this._Vec4(this[3],this[3],this[3],this[3])}},o=class extends k{constructor(s,i){var h;super(2);r(this,0);r(this,1);this[0]=s!=null?s:0,this[1]=(h=i!=null?i:s)!=null?h:0}get x(){return this[0]}get y(){return this[1]}set x(s){this[0]=s}set y(s){this[1]=s}},y=class extends k{constructor(s,i,h){var n,u;super(3);r(this,0);r(this,1);r(this,2);this[0]=s!=null?s:0,this[1]=(n=i!=null?i:s)!=null?n:0,this[2]=(u=h!=null?h:s)!=null?u:0}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}set x(s){this[0]=s}set y(s){this[1]=s}set z(s){this[2]=s}},x=class extends k{constructor(s,i,h,n){var u,w,g;super(4);r(this,0);r(this,1);r(this,2);r(this,3);this[0]=s!=null?s:0,this[1]=(u=i!=null?i:s)!=null?u:0,this[2]=(w=h!=null?h:s)!=null?w:0,this[3]=(g=n!=null?n:s)!=null?g:0}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}get w(){return this[3]}set x(s){this[0]=s}set y(s){this[1]=s}set z(s){this[2]=s}set w(s){this[3]=s}},V=class e extends o{get kind(){return"vec2f"}get _Vec2(){return e}get _Vec3(){return z}get _Vec4(){return f}},m=class e extends o{get kind(){return"vec2h"}get _Vec2(){return e}get _Vec3(){return l}get _Vec4(){return d}},_=class e extends o{get kind(){return"vec2i"}get _Vec2(){return e}get _Vec3(){return p}get _Vec4(){return T}},a=class e extends o{get kind(){return"vec2u"}get _Vec2(){return e}get _Vec3(){return b}get _Vec4(){return v}},z=class e extends y{get kind(){return"vec3f"}get _Vec2(){return V}get _Vec3(){return e}get _Vec4(){return f}},l=class e extends y{get kind(){return"vec3h"}get _Vec2(){return m}get _Vec3(){return e}get _Vec4(){return d}},p=class e extends y{get kind(){return"vec3i"}get _Vec2(){return _}get _Vec3(){return e}get _Vec4(){return T}},b=class e extends y{get kind(){return"vec3u"}get _Vec2(){return a}get _Vec3(){return e}get _Vec4(){return v}},f=class e extends x{get kind(){return"vec4f"}get _Vec2(){return V}get _Vec3(){return z}get _Vec4(){return e}},d=class e extends x{get kind(){return"vec4h"}get _Vec2(){return m}get _Vec3(){return l}get _Vec4(){return e}},T=class e extends x{get kind(){return"vec4i"}get _Vec2(){return _}get _Vec3(){return p}get _Vec4(){return e}},v=class e extends x{get kind(){return"vec4u"}get _Vec2(){return a}get _Vec3(){return b}get _Vec4(){return e}};function c(e){let{kind:t,length:s}=new e;return Object.assign((...h)=>{if(M())return`${t}(${h.join(", ")})`;let n=new Array(h.length),u=0;for(let w of h)if(typeof w=="number")n[u++]=w;else for(let g=0;g<w.length;++g)n[u++]=w[g];if(n.length<=1||n.length===s)return new e(...n);throw new Error(`'${t}' constructor called with invalid number of arguments.`)},{type:t,"~repr":void 0})}var H=c(V),zt=c(m),lt=c(_),pt=c(a),J=c(z),bt=c(l),ft=c(p),dt=c(b),Q=c(f),Tt=c(d),vt=c(T),Ct=c(v);function E(e){let t={"~repr":void 0,type:e.type,label:e.type};return Object.assign((...i)=>{if(M())return`${t.type}(${i.join(", ")})`;let h=[];for(let n of i)if(typeof n=="number")h.push(n);else for(let u=0;u<n.length;++u)h.push(n[u]);for(let n=h.length;n<e.columns*e.rows;++n)h.push(0);return e.makeFromElements(...h)},t)}var O=class{constructor(...t){r(this,"columns");r(this,"length",4);this.columns=[this.makeColumn(t[0],t[1]),this.makeColumn(t[2],t[3])]}get 0(){return this.columns[0].x}get 1(){return this.columns[0].y}get 2(){return this.columns[1].x}get 3(){return this.columns[1].y}set 0(t){this.columns[0].x=t}set 1(t){this.columns[0].y=t}set 2(t){this.columns[1].x=t}set 3(t){this.columns[1].y=t}"~resolve"(){return`${this.kind}(${Array.from({length:this.length}).map((t,s)=>this[s]).join(", ")})`}},U=class extends O{constructor(){super(...arguments);r(this,"kind","mat2x2f")}makeColumn(s,i){return H(s,i)}},A=class{constructor(...t){r(this,"columns");r(this,"length",12);this.columns=[this.makeColumn(t[0],t[1],t[2]),this.makeColumn(t[3],t[4],t[5]),this.makeColumn(t[6],t[7],t[8])]}get 0(){return this.columns[0].x}get 1(){return this.columns[0].y}get 2(){return this.columns[0].z}get 3(){return 0}get 4(){return this.columns[1].x}get 5(){return this.columns[1].y}get 6(){return this.columns[1].z}get 7(){return 0}get 8(){return this.columns[2].x}get 9(){return this.columns[2].y}get 10(){return this.columns[2].z}get 11(){return 0}set 0(t){this.columns[0].x=t}set 1(t){this.columns[0].y=t}set 2(t){this.columns[0].z=t}set 3(t){}set 4(t){this.columns[1].x=t}set 5(t){this.columns[1].y=t}set 6(t){this.columns[1].z=t}set 7(t){}set 8(t){this.columns[2].x=t}set 9(t){this.columns[2].y=t}set 10(t){this.columns[2].z=t}set 11(t){}"~resolve"(){return`${this.kind}(${this[0]}, ${this[1]}, ${this[2]}, ${this[4]}, ${this[5]}, ${this[6]}, ${this[8]}, ${this[9]}, ${this[10]})`}},B=class extends A{constructor(){super(...arguments);r(this,"kind","mat3x3f")}makeColumn(s,i,h){return J(s,i,h)}},G=class{constructor(...t){r(this,"columns");r(this,"length",16);this.columns=[this.makeColumn(t[0],t[1],t[2],t[3]),this.makeColumn(t[4],t[5],t[6],t[7]),this.makeColumn(t[8],t[9],t[10],t[11]),this.makeColumn(t[12],t[13],t[14],t[15])]}get 0(){return this.columns[0].x}get 1(){return this.columns[0].y}get 2(){return this.columns[0].z}get 3(){return this.columns[0].w}get 4(){return this.columns[1].x}get 5(){return this.columns[1].y}get 6(){return this.columns[1].z}get 7(){return this.columns[1].w}get 8(){return this.columns[2].x}get 9(){return this.columns[2].y}get 10(){return this.columns[2].z}get 11(){return this.columns[2].w}get 12(){return this.columns[3].x}get 13(){return this.columns[3].y}get 14(){return this.columns[3].z}get 15(){return this.columns[3].w}set 0(t){this.columns[0].x=t}set 1(t){this.columns[0].y=t}set 2(t){this.columns[0].z=t}set 3(t){this.columns[0].w=t}set 4(t){this.columns[1].x=t}set 5(t){this.columns[1].y=t}set 6(t){this.columns[1].z=t}set 7(t){this.columns[1].w=t}set 8(t){this.columns[2].x=t}set 9(t){this.columns[2].y=t}set 10(t){this.columns[2].z=t}set 11(t){this.columns[2].w=t}set 12(t){this.columns[3].x=t}set 13(t){this.columns[3].y=t}set 14(t){this.columns[3].z=t}set 15(t){this.columns[3].w=t}"~resolve"(){return`${this.kind}(${Array.from({length:this.length}).map((t,s)=>this[s]).join(", ")})`}},R=class extends G{constructor(){super(...arguments);r(this,"kind","mat4x4f")}makeColumn(s,i,h,n){return Q(s,i,h,n)}},Pt=E({type:"mat2x2f",rows:2,columns:2,makeFromElements:(...e)=>new U(...e)}),St=E({type:"mat3x3f",rows:3,columns:3,makeFromElements:(...e)=>new B(...e)}),jt=E({type:"mat4x4f",rows:4,columns:4,makeFromElements:(...e)=>new R(...e)});function Ot(e){return e.kind==="mat3x3f"?[e[0],e[1],e[2],e[4],e[5],e[6],e[8],e[9],e[10]]:Array.from({length:e.length}).map((t,s)=>e[s])}export{ht as a,nt as b,r as c,j as d,F as e,K as f,L as g,W as h,N as i,q as j,it as k,wt as l,gt as m,ot as n,yt as o,M as p,H as q,zt as r,lt as s,pt as t,J as u,bt as v,ft as w,dt as x,Q as y,Tt as z,vt as A,Ct as B,Pt as C,St as D,jt as E,Ot as F};
|
4
|
-
//# sourceMappingURL=chunk-7S2KQX6O.js.map
|