typegpu 0.5.1 → 0.5.3
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-DVZNNZFQ.js +2 -0
- package/{chunk-VOFHV4Z6.js.map → chunk-DVZNNZFQ.js.map} +1 -1
- package/chunk-FM3TKZFZ.cjs +2 -0
- package/chunk-FM3TKZFZ.cjs.map +1 -0
- package/chunk-M4VUFFPZ.cjs +4 -0
- package/chunk-M4VUFFPZ.cjs.map +1 -0
- package/chunk-RMXVIINO.js +2 -0
- package/{chunk-KVOFUY5A.js.map → chunk-RMXVIINO.js.map} +1 -1
- package/chunk-UHU5Z2IS.js +4 -0
- package/{chunk-DR55IHDD.js.map → chunk-UHU5Z2IS.js.map} +1 -1
- package/chunk-UPPJES6W.cjs +2 -0
- package/chunk-UPPJES6W.cjs.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 +17 -17
- package/index.cjs.map +1 -1
- package/index.js +17 -17
- 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.js +1 -1
- package/chunk-3JTP2ATR.cjs +0 -2
- package/chunk-3JTP2ATR.cjs.map +0 -1
- package/chunk-3QXCKMEJ.cjs +0 -2
- package/chunk-3QXCKMEJ.cjs.map +0 -1
- package/chunk-DR55IHDD.js +0 -4
- package/chunk-KVOFUY5A.js +0 -2
- package/chunk-QRLTUOBJ.cjs +0 -4
- package/chunk-QRLTUOBJ.cjs.map +0 -1
- package/chunk-VOFHV4Z6.js +0 -2
package/std/index.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["/Users/marcinhawryluk/Documents/wigsill/packages/typegpu/dist/std/index.cjs","../../src/std/discard.ts","../../src/data/vectorOps.ts","../../src/std/numeric.ts"],"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","sub","mul","sIsVector","vIsVector","returnType","abs","atan2","y","x","acos","asin","ceil","cos","cross","dot","f32","normalize","floor","fract","length","max","min","sin","exp","pow","mix","reflect","distance","isCloseTo","precision"],"mappings":"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ID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAExDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CA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","file":"/Users/marcinhawryluk/Documents/wigsill/packages/typegpu/dist/std/index.cjs","sourcesContent":[null,"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"]}
|
1
|
+
{"version":3,"sources":["/Users/iwo/Projects/wigsill/packages/typegpu/dist/std/index.cjs","../../src/std/discard.ts","../../src/data/vectorOps.ts","../../src/std/numeric.ts"],"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","sub","mul","sIsVector","vIsVector","returnType","abs","atan2","y","x","acos","asin","ceil","cos","cross","dot","f32","normalize","floor","fract","length","max","min","sin","exp","pow","mix","reflect","distance","isCloseTo","precision"],"mappings":"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ID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAExDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDD,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIC,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAID,CAAAA,CA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","file":"/Users/iwo/Projects/wigsill/packages/typegpu/dist/std/index.cjs","sourcesContent":[null,"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"]}
|