typegpu 0.5.8 → 0.5.9

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.
Files changed (45) hide show
  1. package/chunk-734H4JWF.js +2 -0
  2. package/chunk-734H4JWF.js.map +1 -0
  3. package/chunk-BJSN5UVV.cjs +41 -0
  4. package/chunk-BJSN5UVV.cjs.map +1 -0
  5. package/{chunk-7ACLI4JY.cjs → chunk-BZVU4Q6A.cjs} +2 -2
  6. package/chunk-BZVU4Q6A.cjs.map +1 -0
  7. package/chunk-CDUKTYES.cjs +2 -0
  8. package/chunk-CDUKTYES.cjs.map +1 -0
  9. package/chunk-CGVYLGBG.js +2 -0
  10. package/chunk-CGVYLGBG.js.map +1 -0
  11. package/chunk-SWJVYRFM.js +41 -0
  12. package/chunk-SWJVYRFM.js.map +1 -0
  13. package/data/index.cjs +1 -1
  14. package/data/index.cjs.map +1 -1
  15. package/data/index.d.cts +4 -77
  16. package/data/index.d.ts +4 -77
  17. package/data/index.js +1 -1
  18. package/index.cjs +21 -20
  19. package/index.cjs.map +1 -1
  20. package/index.d.cts +5 -3
  21. package/index.d.ts +5 -3
  22. package/index.js +21 -20
  23. package/index.js.map +1 -1
  24. package/matrix-BULDDGYa.d.ts +122 -0
  25. package/matrix-BnXitNJ7.d.cts +122 -0
  26. package/package.json +1 -1
  27. package/std/index.cjs +1 -1
  28. package/std/index.cjs.map +1 -1
  29. package/std/index.d.cts +69 -2
  30. package/std/index.d.ts +69 -2
  31. package/std/index.js +1 -1
  32. package/std/index.js.map +1 -1
  33. package/{tgpuComputeFn-S61HxwW-.d.ts → tgpuComputeFn-BxPDI5hQ.d.cts} +90 -28
  34. package/{tgpuComputeFn-S61HxwW-.d.cts → tgpuComputeFn-BxPDI5hQ.d.ts} +90 -28
  35. package/chunk-7ACLI4JY.cjs.map +0 -1
  36. package/chunk-L7HIBZAX.js +0 -4
  37. package/chunk-L7HIBZAX.js.map +0 -1
  38. package/chunk-SFECI7OX.js +0 -2
  39. package/chunk-SFECI7OX.js.map +0 -1
  40. package/chunk-SLWTVY6K.js +0 -2
  41. package/chunk-SLWTVY6K.js.map +0 -1
  42. package/chunk-TF6YPHJS.cjs +0 -2
  43. package/chunk-TF6YPHJS.cjs.map +0 -1
  44. package/chunk-V4CSEIB2.cjs +0 -4
  45. package/chunk-V4CSEIB2.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/iwo/Projects/wigsill/packages/typegpu/dist/chunk-CDUKTYES.cjs","../src/data/vectorOps.ts","../src/std/numeric.ts"],"names":["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","unary2x2f","a_","mat2x2f","unary3x3f","mat3x3f","unary4x4f","mat4x4f","binaryComponentWise2f","b","binaryComponentWise2h","binaryComponentWise2i","binaryComponentWise2u","binaryComponentWise3f","binaryComponentWise3h","binaryComponentWise3i","binaryComponentWise3u","binaryComponentWise4f","binaryComponentWise4h","binaryComponentWise4i","binaryComponentWise4u","binaryComponentWise2x2f","b_","binaryComponentWise3x3f","binaryComponentWise4x4f","NumberOps","VectorOps","e1","e2","vec2b","vec3b","vec4b","e","s","m","m_","len","base","exponent","e3","val","f","t","c","isSnippetNumeric","snippet","isNumericSchema","schema","type","$internal","cpuAdd","isVecInstance","isMatInstance","add","createDualImpl","snip","cpuSub","mul","sub","cpuMul","isFloat32VecInstance","returnType","cpuDiv","div","f32","abs","atan2","y","x","acos","acosh","asin","ceil","cos","cosh","cross","dot","normalize","floor","fract","length","log","log2","max","min","sign","sin","exp","exp2","pow","mix","reflect","distance","neg","sqrt","tanh"],"mappings":"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,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAC1D,CACF,CAAA,CAEA,OAAA,CAAS,CAAC7C,CAAAA,CAAegC,CAAAA,CAAAA,EAAkB,CACzC,IAAMP,CAAAA,CAAKzB,CAAAA,CAAE,OAAA,CACP6C,CAAAA,CAAKb,CAAAA,CAAE,OAAA,CAEb,OAAOF,kCAAAA,CACLL,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAA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","file":"/Users/iwo/Projects/wigsill/packages/typegpu/dist/chunk-CDUKTYES.cjs","sourcesContent":[null,"import { mat2x2f, mat3x3f, mat4x4f } from './matrix.ts';\nimport {\n vec2b,\n vec2f,\n vec2h,\n vec2i,\n vec2u,\n vec3b,\n vec3f,\n vec3h,\n vec3i,\n vec3u,\n vec4b,\n vec4f,\n vec4h,\n vec4i,\n vec4u,\n} from './vector.ts';\nimport type * as wgsl from './wgslTypes.ts';\nimport type { VecKind } from './wgslTypes.ts';\n\ntype vBase = { kind: VecKind };\ntype mBase = { kind: MatKind };\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 unary2x2f = (op: UnaryOp) => (a: wgsl.m2x2f) => {\n const a_ = a.columns as [wgsl.v2f, wgsl.v2f];\n return mat2x2f(unary2f(op)(a_[0]), unary2f(op)(a_[1]));\n};\n\nconst unary3x3f = (op: UnaryOp) => (a: wgsl.m3x3f) => {\n const a_ = a.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n return mat3x3f(unary3f(op)(a_[0]), unary3f(op)(a_[1]), unary3f(op)(a_[2]));\n};\n\nconst unary4x4f = (op: UnaryOp) => (a: wgsl.m4x4f) => {\n const a_ = a.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n return mat4x4f(\n unary4f(op)(a_[0]),\n unary4f(op)(a_[1]),\n unary4f(op)(a_[2]),\n unary4f(op)(a_[3]),\n );\n};\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\nconst binaryComponentWise2x2f =\n (op: BinaryOp) => (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 return mat2x2f(\n binaryComponentWise2f(op)(a_[0], b_[0]),\n binaryComponentWise2f(op)(a_[1], b_[1]),\n );\n };\n\nconst binaryComponentWise3x3f =\n (op: BinaryOp) => (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 return mat3x3f(\n binaryComponentWise3f(op)(a_[0], b_[0]),\n binaryComponentWise3f(op)(a_[1], b_[1]),\n binaryComponentWise3f(op)(a_[2], b_[2]),\n );\n };\n\nconst binaryComponentWise4x4f =\n (op: BinaryOp) => (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 return mat4x4f(\n binaryComponentWise4f(op)(a_[0], b_[0]),\n binaryComponentWise4f(op)(a_[1], b_[1]),\n binaryComponentWise4f(op)(a_[2], b_[2]),\n binaryComponentWise4f(op)(a_[3], b_[3]),\n );\n };\n\nexport const NumberOps = {\n divInteger: (lhs: number, rhs: number) => {\n if (rhs === 0) {\n return lhs;\n }\n return Math.trunc(lhs / rhs);\n },\n};\n\nexport const VectorOps = {\n eq: {\n vec2f: (e1: wgsl.v2f, e2: wgsl.v2f) => vec2b(e1.x === e2.x, e1.y === e2.y),\n vec2h: (e1: wgsl.v2h, e2: wgsl.v2h) => vec2b(e1.x === e2.x, e1.y === e2.y),\n vec2i: (e1: wgsl.v2i, e2: wgsl.v2i) => vec2b(e1.x === e2.x, e1.y === e2.y),\n vec2u: (e1: wgsl.v2u, e2: wgsl.v2u) => vec2b(e1.x === e2.x, e1.y === e2.y),\n 'vec2<bool>': (e1: wgsl.v2b, e2: wgsl.v2b) =>\n vec2b(e1.x === e2.x, e1.y === e2.y),\n\n vec3f: (e1: wgsl.v3f, e2: wgsl.v3f) =>\n vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n vec3h: (e1: wgsl.v3h, e2: wgsl.v3h) =>\n vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n vec3i: (e1: wgsl.v3i, e2: wgsl.v3i) =>\n vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n vec3u: (e1: wgsl.v3u, e2: wgsl.v3u) =>\n vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n 'vec3<bool>': (e1: wgsl.v3b, e2: wgsl.v3b) =>\n vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n\n vec4f: (e1: wgsl.v4f, e2: wgsl.v4f) =>\n vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n vec4h: (e1: wgsl.v4h, e2: wgsl.v4h) =>\n vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n vec4i: (e1: wgsl.v4i, e2: wgsl.v4i) =>\n vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n vec4u: (e1: wgsl.v4u, e2: wgsl.v4u) =>\n vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n 'vec4<bool>': (e1: wgsl.v4b, e2: wgsl.v4b) =>\n vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n } as Record<\n VecKind,\n <T extends wgsl.AnyVecInstance>(\n e1: T,\n e2: T,\n ) => T extends wgsl.AnyVec2Instance ? wgsl.v2b\n : T extends wgsl.AnyVec3Instance ? wgsl.v3b\n : wgsl.v4b\n >,\n\n lt: {\n vec2f: (e1: wgsl.v2f, e2: wgsl.v2f) => vec2b(e1.x < e2.x, e1.y < e2.y),\n vec2h: (e1: wgsl.v2h, e2: wgsl.v2h) => vec2b(e1.x < e2.x, e1.y < e2.y),\n vec2i: (e1: wgsl.v2i, e2: wgsl.v2i) => vec2b(e1.x < e2.x, e1.y < e2.y),\n vec2u: (e1: wgsl.v2u, e2: wgsl.v2u) => vec2b(e1.x < e2.x, e1.y < e2.y),\n\n vec3f: (e1: wgsl.v3f, e2: wgsl.v3f) =>\n vec3b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z),\n vec3h: (e1: wgsl.v3h, e2: wgsl.v3h) =>\n vec3b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z),\n vec3i: (e1: wgsl.v3i, e2: wgsl.v3i) =>\n vec3b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z),\n vec3u: (e1: wgsl.v3u, e2: wgsl.v3u) =>\n vec3b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z),\n\n vec4f: (e1: wgsl.v4f, e2: wgsl.v4f) =>\n vec4b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z, e1.w < e2.w),\n vec4h: (e1: wgsl.v4h, e2: wgsl.v4h) =>\n vec4b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z, e1.w < e2.w),\n vec4i: (e1: wgsl.v4i, e2: wgsl.v4i) =>\n vec4b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z, e1.w < e2.w),\n vec4u: (e1: wgsl.v4u, e2: wgsl.v4u) =>\n vec4b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z, e1.w < e2.w),\n } as Record<\n VecKind,\n <T extends wgsl.AnyNumericVecInstance>(\n e1: T,\n e2: T,\n ) => T extends wgsl.AnyVec2Instance ? wgsl.v2b\n : T extends wgsl.AnyVec3Instance ? wgsl.v3b\n : wgsl.v4b\n >,\n\n or: {\n 'vec2<bool>': (e1: wgsl.v2b, e2: wgsl.v2b) =>\n vec2b(e1.x || e2.x, e1.y || e2.y),\n 'vec3<bool>': (e1: wgsl.v3b, e2: wgsl.v3b) =>\n vec3b(e1.x || e2.x, e1.y || e2.y, e1.z || e2.z),\n 'vec4<bool>': (e1: wgsl.v4b, e2: wgsl.v4b) =>\n vec4b(e1.x || e2.x, e1.y || e2.y, e1.z || e2.z, e1.w || e2.w),\n } as Record<\n VecKind,\n <T extends wgsl.AnyBooleanVecInstance>(e1: T, e2: T) => T\n >,\n\n all: {\n 'vec2<bool>': (e: wgsl.v2b) => e.x && e.y,\n 'vec3<bool>': (e: wgsl.v3b) => e.x && e.y && e.z,\n 'vec4<bool>': (e: wgsl.v4b) => e.x && e.y && e.z && e.w,\n } as Record<VecKind, (v: wgsl.AnyBooleanVecInstance) => boolean>,\n\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\n vec3f: binaryComponentWise3f(Math.atan2),\n vec3h: binaryComponentWise3h(Math.atan2),\n\n vec4f: binaryComponentWise4f(Math.atan2),\n vec4h: binaryComponentWise4h(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 acosh: {\n vec2f: unary2f(Math.acosh),\n vec2h: unary2h(Math.acosh),\n\n vec3f: unary3f(Math.acosh),\n vec3h: unary3h(Math.acosh),\n\n vec4f: unary4f(Math.acosh),\n vec4h: unary4h(Math.acosh),\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\n vec3f: unary3f(Math.ceil),\n vec3h: unary3h(Math.ceil),\n\n vec4f: unary4f(Math.ceil),\n vec4h: unary4h(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\n vec3f: lengthVec3,\n vec3h: lengthVec3,\n\n vec4f: lengthVec4,\n vec4h: lengthVec4,\n } as Record<VecKind, (v: vBase) => number>,\n\n add: {\n vec2f: binaryComponentWise2f((a, b) => a + b),\n vec2h: binaryComponentWise2h((a, b) => a + b),\n vec2i: binaryComponentWise2i((a, b) => a + b),\n vec2u: binaryComponentWise2u((a, b) => a + b),\n\n vec3f: binaryComponentWise3f((a, b) => a + b),\n vec3h: binaryComponentWise3h((a, b) => a + b),\n vec3i: binaryComponentWise3i((a, b) => a + b),\n vec3u: binaryComponentWise3u((a, b) => a + b),\n\n vec4f: binaryComponentWise4f((a, b) => a + b),\n vec4h: binaryComponentWise4h((a, b) => a + b),\n vec4i: binaryComponentWise4i((a, b) => a + b),\n vec4u: binaryComponentWise4u((a, b) => a + b),\n\n mat2x2f: binaryComponentWise2x2f((a, b) => a + b),\n mat3x3f: binaryComponentWise3x3f((a, b) => a + b),\n mat4x4f: binaryComponentWise4x4f((a, b) => a + b),\n } as Record<\n VecKind | MatKind,\n <T extends vBase | mBase>(lhs: T, rhs: T) => T\n >,\n\n addMixed: {\n vec2f: (a: wgsl.v2f, b: number) => unary2f((e) => e + b)(a),\n vec2h: (a: wgsl.v2h, b: number) => unary2h((e) => e + b)(a),\n vec2i: (a: wgsl.v2i, b: number) => unary2i((e) => e + b)(a),\n vec2u: (a: wgsl.v2u, b: number) => unary2u((e) => e + b)(a),\n\n vec3f: (a: wgsl.v3f, b: number) => unary3f((e) => e + b)(a),\n vec3h: (a: wgsl.v3h, b: number) => unary3h((e) => e + b)(a),\n vec3i: (a: wgsl.v3i, b: number) => unary3i((e) => e + b)(a),\n vec3u: (a: wgsl.v3u, b: number) => unary3u((e) => e + b)(a),\n\n vec4f: (a: wgsl.v4f, b: number) => unary4f((e) => e + b)(a),\n vec4h: (a: wgsl.v4h, b: number) => unary4h((e) => e + b)(a),\n vec4i: (a: wgsl.v4i, b: number) => unary4i((e) => e + b)(a),\n vec4u: (a: wgsl.v4u, b: number) => unary4u((e) => e + b)(a),\n\n mat2x2f: (a: wgsl.m2x2f, b: number) => unary2x2f((e) => e + b)(a),\n mat3x3f: (a: wgsl.m3x3f, b: number) => unary3x3f((e) => e + b)(a),\n mat4x4f: (a: wgsl.m4x4f, b: number) => unary4x4f((e) => e + b)(a),\n } as Record<\n VecKind | MatKind,\n <T extends vBase | mBase>(lhs: T, rhs: number) => T\n >,\n\n mulSxV: {\n vec2f: (s: number, v: wgsl.v2f) => unary2f((e) => s * e)(v),\n vec2h: (s: number, v: wgsl.v2h) => unary2h((e) => s * e)(v),\n vec2i: (s: number, v: wgsl.v2i) => unary2i((e) => s * e)(v),\n vec2u: (s: number, v: wgsl.v2u) => unary2u((e) => s * e)(v),\n\n vec3f: (s: number, v: wgsl.v3f) => unary3f((e) => s * e)(v),\n vec3h: (s: number, v: wgsl.v3h) => unary3h((e) => s * e)(v),\n vec3i: (s: number, v: wgsl.v3i) => unary3i((e) => s * e)(v),\n vec3u: (s: number, v: wgsl.v3u) => unary3u((e) => s * e)(v),\n\n vec4f: (s: number, v: wgsl.v4f) => unary4f((e) => s * e)(v),\n vec4h: (s: number, v: wgsl.v4h) => unary4h((e) => s * e)(v),\n vec4i: (s: number, v: wgsl.v4i) => unary4i((e) => s * e)(v),\n vec4u: (s: number, v: wgsl.v4u) => unary4u((e) => s * e)(v),\n\n mat2x2f: (s: number, m: wgsl.m2x2f) => unary2x2f((e) => s * e)(m),\n mat3x3f: (s: number, m: wgsl.m3x3f) => unary3x3f((e) => s * e)(m),\n mat4x4f: (s: number, m: wgsl.m4x4f) => unary4x4f((e) => s * e)(m),\n } as Record<\n VecKind | MatKind,\n <T extends vBase | wgsl.AnyMatInstance>(s: number, v: T) => T\n >,\n\n mulVxV: {\n vec2f: binaryComponentWise2f((a, b) => a * b),\n vec2h: binaryComponentWise2h((a, b) => a * b),\n vec2i: binaryComponentWise2i((a, b) => a * b),\n vec2u: binaryComponentWise2u((a, b) => a * b),\n\n vec3f: binaryComponentWise3f((a, b) => a * b),\n vec3h: binaryComponentWise3h((a, b) => a * b),\n vec3i: binaryComponentWise3i((a, b) => a * b),\n vec3u: binaryComponentWise3u((a, b) => a * b),\n\n vec4f: binaryComponentWise4f((a, b) => a * b),\n vec4h: binaryComponentWise4h((a, b) => a * b),\n vec4i: binaryComponentWise4i((a, b) => a * b),\n vec4u: binaryComponentWise4u((a, b) => a * b),\n\n mat2x2f: (a: wgsl.m2x2f, b: wgsl.m2x2f) => {\n const a_ = a.columns;\n const b_ = b.columns;\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 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;\n const b_ = b.columns;\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 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 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;\n const b_ = b.columns;\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 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 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 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;\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;\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;\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;\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;\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;\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 div: {\n vec2f: binaryComponentWise2f((a, b) => a / b),\n vec2h: binaryComponentWise2h((a, b) => a / b),\n vec2i: binaryComponentWise2i(NumberOps.divInteger),\n vec2u: binaryComponentWise2u(NumberOps.divInteger),\n\n vec3f: binaryComponentWise3f((a, b) => a / b),\n vec3h: binaryComponentWise3h((a, b) => a / b),\n vec3i: binaryComponentWise3i(NumberOps.divInteger),\n vec3u: binaryComponentWise3u(NumberOps.divInteger),\n\n vec4f: binaryComponentWise4f((a, b) => a / b),\n vec4h: binaryComponentWise4h((a, b) => a / b),\n vec4i: binaryComponentWise4i(NumberOps.divInteger),\n vec4u: binaryComponentWise4u(NumberOps.divInteger),\n } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n divMixed: {\n vec2f: (a: wgsl.v2f, b: number) => unary2f((e) => e / b)(a),\n vec2h: (a: wgsl.v2h, b: number) => unary2h((e) => e / b)(a),\n vec2i: (a: wgsl.v2i, b: number) =>\n unary2i((e) => NumberOps.divInteger(e, b))(a),\n vec2u: (a: wgsl.v2u, b: number) =>\n unary2u((e) => NumberOps.divInteger(e, b))(a),\n\n vec3f: (a: wgsl.v3f, b: number) => unary3f((e) => e / b)(a),\n vec3h: (a: wgsl.v3h, b: number) => unary3h((e) => e / b)(a),\n vec3i: (a: wgsl.v3i, b: number) =>\n unary3i((e) => NumberOps.divInteger(e, b))(a),\n vec3u: (a: wgsl.v3u, b: number) =>\n unary3u((e) => NumberOps.divInteger(e, b))(a),\n\n vec4f: (a: wgsl.v4f, b: number) => unary4f((e) => e / b)(a),\n vec4h: (a: wgsl.v4h, b: number) => unary4h((e) => e / b)(a),\n vec4i: (a: wgsl.v4i, b: number) =>\n unary4i((e) => NumberOps.divInteger(e, b))(a),\n vec4u: (a: wgsl.v4u, b: number) =>\n unary4u((e) => NumberOps.divInteger(e, b))(a),\n } as Record<VecKind, <T extends vBase>(lhs: T, rhs: number) => T>,\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 } as Record<\n 'vec3f' | 'vec3h',\n <T extends wgsl.v3f | wgsl.v3h>(a: T, b: T) => T\n >,\n\n floor: {\n vec2f: unary2f(Math.floor),\n vec2h: unary2h(Math.floor),\n\n vec3f: unary3f(Math.floor),\n vec3h: unary3h(Math.floor),\n\n vec4f: unary4f(Math.floor),\n vec4h: unary4h(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 <T extends wgsl.AnyFloatVecInstance | number>(a: T, b: T) => T\n >,\n\n sign: {\n vec2f: unary2f(Math.sign),\n vec2h: unary2h(Math.sign),\n vec2i: unary2i(Math.sign),\n\n vec3f: unary3f(Math.sign),\n vec3h: unary3h(Math.sign),\n vec3i: unary3i(Math.sign),\n\n vec4f: unary4f(Math.sign),\n vec4h: unary4h(Math.sign),\n vec4i: unary4i(Math.sign),\n } as Record<VecKind, <T extends vBase>(e: T) => T>,\n\n sqrt: {\n vec2f: unary2f(Math.sqrt),\n vec2h: unary2h(Math.sqrt),\n\n vec3f: unary3f(Math.sqrt),\n vec3h: unary3h(Math.sqrt),\n\n vec4f: unary4f(Math.sqrt),\n vec4h: unary4h(Math.sqrt),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\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\n vec3f: unary3f(Math.sin),\n vec3h: unary3h(Math.sin),\n\n vec4f: unary4f(Math.sin),\n vec4h: unary4h(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\n vec3f: unary3f(Math.cos),\n vec3h: unary3h(Math.cos),\n\n vec4f: unary4f(Math.cos),\n vec4h: unary4h(Math.cos),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n cosh: {\n vec2f: unary2f(Math.cosh),\n vec2h: unary2h(Math.cosh),\n\n vec3f: unary3f(Math.cosh),\n vec3h: unary3h(Math.cosh),\n\n vec4f: unary4f(Math.cosh),\n vec4h: unary4h(Math.cosh),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n exp: {\n vec2f: unary2f(Math.exp),\n vec2h: unary2h(Math.exp),\n\n vec3f: unary3f(Math.exp),\n vec3h: unary3h(Math.exp),\n\n vec4f: unary4f(Math.exp),\n vec4h: unary4h(Math.exp),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n exp2: {\n vec2f: unary2f((val) => 2 ** val),\n vec2h: unary2h((val) => 2 ** val),\n\n vec3f: unary3f((val) => 2 ** val),\n vec3h: unary3h((val) => 2 ** val),\n\n vec4f: unary4f((val) => 2 ** val),\n vec4h: unary4h((val) => 2 ** val),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n log: {\n vec2f: unary2f(Math.log),\n vec2h: unary2h(Math.log),\n\n vec3f: unary3f(Math.log),\n vec3h: unary3h(Math.log),\n\n vec4f: unary4f(Math.log),\n vec4h: unary4h(Math.log),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n log2: {\n vec2f: unary2f(Math.log2),\n vec2h: unary2h(Math.log2),\n\n vec3f: unary3f(Math.log2),\n vec3h: unary3h(Math.log2),\n\n vec4f: unary4f(Math.log2),\n vec4h: unary4h(Math.log2),\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\n vec3f: unary3f((value) => value - Math.floor(value)),\n vec3h: unary3h((value) => value - Math.floor(value)),\n\n vec4f: unary4f((value) => value - Math.floor(value)),\n vec4h: unary4h((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 neg: {\n vec2f: unary2f((value) => -value),\n vec2h: unary2h((value) => -value),\n vec2i: unary2i((value) => -value),\n vec2u: unary2u((value) => -value),\n 'vec2<bool>': (e: wgsl.v2b) => vec2b(!e.x, !e.y),\n\n vec3f: unary3f((value) => -value),\n vec3h: unary3h((value) => -value),\n vec3i: unary3i((value) => -value),\n vec3u: unary3u((value) => -value),\n 'vec3<bool>': (e: wgsl.v3b) => vec3b(!e.x, !e.y, !e.z),\n\n vec4f: unary4f((value) => -value),\n vec4h: unary4h((value) => -value),\n vec4i: unary4i((value) => -value),\n vec4u: unary4u((value) => -value),\n 'vec4<bool>': (e: wgsl.v4b) => vec4b(!e.x, !e.y, !e.z, !e.w),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n select: {\n vec2f: (f: wgsl.v2f, t: wgsl.v2f, c: wgsl.v2b) =>\n vec2f(c.x ? t.x : f.x, c.y ? t.y : f.y),\n vec2h: (f: wgsl.v2h, t: wgsl.v2h, c: wgsl.v2b) =>\n vec2h(c.x ? t.x : f.x, c.y ? t.y : f.y),\n vec2i: (f: wgsl.v2i, t: wgsl.v2i, c: wgsl.v2b) =>\n vec2i(c.x ? t.x : f.x, c.y ? t.y : f.y),\n vec2u: (f: wgsl.v2u, t: wgsl.v2u, c: wgsl.v2b) =>\n vec2u(c.x ? t.x : f.x, c.y ? t.y : f.y),\n 'vec2<bool>': (f: wgsl.v2b, t: wgsl.v2b, c: wgsl.v2b) =>\n vec2b(c.x ? t.x : f.x, c.y ? t.y : f.y),\n\n vec3f: (f: wgsl.v3f, t: wgsl.v3f, c: wgsl.v3b) =>\n vec3f(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n vec3h: (f: wgsl.v3h, t: wgsl.v3h, c: wgsl.v3b) =>\n vec3h(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n vec3i: (f: wgsl.v3i, t: wgsl.v3i, c: wgsl.v3b) =>\n vec3i(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n vec3u: (f: wgsl.v3u, t: wgsl.v3u, c: wgsl.v3b) =>\n vec3u(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n 'vec3<bool>': (f: wgsl.v3b, t: wgsl.v3b, c: wgsl.v3b) =>\n vec3b(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n\n vec4f: (f: wgsl.v4f, t: wgsl.v4f, c: wgsl.v4b) =>\n vec4f(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n vec4h: (f: wgsl.v4h, t: wgsl.v4h, c: wgsl.v4b) =>\n vec4h(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n vec4i: (f: wgsl.v4i, t: wgsl.v4i, c: wgsl.v4b) =>\n vec4i(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n vec4u: (f: wgsl.v4u, t: wgsl.v4u, c: wgsl.v4b) =>\n vec4u(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n 'vec4<bool>': (f: wgsl.v4b, t: wgsl.v4b, c: wgsl.v4b) =>\n vec4b(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n } as Record<\n VecKind,\n <T extends wgsl.AnyVecInstance>(\n f: T,\n t: T,\n c: T extends wgsl.AnyVec2Instance ? wgsl.v2b\n : T extends wgsl.AnyVec3Instance ? wgsl.v3b\n : wgsl.v4b,\n ) => T\n >,\n\n tanh: {\n vec2f: unary2f(Math.tanh),\n vec2h: unary2h(Math.tanh),\n\n vec3f: unary3f(Math.tanh),\n vec3h: unary3h(Math.tanh),\n\n vec4f: unary4f(Math.tanh),\n vec4h: unary4h(Math.tanh),\n } as Record<VecKind, <T extends vBase>(v: T) => T>,\n};\n","import { type AnyData, snip, type Snippet } from '../data/dataTypes.ts';\nimport { f32 } from '../data/numeric.ts';\nimport { VectorOps } from '../data/vectorOps.ts';\nimport {\n type AbstractFloat,\n type AbstractInt,\n type AnyFloatVecInstance,\n type AnyMatInstance,\n type AnyNumericVecInstance,\n type F16,\n type F32,\n type I32,\n isFloat32VecInstance,\n isMatInstance,\n isVecInstance,\n type mBaseForVec,\n type U32,\n type v2f,\n type v2h,\n type v2i,\n type v3f,\n type v3h,\n type v3i,\n type v4f,\n type v4h,\n type v4i,\n type vBaseForMat,\n} from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\nimport { $internal } from '../shared/symbols.ts';\n\ntype NumVec = AnyNumericVecInstance;\ntype Mat = AnyMatInstance;\n\nexport function isSnippetNumeric(snippet: Snippet) {\n return isNumericSchema(snippet.dataType);\n}\n\nexport function isNumericSchema(\n schema: unknown,\n): schema is AbstractInt | AbstractFloat | F32 | F16 | I32 | U32 {\n const type = (schema as AnyData)?.type;\n\n return (\n !!(schema as AnyData)?.[$internal] &&\n (type === 'abstractInt' ||\n type === 'abstractFloat' ||\n type === 'f32' ||\n type === 'f16' ||\n type === 'i32' ||\n type === 'u32')\n );\n}\n\nfunction cpuAdd(lhs: number, rhs: number): number; // default addition\nfunction cpuAdd<T extends NumVec>(lhs: number, rhs: T): T; // mixed addition\nfunction cpuAdd<T extends NumVec>(lhs: T, rhs: number): T; // mixed addition\nfunction cpuAdd<T extends NumVec | Mat>(lhs: T, rhs: T): T; // component-wise addition\nfunction cpuAdd<\n // union overload\n Lhs extends number | NumVec | Mat,\n Rhs extends (Lhs extends number ? number | NumVec\n : Lhs extends NumVec ? number | Lhs\n : Lhs extends Mat ? Lhs\n : never),\n>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;\nfunction cpuAdd(lhs: number | NumVec | Mat, rhs: number | NumVec | Mat) {\n if (typeof lhs === 'number' && typeof rhs === 'number') {\n return lhs + rhs; // default addition\n }\n if (typeof lhs === 'number' && isVecInstance(rhs)) {\n return VectorOps.addMixed[rhs.kind](rhs, lhs); // mixed addition\n }\n if (isVecInstance(lhs) && typeof rhs === 'number') {\n return VectorOps.addMixed[lhs.kind](lhs, rhs); // mixed addition\n }\n if (\n (isVecInstance(lhs) && isVecInstance(rhs)) ||\n (isMatInstance(lhs) && isMatInstance(rhs))\n ) {\n return VectorOps.add[lhs.kind](lhs, rhs); // component-wise addition\n }\n\n throw new Error('Add/Sub called with invalid arguments.');\n}\n\nexport const add = createDualImpl(\n // CPU implementation\n cpuAdd,\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} + ${rhs.value})`,\n isSnippetNumeric(lhs) ? rhs.dataType : lhs.dataType,\n ),\n 'coerce',\n);\n\nfunction cpuSub(lhs: number, rhs: number): number; // default subtraction\nfunction cpuSub<T extends NumVec>(lhs: number, rhs: T): T; // mixed subtraction\nfunction cpuSub<T extends NumVec>(lhs: T, rhs: number): T; // mixed subtraction\nfunction cpuSub<T extends NumVec | Mat>(lhs: T, rhs: T): T; // component-wise subtraction\nfunction cpuSub<\n // union overload\n Lhs extends number | NumVec | Mat,\n Rhs extends (Lhs extends number ? number | NumVec\n : Lhs extends NumVec ? number | Lhs\n : Lhs extends Mat ? Lhs\n : never),\n>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;\nfunction cpuSub(lhs: number | NumVec | Mat, rhs: number | NumVec | Mat) {\n // while illegal on the wgsl side, we can do this in js\n return cpuAdd(lhs, mul(-1, rhs));\n}\n\nexport const sub = createDualImpl(\n // CPU implementation\n cpuSub,\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} - ${rhs.value})`,\n isSnippetNumeric(lhs) ? rhs.dataType : lhs.dataType,\n ),\n 'sub',\n 'coerce',\n);\n\nfunction cpuMul(lhs: number, rhs: number): number; // default multiplication\nfunction cpuMul<MV extends NumVec | Mat>(lhs: number, rhs: MV): MV; // scale\nfunction cpuMul<MV extends NumVec | Mat>(lhs: MV, rhs: number): MV; // scale\nfunction cpuMul<V extends NumVec>(lhs: V, rhs: V): V; // component-wise multiplication\nfunction cpuMul<M extends Mat, V extends vBaseForMat<M>>(lhs: V, rhs: M): V; // row-vector-matrix\nfunction cpuMul<M extends Mat, V extends vBaseForMat<M>>(lhs: M, rhs: V): V; // matrix-column-vector\nfunction cpuMul<M extends Mat>(lhs: M, rhs: M): M; // matrix multiplication\nfunction cpuMul<\n // union overload\n Lhs extends number | NumVec | Mat,\n Rhs extends (\n Lhs extends number ? number | NumVec | Mat\n : Lhs extends NumVec ? number | Lhs | mBaseForVec<Lhs>\n : Lhs extends Mat ? number | vBaseForMat<Lhs> | Lhs\n : never\n ),\n>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;\nfunction cpuMul(lhs: number | NumVec | Mat, rhs: number | NumVec | Mat) {\n if (typeof lhs === 'number' && typeof rhs === 'number') {\n return lhs * rhs; // default multiplication\n }\n if (typeof lhs === 'number' && (isVecInstance(rhs) || isMatInstance(rhs))) {\n return VectorOps.mulSxV[rhs.kind](lhs, rhs); // scale\n }\n if ((isVecInstance(lhs) || isMatInstance(lhs)) && typeof rhs === 'number') {\n return VectorOps.mulSxV[lhs.kind](rhs, lhs); // scale\n }\n if (isVecInstance(lhs) && isVecInstance(rhs)) {\n return VectorOps.mulVxV[lhs.kind](lhs, rhs); // component-wise\n }\n if (isFloat32VecInstance(lhs) && isMatInstance(rhs)) {\n return VectorOps.mulVxM[rhs.kind](lhs, rhs); // row-vector-matrix\n }\n if (isMatInstance(lhs) && isFloat32VecInstance(rhs)) {\n return VectorOps.mulMxV[lhs.kind](lhs, rhs); // matrix-column-vector\n }\n if (isMatInstance(lhs) && isMatInstance(rhs)) {\n return VectorOps.mulVxV[lhs.kind](lhs, rhs); // matrix multiplication\n }\n\n throw new Error('Mul called with invalid arguments.');\n}\n\nexport const mul = createDualImpl(\n // CPU implementation\n cpuMul,\n // GPU implementation\n (lhs, rhs) => {\n const returnType = isSnippetNumeric(lhs)\n // Scalar * Scalar/Vector/Matrix\n ? rhs.dataType\n : isSnippetNumeric(rhs)\n // Vector/Matrix * Scalar\n ? lhs.dataType\n : lhs.dataType.type.startsWith('vec')\n // Vector * Vector/Matrix\n ? lhs.dataType\n : rhs.dataType.type.startsWith('vec')\n // Matrix * Vector\n ? rhs.dataType\n // Matrix * Matrix\n : lhs.dataType;\n return snip(`(${lhs.value} * ${rhs.value})`, returnType);\n },\n 'mul',\n);\n\nfunction cpuDiv(lhs: number, rhs: number): number; // default js division\nfunction cpuDiv<MV extends NumVec>(lhs: number, rhs: MV): MV; // scale\nfunction cpuDiv<MV extends NumVec>(lhs: MV, rhs: number): MV; // scale\nfunction cpuDiv<V extends NumVec>(lhs: V, rhs: V): V; // component-wise division\nfunction cpuDiv<\n // union overload\n Lhs extends number | NumVec,\n Rhs extends (Lhs extends number ? number | NumVec\n : Lhs extends NumVec ? number | Lhs\n : never),\n>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;\nfunction cpuDiv(lhs: number | NumVec, rhs: number | NumVec) {\n if (typeof lhs === 'number' && typeof rhs === 'number') {\n return (lhs / rhs);\n }\n if (typeof lhs === 'number' && isVecInstance(rhs)) {\n return VectorOps.divMixed[rhs.kind](rhs, lhs);\n }\n if (isVecInstance(lhs) && typeof rhs === 'number') {\n return VectorOps.divMixed[lhs.kind](lhs, rhs);\n }\n if (isVecInstance(lhs) && isVecInstance(rhs)) {\n return VectorOps.div[lhs.kind](lhs, rhs);\n }\n\n throw new Error('Div called with invalid arguments.');\n}\n\nexport const div = createDualImpl(\n // CPU implementation\n cpuDiv,\n // GPU implementation\n (lhs, rhs) => {\n if (isSnippetNumeric(lhs) && isSnippetNumeric(rhs)) {\n return snip(`(f32(${lhs.value}) / ${rhs.value})`, f32);\n }\n return snip(`(${lhs.value} / ${rhs.value})`, lhs.dataType);\n },\n 'div',\n);\n\nexport const abs = createDualImpl(\n // CPU implementation\n <T extends NumVec | 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) => snip(`abs(${value.value})`, value.dataType),\n 'abs',\n);\n\nexport const atan2 = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | 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 AnyFloatVecInstance).kind](\n y as never,\n x as never,\n ) as T;\n },\n // GPU implementation\n (y, x) => snip(`atan2(${y.value}, ${x.value})`, y.dataType),\n 'atan2',\n);\n\nexport const acos = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.acos(value) as T;\n }\n return VectorOps.acos[value.kind](value) as T;\n },\n // GPU implementation\n (value) => snip(`acos(${value.value})`, value.dataType),\n 'acos',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#acosh-builtin\n */\nexport const acosh = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.acosh(value) as T;\n }\n return VectorOps.acosh[value.kind](value) as T;\n },\n // GPU implementation\n (value) => snip(`acosh(${value.value})`, value.dataType),\n 'acosh',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#asin-builtin\n */\nexport const asin = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.asin(value) as T;\n }\n return VectorOps.asin[value.kind](value) as T;\n },\n // GPU implementation\n (value) => snip(`asin(${value.value})`, value.dataType),\n 'asin',\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 AnyFloatVecInstance | 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) => snip(`ceil(${value.value})`, value.dataType),\n 'ceil',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#clamp\n */\nexport const clamp = createDualImpl(\n // CPU implementation\n <T extends NumVec | 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](\n value,\n low as NumVec,\n high as NumVec,\n ) as T;\n },\n // GPU implementation\n (value, low, high) =>\n snip(`clamp(${value.value}, ${low.value}, ${high.value})`, value.dataType),\n 'clamp',\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 AnyFloatVecInstance | 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) => snip(`cos(${value.value})`, value.dataType),\n 'cos',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#cosh-builtin\n */\nexport const cosh = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.cosh(value) as T;\n }\n return VectorOps.cosh[value.kind](value) as T;\n },\n // GPU implementation\n (value) => snip(`cosh(${value.value})`, value.dataType),\n 'cosh',\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 | v3h>(a: T, b: T): T => VectorOps.cross[a.kind](a, b),\n // GPU implementation\n (a, b) => snip(`cross(${a.value}, ${b.value})`, a.dataType),\n 'cross',\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 NumVec>(lhs: T, rhs: T): number =>\n VectorOps.dot[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) => snip(`dot(${lhs.value}, ${rhs.value})`, f32),\n 'dot',\n);\n\nexport const normalize = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance>(v: T): T => VectorOps.normalize[v.kind](v),\n // GPU implementation\n (v) => snip(`normalize(${v.value})`, v.dataType),\n 'normalize',\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 AnyFloatVecInstance | 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) => snip(`floor(${value.value})`, value.dataType),\n 'floor',\n);\n\nexport const fract = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | 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) => snip(`fract(${a.value})`, a.dataType),\n 'fract',\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 AnyFloatVecInstance | 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) => snip(`length(${value.value})`, f32),\n 'length',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#log-builtin\n */\nexport const log = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.log(value) as T;\n }\n return VectorOps.log[value.kind](value) as T;\n },\n // GPU implementation\n (value) => snip(`log(${value.value})`, value.dataType),\n 'log',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#log2-builtin\n */\nexport const log2 = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.log2(value) as T;\n }\n return VectorOps.log2[value.kind](value) as T;\n },\n // GPU implementation\n (value) => snip(`log2(${value.value})`, value.dataType),\n 'log2',\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 NumVec | 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 NumVec) as T;\n },\n // GPU implementation\n (a, b) => snip(`max(${a.value}, ${b.value})`, a.dataType),\n 'max',\n 'coerce',\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 NumVec | 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 NumVec) as T;\n },\n // GPU implementation\n (a, b) => snip(`min(${a.value}, ${b.value})`, a.dataType),\n 'min',\n 'coerce',\n);\n\nexport const sign = createDualImpl(\n // CPU implementation\n // \\/ specifically no unsigned variants\n <T extends v2f | v2h | v2i | v3f | v3h | v3i | v4f | v4h | v4i | number>(\n e: T,\n ): T => {\n if (typeof e === 'number') {\n return Math.sign(e) as T;\n }\n return VectorOps.sign[e.kind](e) as T;\n },\n // GPU implementation\n (e) => snip(`sign(${e.value})`, e.dataType),\n 'sign',\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 AnyFloatVecInstance | 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) => snip(`sin(${value.value})`, value.dataType),\n 'sin',\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 AnyFloatVecInstance | 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) => snip(`exp(${value.value})`, value.dataType),\n 'exp',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#exp2-builtin\n */\nexport const exp2 = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return (2 ** value) as T;\n }\n return VectorOps.exp2[value.kind](value) as T;\n },\n // GPU implementation\n (value) => snip(`exp2(${value.value})`, value.dataType),\n 'exp2',\n);\n\ntype PowOverload = {\n (base: number, exponent: number): number;\n <T extends AnyFloatVecInstance>(base: T, exponent: T): T;\n};\n\nexport const pow: PowOverload = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(base: T, exponent: T): 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 snip(`pow(${base.value}, ${exponent.value})`, base.dataType),\n 'pow',\n);\n\ntype MixOverload = {\n (e1: number, e2: number, e3: number): number;\n <T extends AnyFloatVecInstance>(e1: T, e2: T, e3: number): T;\n <T extends AnyFloatVecInstance>(e1: T, e2: T, e3: T): T;\n};\n\nexport const mix: MixOverload = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(e1: T, e2: T, e3: T | number): 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 snip(`mix(${e1.value}, ${e2.value}, ${e3.value})`, e1.dataType),\n 'mix',\n);\n\nexport const reflect = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance>(e1: T, e2: T): T =>\n sub(e1, mul(2 * dot(e2, e1), e2)),\n // GPU implementation\n (e1, e2) => snip(`reflect(${e1.value}, ${e2.value})`, e1.dataType),\n 'reflect',\n);\n\nexport const distance = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(a: T, b: T): number => {\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b);\n }\n return length(\n sub(a as AnyFloatVecInstance, b as AnyFloatVecInstance),\n ) as number;\n },\n // GPU implementation\n (a, b) => snip(`distance(${a.value}, ${b.value})`, f32),\n 'distance',\n);\n\nexport const neg = createDualImpl(\n // CPU implementation\n <T extends NumVec | number>(value: T): T => {\n if (typeof value === 'number') {\n return -value as T;\n }\n return VectorOps.neg[value.kind](value) as T;\n },\n // GPU implementation\n (value) => snip(`-(${value.value})`, value.dataType),\n 'neg',\n);\n\nexport const sqrt = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.sqrt(value) as T;\n }\n return VectorOps.sqrt[value.kind](value) as T;\n },\n // GPU implementation\n (value) => snip(`sqrt(${value.value})`, value.dataType),\n 'sqrt',\n);\n\nexport const tanh = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(value: T): T => {\n if (typeof value === 'number') {\n return Math.tanh(value) as T;\n }\n return VectorOps.tanh[value.kind](value) as T;\n },\n // GPU implementation\n (value) => snip(`tanh(${value.value})`, value.dataType),\n 'tanh',\n);\n"]}
@@ -0,0 +1,2 @@
1
+ import{Aa as q,B as i,Ba as C,Ca as g,F as V,J as xe,Ma as se,Na as te,Oa as ce,a as ye,da as a,ga as v,ma as H,oa as b,pa as I,qa as L,ra as _,sa as m,ta as h,ua as z,va as U,wa as W,xa as f,ya as M,za as B}from"./chunk-SWJVYRFM.js";var S=e=>Math.sqrt(e.x**2+e.y**2),D=e=>Math.sqrt(e.x**2+e.y**2+e.z**2),E=e=>Math.sqrt(e.x**2+e.y**2+e.z**2+e.w**2),ae=(e,n)=>e.x*n.x+e.y*n.y,re=(e,n)=>e.x*n.x+e.y*n.y+e.z*n.z,ve=(e,n)=>e.x*n.x+e.y*n.y+e.z*n.z+e.w*n.w,r=(e,n,s)=>Math.min(Math.max(n,e),s),u=e=>n=>b(e(n.x),e(n.y)),w=e=>n=>I(e(n.x),e(n.y)),R=e=>n=>L(e(n.x),e(n.y)),K=e=>n=>_(e(n.x),e(n.y)),y=e=>n=>h(e(n.x),e(n.y),e(n.z)),l=e=>n=>z(e(n.x),e(n.y),e(n.z)),$=e=>n=>U(e(n.x),e(n.y),e(n.z)),k=e=>n=>W(e(n.x),e(n.y),e(n.z)),x=e=>n=>M(e(n.x),e(n.y),e(n.z),e(n.w)),o=e=>n=>B(e(n.x),e(n.y),e(n.z),e(n.w)),N=e=>n=>q(e(n.x),e(n.y),e(n.z),e(n.w)),O=e=>n=>C(e(n.x),e(n.y),e(n.z),e(n.w)),ue=e=>n=>{let s=n.columns;return se(u(e)(s[0]),u(e)(s[1]))},we=e=>n=>{let s=n.columns;return te(y(e)(s[0]),y(e)(s[1]),y(e)(s[2]))},le=e=>n=>{let s=n.columns;return ce(x(e)(s[0]),x(e)(s[1]),x(e)(s[2]),x(e)(s[3]))},F=e=>(n,s)=>b(e(n.x,s.x),e(n.y,s.y)),j=e=>(n,s)=>I(e(n.x,s.x),e(n.y,s.y)),J=e=>(n,s)=>L(e(n.x,s.x),e(n.y,s.y)),Q=e=>(n,s)=>_(e(n.x,s.x),e(n.y,s.y)),A=e=>(n,s)=>h(e(n.x,s.x),e(n.y,s.y),e(n.z,s.z)),P=e=>(n,s)=>z(e(n.x,s.x),e(n.y,s.y),e(n.z,s.z)),X=e=>(n,s)=>U(e(n.x,s.x),e(n.y,s.y),e(n.z,s.z)),Y=e=>(n,s)=>W(e(n.x,s.x),e(n.y,s.y),e(n.z,s.z)),p=e=>(n,s)=>M(e(n.x,s.x),e(n.y,s.y),e(n.z,s.z),e(n.w,s.w)),Z=e=>(n,s)=>B(e(n.x,s.x),e(n.y,s.y),e(n.z,s.z),e(n.w,s.w)),ee=e=>(n,s)=>q(e(n.x,s.x),e(n.y,s.y),e(n.z,s.z),e(n.w,s.w)),ne=e=>(n,s)=>C(e(n.x,s.x),e(n.y,s.y),e(n.z,s.z),e(n.w,s.w)),fe=e=>(n,s)=>{let t=n.columns,T=s.columns;return se(F(e)(t[0],T[0]),F(e)(t[1],T[1]))},ge=e=>(n,s)=>{let t=n.columns,T=s.columns;return te(A(e)(t[0],T[0]),A(e)(t[1],T[1]),A(e)(t[2],T[2]))},he=e=>(n,s)=>{let t=n.columns,T=s.columns;return ce(p(e)(t[0],T[0]),p(e)(t[1],T[1]),p(e)(t[2],T[2]),p(e)(t[3],T[3]))},d={divInteger:(e,n)=>n===0?e:Math.trunc(e/n)},c={eq:{vec2f:(e,n)=>m(e.x===n.x,e.y===n.y),vec2h:(e,n)=>m(e.x===n.x,e.y===n.y),vec2i:(e,n)=>m(e.x===n.x,e.y===n.y),vec2u:(e,n)=>m(e.x===n.x,e.y===n.y),"vec2<bool>":(e,n)=>m(e.x===n.x,e.y===n.y),vec3f:(e,n)=>f(e.x===n.x,e.y===n.y,e.z===n.z),vec3h:(e,n)=>f(e.x===n.x,e.y===n.y,e.z===n.z),vec3i:(e,n)=>f(e.x===n.x,e.y===n.y,e.z===n.z),vec3u:(e,n)=>f(e.x===n.x,e.y===n.y,e.z===n.z),"vec3<bool>":(e,n)=>f(e.x===n.x,e.y===n.y,e.z===n.z),vec4f:(e,n)=>g(e.x===n.x,e.y===n.y,e.z===n.z,e.w===n.w),vec4h:(e,n)=>g(e.x===n.x,e.y===n.y,e.z===n.z,e.w===n.w),vec4i:(e,n)=>g(e.x===n.x,e.y===n.y,e.z===n.z,e.w===n.w),vec4u:(e,n)=>g(e.x===n.x,e.y===n.y,e.z===n.z,e.w===n.w),"vec4<bool>":(e,n)=>g(e.x===n.x,e.y===n.y,e.z===n.z,e.w===n.w)},lt:{vec2f:(e,n)=>m(e.x<n.x,e.y<n.y),vec2h:(e,n)=>m(e.x<n.x,e.y<n.y),vec2i:(e,n)=>m(e.x<n.x,e.y<n.y),vec2u:(e,n)=>m(e.x<n.x,e.y<n.y),vec3f:(e,n)=>f(e.x<n.x,e.y<n.y,e.z<n.z),vec3h:(e,n)=>f(e.x<n.x,e.y<n.y,e.z<n.z),vec3i:(e,n)=>f(e.x<n.x,e.y<n.y,e.z<n.z),vec3u:(e,n)=>f(e.x<n.x,e.y<n.y,e.z<n.z),vec4f:(e,n)=>g(e.x<n.x,e.y<n.y,e.z<n.z,e.w<n.w),vec4h:(e,n)=>g(e.x<n.x,e.y<n.y,e.z<n.z,e.w<n.w),vec4i:(e,n)=>g(e.x<n.x,e.y<n.y,e.z<n.z,e.w<n.w),vec4u:(e,n)=>g(e.x<n.x,e.y<n.y,e.z<n.z,e.w<n.w)},or:{"vec2<bool>":(e,n)=>m(e.x||n.x,e.y||n.y),"vec3<bool>":(e,n)=>f(e.x||n.x,e.y||n.y,e.z||n.z),"vec4<bool>":(e,n)=>g(e.x||n.x,e.y||n.y,e.z||n.z,e.w||n.w)},all:{"vec2<bool>":e=>e.x&&e.y,"vec3<bool>":e=>e.x&&e.y&&e.z,"vec4<bool>":e=>e.x&&e.y&&e.z&&e.w},abs:{vec2f:u(Math.abs),vec2h:w(Math.abs),vec2i:R(Math.abs),vec2u:K(Math.abs),vec3f:y(Math.abs),vec3h:l(Math.abs),vec3i:$(Math.abs),vec3u:k(Math.abs),vec4f:x(Math.abs),vec4h:o(Math.abs),vec4i:N(Math.abs),vec4u:O(Math.abs)},atan2:{vec2f:F(Math.atan2),vec2h:j(Math.atan2),vec3f:A(Math.atan2),vec3h:P(Math.atan2),vec4f:p(Math.atan2),vec4h:Z(Math.atan2)},acos:{vec2f:u(Math.acos),vec2h:w(Math.acos),vec2i:R(Math.acos),vec2u:K(Math.acos),vec3f:y(Math.acos),vec3h:l(Math.acos),vec3i:$(Math.acos),vec3u:k(Math.acos),vec4f:x(Math.acos),vec4h:o(Math.acos),vec4i:N(Math.acos),vec4u:O(Math.acos)},acosh:{vec2f:u(Math.acosh),vec2h:w(Math.acosh),vec3f:y(Math.acosh),vec3h:l(Math.acosh),vec4f:x(Math.acosh),vec4h:o(Math.acosh)},asin:{vec2f:u(Math.asin),vec2h:w(Math.asin),vec2i:R(Math.asin),vec2u:K(Math.asin),vec3f:y(Math.asin),vec3h:l(Math.asin),vec3i:$(Math.asin),vec3u:k(Math.asin),vec4f:x(Math.asin),vec4h:o(Math.asin),vec4i:N(Math.asin),vec4u:O(Math.asin)},ceil:{vec2f:u(Math.ceil),vec2h:w(Math.ceil),vec3f:y(Math.ceil),vec3h:l(Math.ceil),vec4f:x(Math.ceil),vec4h:o(Math.ceil)},clamp:{vec2f:(e,n,s)=>b(r(e.x,n.x,s.x),r(e.y,n.y,s.y)),vec2h:(e,n,s)=>I(r(e.x,n.x,s.x),r(e.y,n.y,s.y)),vec2i:(e,n,s)=>L(r(e.x,n.x,s.x),r(e.y,n.y,s.y)),vec2u:(e,n,s)=>_(r(e.x,n.x,s.x),r(e.y,n.y,s.y)),vec3f:(e,n,s)=>h(r(e.x,n.x,s.x),r(e.y,n.y,s.y),r(e.z,n.z,s.z)),vec3h:(e,n,s)=>z(r(e.x,n.x,s.x),r(e.y,n.y,s.y),r(e.z,n.z,s.z)),vec3i:(e,n,s)=>U(r(e.x,n.x,s.x),r(e.y,n.y,s.y),r(e.z,n.z,s.z)),vec3u:(e,n,s)=>W(r(e.x,n.x,s.x),r(e.y,n.y,s.y),r(e.z,n.z,s.z)),vec4f:(e,n,s)=>M(r(e.x,n.x,s.x),r(e.y,n.y,s.y),r(e.z,n.z,s.z),r(e.w,n.w,s.w)),vec4h:(e,n,s)=>B(r(e.x,n.x,s.x),r(e.y,n.y,s.y),r(e.z,n.z,s.z),r(e.w,n.w,s.w)),vec4i:(e,n,s)=>q(r(e.x,n.x,s.x),r(e.y,n.y,s.y),r(e.z,n.z,s.z),r(e.w,n.w,s.w)),vec4u:(e,n,s)=>C(r(e.x,n.x,s.x),r(e.y,n.y,s.y),r(e.z,n.z,s.z),r(e.w,n.w,s.w))},length:{vec2f:S,vec2h:S,vec3f:D,vec3h:D,vec4f:E,vec4h:E},add:{vec2f:F((e,n)=>e+n),vec2h:j((e,n)=>e+n),vec2i:J((e,n)=>e+n),vec2u:Q((e,n)=>e+n),vec3f:A((e,n)=>e+n),vec3h:P((e,n)=>e+n),vec3i:X((e,n)=>e+n),vec3u:Y((e,n)=>e+n),vec4f:p((e,n)=>e+n),vec4h:Z((e,n)=>e+n),vec4i:ee((e,n)=>e+n),vec4u:ne((e,n)=>e+n),mat2x2f:fe((e,n)=>e+n),mat3x3f:ge((e,n)=>e+n),mat4x4f:he((e,n)=>e+n)},addMixed:{vec2f:(e,n)=>u(s=>s+n)(e),vec2h:(e,n)=>w(s=>s+n)(e),vec2i:(e,n)=>R(s=>s+n)(e),vec2u:(e,n)=>K(s=>s+n)(e),vec3f:(e,n)=>y(s=>s+n)(e),vec3h:(e,n)=>l(s=>s+n)(e),vec3i:(e,n)=>$(s=>s+n)(e),vec3u:(e,n)=>k(s=>s+n)(e),vec4f:(e,n)=>x(s=>s+n)(e),vec4h:(e,n)=>o(s=>s+n)(e),vec4i:(e,n)=>N(s=>s+n)(e),vec4u:(e,n)=>O(s=>s+n)(e),mat2x2f:(e,n)=>ue(s=>s+n)(e),mat3x3f:(e,n)=>we(s=>s+n)(e),mat4x4f:(e,n)=>le(s=>s+n)(e)},mulSxV:{vec2f:(e,n)=>u(s=>e*s)(n),vec2h:(e,n)=>w(s=>e*s)(n),vec2i:(e,n)=>R(s=>e*s)(n),vec2u:(e,n)=>K(s=>e*s)(n),vec3f:(e,n)=>y(s=>e*s)(n),vec3h:(e,n)=>l(s=>e*s)(n),vec3i:(e,n)=>$(s=>e*s)(n),vec3u:(e,n)=>k(s=>e*s)(n),vec4f:(e,n)=>x(s=>e*s)(n),vec4h:(e,n)=>o(s=>e*s)(n),vec4i:(e,n)=>N(s=>e*s)(n),vec4u:(e,n)=>O(s=>e*s)(n),mat2x2f:(e,n)=>ue(s=>e*s)(n),mat3x3f:(e,n)=>we(s=>e*s)(n),mat4x4f:(e,n)=>le(s=>e*s)(n)},mulVxV:{vec2f:F((e,n)=>e*n),vec2h:j((e,n)=>e*n),vec2i:J((e,n)=>e*n),vec2u:Q((e,n)=>e*n),vec3f:A((e,n)=>e*n),vec3h:P((e,n)=>e*n),vec3i:X((e,n)=>e*n),vec3u:Y((e,n)=>e*n),vec4f:p((e,n)=>e*n),vec4h:Z((e,n)=>e*n),vec4i:ee((e,n)=>e*n),vec4u:ne((e,n)=>e*n),mat2x2f:(e,n)=>{let s=e.columns,t=n.columns;return se(s[0].x*t[0].x+s[1].x*t[0].y,s[0].y*t[0].x+s[1].y*t[0].y,s[0].x*t[1].x+s[1].x*t[1].y,s[0].y*t[1].x+s[1].y*t[1].y)},mat3x3f:(e,n)=>{let s=e.columns,t=n.columns;return te(s[0].x*t[0].x+s[1].x*t[0].y+s[2].x*t[0].z,s[0].y*t[0].x+s[1].y*t[0].y+s[2].y*t[0].z,s[0].z*t[0].x+s[1].z*t[0].y+s[2].z*t[0].z,s[0].x*t[1].x+s[1].x*t[1].y+s[2].x*t[1].z,s[0].y*t[1].x+s[1].y*t[1].y+s[2].y*t[1].z,s[0].z*t[1].x+s[1].z*t[1].y+s[2].z*t[1].z,s[0].x*t[2].x+s[1].x*t[2].y+s[2].x*t[2].z,s[0].y*t[2].x+s[1].y*t[2].y+s[2].y*t[2].z,s[0].z*t[2].x+s[1].z*t[2].y+s[2].z*t[2].z)},mat4x4f:(e,n)=>{let s=e.columns,t=n.columns;return ce(s[0].x*t[0].x+s[1].x*t[0].y+s[2].x*t[0].z+s[3].x*t[0].w,s[0].y*t[0].x+s[1].y*t[0].y+s[2].y*t[0].z+s[3].y*t[0].w,s[0].z*t[0].x+s[1].z*t[0].y+s[2].z*t[0].z+s[3].z*t[0].w,s[0].w*t[0].x+s[1].w*t[0].y+s[2].w*t[0].z+s[3].w*t[0].w,s[0].x*t[1].x+s[1].x*t[1].y+s[2].x*t[1].z+s[3].x*t[1].w,s[0].y*t[1].x+s[1].y*t[1].y+s[2].y*t[1].z+s[3].y*t[1].w,s[0].z*t[1].x+s[1].z*t[1].y+s[2].z*t[1].z+s[3].z*t[1].w,s[0].w*t[1].x+s[1].w*t[1].y+s[2].w*t[1].z+s[3].w*t[1].w,s[0].x*t[2].x+s[1].x*t[2].y+s[2].x*t[2].z+s[3].x*t[2].w,s[0].y*t[2].x+s[1].y*t[2].y+s[2].y*t[2].z+s[3].y*t[2].w,s[0].z*t[2].x+s[1].z*t[2].y+s[2].z*t[2].z+s[3].z*t[2].w,s[0].w*t[2].x+s[1].w*t[2].y+s[2].w*t[2].z+s[3].w*t[2].w,s[0].x*t[3].x+s[1].x*t[3].y+s[2].x*t[3].z+s[3].x*t[3].w,s[0].y*t[3].x+s[1].y*t[3].y+s[2].y*t[3].z+s[3].y*t[3].w,s[0].z*t[3].x+s[1].z*t[3].y+s[2].z*t[3].z+s[3].z*t[3].w,s[0].w*t[3].x+s[1].w*t[3].y+s[2].w*t[3].z+s[3].w*t[3].w)}},mulMxV:{mat2x2f:(e,n)=>{let s=e.columns;return b(s[0].x*n.x+s[1].x*n.y,s[0].y*n.x+s[1].y*n.y)},mat3x3f:(e,n)=>{let s=e.columns;return h(s[0].x*n.x+s[1].x*n.y+s[2].x*n.z,s[0].y*n.x+s[1].y*n.y+s[2].y*n.z,s[0].z*n.x+s[1].z*n.y+s[2].z*n.z)},mat4x4f:(e,n)=>{let s=e.columns;return M(s[0].x*n.x+s[1].x*n.y+s[2].x*n.z+s[3].x*n.w,s[0].y*n.x+s[1].y*n.y+s[2].y*n.z+s[3].y*n.w,s[0].z*n.x+s[1].z*n.y+s[2].z*n.z+s[3].z*n.w,s[0].w*n.x+s[1].w*n.y+s[2].w*n.z+s[3].w*n.w)}},mulVxM:{mat2x2f:(e,n)=>{let s=n.columns;return b(e.x*s[0].x+e.y*s[0].y,e.x*s[1].x+e.y*s[1].y)},mat3x3f:(e,n)=>{let s=n.columns;return h(e.x*s[0].x+e.y*s[0].y+e.z*s[0].z,e.x*s[1].x+e.y*s[1].y+e.z*s[1].z,e.x*s[2].x+e.y*s[2].y+e.z*s[2].z)},mat4x4f:(e,n)=>{let s=n.columns;return M(e.x*s[0].x+e.y*s[0].y+e.z*s[0].z+e.w*s[0].w,e.x*s[1].x+e.y*s[1].y+e.z*s[1].z+e.w*s[1].w,e.x*s[2].x+e.y*s[2].y+e.z*s[2].z+e.w*s[2].w,e.x*s[3].x+e.y*s[3].y+e.z*s[3].z+e.w*s[3].w)}},div:{vec2f:F((e,n)=>e/n),vec2h:j((e,n)=>e/n),vec2i:J(d.divInteger),vec2u:Q(d.divInteger),vec3f:A((e,n)=>e/n),vec3h:P((e,n)=>e/n),vec3i:X(d.divInteger),vec3u:Y(d.divInteger),vec4f:p((e,n)=>e/n),vec4h:Z((e,n)=>e/n),vec4i:ee(d.divInteger),vec4u:ne(d.divInteger)},divMixed:{vec2f:(e,n)=>u(s=>s/n)(e),vec2h:(e,n)=>w(s=>s/n)(e),vec2i:(e,n)=>R(s=>d.divInteger(s,n))(e),vec2u:(e,n)=>K(s=>d.divInteger(s,n))(e),vec3f:(e,n)=>y(s=>s/n)(e),vec3h:(e,n)=>l(s=>s/n)(e),vec3i:(e,n)=>$(s=>d.divInteger(s,n))(e),vec3u:(e,n)=>k(s=>d.divInteger(s,n))(e),vec4f:(e,n)=>x(s=>s/n)(e),vec4h:(e,n)=>o(s=>s/n)(e),vec4i:(e,n)=>N(s=>d.divInteger(s,n))(e),vec4u:(e,n)=>O(s=>d.divInteger(s,n))(e)},dot:{vec2f:ae,vec2h:ae,vec2i:ae,vec2u:ae,vec3f:re,vec3h:re,vec3i:re,vec3u:re,vec4f:ve,vec4h:ve,vec4i:ve,vec4u:ve},normalize:{vec2f:e=>{let n=S(e);return b(e.x/n,e.y/n)},vec2h:e=>{let n=S(e);return I(e.x/n,e.y/n)},vec2i:e=>{let n=S(e);return L(e.x/n,e.y/n)},vec2u:e=>{let n=S(e);return _(e.x/n,e.y/n)},vec3f:e=>{let n=D(e);return h(e.x/n,e.y/n,e.z/n)},vec3h:e=>{let n=D(e);return z(e.x/n,e.y/n,e.z/n)},vec3i:e=>{let n=D(e);return U(e.x/n,e.y/n,e.z/n)},vec3u:e=>{let n=D(e);return W(e.x/n,e.y/n,e.z/n)},vec4f:e=>{let n=E(e);return M(e.x/n,e.y/n,e.z/n,e.w/n)},vec4h:e=>{let n=E(e);return B(e.x/n,e.y/n,e.z/n,e.w/n)},vec4i:e=>{let n=E(e);return q(e.x/n,e.y/n,e.z/n,e.w/n)},vec4u:e=>{let n=E(e);return C(e.x/n,e.y/n,e.z/n,e.w/n)}},cross:{vec3f:(e,n)=>h(e.y*n.z-e.z*n.y,e.z*n.x-e.x*n.z,e.x*n.y-e.y*n.x),vec3h:(e,n)=>z(e.y*n.z-e.z*n.y,e.z*n.x-e.x*n.z,e.x*n.y-e.y*n.x)},floor:{vec2f:u(Math.floor),vec2h:w(Math.floor),vec3f:y(Math.floor),vec3h:l(Math.floor),vec4f:x(Math.floor),vec4h:o(Math.floor)},max:{vec2f:F(Math.max),vec2h:j(Math.max),vec2i:J(Math.max),vec2u:Q(Math.max),vec3f:A(Math.max),vec3h:P(Math.max),vec3i:X(Math.max),vec3u:Y(Math.max),vec4f:p(Math.max),vec4h:Z(Math.max),vec4i:ee(Math.max),vec4u:ne(Math.max)},min:{vec2f:F(Math.min),vec2h:j(Math.min),vec2i:J(Math.min),vec2u:Q(Math.min),vec3f:A(Math.min),vec3h:P(Math.min),vec3i:X(Math.min),vec3u:Y(Math.min),vec4f:p(Math.min),vec4h:Z(Math.min),vec4i:ee(Math.min),vec4u:ne(Math.min)},pow:{vec2f:(e,n)=>b(e.x**n.x,e.y**n.y),vec2h:(e,n)=>I(e.x**n.x,e.y**n.y),vec3f:(e,n)=>h(e.x**n.x,e.y**n.y,e.z**n.z),vec3h:(e,n)=>z(e.x**n.x,e.y**n.y,e.z**n.z),vec4f:(e,n)=>M(e.x**n.x,e.y**n.y,e.z**n.z,e.w**n.w),vec4h:(e,n)=>B(e.x**n.x,e.y**n.y,e.z**n.z,e.w**n.w)},sign:{vec2f:u(Math.sign),vec2h:w(Math.sign),vec2i:R(Math.sign),vec3f:y(Math.sign),vec3h:l(Math.sign),vec3i:$(Math.sign),vec4f:x(Math.sign),vec4h:o(Math.sign),vec4i:N(Math.sign)},sqrt:{vec2f:u(Math.sqrt),vec2h:w(Math.sqrt),vec3f:y(Math.sqrt),vec3h:l(Math.sqrt),vec4f:x(Math.sqrt),vec4h:o(Math.sqrt)},mix:{vec2f:(e,n,s)=>typeof s=="number"?b(e.x*(1-s)+n.x*s,e.y*(1-s)+n.y*s):b(e.x*(1-s.x)+n.x*s.x,e.y*(1-s.y)+n.y*s.y),vec2h:(e,n,s)=>typeof s=="number"?I(e.x*(1-s)+n.x*s,e.y*(1-s)+n.y*s):I(e.x*(1-s.x)+n.x*s.x,e.y*(1-s.y)+n.y*s.y),vec3f:(e,n,s)=>typeof s=="number"?h(e.x*(1-s)+n.x*s,e.y*(1-s)+n.y*s,e.z*(1-s)+n.z*s):h(e.x*(1-s.x)+n.x*s.x,e.y*(1-s.y)+n.y*s.y,e.z*(1-s.z)+n.z*s.z),vec3h:(e,n,s)=>typeof s=="number"?z(e.x*(1-s)+n.x*s,e.y*(1-s)+n.y*s,e.z*(1-s)+n.z*s):z(e.x*(1-s.x)+n.x*s.x,e.y*(1-s.y)+n.y*s.y,e.z*(1-s.z)+n.z*s.z),vec4f:(e,n,s)=>typeof s=="number"?M(e.x*(1-s)+n.x*s,e.y*(1-s)+n.y*s,e.z*(1-s)+n.z*s,e.w*(1-s)+n.w*s):M(e.x*(1-s.x)+n.x*s.x,e.y*(1-s.y)+n.y*s.y,e.z*(1-s.z)+n.z*s.z,e.w*(1-s.w)+n.w*s.w),vec4h:(e,n,s)=>typeof s=="number"?B(e.x*(1-s)+n.x*s,e.y*(1-s)+n.y*s,e.z*(1-s)+n.z*s,e.w*(1-s)+n.w*s):B(e.x*(1-s.x)+n.x*s.x,e.y*(1-s.y)+n.y*s.y,e.z*(1-s.z)+n.z*s.z,e.w*(1-s.w)+n.w*s.w)},sin:{vec2f:u(Math.sin),vec2h:w(Math.sin),vec3f:y(Math.sin),vec3h:l(Math.sin),vec4f:x(Math.sin),vec4h:o(Math.sin)},cos:{vec2f:u(Math.cos),vec2h:w(Math.cos),vec3f:y(Math.cos),vec3h:l(Math.cos),vec4f:x(Math.cos),vec4h:o(Math.cos)},cosh:{vec2f:u(Math.cosh),vec2h:w(Math.cosh),vec3f:y(Math.cosh),vec3h:l(Math.cosh),vec4f:x(Math.cosh),vec4h:o(Math.cosh)},exp:{vec2f:u(Math.exp),vec2h:w(Math.exp),vec3f:y(Math.exp),vec3h:l(Math.exp),vec4f:x(Math.exp),vec4h:o(Math.exp)},exp2:{vec2f:u(e=>2**e),vec2h:w(e=>2**e),vec3f:y(e=>2**e),vec3h:l(e=>2**e),vec4f:x(e=>2**e),vec4h:o(e=>2**e)},log:{vec2f:u(Math.log),vec2h:w(Math.log),vec3f:y(Math.log),vec3h:l(Math.log),vec4f:x(Math.log),vec4h:o(Math.log)},log2:{vec2f:u(Math.log2),vec2h:w(Math.log2),vec3f:y(Math.log2),vec3h:l(Math.log2),vec4f:x(Math.log2),vec4h:o(Math.log2)},fract:{vec2f:u(e=>e-Math.floor(e)),vec2h:w(e=>e-Math.floor(e)),vec3f:y(e=>e-Math.floor(e)),vec3h:l(e=>e-Math.floor(e)),vec4f:x(e=>e-Math.floor(e)),vec4h:o(e=>e-Math.floor(e))},isCloseToZero:{vec2f:(e,n)=>Math.abs(e.x)<=n&&Math.abs(e.y)<=n,vec2h:(e,n)=>Math.abs(e.x)<=n&&Math.abs(e.y)<=n,vec3f:(e,n)=>Math.abs(e.x)<=n&&Math.abs(e.y)<=n&&Math.abs(e.z)<=n,vec3h:(e,n)=>Math.abs(e.x)<=n&&Math.abs(e.y)<=n&&Math.abs(e.z)<=n,vec4f:(e,n)=>Math.abs(e.x)<=n&&Math.abs(e.y)<=n&&Math.abs(e.z)<=n&&Math.abs(e.w)<=n,vec4h:(e,n)=>Math.abs(e.x)<=n&&Math.abs(e.y)<=n&&Math.abs(e.z)<=n&&Math.abs(e.w)<=n},neg:{vec2f:u(e=>-e),vec2h:w(e=>-e),vec2i:R(e=>-e),vec2u:K(e=>-e),"vec2<bool>":e=>m(!e.x,!e.y),vec3f:y(e=>-e),vec3h:l(e=>-e),vec3i:$(e=>-e),vec3u:k(e=>-e),"vec3<bool>":e=>f(!e.x,!e.y,!e.z),vec4f:x(e=>-e),vec4h:o(e=>-e),vec4i:N(e=>-e),vec4u:O(e=>-e),"vec4<bool>":e=>g(!e.x,!e.y,!e.z,!e.w)},select:{vec2f:(e,n,s)=>b(s.x?n.x:e.x,s.y?n.y:e.y),vec2h:(e,n,s)=>I(s.x?n.x:e.x,s.y?n.y:e.y),vec2i:(e,n,s)=>L(s.x?n.x:e.x,s.y?n.y:e.y),vec2u:(e,n,s)=>_(s.x?n.x:e.x,s.y?n.y:e.y),"vec2<bool>":(e,n,s)=>m(s.x?n.x:e.x,s.y?n.y:e.y),vec3f:(e,n,s)=>h(s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z),vec3h:(e,n,s)=>z(s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z),vec3i:(e,n,s)=>U(s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z),vec3u:(e,n,s)=>W(s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z),"vec3<bool>":(e,n,s)=>f(s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z),vec4f:(e,n,s)=>M(s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z,s.w?n.w:e.w),vec4h:(e,n,s)=>B(s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z,s.w?n.w:e.w),vec4i:(e,n,s)=>q(s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z,s.w?n.w:e.w),vec4u:(e,n,s)=>C(s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z,s.w?n.w:e.w),"vec4<bool>":(e,n,s)=>g(s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z,s.w?n.w:e.w)},tanh:{vec2f:u(Math.tanh),vec2h:w(Math.tanh),vec3f:y(Math.tanh),vec3h:l(Math.tanh),vec4f:x(Math.tanh),vec4h:o(Math.tanh)}};function G(e){return de(e.dataType)}function de(e){let n=e?.type;return!!e?.[ye]&&(n==="abstractInt"||n==="abstractFloat"||n==="f32"||n==="f16"||n==="i32"||n==="u32")}function oe(e,n){if(typeof e=="number"&&typeof n=="number")return e+n;if(typeof e=="number"&&i(n))return c.addMixed[n.kind](n,e);if(i(e)&&typeof n=="number")return c.addMixed[e.kind](e,n);if(i(e)&&i(n)||V(e)&&V(n))return c.add[e.kind](e,n);throw new Error("Add/Sub called with invalid arguments.")}var ke=v(oe,(e,n)=>a(`(${e.value} + ${n.value})`,G(e)?n.dataType:e.dataType),"coerce");function Te(e,n){return oe(e,me(-1,n))}var ie=v(Te,(e,n)=>a(`(${e.value} - ${n.value})`,G(e)?n.dataType:e.dataType),"sub","coerce");function be(e,n){if(typeof e=="number"&&typeof n=="number")return e*n;if(typeof e=="number"&&(i(n)||V(n)))return c.mulSxV[n.kind](e,n);if((i(e)||V(e))&&typeof n=="number")return c.mulSxV[e.kind](n,e);if(i(e)&&i(n))return c.mulVxV[e.kind](e,n);if(xe(e)&&V(n))return c.mulVxM[n.kind](e,n);if(V(e)&&xe(n))return c.mulMxV[e.kind](e,n);if(V(e)&&V(n))return c.mulVxV[e.kind](e,n);throw new Error("Mul called with invalid arguments.")}var me=v(be,(e,n)=>{let s=G(e)?n.dataType:G(n)||e.dataType.type.startsWith("vec")?e.dataType:n.dataType.type.startsWith("vec")?n.dataType:e.dataType;return a(`(${e.value} * ${n.value})`,s)},"mul");function Me(e,n){if(typeof e=="number"&&typeof n=="number")return e/n;if(typeof e=="number"&&i(n))return c.divMixed[n.kind](n,e);if(i(e)&&typeof n=="number")return c.divMixed[e.kind](e,n);if(i(e)&&i(n))return c.div[e.kind](e,n);throw new Error("Div called with invalid arguments.")}var Oe=v(Me,(e,n)=>G(e)&&G(n)?a(`(f32(${e.value}) / ${n.value})`,H):a(`(${e.value} / ${n.value})`,e.dataType),"div"),Le=v(e=>typeof e=="number"?Math.abs(e):c.abs[e.kind](e),e=>a(`abs(${e.value})`,e.dataType),"abs"),_e=v((e,n)=>typeof e=="number"&&typeof n=="number"?Math.atan2(e,n):c.atan2[e.kind](e,n),(e,n)=>a(`atan2(${e.value}, ${n.value})`,e.dataType),"atan2"),Ue=v(e=>typeof e=="number"?Math.acos(e):c.acos[e.kind](e),e=>a(`acos(${e.value})`,e.dataType),"acos"),We=v(e=>typeof e=="number"?Math.acosh(e):c.acosh[e.kind](e),e=>a(`acosh(${e.value})`,e.dataType),"acosh"),qe=v(e=>typeof e=="number"?Math.asin(e):c.asin[e.kind](e),e=>a(`asin(${e.value})`,e.dataType),"asin"),Ce=v(e=>typeof e=="number"?Math.ceil(e):c.ceil[e.kind](e),e=>a(`ceil(${e.value})`,e.dataType),"ceil"),Se=v((e,n,s)=>typeof e=="number"?Math.min(Math.max(n,e),s):c.clamp[e.kind](e,n,s),(e,n,s)=>a(`clamp(${e.value}, ${n.value}, ${s.value})`,e.dataType),"clamp"),De=v(e=>typeof e=="number"?Math.cos(e):c.cos[e.kind](e),e=>a(`cos(${e.value})`,e.dataType),"cos"),Ee=v(e=>typeof e=="number"?Math.cosh(e):c.cosh[e.kind](e),e=>a(`cosh(${e.value})`,e.dataType),"cosh"),je=v((e,n)=>c.cross[e.kind](e,n),(e,n)=>a(`cross(${e.value}, ${n.value})`,e.dataType),"cross"),ze=v((e,n)=>c.dot[e.kind](e,n),(e,n)=>a(`dot(${e.value}, ${n.value})`,H),"dot"),Pe=v(e=>c.normalize[e.kind](e),e=>a(`normalize(${e.value})`,e.dataType),"normalize"),Ze=v(e=>typeof e=="number"?Math.floor(e):c.floor[e.kind](e),e=>a(`floor(${e.value})`,e.dataType),"floor"),Ge=v(e=>typeof e=="number"?e-Math.floor(e):c.fract[e.kind](e),e=>a(`fract(${e.value})`,e.dataType),"fract"),pe=v(e=>typeof e=="number"?Math.abs(e):c.length[e.kind](e),e=>a(`length(${e.value})`,H),"length"),He=v(e=>typeof e=="number"?Math.log(e):c.log[e.kind](e),e=>a(`log(${e.value})`,e.dataType),"log"),Je=v(e=>typeof e=="number"?Math.log2(e):c.log2[e.kind](e),e=>a(`log2(${e.value})`,e.dataType),"log2"),Qe=v((e,n)=>typeof e=="number"?Math.max(e,n):c.max[e.kind](e,n),(e,n)=>a(`max(${e.value}, ${n.value})`,e.dataType),"max","coerce"),Xe=v((e,n)=>typeof e=="number"?Math.min(e,n):c.min[e.kind](e,n),(e,n)=>a(`min(${e.value}, ${n.value})`,e.dataType),"min","coerce"),Ye=v(e=>typeof e=="number"?Math.sign(e):c.sign[e.kind](e),e=>a(`sign(${e.value})`,e.dataType),"sign"),en=v(e=>typeof e=="number"?Math.sin(e):c.sin[e.kind](e),e=>a(`sin(${e.value})`,e.dataType),"sin"),nn=v(e=>typeof e=="number"?Math.exp(e):c.exp[e.kind](e),e=>a(`exp(${e.value})`,e.dataType),"exp"),sn=v(e=>typeof e=="number"?2**e:c.exp2[e.kind](e),e=>a(`exp2(${e.value})`,e.dataType),"exp2"),tn=v((e,n)=>{if(typeof e=="number"&&typeof n=="number")return e**n;if(typeof e=="object"&&typeof n=="object"&&"kind"in e&&"kind"in n)return c.pow[e.kind](e,n);throw new Error("Invalid arguments to pow()")},(e,n)=>a(`pow(${e.value}, ${n.value})`,e.dataType),"pow"),cn=v((e,n,s)=>{if(typeof e=="number"){if(typeof s!="number"||typeof n!="number")throw new Error("When e1 and e2 are numbers, the blend factor must be a number.");return e*(1-s)+n*s}if(typeof e=="number"||typeof n=="number")throw new Error("e1 and e2 need to both be vectors of the same kind.");return c.mix[e.kind](e,n,s)},(e,n,s)=>a(`mix(${e.value}, ${n.value}, ${s.value})`,e.dataType),"mix"),an=v((e,n)=>ie(e,me(2*ze(n,e),n)),(e,n)=>a(`reflect(${e.value}, ${n.value})`,e.dataType),"reflect"),rn=v((e,n)=>typeof e=="number"&&typeof n=="number"?Math.abs(e-n):pe(ie(e,n)),(e,n)=>a(`distance(${e.value}, ${n.value})`,H),"distance"),vn=v(e=>typeof e=="number"?-e:c.neg[e.kind](e),e=>a(`-(${e.value})`,e.dataType),"neg"),xn=v(e=>typeof e=="number"?Math.sqrt(e):c.sqrt[e.kind](e),e=>a(`sqrt(${e.value})`,e.dataType),"sqrt"),yn=v(e=>typeof e=="number"?Math.tanh(e):c.tanh[e.kind](e),e=>a(`tanh(${e.value})`,e.dataType),"tanh");export{c as a,G as b,de as c,ke as d,ie as e,me as f,Oe as g,Le as h,_e as i,Ue as j,We as k,qe as l,Ce as m,Se as n,De as o,Ee as p,je as q,ze as r,Pe as s,Ze as t,Ge as u,pe as v,He as w,Je as x,Qe as y,Xe as z,Ye as A,en as B,nn as C,sn as D,tn as E,cn as F,an as G,rn as H,vn as I,xn as J,yn as K};
2
+ //# sourceMappingURL=chunk-CGVYLGBG.js.map