typegpu 0.5.7 → 0.5.8
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-7ACLI4JY.cjs +2 -0
- package/{chunk-FHOQ6WZE.cjs.map → chunk-7ACLI4JY.cjs.map} +1 -1
- package/chunk-L7HIBZAX.js +4 -0
- package/chunk-L7HIBZAX.js.map +1 -0
- package/chunk-SFECI7OX.js +2 -0
- package/chunk-SFECI7OX.js.map +1 -0
- package/chunk-SLWTVY6K.js +2 -0
- package/chunk-SLWTVY6K.js.map +1 -0
- package/chunk-TF6YPHJS.cjs +2 -0
- package/chunk-TF6YPHJS.cjs.map +1 -0
- package/chunk-V4CSEIB2.cjs +4 -0
- package/chunk-V4CSEIB2.cjs.map +1 -0
- package/data/index.cjs +1 -1
- package/data/index.cjs.map +1 -1
- package/data/index.d.cts +2 -2
- package/data/index.d.ts +2 -2
- package/data/index.js +1 -1
- package/index.cjs +18 -18
- package/index.cjs.map +1 -1
- package/index.d.cts +2 -2
- package/index.d.ts +2 -2
- package/index.js +18 -18
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/std/index.cjs +1 -1
- package/std/index.cjs.map +1 -1
- package/std/index.d.cts +36 -16
- package/std/index.d.ts +36 -16
- package/std/index.js +1 -1
- package/std/index.js.map +1 -1
- package/{tgpuComputeFn-DH8_PcIR.d.cts → tgpuComputeFn-S61HxwW-.d.cts} +94 -73
- package/{tgpuComputeFn-DH8_PcIR.d.ts → tgpuComputeFn-S61HxwW-.d.ts} +94 -73
- package/chunk-5RYM4COI.js +0 -4
- package/chunk-5RYM4COI.js.map +0 -1
- package/chunk-FHOQ6WZE.cjs +0 -2
- package/chunk-ODKBWWHU.cjs +0 -4
- package/chunk-ODKBWWHU.cjs.map +0 -1
- package/chunk-SMTSXYNG.js +0 -2
- package/chunk-SMTSXYNG.js.map +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/data/struct.ts","../src/mathUtils.ts","../src/data/vertexFormatData.ts","../src/data/alignmentOf.ts","../src/data/sizeOf.ts","../src/data/array.ts","../src/data/disarray.ts","../src/data/unstruct.ts","../src/data/atomic.ts","../src/data/attributes.ts","../src/builtin.ts"],"sourcesContent":["import { getName, setName } from '../name.ts';\nimport { $internal } from '../shared/symbols.ts';\nimport type { AnyWgslData, WgslStruct } from './wgslTypes.ts';\n\n// ----------\n// Public API\n// ----------\n\n/**\n * Creates a struct schema that can be used to construct GPU buffers.\n * Ensures proper alignment and padding of properties (as opposed to a `d.unstruct` schema).\n * The order of members matches the passed in properties object.\n *\n * @example\n * const CircleStruct = d.struct({ radius: d.f32, pos: d.vec3f });\n *\n * @param props Record with `string` keys and `TgpuData` values,\n * each entry describing one struct member.\n */\nexport function struct<TProps extends Record<string, AnyWgslData>>(\n props: TProps,\n): WgslStruct<TProps> {\n const struct = <T>(props: T) => props;\n Object.setPrototypeOf(struct, WgslStructImpl);\n struct.propTypes = props;\n\n return struct as WgslStruct<TProps>;\n}\n\n// --------------\n// Implementation\n// --------------\n\nconst WgslStructImpl = {\n [$internal]: true,\n type: 'struct',\n\n $name(label: string) {\n setName(this, label);\n return this;\n },\n\n toString(): string {\n return `struct:${getName(this) ?? '<unnamed>'}`;\n },\n};\n","/**\n * @param value\n * @param modulo has to be power of 2\n */\nexport const roundUp = (value: number, modulo: number) => {\n const bitMask = modulo - 1;\n const invBitMask = ~bitMask;\n return (value & bitMask) === 0 ? value : (value & invBitMask) + modulo;\n};\n","import { $repr, type Infer } from '../shared/repr.ts';\nimport { $internal } from '../shared/symbols.ts';\nimport type { VertexFormat } from '../shared/vertexFormat.ts';\nimport { f32, i32, u32 } from './numeric.ts';\nimport {\n vec2f,\n vec2i,\n vec2u,\n vec3f,\n vec3i,\n vec3u,\n vec4f,\n vec4i,\n vec4u,\n} from './vector.ts';\n\nexport type FormatToWGSLType<T extends VertexFormat> =\n (typeof formatToWGSLType)[T];\n\nexport interface TgpuVertexFormatData<T extends VertexFormat> {\n readonly [$internal]: true;\n readonly type: T;\n readonly [$repr]: Infer<FormatToWGSLType<T>>;\n}\n\nclass TgpuVertexFormatDataImpl<T extends VertexFormat>\n implements TgpuVertexFormatData<T> {\n public readonly [$internal] = true;\n /** Used as a type-token for the `Infer<T>` functionality. */\n declare public readonly [$repr]: Infer<FormatToWGSLType<T>>;\n\n constructor(public readonly type: T) {}\n}\n\nexport const formatToWGSLType = {\n uint8: u32,\n uint8x2: vec2u,\n uint8x4: vec4u,\n sint8: i32,\n sint8x2: vec2i,\n sint8x4: vec4i,\n unorm8: f32,\n unorm8x2: vec2f,\n unorm8x4: vec4f,\n snorm8: f32,\n snorm8x2: vec2f,\n snorm8x4: vec4f,\n uint16: u32,\n uint16x2: vec2u,\n uint16x4: vec4u,\n sint16: i32,\n sint16x2: vec2i,\n sint16x4: vec4i,\n unorm16: f32,\n unorm16x2: vec2f,\n unorm16x4: vec4f,\n snorm16: f32,\n snorm16x2: vec2f,\n snorm16x4: vec4f,\n float16: f32,\n float16x2: vec2f,\n float16x4: vec4f,\n float32: f32,\n float32x2: vec2f,\n float32x3: vec3f,\n float32x4: vec4f,\n uint32: u32,\n uint32x2: vec2u,\n uint32x3: vec3u,\n uint32x4: vec4u,\n sint32: i32,\n sint32x2: vec2i,\n sint32x3: vec3i,\n sint32x4: vec4i,\n 'unorm10-10-10-2': vec4f,\n 'unorm8x4-bgra': vec4f,\n} as const;\n\nexport const packedFormats = Object.keys(formatToWGSLType);\n\nexport type uint8 = TgpuVertexFormatData<'uint8'>;\nexport const uint8 = new TgpuVertexFormatDataImpl('uint8') as uint8;\n\nexport type uint8x2 = TgpuVertexFormatData<'uint8x2'>;\nexport const uint8x2 = new TgpuVertexFormatDataImpl('uint8x2') as uint8x2;\n\nexport type uint8x4 = TgpuVertexFormatData<'uint8x4'>;\nexport const uint8x4 = new TgpuVertexFormatDataImpl('uint8x4') as uint8x4;\n\nexport type sint8 = TgpuVertexFormatData<'sint8'>;\nexport const sint8 = new TgpuVertexFormatDataImpl('sint8') as sint8;\n\nexport type sint8x2 = TgpuVertexFormatData<'sint8x2'>;\nexport const sint8x2 = new TgpuVertexFormatDataImpl('sint8x2') as sint8x2;\n\nexport type sint8x4 = TgpuVertexFormatData<'sint8x4'>;\nexport const sint8x4 = new TgpuVertexFormatDataImpl('sint8x4') as sint8x4;\n\nexport type unorm8 = TgpuVertexFormatData<'unorm8'>;\nexport const unorm8 = new TgpuVertexFormatDataImpl('unorm8') as unorm8;\n\nexport type unorm8x2 = TgpuVertexFormatData<'unorm8x2'>;\nexport const unorm8x2 = new TgpuVertexFormatDataImpl('unorm8x2') as unorm8x2;\n\nexport type unorm8x4 = TgpuVertexFormatData<'unorm8x4'>;\nexport const unorm8x4 = new TgpuVertexFormatDataImpl('unorm8x4') as unorm8x4;\n\nexport type snorm8 = TgpuVertexFormatData<'snorm8'>;\nexport const snorm8 = new TgpuVertexFormatDataImpl('snorm8') as snorm8;\n\nexport type snorm8x2 = TgpuVertexFormatData<'snorm8x2'>;\nexport const snorm8x2 = new TgpuVertexFormatDataImpl('snorm8x2') as snorm8x2;\n\nexport type snorm8x4 = TgpuVertexFormatData<'snorm8x4'>;\nexport const snorm8x4 = new TgpuVertexFormatDataImpl('snorm8x4') as snorm8x4;\n\nexport type uint16 = TgpuVertexFormatData<'uint16'>;\nexport const uint16 = new TgpuVertexFormatDataImpl('uint16') as uint16;\n\nexport type uint16x2 = TgpuVertexFormatData<'uint16x2'>;\nexport const uint16x2 = new TgpuVertexFormatDataImpl('uint16x2') as uint16x2;\n\nexport type uint16x4 = TgpuVertexFormatData<'uint16x4'>;\nexport const uint16x4 = new TgpuVertexFormatDataImpl('uint16x4') as uint16x4;\n\nexport type sint16 = TgpuVertexFormatData<'sint16'>;\nexport const sint16 = new TgpuVertexFormatDataImpl('sint16') as sint16;\n\nexport type sint16x2 = TgpuVertexFormatData<'sint16x2'>;\nexport const sint16x2 = new TgpuVertexFormatDataImpl('sint16x2') as sint16x2;\n\nexport type sint16x4 = TgpuVertexFormatData<'sint16x4'>;\nexport const sint16x4 = new TgpuVertexFormatDataImpl('sint16x4') as sint16x4;\n\nexport type unorm16 = TgpuVertexFormatData<'unorm16'>;\nexport const unorm16 = new TgpuVertexFormatDataImpl('unorm16') as unorm16;\n\nexport type unorm16x2 = TgpuVertexFormatData<'unorm16x2'>;\nexport const unorm16x2 = new TgpuVertexFormatDataImpl('unorm16x2') as unorm16x2;\n\nexport type unorm16x4 = TgpuVertexFormatData<'unorm16x4'>;\nexport const unorm16x4 = new TgpuVertexFormatDataImpl('unorm16x4') as unorm16x4;\n\nexport type snorm16 = TgpuVertexFormatData<'snorm16'>;\nexport const snorm16 = new TgpuVertexFormatDataImpl('snorm16') as snorm16;\n\nexport type snorm16x2 = TgpuVertexFormatData<'snorm16x2'>;\nexport const snorm16x2 = new TgpuVertexFormatDataImpl('snorm16x2') as snorm16x2;\n\nexport type snorm16x4 = TgpuVertexFormatData<'snorm16x4'>;\nexport const snorm16x4 = new TgpuVertexFormatDataImpl('snorm16x4') as snorm16x4;\n\nexport type float16 = TgpuVertexFormatData<'float16'>;\nexport const float16 = new TgpuVertexFormatDataImpl('float16') as float16;\n\nexport type float16x2 = TgpuVertexFormatData<'float16x2'>;\nexport const float16x2 = new TgpuVertexFormatDataImpl('float16x2') as float16x2;\n\nexport type float16x4 = TgpuVertexFormatData<'float16x4'>;\nexport const float16x4 = new TgpuVertexFormatDataImpl('float16x4') as float16x4;\n\nexport type float32 = TgpuVertexFormatData<'float32'>;\nexport const float32 = new TgpuVertexFormatDataImpl('float32') as float32;\n\nexport type float32x2 = TgpuVertexFormatData<'float32x2'>;\nexport const float32x2 = new TgpuVertexFormatDataImpl('float32x2') as float32x2;\n\nexport type float32x3 = TgpuVertexFormatData<'float32x3'>;\nexport const float32x3 = new TgpuVertexFormatDataImpl('float32x3') as float32x3;\n\nexport type float32x4 = TgpuVertexFormatData<'float32x4'>;\nexport const float32x4 = new TgpuVertexFormatDataImpl('float32x4') as float32x4;\n\nexport type uint32 = TgpuVertexFormatData<'uint32'>;\nexport const uint32 = new TgpuVertexFormatDataImpl('uint32') as uint32;\n\nexport type uint32x2 = TgpuVertexFormatData<'uint32x2'>;\nexport const uint32x2 = new TgpuVertexFormatDataImpl('uint32x2') as uint32x2;\n\nexport type uint32x3 = TgpuVertexFormatData<'uint32x3'>;\nexport const uint32x3 = new TgpuVertexFormatDataImpl('uint32x3') as uint32x3;\n\nexport type uint32x4 = TgpuVertexFormatData<'uint32x4'>;\nexport const uint32x4 = new TgpuVertexFormatDataImpl('uint32x4') as uint32x4;\n\nexport type sint32 = TgpuVertexFormatData<'sint32'>;\nexport const sint32 = new TgpuVertexFormatDataImpl('sint32') as sint32;\n\nexport type sint32x2 = TgpuVertexFormatData<'sint32x2'>;\nexport const sint32x2 = new TgpuVertexFormatDataImpl('sint32x2') as sint32x2;\n\nexport type sint32x3 = TgpuVertexFormatData<'sint32x3'>;\nexport const sint32x3 = new TgpuVertexFormatDataImpl('sint32x3') as sint32x3;\n\nexport type sint32x4 = TgpuVertexFormatData<'sint32x4'>;\nexport const sint32x4 = new TgpuVertexFormatDataImpl('sint32x4') as sint32x4;\n\nexport type unorm10_10_10_2 = TgpuVertexFormatData<'unorm10-10-10-2'>;\nexport const unorm10_10_10_2 = new TgpuVertexFormatDataImpl(\n 'unorm10-10-10-2',\n) as unorm10_10_10_2;\n\nexport type unorm8x4_bgra = TgpuVertexFormatData<'unorm8x4-bgra'>;\nexport const unorm8x4_bgra = new TgpuVertexFormatDataImpl(\n 'unorm8x4-bgra',\n) as unorm8x4_bgra;\n\nexport type PackedData =\n | uint8\n | uint8x2\n | uint8x4\n | sint8\n | sint8x2\n | sint8x4\n | unorm8\n | unorm8x2\n | unorm8x4\n | snorm8\n | snorm8x2\n | snorm8x4\n | uint16\n | uint16x2\n | uint16x4\n | sint16\n | sint16x2\n | sint16x4\n | unorm16\n | unorm16x2\n | unorm16x4\n | snorm16\n | snorm16x2\n | snorm16x4\n | float16\n | float16x2\n | float16x4\n | float32\n | float32x2\n | float32x3\n | float32x4\n | uint32\n | uint32x2\n | uint32x3\n | uint32x4\n | sint32\n | sint32x2\n | sint32x3\n | sint32x4\n | unorm10_10_10_2\n | unorm8x4_bgra;\n","import {\n type AnyData,\n getCustomAlignment,\n isDisarray,\n isLooseDecorated,\n isUnstruct,\n} from './dataTypes.ts';\nimport { packedFormats } from './vertexFormatData.ts';\nimport {\n type BaseData,\n isDecorated,\n isWgslArray,\n isWgslStruct,\n} from './wgslTypes.ts';\n\nconst knownAlignmentMap: Record<string, number> = {\n f32: 4,\n f16: 2,\n i32: 4,\n u32: 4,\n vec2f: 8,\n vec2h: 4,\n vec2i: 8,\n vec2u: 8,\n vec3f: 16,\n vec3h: 8,\n vec3i: 16,\n vec3u: 16,\n vec4f: 16,\n vec4h: 8,\n vec4i: 16,\n vec4u: 16,\n mat2x2f: 8,\n mat3x3f: 16,\n mat4x4f: 16,\n atomic: 4,\n};\n\nfunction computeAlignment(data: object): number {\n const dataType = (data as BaseData)?.type;\n const knownAlignment = knownAlignmentMap[dataType];\n if (knownAlignment !== undefined) {\n return knownAlignment;\n }\n\n if (isWgslStruct(data)) {\n return Object.values(data.propTypes)\n .map(alignmentOf)\n .reduce((a, b) => (a > b ? a : b));\n }\n\n if (isWgslArray(data)) {\n return alignmentOf(data.elementType);\n }\n\n if (isUnstruct(data)) {\n // A loose struct is aligned to its first property.\n const firstProp = Object.values(data.propTypes)[0];\n return firstProp ? (getCustomAlignment(firstProp) ?? 1) : 1;\n }\n\n if (isDisarray(data)) {\n return getCustomAlignment(data.elementType) ?? 1;\n }\n\n if (isDecorated(data) || isLooseDecorated(data)) {\n return getCustomAlignment(data) ?? alignmentOf(data.inner);\n }\n\n if (packedFormats.includes(dataType)) {\n return 1;\n }\n\n throw new Error(\n `Cannot determine alignment of data: ${JSON.stringify(data)}`,\n );\n}\n\nfunction computeCustomAlignment(data: BaseData): number {\n if (isUnstruct(data)) {\n // A loose struct is aligned to its first property.\n const firstProp = Object.values(data.propTypes)[0];\n return firstProp ? customAlignmentOf(firstProp) : 1;\n }\n\n if (isDisarray(data)) {\n return customAlignmentOf(data.elementType);\n }\n\n if (isLooseDecorated(data)) {\n return getCustomAlignment(data) ?? customAlignmentOf(data.inner);\n }\n\n return getCustomAlignment(data) ?? 1;\n}\n\n/**\n * Since alignments can be inferred from data types, they are not stored on them.\n * Instead, this weak map acts as an extended property of those data types.\n */\nconst cachedAlignments = new WeakMap<object, number>();\n\nconst cachedCustomAlignments = new WeakMap<object, number>();\n\nexport function alignmentOf(data: BaseData): number {\n let alignment = cachedAlignments.get(data);\n if (alignment === undefined) {\n alignment = computeAlignment(data);\n cachedAlignments.set(data, alignment);\n }\n\n return alignment;\n}\n\nexport function customAlignmentOf(data: BaseData): number {\n let alignment = cachedCustomAlignments.get(data);\n if (alignment === undefined) {\n alignment = computeCustomAlignment(data);\n cachedCustomAlignments.set(data, alignment);\n }\n\n return alignment;\n}\n\n/**\n * Returns the alignment (in bytes) of data represented by the `schema`.\n */\nexport function PUBLIC_alignmentOf(schema: AnyData): number {\n return alignmentOf(schema);\n}\n","import { roundUp } from '../mathUtils.ts';\nimport { alignmentOf, customAlignmentOf } from './alignmentOf.ts';\nimport type { AnyData, LooseTypeLiteral, Unstruct } from './dataTypes.ts';\nimport {\n getCustomSize,\n isDisarray,\n isLooseDecorated,\n isUnstruct,\n} from './dataTypes.ts';\nimport type { BaseData, WgslStruct, WgslTypeLiteral } from './wgslTypes.ts';\nimport { isDecorated, isWgslArray, isWgslStruct } from './wgslTypes.ts';\n\nconst knownSizesMap: Record<string, number> = {\n f32: 4,\n f16: 2,\n i32: 4,\n u32: 4,\n vec2f: 8,\n vec2h: 4,\n vec2i: 8,\n vec2u: 8,\n vec3f: 12,\n vec3h: 6,\n vec3i: 12,\n vec3u: 12,\n vec4f: 16,\n vec4h: 8,\n vec4i: 16,\n vec4u: 16,\n mat2x2f: 16,\n mat3x3f: 48,\n mat4x4f: 64,\n uint8: 1,\n uint8x2: 2,\n uint8x4: 4,\n sint8: 1,\n sint8x2: 2,\n sint8x4: 4,\n unorm8: 1,\n unorm8x2: 2,\n unorm8x4: 4,\n snorm8: 1,\n snorm8x2: 2,\n snorm8x4: 4,\n uint16: 2,\n uint16x2: 4,\n uint16x4: 8,\n sint16: 2,\n sint16x2: 4,\n sint16x4: 8,\n unorm16: 2,\n unorm16x2: 4,\n unorm16x4: 8,\n snorm16: 2,\n snorm16x2: 4,\n snorm16x4: 8,\n float16: 2,\n float16x2: 4,\n float16x4: 8,\n float32: 4,\n float32x2: 8,\n float32x3: 12,\n float32x4: 16,\n uint32: 4,\n uint32x2: 8,\n uint32x3: 12,\n uint32x4: 16,\n sint32: 4,\n sint32x2: 8,\n sint32x3: 12,\n sint32x4: 16,\n 'unorm10-10-10-2': 4,\n 'unorm8x4-bgra': 4,\n atomic: 4,\n} satisfies Partial<Record<WgslTypeLiteral | LooseTypeLiteral, number>>;\n\nfunction sizeOfStruct(struct: WgslStruct) {\n let size = 0;\n for (const property of Object.values(struct.propTypes)) {\n if (Number.isNaN(size)) {\n throw new Error('Only the last property of a struct can be unbounded');\n }\n\n size = roundUp(size, alignmentOf(property));\n size += sizeOf(property);\n\n if (Number.isNaN(size) && property.type !== 'array') {\n throw new Error('Cannot nest unbounded struct within another struct');\n }\n }\n\n return roundUp(size, alignmentOf(struct));\n}\n\nfunction sizeOfUnstruct(data: Unstruct) {\n let size = 0;\n\n for (const property of Object.values(data.propTypes)) {\n const alignment = customAlignmentOf(property);\n size = roundUp(size, alignment);\n size += sizeOf(property);\n }\n\n return size;\n}\n\nfunction computeSize(data: object): number {\n const knownSize = knownSizesMap[(data as BaseData)?.type];\n\n if (knownSize !== undefined) {\n return knownSize;\n }\n\n if (isWgslStruct(data)) {\n return sizeOfStruct(data);\n }\n\n if (isUnstruct(data)) {\n return sizeOfUnstruct(data);\n }\n\n if (isWgslArray(data)) {\n if (data.elementCount === 0) {\n return Number.NaN;\n }\n\n const alignment = alignmentOf(data.elementType);\n const stride = roundUp(sizeOf(data.elementType), alignment);\n return stride * data.elementCount;\n }\n\n if (isDisarray(data)) {\n const alignment = customAlignmentOf(data.elementType);\n const stride = roundUp(sizeOf(data.elementType), alignment);\n return stride * data.elementCount;\n }\n\n if (isDecorated(data) || isLooseDecorated(data)) {\n return getCustomSize(data) ?? sizeOf(data.inner);\n }\n\n throw new Error(`Cannot determine size of data: ${data}`);\n}\n\n/**\n * Since sizes can be inferred from data types, they are not stored on them.\n * Instead, this weak map acts as an extended property of those data types.\n */\nconst cachedSizes = new WeakMap<BaseData, number>();\n\nexport function sizeOf(schema: BaseData): number {\n let size = cachedSizes.get(schema);\n\n if (size === undefined) {\n size = computeSize(schema);\n cachedSizes.set(schema, size);\n }\n\n return size;\n}\n\n/**\n * Returns the size (in bytes) of data represented by the `schema`.\n */\nexport function PUBLIC_sizeOf(schema: AnyData): number {\n return sizeOf(schema);\n}\n","import type {\n $repr,\n Infer,\n InferGPU,\n InferPartial,\n MemIdentity,\n} from '../shared/repr.ts';\nimport { $internal } from '../shared/symbols.ts';\nimport { sizeOf } from './sizeOf.ts';\nimport type { AnyWgslData, BaseData, WgslArray } from './wgslTypes.ts';\n\n// ----------\n// Public API\n// ----------\n\n/**\n * Creates an array schema that can be used to construct gpu buffers.\n * Describes arrays with fixed-size length, storing elements of the same type.\n *\n * @example\n * const LENGTH = 3;\n * const array = d.arrayOf(d.u32, LENGTH);\n *\n * @param elementType The type of elements in the array.\n * @param elementCount The number of elements in the array.\n */\nexport function arrayOf<TElement extends AnyWgslData>(\n elementType: TElement,\n elementCount: number,\n): WgslArray<TElement> {\n return new WgslArrayImpl(elementType, elementCount);\n}\n\n// --------------\n// Implementation\n// --------------\n\nclass WgslArrayImpl<TElement extends BaseData> implements WgslArray<TElement> {\n public readonly [$internal] = true;\n public readonly type = 'array';\n /** Type-token, not available at runtime */\n declare public readonly [$repr]: Infer<TElement>[];\n /** Type-token, not available at runtime */\n declare public readonly '~gpuRepr': InferGPU<TElement>[];\n /** Type-token, not available at runtime */\n declare public readonly '~reprPartial': {\n idx: number;\n value: InferPartial<TElement>;\n }[];\n /** Type-token, not available at runtime */\n declare public readonly '~memIdent': WgslArray<MemIdentity<TElement>>;\n\n constructor(\n public readonly elementType: TElement,\n public readonly elementCount: number,\n ) {\n if (Number.isNaN(sizeOf(elementType))) {\n throw new Error('Cannot nest runtime sized arrays.');\n }\n\n if (!Number.isInteger(elementCount) || elementCount < 0) {\n throw new Error(\n `Cannot create array schema with invalid element count: ${elementCount}.`,\n );\n }\n }\n\n toString() {\n return `arrayOf(${this.elementType})`;\n }\n}\n","import type { $repr, Infer, InferPartial } from '../shared/repr.ts';\nimport { $internal } from '../shared/symbols.ts';\nimport type { AnyData, Disarray } from './dataTypes.ts';\n\n// ----------\n// Public API\n// ----------\n\n/**\n * Creates an array schema that can be used to construct vertex buffers.\n * Describes arrays with fixed-size length, storing elements of the same type.\n *\n * Elements in the schema are not aligned in respect to their `byteAlignment`,\n * unless they are explicitly decorated with the custom align attribute\n * via `d.align` function.\n *\n * @example\n * const disarray = d.disarrayOf(d.vec3f, 3); // packed array of vec3f\n *\n * @example\n * const disarray = d.disarrayOf(d.align(16, d.vec3f), 3);\n *\n * @param elementType The type of elements in the array.\n * @param count The number of elements in the array.\n */\nexport function disarrayOf<TElement extends AnyData>(\n elementType: TElement,\n count: number,\n): Disarray<TElement> {\n return new DisarrayImpl(elementType, count);\n}\n\n// --------------\n// Implementation\n// --------------\n\nclass DisarrayImpl<TElement extends AnyData> implements Disarray<TElement> {\n public readonly [$internal] = true;\n public readonly type = 'disarray';\n /** Type-token, not available at runtime */\n declare public readonly [$repr]: Infer<TElement>[];\n /** Type-token, not available at runtime */\n public readonly '~reprPartial'!: {\n idx: number;\n value: InferPartial<TElement>;\n }[];\n\n constructor(\n public readonly elementType: TElement,\n public readonly elementCount: number,\n ) {\n if (!Number.isInteger(elementCount) || elementCount < 0) {\n throw new Error(\n `Cannot create disarray schema with invalid element count: ${elementCount}.`,\n );\n }\n }\n}\n","import { getName, setName } from '../name.ts';\nimport { $internal } from '../shared/symbols.ts';\nimport type { Unstruct } from './dataTypes.ts';\nimport type { BaseData } from './wgslTypes.ts';\n\n// ----------\n// Public API\n// ----------\n\n/**\n * Creates a loose struct schema that can be used to construct vertex buffers.\n * Describes structs with members of both loose and non-loose types.\n *\n * The order of members matches the passed in properties object.\n * Members are not aligned in respect to their `byteAlignment`,\n * unless they are explicitly decorated with the custom align attribute\n * via `d.align` function.\n *\n * @example\n * const CircleStruct = d.unstruct({ radius: d.f32, pos: d.vec3f }); // packed struct with no padding\n *\n * @example\n * const CircleStruct = d.unstruct({ radius: d.f32, pos: d.align(16, d.vec3f) });\n *\n * @param properties Record with `string` keys and `TgpuData` or `TgpuLooseData` values,\n * each entry describing one struct member.\n */\nexport function unstruct<TProps extends Record<string, BaseData>>(\n properties: TProps,\n): Unstruct<TProps> {\n const unstruct = <T>(props: T) => props;\n Object.setPrototypeOf(unstruct, UnstructImpl);\n unstruct.propTypes = properties;\n\n return unstruct as unknown as Unstruct<TProps>;\n}\n\n// --------------\n// Implementation\n// --------------\n\nconst UnstructImpl = {\n [$internal]: true,\n type: 'unstruct',\n\n $name(label: string) {\n setName(this, label);\n return this;\n },\n\n toString(): string {\n return `unstruct:${getName(this) ?? '<unnamed>'}`;\n },\n};\n","import type { $repr, Infer, MemIdentity } from '../shared/repr.ts';\nimport { $internal } from '../shared/symbols.ts';\nimport type { Atomic, atomicI32, atomicU32, I32, U32 } from './wgslTypes.ts';\n\n// ----------\n// Public API\n// ----------\n\n/**\n * Marks a concrete integer scalar type schema (u32 or i32) as a WGSL atomic.\n *\n * @example\n * const atomicU32 = d.atomic(d.u32);\n * const atomicI32 = d.atomic(d.i32);\n *\n * @param data Underlying type schema.\n */\nexport function atomic<TSchema extends U32 | I32>(\n data: TSchema,\n): Atomic<TSchema> {\n return new AtomicImpl(data);\n}\n\n// --------------\n// Implementation\n// --------------\n\nclass AtomicImpl<TSchema extends U32 | I32> implements Atomic<TSchema> {\n public readonly [$internal] = true;\n public readonly type = 'atomic';\n /** Type-token, not available at runtime */\n declare public readonly [$repr]: Infer<TSchema>;\n /** Type-token, not available at runtime */\n public readonly '~memIdent'!: MemIdentity<TSchema>;\n /** Type-token, not available at runtime */\n public readonly '~gpuRepr': TSchema extends U32 ? atomicU32 : atomicI32;\n\n constructor(public readonly inner: TSchema) {}\n}\n","import type {\n $repr,\n Infer,\n InferGPU,\n InferPartial,\n MemIdentity,\n} from '../shared/repr.ts';\nimport { $internal } from '../shared/symbols.ts';\nimport { alignmentOf } from './alignmentOf.ts';\nimport {\n type AnyData,\n type AnyLooseData,\n isLooseData,\n isLooseDecorated,\n type LooseDecorated,\n type LooseTypeLiteral,\n} from './dataTypes.ts';\nimport { sizeOf } from './sizeOf.ts';\nimport {\n type Align,\n type AnyWgslData,\n type BaseData,\n type Builtin,\n type Decorated,\n type FlatInterpolatableData,\n type FlatInterpolationType,\n type Interpolate,\n type InterpolationType,\n isAlignAttrib,\n isBuiltinAttrib,\n isDecorated,\n isSizeAttrib,\n isWgslData,\n type Location,\n type PerspectiveOrLinearInterpolatableData,\n type PerspectiveOrLinearInterpolationType,\n type Size,\n type WgslTypeLiteral,\n} from './wgslTypes.ts';\n\n// ----------\n// Public API\n// ----------\n\nexport const builtinNames = [\n 'vertex_index',\n 'instance_index',\n 'position',\n 'clip_distances',\n 'front_facing',\n 'frag_depth',\n 'sample_index',\n 'sample_mask',\n 'fragment',\n 'local_invocation_id',\n 'local_invocation_index',\n 'global_invocation_id',\n 'workgroup_id',\n 'num_workgroups',\n 'subgroup_invocation_id',\n 'subgroup_size',\n] as const;\n\nexport type BuiltinName = (typeof builtinNames)[number];\n\nexport type AnyAttribute<\n AllowedBuiltins extends Builtin<BuiltinName> = Builtin<BuiltinName>,\n> =\n | Align<number>\n | Size<number>\n | Location<number>\n | Interpolate<InterpolationType>\n | AllowedBuiltins;\n\nexport type ExtractAttributes<T> = T extends {\n readonly attribs: unknown[];\n} ? T['attribs']\n : [];\n\ntype Undecorate<T> = T extends { readonly inner: infer TInner } ? TInner : T;\n\n/**\n * Decorates a data-type `TData` with an attribute `TAttrib`.\n *\n * - if `TData` is loose\n * - if `TData` is already `LooseDecorated`\n * - Prepend `TAttrib` to the existing attribute tuple.\n * - else\n * - Wrap `TData` with `LooseDecorated` and a single attribute `[TAttrib]`\n * - else\n * - if `TData` is already `Decorated`\n * - Prepend `TAttrib` to the existing attribute tuple.\n * - else\n * - Wrap `TData` with `Decorated` and a single attribute `[TAttrib]`\n */\nexport type Decorate<\n TData extends BaseData,\n TAttrib extends AnyAttribute,\n> = TData['type'] extends WgslTypeLiteral\n ? Decorated<Undecorate<TData>, [TAttrib, ...ExtractAttributes<TData>]>\n : TData['type'] extends LooseTypeLiteral\n ? LooseDecorated<Undecorate<TData>, [TAttrib, ...ExtractAttributes<TData>]>\n : never;\n\nexport type IsBuiltin<T> = ExtractAttributes<T>[number] extends [] ? false\n : ExtractAttributes<T>[number] extends Builtin<BuiltinName> ? true\n : false;\n\nexport type HasCustomLocation<T> = ExtractAttributes<T>[number] extends []\n ? false\n : ExtractAttributes<T>[number] extends Location ? true\n : false;\n\nexport function attribute<TData extends BaseData, TAttrib extends AnyAttribute>(\n data: TData,\n attrib: TAttrib,\n): Decorated | LooseDecorated {\n if (isDecorated(data)) {\n return new DecoratedImpl(data.inner, [\n attrib,\n ...data.attribs,\n ]) as Decorated;\n }\n\n if (isLooseDecorated(data)) {\n return new LooseDecoratedImpl(data.inner, [\n attrib,\n ...data.attribs,\n ]) as LooseDecorated;\n }\n\n if (isLooseData(data)) {\n return new LooseDecoratedImpl(data, [attrib]) as unknown as LooseDecorated;\n }\n\n return new DecoratedImpl(data, [attrib]) as unknown as Decorated;\n}\n\n/**\n * Gives the wrapped data-type a custom byte alignment. Useful in order to\n * fulfill uniform alignment requirements.\n *\n * @example\n * const Data = d.struct({\n * a: u32, // takes up 4 bytes\n * // 12 bytes of padding, because `b` is custom aligned to multiples of 16 bytes\n * b: d.align(16, u32),\n * });\n *\n * @param alignment The multiple of bytes this data should align itself to.\n * @param data The data-type to align.\n */\nexport function align<TAlign extends number, TData extends AnyData>(\n alignment: TAlign,\n data: TData,\n): Decorate<TData, Align<TAlign>> {\n return attribute(data, {\n [$internal]: true,\n type: '@align',\n value: alignment,\n // biome-ignore lint/suspicious/noExplicitAny: <tired of lying to types>\n }) as any;\n}\n\n/**\n * Adds padding bytes after the wrapped data-type, until the whole value takes up `size` bytes.\n *\n * @example\n * const Data = d.struct({\n * a: d.size(16, u32), // takes up 16 bytes, instead of 4\n * b: u32, // starts at byte 16, because `a` has a custom size\n * });\n *\n * @param size The amount of bytes that should be reserved for this data-type.\n * @param data The data-type to wrap.\n */\nexport function size<TSize extends number, TData extends AnyData>(\n size: TSize,\n data: TData,\n): Decorate<TData, Size<TSize>> {\n return attribute(data, {\n [$internal]: true,\n type: '@size',\n value: size,\n // biome-ignore lint/suspicious/noExplicitAny: <tired of lying to types>\n }) as any;\n}\n\n/**\n * Assigns an explicit numeric location to a struct member or a parameter that has this type.\n *\n * @example\n * const VertexOutput = {\n * a: d.u32, // has implicit location 0\n * b: d.location(5, d.u32),\n * c: d.u32, // has implicit location 6\n * };\n *\n * @param location The explicit numeric location.\n * @param data The data-type to wrap.\n */\nexport function location<TLocation extends number, TData extends AnyData>(\n location: TLocation,\n data: TData,\n): Decorate<TData, Location<TLocation>> {\n return attribute(data, {\n [$internal]: true,\n type: '@location',\n value: location,\n // biome-ignore lint/suspicious/noExplicitAny: <tired of lying to types>\n }) as any;\n}\n\n/**\n * Specifies how user-defined vertex shader output (fragment shader input)\n * must be interpolated.\n *\n * Tip: Integer outputs cannot be interpolated.\n *\n * @example\n * const VertexOutput = {\n * a: d.f32, // has implicit 'perspective, center' interpolation\n * b: d.interpolate('linear, sample', d.f32),\n * };\n *\n * @param interpolationType How data should be interpolated.\n * @param data The data-type to wrap.\n */\nexport function interpolate<\n TInterpolation extends PerspectiveOrLinearInterpolationType,\n TData extends PerspectiveOrLinearInterpolatableData,\n>(\n interpolationType: TInterpolation,\n data: TData,\n): Decorate<TData, Interpolate<TInterpolation>>;\n\n/**\n * Specifies how user-defined vertex shader output (fragment shader input)\n * must be interpolated.\n *\n * Tip: Default sampling method of `flat` is `first`. Unless you specifically\n * need deterministic behavior provided by `'flat, first'`, prefer explicit\n * `'flat, either'` as it could be slightly faster in hardware.\n *\n * @example\n * const VertexOutput = {\n * a: d.f32, // has implicit 'perspective, center' interpolation\n * b: d.interpolate('flat, either', d.u32), // integer outputs cannot interpolate\n * };\n *\n * @param interpolationType How data should be interpolated.\n * @param data The data-type to wrap.\n */\nexport function interpolate<\n TInterpolation extends FlatInterpolationType,\n TData extends FlatInterpolatableData,\n>(\n interpolationType: TInterpolation,\n data: TData,\n): Decorate<TData, Interpolate<TInterpolation>>;\n\nexport function interpolate<\n TInterpolation extends InterpolationType,\n TData extends AnyData,\n>(\n interpolationType: TInterpolation,\n data: TData,\n): Decorate<TData, Interpolate<TInterpolation>> {\n return attribute(data, {\n [$internal]: true,\n type: '@interpolate',\n value: interpolationType,\n // biome-ignore lint/suspicious/noExplicitAny: <tired of lying to types>\n }) as any;\n}\n\nexport function isBuiltin<\n T extends\n | Decorated<AnyWgslData, AnyAttribute[]>\n | LooseDecorated<AnyLooseData, AnyAttribute[]>,\n>(value: T | unknown): value is T {\n return (\n (isDecorated(value) || isLooseDecorated(value)) &&\n value.attribs.find(isBuiltinAttrib) !== undefined\n );\n}\n\nexport function getAttributesString<T extends BaseData>(field: T): string {\n if (!isDecorated(field) && !isLooseDecorated(field)) {\n return '';\n }\n\n return (field.attribs as AnyAttribute[])\n .map((attrib) => `${attrib.type}(${attrib.value}) `)\n .join('');\n}\n\n// --------------\n// Implementation\n// --------------\n\nclass BaseDecoratedImpl<TInner extends BaseData, TAttribs extends unknown[]> {\n public readonly [$internal] = true;\n declare public readonly [$repr]: Infer<TInner>;\n\n constructor(\n public readonly inner: TInner,\n public readonly attribs: TAttribs,\n ) {\n const alignAttrib = attribs.find(isAlignAttrib)?.value;\n const sizeAttrib = attribs.find(isSizeAttrib)?.value;\n\n if (alignAttrib !== undefined) {\n if (alignAttrib <= 0) {\n throw new Error(\n `Custom data alignment must be a positive number, got: ${alignAttrib}.`,\n );\n }\n\n if (Math.log2(alignAttrib) % 1 !== 0) {\n throw new Error(\n `Alignment has to be a power of 2, got: ${alignAttrib}.`,\n );\n }\n\n if (isWgslData(this.inner)) {\n if (alignAttrib % alignmentOf(this.inner) !== 0) {\n throw new Error(\n `Custom alignment has to be a multiple of the standard data alignment. Got: ${alignAttrib}, expected multiple of: ${\n alignmentOf(this.inner)\n }.`,\n );\n }\n }\n }\n\n if (sizeAttrib !== undefined) {\n if (sizeAttrib < sizeOf(this.inner)) {\n throw new Error(\n `Custom data size cannot be smaller then the standard data size. Got: ${sizeAttrib}, expected at least: ${\n sizeOf(this.inner)\n }.`,\n );\n }\n\n if (sizeAttrib <= 0) {\n throw new Error(\n `Custom data size must be a positive number. Got: ${sizeAttrib}.`,\n );\n }\n }\n }\n}\n\nclass DecoratedImpl<TInner extends BaseData, TAttribs extends unknown[]>\n extends BaseDecoratedImpl<TInner, TAttribs>\n implements Decorated<TInner, TAttribs> {\n public readonly [$internal] = true;\n public readonly type = 'decorated';\n readonly '~gpuRepr': InferGPU<TInner>;\n readonly '~reprPartial': InferPartial<TInner>;\n public readonly '~memIdent'!: TAttribs extends Location[]\n ? MemIdentity<TInner> | Decorated<MemIdentity<TInner>, TAttribs>\n : Decorated<MemIdentity<TInner>, TAttribs>;\n}\n\nclass LooseDecoratedImpl<TInner extends BaseData, TAttribs extends unknown[]>\n extends BaseDecoratedImpl<TInner, TAttribs>\n implements LooseDecorated<TInner, TAttribs> {\n public readonly [$internal] = true;\n public readonly type = 'loose-decorated';\n}\n","import { arrayOf } from './data/array.ts';\nimport { attribute } from './data/attributes.ts';\nimport type { LooseDecorated } from './data/dataTypes.ts';\nimport { f32, u32 } from './data/numeric.ts';\nimport { vec3u, vec4f } from './data/vector.ts';\nimport type {\n AnyWgslData,\n BaseData,\n Builtin,\n Decorated,\n F32,\n U32,\n Vec3u,\n Vec4f,\n WgslArray,\n} from './data/wgslTypes.ts';\nimport { $internal } from './shared/symbols.ts';\n\n// ----------\n// Public API\n// ----------\n\nexport type BuiltinVertexIndex = Decorated<U32, [Builtin<'vertex_index'>]>;\nexport type BuiltinInstanceIndex = Decorated<U32, [Builtin<'instance_index'>]>;\nexport type BuiltinPosition = Decorated<Vec4f, [Builtin<'position'>]>;\nexport type BuiltinClipDistances = Decorated<\n WgslArray<U32>,\n [Builtin<'clip_distances'>]\n>;\nexport type BuiltinFrontFacing = Decorated<F32, [Builtin<'front_facing'>]>;\nexport type BuiltinFragDepth = Decorated<F32, [Builtin<'frag_depth'>]>;\nexport type BuiltinSampleIndex = Decorated<U32, [Builtin<'sample_index'>]>;\nexport type BuiltinSampleMask = Decorated<U32, [Builtin<'sample_mask'>]>;\nexport type BuiltinLocalInvocationId = Decorated<\n Vec3u,\n [Builtin<'local_invocation_id'>]\n>;\nexport type BuiltinLocalInvocationIndex = Decorated<\n U32,\n [Builtin<'local_invocation_index'>]\n>;\nexport type BuiltinGlobalInvocationId = Decorated<\n Vec3u,\n [Builtin<'global_invocation_id'>]\n>;\nexport type BuiltinWorkgroupId = Decorated<Vec3u, [Builtin<'workgroup_id'>]>;\nexport type BuiltinNumWorkgroups = Decorated<\n Vec3u,\n [Builtin<'num_workgroups'>]\n>;\nexport type BuiltinSubgroupInvocationId = Decorated<\n U32,\n [Builtin<'subgroup_invocation_id'>]\n>;\nexport type BuiltinSubgroupSize = Decorated<U32, [Builtin<'subgroup_size'>]>;\n\nfunction defineBuiltin<T extends Decorated | LooseDecorated>(\n dataType: AnyWgslData,\n value: T['attribs'][0] extends { value: infer TValue } ? TValue : never,\n): T {\n return attribute(dataType, {\n [$internal]: true,\n type: '@builtin',\n // biome-ignore lint/suspicious/noExplicitAny: it's fine\n value: value as any,\n }) as T;\n}\n\nexport const builtin = {\n vertexIndex: defineBuiltin<BuiltinVertexIndex>(u32, 'vertex_index'),\n instanceIndex: defineBuiltin<BuiltinInstanceIndex>(u32, 'instance_index'),\n position: defineBuiltin<BuiltinPosition>(vec4f, 'position'),\n clipDistances: defineBuiltin<BuiltinClipDistances>(\n arrayOf(u32, 8),\n 'clip_distances',\n ),\n frontFacing: defineBuiltin<BuiltinFrontFacing>(f32, 'front_facing'),\n fragDepth: defineBuiltin<BuiltinFragDepth>(f32, 'frag_depth'),\n sampleIndex: defineBuiltin<BuiltinSampleIndex>(u32, 'sample_index'),\n sampleMask: defineBuiltin<BuiltinSampleMask>(u32, 'sample_mask'),\n localInvocationId: defineBuiltin<BuiltinLocalInvocationId>(\n vec3u,\n 'local_invocation_id',\n ),\n localInvocationIndex: defineBuiltin<BuiltinLocalInvocationIndex>(\n u32,\n 'local_invocation_index',\n ),\n globalInvocationId: defineBuiltin<BuiltinGlobalInvocationId>(\n vec3u,\n 'global_invocation_id',\n ),\n workgroupId: defineBuiltin<BuiltinWorkgroupId>(vec3u, 'workgroup_id'),\n numWorkgroups: defineBuiltin<BuiltinNumWorkgroups>(vec3u, 'num_workgroups'),\n subgroupInvocationId: defineBuiltin<BuiltinSubgroupInvocationId>(\n u32,\n 'subgroup_invocation_id',\n ),\n subgroupSize: defineBuiltin<BuiltinSubgroupSize>(u32, 'subgroup_size'),\n} as const;\n\nexport type AnyBuiltin = (typeof builtin)[keyof typeof builtin];\nexport type AnyComputeBuiltin =\n | BuiltinLocalInvocationId\n | BuiltinLocalInvocationIndex\n | BuiltinGlobalInvocationId\n | BuiltinWorkgroupId\n | BuiltinNumWorkgroups\n | BuiltinSubgroupInvocationId\n | BuiltinSubgroupSize;\nexport type AnyVertexInputBuiltin = BuiltinVertexIndex | BuiltinInstanceIndex;\nexport type AnyVertexOutputBuiltin = BuiltinClipDistances | BuiltinPosition;\nexport type AnyFragmentInputBuiltin =\n | BuiltinPosition\n | BuiltinFrontFacing\n | BuiltinSampleIndex\n | BuiltinSampleMask\n | BuiltinSubgroupInvocationId\n | BuiltinSubgroupSize;\nexport type AnyFragmentOutputBuiltin = BuiltinFragDepth | BuiltinSampleMask;\n\nexport type OmitBuiltins<S> = S extends AnyBuiltin ? never\n : S extends BaseData ? S\n : {\n [Key in keyof S as S[Key] extends AnyBuiltin ? never : Key]: S[Key];\n };\n"],"mappings":"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","names":["struct","props","WgslStructImpl","$internal","label","setName","getName","roundUp","value","modulo","bitMask","invBitMask","TgpuVertexFormatDataImpl","type","$internal","formatToWGSLType","u32","vec2u","vec4u","i32","vec2i","vec4i","f32","vec2f","vec4f","vec3f","vec3u","vec3i","packedFormats","uint8","uint8x2","uint8x4","sint8","sint8x2","sint8x4","unorm8","unorm8x2","unorm8x4","snorm8","snorm8x2","snorm8x4","uint16","uint16x2","uint16x4","sint16","sint16x2","sint16x4","unorm16","unorm16x2","unorm16x4","snorm16","snorm16x2","snorm16x4","float16","float16x2","float16x4","float32","float32x2","float32x3","float32x4","uint32","uint32x2","uint32x3","uint32x4","sint32","sint32x2","sint32x3","sint32x4","unorm10_10_10_2","unorm8x4_bgra","knownAlignmentMap","computeAlignment","data","dataType","knownAlignment","isWgslStruct","alignmentOf","a","b","isWgslArray","isUnstruct","firstProp","getCustomAlignment","isDisarray","isDecorated","isLooseDecorated","packedFormats","computeCustomAlignment","customAlignmentOf","cachedAlignments","cachedCustomAlignments","alignment","PUBLIC_alignmentOf","schema","knownSizesMap","sizeOfStruct","struct","size","property","roundUp","alignmentOf","sizeOf","sizeOfUnstruct","data","alignment","customAlignmentOf","computeSize","knownSize","isWgslStruct","isUnstruct","isWgslArray","isDisarray","isDecorated","isLooseDecorated","getCustomSize","cachedSizes","schema","PUBLIC_sizeOf","arrayOf","elementType","elementCount","WgslArrayImpl","sizeOf","$internal","disarrayOf","elementType","count","DisarrayImpl","elementCount","$internal","unstruct","properties","props","UnstructImpl","$internal","label","setName","getName","atomic","data","AtomicImpl","inner","$internal","attribute","data","attrib","isDecorated","DecoratedImpl","isLooseDecorated","LooseDecoratedImpl","isLooseData","align","alignment","$internal","size","location","interpolate","interpolationType","isBuiltin","value","isBuiltinAttrib","getAttributesString","field","BaseDecoratedImpl","inner","attribs","alignAttrib","isAlignAttrib","sizeAttrib","isSizeAttrib","isWgslData","alignmentOf","sizeOf","defineBuiltin","dataType","value","attribute","$internal","builtin","u32","vec4f","arrayOf","f32","vec3u"]}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import{Aa as g,Ca as se,D as V,Da as te,Ea as ce,H as ye,a as we,ba as a,ea as v,f as ue,ka as H,ma as b,na as I,oa as L,pa as _,qa as o,ra as d,sa as M,ta as U,ua as W,va as f,wa as z,xa as A,ya as C,z as m,za as q}from"./chunk-L7HIBZAX.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),re=(e,n)=>e.x*n.x+e.y*n.y,ae=(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,c=(e,n,s)=>Math.min(Math.max(n,e),s),x=e=>n=>b(e(n.x),e(n.y)),w=e=>n=>I(e(n.x),e(n.y)),N=e=>n=>L(e(n.x),e(n.y)),K=e=>n=>_(e(n.x),e(n.y)),y=e=>n=>d(e(n.x),e(n.y),e(n.z)),l=e=>n=>M(e(n.x),e(n.y),e(n.z)),R=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)),u=e=>n=>z(e(n.x),e(n.y),e(n.z),e(n.w)),i=e=>n=>A(e(n.x),e(n.y),e(n.z),e(n.w)),$=e=>n=>C(e(n.x),e(n.y),e(n.z),e(n.w)),O=e=>n=>q(e(n.x),e(n.y),e(n.z),e(n.w)),le=e=>n=>{let s=n.columns;return se(x(e)(s[0]),x(e)(s[1]))},ie=e=>n=>{let s=n.columns;return te(y(e)(s[0]),y(e)(s[1]),y(e)(s[2]))},me=e=>n=>{let s=n.columns;return ce(u(e)(s[0]),u(e)(s[1]),u(e)(s[2]),u(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)),B=e=>(n,s)=>d(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)),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)=>z(e(n.x,s.x),e(n.y,s.y),e(n.z,s.z),e(n.w,s.w)),Z=e=>(n,s)=>A(e(n.x,s.x),e(n.y,s.y),e(n.z,s.z),e(n.w,s.w)),ee=e=>(n,s)=>C(e(n.x,s.x),e(n.y,s.y),e(n.z,s.z),e(n.w,s.w)),ne=e=>(n,s)=>q(e(n.x,s.x),e(n.y,s.y),e(n.z,s.z),e(n.w,s.w)),ge=e=>(n,s)=>{let t=n.columns,T=s.columns;return se(F(e)(t[0],T[0]),F(e)(t[1],T[1]))},de=e=>(n,s)=>{let t=n.columns,T=s.columns;return te(B(e)(t[0],T[0]),B(e)(t[1],T[1]),B(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]))},h={divInteger:(e,n)=>n===0?e:Math.trunc(e/n)},r={eq:{vec2f:(e,n)=>o(e.x===n.x,e.y===n.y),vec2h:(e,n)=>o(e.x===n.x,e.y===n.y),vec2i:(e,n)=>o(e.x===n.x,e.y===n.y),vec2u:(e,n)=>o(e.x===n.x,e.y===n.y),"vec2<bool>":(e,n)=>o(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)=>o(e.x<n.x,e.y<n.y),vec2h:(e,n)=>o(e.x<n.x,e.y<n.y),vec2i:(e,n)=>o(e.x<n.x,e.y<n.y),vec2u:(e,n)=>o(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)=>o(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:x(Math.abs),vec2h:w(Math.abs),vec2i:N(Math.abs),vec2u:K(Math.abs),vec3f:y(Math.abs),vec3h:l(Math.abs),vec3i:R(Math.abs),vec3u:k(Math.abs),vec4f:u(Math.abs),vec4h:i(Math.abs),vec4i:$(Math.abs),vec4u:O(Math.abs)},atan2:{vec2f:F(Math.atan2),vec2h:j(Math.atan2),vec3f:B(Math.atan2),vec3h:P(Math.atan2),vec4f:p(Math.atan2),vec4h:Z(Math.atan2)},acos:{vec2f:x(Math.acos),vec2h:w(Math.acos),vec2i:N(Math.acos),vec2u:K(Math.acos),vec3f:y(Math.acos),vec3h:l(Math.acos),vec3i:R(Math.acos),vec3u:k(Math.acos),vec4f:u(Math.acos),vec4h:i(Math.acos),vec4i:$(Math.acos),vec4u:O(Math.acos)},asin:{vec2f:x(Math.asin),vec2h:w(Math.asin),vec2i:N(Math.asin),vec2u:K(Math.asin),vec3f:y(Math.asin),vec3h:l(Math.asin),vec3i:R(Math.asin),vec3u:k(Math.asin),vec4f:u(Math.asin),vec4h:i(Math.asin),vec4i:$(Math.asin),vec4u:O(Math.asin)},ceil:{vec2f:x(Math.ceil),vec2h:w(Math.ceil),vec3f:y(Math.ceil),vec3h:l(Math.ceil),vec4f:u(Math.ceil),vec4h:i(Math.ceil)},clamp:{vec2f:(e,n,s)=>b(c(e.x,n.x,s.x),c(e.y,n.y,s.y)),vec2h:(e,n,s)=>I(c(e.x,n.x,s.x),c(e.y,n.y,s.y)),vec2i:(e,n,s)=>L(c(e.x,n.x,s.x),c(e.y,n.y,s.y)),vec2u:(e,n,s)=>_(c(e.x,n.x,s.x),c(e.y,n.y,s.y)),vec3f:(e,n,s)=>d(c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z)),vec3h:(e,n,s)=>M(c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z)),vec3i:(e,n,s)=>U(c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z)),vec3u:(e,n,s)=>W(c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z)),vec4f:(e,n,s)=>z(c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z),c(e.w,n.w,s.w)),vec4h:(e,n,s)=>A(c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z),c(e.w,n.w,s.w)),vec4i:(e,n,s)=>C(c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z),c(e.w,n.w,s.w)),vec4u:(e,n,s)=>q(c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z),c(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:B((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:ge((e,n)=>e+n),mat3x3f:de((e,n)=>e+n),mat4x4f:he((e,n)=>e+n)},addMixed:{vec2f:(e,n)=>x(s=>s+n)(e),vec2h:(e,n)=>w(s=>s+n)(e),vec2i:(e,n)=>N(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)=>R(s=>s+n)(e),vec3u:(e,n)=>k(s=>s+n)(e),vec4f:(e,n)=>u(s=>s+n)(e),vec4h:(e,n)=>i(s=>s+n)(e),vec4i:(e,n)=>$(s=>s+n)(e),vec4u:(e,n)=>O(s=>s+n)(e),mat2x2f:(e,n)=>le(s=>s+n)(e),mat3x3f:(e,n)=>ie(s=>s+n)(e),mat4x4f:(e,n)=>me(s=>s+n)(e)},mulSxV:{vec2f:(e,n)=>x(s=>e*s)(n),vec2h:(e,n)=>w(s=>e*s)(n),vec2i:(e,n)=>N(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)=>R(s=>e*s)(n),vec3u:(e,n)=>k(s=>e*s)(n),vec4f:(e,n)=>u(s=>e*s)(n),vec4h:(e,n)=>i(s=>e*s)(n),vec4i:(e,n)=>$(s=>e*s)(n),vec4u:(e,n)=>O(s=>e*s)(n),mat2x2f:(e,n)=>le(s=>e*s)(n),mat3x3f:(e,n)=>ie(s=>e*s)(n),mat4x4f:(e,n)=>me(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:B((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 d(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 z(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 d(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 z(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(h.divInteger),vec2u:Q(h.divInteger),vec3f:B((e,n)=>e/n),vec3h:P((e,n)=>e/n),vec3i:X(h.divInteger),vec3u:Y(h.divInteger),vec4f:p((e,n)=>e/n),vec4h:Z((e,n)=>e/n),vec4i:ee(h.divInteger),vec4u:ne(h.divInteger)},divMixed:{vec2f:(e,n)=>x(s=>s/n)(e),vec2h:(e,n)=>w(s=>s/n)(e),vec2i:(e,n)=>N(s=>h.divInteger(s,n))(e),vec2u:(e,n)=>K(s=>h.divInteger(s,n))(e),vec3f:(e,n)=>y(s=>s/n)(e),vec3h:(e,n)=>l(s=>s/n)(e),vec3i:(e,n)=>R(s=>h.divInteger(s,n))(e),vec3u:(e,n)=>k(s=>h.divInteger(s,n))(e),vec4f:(e,n)=>u(s=>s/n)(e),vec4h:(e,n)=>i(s=>s/n)(e),vec4i:(e,n)=>$(s=>h.divInteger(s,n))(e),vec4u:(e,n)=>O(s=>h.divInteger(s,n))(e)},dot:{vec2f:re,vec2h:re,vec2i:re,vec2u:re,vec3f:ae,vec3h:ae,vec3i:ae,vec3u:ae,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 d(e.x/n,e.y/n,e.z/n)},vec3h:e=>{let n=D(e);return M(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 z(e.x/n,e.y/n,e.z/n,e.w/n)},vec4h:e=>{let n=E(e);return A(e.x/n,e.y/n,e.z/n,e.w/n)},vec4i:e=>{let n=E(e);return C(e.x/n,e.y/n,e.z/n,e.w/n)},vec4u:e=>{let n=E(e);return q(e.x/n,e.y/n,e.z/n,e.w/n)}},cross:{vec3f:(e,n)=>d(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)=>M(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:x(Math.floor),vec2h:w(Math.floor),vec3f:y(Math.floor),vec3h:l(Math.floor),vec4f:u(Math.floor),vec4h:i(Math.floor)},max:{vec2f:F(Math.max),vec2h:j(Math.max),vec2i:J(Math.max),vec2u:Q(Math.max),vec3f:B(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:B(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)=>d(e.x**n.x,e.y**n.y,e.z**n.z),vec3h:(e,n)=>M(e.x**n.x,e.y**n.y,e.z**n.z),vec4f:(e,n)=>z(e.x**n.x,e.y**n.y,e.z**n.z,e.w**n.w),vec4h:(e,n)=>A(e.x**n.x,e.y**n.y,e.z**n.z,e.w**n.w)},sign:{vec2f:x(Math.sign),vec2h:w(Math.sign),vec2i:N(Math.sign),vec3f:y(Math.sign),vec3h:l(Math.sign),vec3i:R(Math.sign),vec4f:u(Math.sign),vec4h:i(Math.sign),vec4i:$(Math.sign)},sqrt:{vec2f:x(Math.sqrt),vec2h:w(Math.sqrt),vec3f:y(Math.sqrt),vec3h:l(Math.sqrt),vec4f:u(Math.sqrt),vec4h:i(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"?d(e.x*(1-s)+n.x*s,e.y*(1-s)+n.y*s,e.z*(1-s)+n.z*s):d(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"?M(e.x*(1-s)+n.x*s,e.y*(1-s)+n.y*s,e.z*(1-s)+n.z*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),vec4f:(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,e.w*(1-s)+n.w*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,e.w*(1-s.w)+n.w*s.w),vec4h:(e,n,s)=>typeof s=="number"?A(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):A(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:x(Math.sin),vec2h:w(Math.sin),vec3f:y(Math.sin),vec3h:l(Math.sin),vec4f:u(Math.sin),vec4h:i(Math.sin)},cos:{vec2f:x(Math.cos),vec2h:w(Math.cos),vec3f:y(Math.cos),vec3h:l(Math.cos),vec4f:u(Math.cos),vec4h:i(Math.cos)},exp:{vec2f:x(Math.exp),vec2h:w(Math.exp),vec3f:y(Math.exp),vec3h:l(Math.exp),vec4f:u(Math.exp),vec4h:i(Math.exp)},fract:{vec2f:x(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:u(e=>e-Math.floor(e)),vec4h:i(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:x(e=>-e),vec2h:w(e=>-e),vec2i:N(e=>-e),vec2u:K(e=>-e),"vec2<bool>":e=>o(!e.x,!e.y),vec3f:y(e=>-e),vec3h:l(e=>-e),vec3i:R(e=>-e),vec3u:k(e=>-e),"vec3<bool>":e=>f(!e.x,!e.y,!e.z),vec4f:u(e=>-e),vec4h:i(e=>-e),vec4i:$(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)=>o(s.x?n.x:e.x,s.y?n.y:e.y),vec3f:(e,n,s)=>d(s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z),vec3h:(e,n,s)=>M(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)=>z(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)=>A(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)=>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),vec4u:(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),"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)}};function G(e){return Te(e.dataType)}function Te(e){let n=e?.type;return!!e?.[we]&&(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"&&m(n))return r.addMixed[n.kind](n,e);if(m(e)&&typeof n=="number")return r.addMixed[e.kind](e,n);if(m(e)&&m(n)||V(e)&&V(n))return r.add[e.kind](e,n);throw new Error("Add/Sub called with invalid arguments.")}var _e=v(oe,(e,n)=>a(`(${e.value} + ${n.value})`,G(e)?n.dataType:e.dataType),"coerce");function be(e,n){return oe(e,xe(-1,n))}var fe=v(be,(e,n)=>a(`(${e.value} - ${n.value})`,G(e)?n.dataType:e.dataType),"coerce");function ze(e,n){if(typeof e=="number"&&typeof n=="number")return e*n;if(typeof e=="number"&&(m(n)||V(n)))return r.mulSxV[n.kind](e,n);if((m(e)||V(e))&&typeof n=="number")return r.mulSxV[e.kind](n,e);if(m(e)&&m(n))return r.mulVxV[e.kind](e,n);if(ye(e)&&V(n))return r.mulVxM[n.kind](e,n);if(V(e)&&ye(n))return r.mulMxV[e.kind](e,n);if(V(e)&&V(n))return r.mulVxV[e.kind](e,n);throw new Error("Mul called with invalid arguments.")}var xe=v(ze,(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)});function Me(e,n){if(typeof e=="number"&&typeof n=="number")return e/n;if(typeof e=="number"&&m(n))return r.divMixed[n.kind](n,e);if(m(e)&&typeof n=="number")return r.divMixed[e.kind](e,n);if(m(e)&&m(n))return r.div[e.kind](e,n);throw new Error("Div called with invalid arguments.")}var Ue=v(Me,(e,n)=>G(e)&&G(n)?a(`(f32(${e.value}) / ${n.value})`,H):a(`(${e.value} / ${n.value})`,e.dataType));ue(xe,"mul");var We=v(e=>typeof e=="number"?Math.abs(e):r.abs[e.kind](e),e=>a(`abs(${e.value})`,e.dataType)),Ce=v((e,n)=>typeof e=="number"&&typeof n=="number"?Math.atan2(e,n):r.atan2[e.kind](e,n),(e,n)=>a(`atan2(${e.value}, ${n.value})`,e.dataType)),qe=v(e=>typeof e=="number"?Math.acos(e):r.acos[e.kind](e),e=>a(`acos(${e.value})`,e.dataType)),Se=v(e=>typeof e=="number"?Math.asin(e):r.asin[e.kind](e),e=>a(`asin(${e.value})`,e.dataType)),De=v(e=>typeof e=="number"?Math.ceil(e):r.ceil[e.kind](e),e=>a(`ceil(${e.value})`,e.dataType)),Ee=v((e,n,s)=>typeof e=="number"?Math.min(Math.max(n,e),s):r.clamp[e.kind](e,n,s),(e,n,s)=>a(`clamp(${e.value}, ${n.value}, ${s.value})`,e.dataType)),je=v(e=>typeof e=="number"?Math.cos(e):r.cos[e.kind](e),e=>a(`cos(${e.value})`,e.dataType)),Pe=v((e,n)=>r.cross[e.kind](e,n),(e,n)=>a(`cross(${e.value}, ${n.value})`,e.dataType)),pe=v((e,n)=>r.dot[e.kind](e,n),(e,n)=>a(`dot(${e.value}, ${n.value})`,H)),Ze=v(e=>r.normalize[e.kind](e),e=>a(`normalize(${e.value})`,e.dataType)),Ge=v(e=>typeof e=="number"?Math.floor(e):r.floor[e.kind](e),e=>a(`floor(${e.value})`,e.dataType)),He=v(e=>typeof e=="number"?e-Math.floor(e):r.fract[e.kind](e),e=>a(`fract(${e.value})`,e.dataType)),Ve=v(e=>typeof e=="number"?Math.abs(e):r.length[e.kind](e),e=>a(`length(${e.value})`,H)),Je=v((e,n)=>typeof e=="number"?Math.max(e,n):r.max[e.kind](e,n),(e,n)=>a(`max(${e.value}, ${n.value})`,e.dataType),"coerce"),Qe=v((e,n)=>typeof e=="number"?Math.min(e,n):r.min[e.kind](e,n),(e,n)=>a(`min(${e.value}, ${n.value})`,e.dataType),"coerce"),Xe=v(e=>typeof e=="number"?Math.sign(e):r.sign[e.kind](e),e=>a(`sign(${e.value})`,e.dataType)),Ye=v(e=>typeof e=="number"?Math.sin(e):r.sin[e.kind](e),e=>a(`sin(${e.value})`,e.dataType)),en=v(e=>typeof e=="number"?Math.exp(e):r.exp[e.kind](e),e=>a(`exp(${e.value})`,e.dataType)),Ie=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 r.pow[e.kind](e,n);throw new Error("Invalid arguments to pow()")},(e,n)=>a(`pow(${e.value}, ${n.value})`,e.dataType));ue(Ie,"pow");var nn=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 r.mix[e.kind](e,n,s)},(e,n,s)=>a(`mix(${e.value}, ${n.value}, ${s.value})`,e.dataType)),sn=v((e,n)=>fe(e,xe(2*pe(n,e),n)),(e,n)=>a(`reflect(${e.value}, ${n.value})`,e.dataType)),tn=v((e,n)=>typeof e=="number"&&typeof n=="number"?Math.abs(e-n):Ve(fe(e,n)),(e,n)=>a(`distance(${e.value}, ${n.value})`,H)),cn=v(e=>typeof e=="number"?-e:r.neg[e.kind](e),e=>a(`-(${e.value})`,e.dataType)),rn=v(e=>typeof e=="number"?Math.sqrt(e):r.sqrt[e.kind](e),e=>a(`sqrt(${e.value})`,e.dataType));export{r as a,G as b,Te as c,_e as d,fe as e,xe as f,Ue as g,We as h,Ce as i,qe as j,Se as k,De as l,Ee as m,je as n,Pe as o,pe as p,Ze as q,Ge as r,He as s,Ve as t,Je as u,Qe as v,Xe as w,Ye as x,en as y,Ie as z,nn as A,sn as B,tn as C,cn as D,rn as E};
|
2
|
+
//# sourceMappingURL=chunk-SLWTVY6K.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/data/vectorOps.ts","../src/std/numeric.ts"],"sourcesContent":["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 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 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 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","import { 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 { type AnyData, snip, type Snippet } from '../data/dataTypes.ts';\nimport { $internal } from '../shared/symbols.ts';\nimport { setName } from '../name.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 '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);\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);\nsetName(mul, 'mul');\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);\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);\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 as AnyFloatVecInstance).kind](\n value as never,\n ) as T;\n },\n // GPU implementation\n (value) => snip(`acos(${value.value})`, value.dataType),\n);\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 as AnyFloatVecInstance).kind](\n value as never,\n ) as T;\n },\n // GPU implementation\n (value) => snip(`asin(${value.value})`, 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 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);\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);\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);\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);\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);\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);\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);\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);\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);\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 '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 '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);\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);\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);\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);\nsetName(pow, 'pow');\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);\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);\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);\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);\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);\n"],"mappings":"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AG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAClBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EACdpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAClBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EACdpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAClBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EACdpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAClBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EACdpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAClBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EACdpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAClBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EACdpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAChBpB,EAAG,CAAC,EAAE,EAAIoB,EAAG,CAAC,EAAE,EAClBpB,EAAG,CAAC,EAAE,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","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","f","t","c","isSnippetNumeric","snippet","isNumericSchema","schema","type","$internal","cpuAdd","lhs","rhs","isVecInstance","VectorOps","isMatInstance","add","createDualImpl","snip","cpuSub","mul","sub","cpuMul","isFloat32VecInstance","returnType","cpuDiv","div","f32","setName","abs","value","atan2","y","x","acos","asin","ceil","clamp","low","high","cos","cross","a","b","dot","normalize","v","floor","fract","length","max","min","sign","sin","exp","pow","base","exponent","mix","e1","e2","e3","reflect","distance","neg","sqrt"]}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkV4CSEIB2cjs = require('./chunk-V4CSEIB2.cjs');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),re=(e,n)=>e.x*n.x+e.y*n.y,ae=(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,c=(e,n,s)=>Math.min(Math.max(n,e),s),x=e=>n=>_chunkV4CSEIB2cjs.ma.call(void 0, e(n.x),e(n.y)),w=e=>n=>_chunkV4CSEIB2cjs.na.call(void 0, e(n.x),e(n.y)),N=e=>n=>_chunkV4CSEIB2cjs.oa.call(void 0, e(n.x),e(n.y)),K=e=>n=>_chunkV4CSEIB2cjs.pa.call(void 0, e(n.x),e(n.y)),y=e=>n=>_chunkV4CSEIB2cjs.ra.call(void 0, e(n.x),e(n.y),e(n.z)),l=e=>n=>_chunkV4CSEIB2cjs.sa.call(void 0, e(n.x),e(n.y),e(n.z)),R=e=>n=>_chunkV4CSEIB2cjs.ta.call(void 0, e(n.x),e(n.y),e(n.z)),k=e=>n=>_chunkV4CSEIB2cjs.ua.call(void 0, e(n.x),e(n.y),e(n.z)),u=e=>n=>_chunkV4CSEIB2cjs.wa.call(void 0, e(n.x),e(n.y),e(n.z),e(n.w)),i=e=>n=>_chunkV4CSEIB2cjs.xa.call(void 0, e(n.x),e(n.y),e(n.z),e(n.w)),$=e=>n=>_chunkV4CSEIB2cjs.ya.call(void 0, e(n.x),e(n.y),e(n.z),e(n.w)),O=e=>n=>_chunkV4CSEIB2cjs.za.call(void 0, e(n.x),e(n.y),e(n.z),e(n.w)),le=e=>n=>{let s=n.columns;return _chunkV4CSEIB2cjs.Ca.call(void 0, x(e)(s[0]),x(e)(s[1]))},ie=e=>n=>{let s=n.columns;return _chunkV4CSEIB2cjs.Da.call(void 0, y(e)(s[0]),y(e)(s[1]),y(e)(s[2]))},me=e=>n=>{let s=n.columns;return _chunkV4CSEIB2cjs.Ea.call(void 0, u(e)(s[0]),u(e)(s[1]),u(e)(s[2]),u(e)(s[3]))},F=e=>(n,s)=>_chunkV4CSEIB2cjs.ma.call(void 0, e(n.x,s.x),e(n.y,s.y)),j=e=>(n,s)=>_chunkV4CSEIB2cjs.na.call(void 0, e(n.x,s.x),e(n.y,s.y)),J=e=>(n,s)=>_chunkV4CSEIB2cjs.oa.call(void 0, e(n.x,s.x),e(n.y,s.y)),Q=e=>(n,s)=>_chunkV4CSEIB2cjs.pa.call(void 0, e(n.x,s.x),e(n.y,s.y)),B=e=>(n,s)=>_chunkV4CSEIB2cjs.ra.call(void 0, e(n.x,s.x),e(n.y,s.y),e(n.z,s.z)),P=e=>(n,s)=>_chunkV4CSEIB2cjs.sa.call(void 0, e(n.x,s.x),e(n.y,s.y),e(n.z,s.z)),X=e=>(n,s)=>_chunkV4CSEIB2cjs.ta.call(void 0, e(n.x,s.x),e(n.y,s.y),e(n.z,s.z)),Y=e=>(n,s)=>_chunkV4CSEIB2cjs.ua.call(void 0, e(n.x,s.x),e(n.y,s.y),e(n.z,s.z)),p=e=>(n,s)=>_chunkV4CSEIB2cjs.wa.call(void 0, e(n.x,s.x),e(n.y,s.y),e(n.z,s.z),e(n.w,s.w)),Z=e=>(n,s)=>_chunkV4CSEIB2cjs.xa.call(void 0, e(n.x,s.x),e(n.y,s.y),e(n.z,s.z),e(n.w,s.w)),ee=e=>(n,s)=>_chunkV4CSEIB2cjs.ya.call(void 0, e(n.x,s.x),e(n.y,s.y),e(n.z,s.z),e(n.w,s.w)),ne=e=>(n,s)=>_chunkV4CSEIB2cjs.za.call(void 0, e(n.x,s.x),e(n.y,s.y),e(n.z,s.z),e(n.w,s.w)),ge=e=>(n,s)=>{let t=n.columns,T=s.columns;return _chunkV4CSEIB2cjs.Ca.call(void 0, F(e)(t[0],T[0]),F(e)(t[1],T[1]))},de=e=>(n,s)=>{let t=n.columns,T=s.columns;return _chunkV4CSEIB2cjs.Da.call(void 0, B(e)(t[0],T[0]),B(e)(t[1],T[1]),B(e)(t[2],T[2]))},he=e=>(n,s)=>{let t=n.columns,T=s.columns;return _chunkV4CSEIB2cjs.Ea.call(void 0, p(e)(t[0],T[0]),p(e)(t[1],T[1]),p(e)(t[2],T[2]),p(e)(t[3],T[3]))},h={divInteger:(e,n)=>n===0?e:Math.trunc(e/n)},r= exports.a ={eq:{vec2f:(e,n)=>_chunkV4CSEIB2cjs.qa.call(void 0, e.x===n.x,e.y===n.y),vec2h:(e,n)=>_chunkV4CSEIB2cjs.qa.call(void 0, e.x===n.x,e.y===n.y),vec2i:(e,n)=>_chunkV4CSEIB2cjs.qa.call(void 0, e.x===n.x,e.y===n.y),vec2u:(e,n)=>_chunkV4CSEIB2cjs.qa.call(void 0, e.x===n.x,e.y===n.y),"vec2<bool>":(e,n)=>_chunkV4CSEIB2cjs.qa.call(void 0, e.x===n.x,e.y===n.y),vec3f:(e,n)=>_chunkV4CSEIB2cjs.va.call(void 0, e.x===n.x,e.y===n.y,e.z===n.z),vec3h:(e,n)=>_chunkV4CSEIB2cjs.va.call(void 0, e.x===n.x,e.y===n.y,e.z===n.z),vec3i:(e,n)=>_chunkV4CSEIB2cjs.va.call(void 0, e.x===n.x,e.y===n.y,e.z===n.z),vec3u:(e,n)=>_chunkV4CSEIB2cjs.va.call(void 0, e.x===n.x,e.y===n.y,e.z===n.z),"vec3<bool>":(e,n)=>_chunkV4CSEIB2cjs.va.call(void 0, e.x===n.x,e.y===n.y,e.z===n.z),vec4f:(e,n)=>_chunkV4CSEIB2cjs.Aa.call(void 0, e.x===n.x,e.y===n.y,e.z===n.z,e.w===n.w),vec4h:(e,n)=>_chunkV4CSEIB2cjs.Aa.call(void 0, e.x===n.x,e.y===n.y,e.z===n.z,e.w===n.w),vec4i:(e,n)=>_chunkV4CSEIB2cjs.Aa.call(void 0, e.x===n.x,e.y===n.y,e.z===n.z,e.w===n.w),vec4u:(e,n)=>_chunkV4CSEIB2cjs.Aa.call(void 0, e.x===n.x,e.y===n.y,e.z===n.z,e.w===n.w),"vec4<bool>":(e,n)=>_chunkV4CSEIB2cjs.Aa.call(void 0, e.x===n.x,e.y===n.y,e.z===n.z,e.w===n.w)},lt:{vec2f:(e,n)=>_chunkV4CSEIB2cjs.qa.call(void 0, e.x<n.x,e.y<n.y),vec2h:(e,n)=>_chunkV4CSEIB2cjs.qa.call(void 0, e.x<n.x,e.y<n.y),vec2i:(e,n)=>_chunkV4CSEIB2cjs.qa.call(void 0, e.x<n.x,e.y<n.y),vec2u:(e,n)=>_chunkV4CSEIB2cjs.qa.call(void 0, e.x<n.x,e.y<n.y),vec3f:(e,n)=>_chunkV4CSEIB2cjs.va.call(void 0, e.x<n.x,e.y<n.y,e.z<n.z),vec3h:(e,n)=>_chunkV4CSEIB2cjs.va.call(void 0, e.x<n.x,e.y<n.y,e.z<n.z),vec3i:(e,n)=>_chunkV4CSEIB2cjs.va.call(void 0, e.x<n.x,e.y<n.y,e.z<n.z),vec3u:(e,n)=>_chunkV4CSEIB2cjs.va.call(void 0, e.x<n.x,e.y<n.y,e.z<n.z),vec4f:(e,n)=>_chunkV4CSEIB2cjs.Aa.call(void 0, e.x<n.x,e.y<n.y,e.z<n.z,e.w<n.w),vec4h:(e,n)=>_chunkV4CSEIB2cjs.Aa.call(void 0, e.x<n.x,e.y<n.y,e.z<n.z,e.w<n.w),vec4i:(e,n)=>_chunkV4CSEIB2cjs.Aa.call(void 0, e.x<n.x,e.y<n.y,e.z<n.z,e.w<n.w),vec4u:(e,n)=>_chunkV4CSEIB2cjs.Aa.call(void 0, e.x<n.x,e.y<n.y,e.z<n.z,e.w<n.w)},or:{"vec2<bool>":(e,n)=>_chunkV4CSEIB2cjs.qa.call(void 0, e.x||n.x,e.y||n.y),"vec3<bool>":(e,n)=>_chunkV4CSEIB2cjs.va.call(void 0, e.x||n.x,e.y||n.y,e.z||n.z),"vec4<bool>":(e,n)=>_chunkV4CSEIB2cjs.Aa.call(void 0, 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:x(Math.abs),vec2h:w(Math.abs),vec2i:N(Math.abs),vec2u:K(Math.abs),vec3f:y(Math.abs),vec3h:l(Math.abs),vec3i:R(Math.abs),vec3u:k(Math.abs),vec4f:u(Math.abs),vec4h:i(Math.abs),vec4i:$(Math.abs),vec4u:O(Math.abs)},atan2:{vec2f:F(Math.atan2),vec2h:j(Math.atan2),vec3f:B(Math.atan2),vec3h:P(Math.atan2),vec4f:p(Math.atan2),vec4h:Z(Math.atan2)},acos:{vec2f:x(Math.acos),vec2h:w(Math.acos),vec2i:N(Math.acos),vec2u:K(Math.acos),vec3f:y(Math.acos),vec3h:l(Math.acos),vec3i:R(Math.acos),vec3u:k(Math.acos),vec4f:u(Math.acos),vec4h:i(Math.acos),vec4i:$(Math.acos),vec4u:O(Math.acos)},asin:{vec2f:x(Math.asin),vec2h:w(Math.asin),vec2i:N(Math.asin),vec2u:K(Math.asin),vec3f:y(Math.asin),vec3h:l(Math.asin),vec3i:R(Math.asin),vec3u:k(Math.asin),vec4f:u(Math.asin),vec4h:i(Math.asin),vec4i:$(Math.asin),vec4u:O(Math.asin)},ceil:{vec2f:x(Math.ceil),vec2h:w(Math.ceil),vec3f:y(Math.ceil),vec3h:l(Math.ceil),vec4f:u(Math.ceil),vec4h:i(Math.ceil)},clamp:{vec2f:(e,n,s)=>_chunkV4CSEIB2cjs.ma.call(void 0, c(e.x,n.x,s.x),c(e.y,n.y,s.y)),vec2h:(e,n,s)=>_chunkV4CSEIB2cjs.na.call(void 0, c(e.x,n.x,s.x),c(e.y,n.y,s.y)),vec2i:(e,n,s)=>_chunkV4CSEIB2cjs.oa.call(void 0, c(e.x,n.x,s.x),c(e.y,n.y,s.y)),vec2u:(e,n,s)=>_chunkV4CSEIB2cjs.pa.call(void 0, c(e.x,n.x,s.x),c(e.y,n.y,s.y)),vec3f:(e,n,s)=>_chunkV4CSEIB2cjs.ra.call(void 0, c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z)),vec3h:(e,n,s)=>_chunkV4CSEIB2cjs.sa.call(void 0, c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z)),vec3i:(e,n,s)=>_chunkV4CSEIB2cjs.ta.call(void 0, c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z)),vec3u:(e,n,s)=>_chunkV4CSEIB2cjs.ua.call(void 0, c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z)),vec4f:(e,n,s)=>_chunkV4CSEIB2cjs.wa.call(void 0, c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z),c(e.w,n.w,s.w)),vec4h:(e,n,s)=>_chunkV4CSEIB2cjs.xa.call(void 0, c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z),c(e.w,n.w,s.w)),vec4i:(e,n,s)=>_chunkV4CSEIB2cjs.ya.call(void 0, c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z),c(e.w,n.w,s.w)),vec4u:(e,n,s)=>_chunkV4CSEIB2cjs.za.call(void 0, c(e.x,n.x,s.x),c(e.y,n.y,s.y),c(e.z,n.z,s.z),c(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:B((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:ge((e,n)=>e+n),mat3x3f:de((e,n)=>e+n),mat4x4f:he((e,n)=>e+n)},addMixed:{vec2f:(e,n)=>x(s=>s+n)(e),vec2h:(e,n)=>w(s=>s+n)(e),vec2i:(e,n)=>N(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)=>R(s=>s+n)(e),vec3u:(e,n)=>k(s=>s+n)(e),vec4f:(e,n)=>u(s=>s+n)(e),vec4h:(e,n)=>i(s=>s+n)(e),vec4i:(e,n)=>$(s=>s+n)(e),vec4u:(e,n)=>O(s=>s+n)(e),mat2x2f:(e,n)=>le(s=>s+n)(e),mat3x3f:(e,n)=>ie(s=>s+n)(e),mat4x4f:(e,n)=>me(s=>s+n)(e)},mulSxV:{vec2f:(e,n)=>x(s=>e*s)(n),vec2h:(e,n)=>w(s=>e*s)(n),vec2i:(e,n)=>N(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)=>R(s=>e*s)(n),vec3u:(e,n)=>k(s=>e*s)(n),vec4f:(e,n)=>u(s=>e*s)(n),vec4h:(e,n)=>i(s=>e*s)(n),vec4i:(e,n)=>$(s=>e*s)(n),vec4u:(e,n)=>O(s=>e*s)(n),mat2x2f:(e,n)=>le(s=>e*s)(n),mat3x3f:(e,n)=>ie(s=>e*s)(n),mat4x4f:(e,n)=>me(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:B((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 _chunkV4CSEIB2cjs.Ca.call(void 0, 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 _chunkV4CSEIB2cjs.Da.call(void 0, 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 _chunkV4CSEIB2cjs.Ea.call(void 0, 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 _chunkV4CSEIB2cjs.ma.call(void 0, 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 _chunkV4CSEIB2cjs.ra.call(void 0, 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 _chunkV4CSEIB2cjs.wa.call(void 0, 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 _chunkV4CSEIB2cjs.ma.call(void 0, 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 _chunkV4CSEIB2cjs.ra.call(void 0, 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 _chunkV4CSEIB2cjs.wa.call(void 0, 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(h.divInteger),vec2u:Q(h.divInteger),vec3f:B((e,n)=>e/n),vec3h:P((e,n)=>e/n),vec3i:X(h.divInteger),vec3u:Y(h.divInteger),vec4f:p((e,n)=>e/n),vec4h:Z((e,n)=>e/n),vec4i:ee(h.divInteger),vec4u:ne(h.divInteger)},divMixed:{vec2f:(e,n)=>x(s=>s/n)(e),vec2h:(e,n)=>w(s=>s/n)(e),vec2i:(e,n)=>N(s=>h.divInteger(s,n))(e),vec2u:(e,n)=>K(s=>h.divInteger(s,n))(e),vec3f:(e,n)=>y(s=>s/n)(e),vec3h:(e,n)=>l(s=>s/n)(e),vec3i:(e,n)=>R(s=>h.divInteger(s,n))(e),vec3u:(e,n)=>k(s=>h.divInteger(s,n))(e),vec4f:(e,n)=>u(s=>s/n)(e),vec4h:(e,n)=>i(s=>s/n)(e),vec4i:(e,n)=>$(s=>h.divInteger(s,n))(e),vec4u:(e,n)=>O(s=>h.divInteger(s,n))(e)},dot:{vec2f:re,vec2h:re,vec2i:re,vec2u:re,vec3f:ae,vec3h:ae,vec3i:ae,vec3u:ae,vec4f:ve,vec4h:ve,vec4i:ve,vec4u:ve},normalize:{vec2f:e=>{let n=S(e);return _chunkV4CSEIB2cjs.ma.call(void 0, e.x/n,e.y/n)},vec2h:e=>{let n=S(e);return _chunkV4CSEIB2cjs.na.call(void 0, e.x/n,e.y/n)},vec2i:e=>{let n=S(e);return _chunkV4CSEIB2cjs.oa.call(void 0, e.x/n,e.y/n)},vec2u:e=>{let n=S(e);return _chunkV4CSEIB2cjs.pa.call(void 0, e.x/n,e.y/n)},vec3f:e=>{let n=D(e);return _chunkV4CSEIB2cjs.ra.call(void 0, e.x/n,e.y/n,e.z/n)},vec3h:e=>{let n=D(e);return _chunkV4CSEIB2cjs.sa.call(void 0, e.x/n,e.y/n,e.z/n)},vec3i:e=>{let n=D(e);return _chunkV4CSEIB2cjs.ta.call(void 0, e.x/n,e.y/n,e.z/n)},vec3u:e=>{let n=D(e);return _chunkV4CSEIB2cjs.ua.call(void 0, e.x/n,e.y/n,e.z/n)},vec4f:e=>{let n=E(e);return _chunkV4CSEIB2cjs.wa.call(void 0, e.x/n,e.y/n,e.z/n,e.w/n)},vec4h:e=>{let n=E(e);return _chunkV4CSEIB2cjs.xa.call(void 0, e.x/n,e.y/n,e.z/n,e.w/n)},vec4i:e=>{let n=E(e);return _chunkV4CSEIB2cjs.ya.call(void 0, e.x/n,e.y/n,e.z/n,e.w/n)},vec4u:e=>{let n=E(e);return _chunkV4CSEIB2cjs.za.call(void 0, e.x/n,e.y/n,e.z/n,e.w/n)}},cross:{vec3f:(e,n)=>_chunkV4CSEIB2cjs.ra.call(void 0, 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)=>_chunkV4CSEIB2cjs.sa.call(void 0, 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:x(Math.floor),vec2h:w(Math.floor),vec3f:y(Math.floor),vec3h:l(Math.floor),vec4f:u(Math.floor),vec4h:i(Math.floor)},max:{vec2f:F(Math.max),vec2h:j(Math.max),vec2i:J(Math.max),vec2u:Q(Math.max),vec3f:B(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:B(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)=>_chunkV4CSEIB2cjs.ma.call(void 0, e.x**n.x,e.y**n.y),vec2h:(e,n)=>_chunkV4CSEIB2cjs.na.call(void 0, e.x**n.x,e.y**n.y),vec3f:(e,n)=>_chunkV4CSEIB2cjs.ra.call(void 0, e.x**n.x,e.y**n.y,e.z**n.z),vec3h:(e,n)=>_chunkV4CSEIB2cjs.sa.call(void 0, e.x**n.x,e.y**n.y,e.z**n.z),vec4f:(e,n)=>_chunkV4CSEIB2cjs.wa.call(void 0, e.x**n.x,e.y**n.y,e.z**n.z,e.w**n.w),vec4h:(e,n)=>_chunkV4CSEIB2cjs.xa.call(void 0, e.x**n.x,e.y**n.y,e.z**n.z,e.w**n.w)},sign:{vec2f:x(Math.sign),vec2h:w(Math.sign),vec2i:N(Math.sign),vec3f:y(Math.sign),vec3h:l(Math.sign),vec3i:R(Math.sign),vec4f:u(Math.sign),vec4h:i(Math.sign),vec4i:$(Math.sign)},sqrt:{vec2f:x(Math.sqrt),vec2h:w(Math.sqrt),vec3f:y(Math.sqrt),vec3h:l(Math.sqrt),vec4f:u(Math.sqrt),vec4h:i(Math.sqrt)},mix:{vec2f:(e,n,s)=>typeof s=="number"?_chunkV4CSEIB2cjs.ma.call(void 0, e.x*(1-s)+n.x*s,e.y*(1-s)+n.y*s):_chunkV4CSEIB2cjs.ma.call(void 0, 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"?_chunkV4CSEIB2cjs.na.call(void 0, e.x*(1-s)+n.x*s,e.y*(1-s)+n.y*s):_chunkV4CSEIB2cjs.na.call(void 0, 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"?_chunkV4CSEIB2cjs.ra.call(void 0, e.x*(1-s)+n.x*s,e.y*(1-s)+n.y*s,e.z*(1-s)+n.z*s):_chunkV4CSEIB2cjs.ra.call(void 0, 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"?_chunkV4CSEIB2cjs.sa.call(void 0, e.x*(1-s)+n.x*s,e.y*(1-s)+n.y*s,e.z*(1-s)+n.z*s):_chunkV4CSEIB2cjs.sa.call(void 0, 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"?_chunkV4CSEIB2cjs.wa.call(void 0, 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):_chunkV4CSEIB2cjs.wa.call(void 0, 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"?_chunkV4CSEIB2cjs.xa.call(void 0, 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):_chunkV4CSEIB2cjs.xa.call(void 0, 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:x(Math.sin),vec2h:w(Math.sin),vec3f:y(Math.sin),vec3h:l(Math.sin),vec4f:u(Math.sin),vec4h:i(Math.sin)},cos:{vec2f:x(Math.cos),vec2h:w(Math.cos),vec3f:y(Math.cos),vec3h:l(Math.cos),vec4f:u(Math.cos),vec4h:i(Math.cos)},exp:{vec2f:x(Math.exp),vec2h:w(Math.exp),vec3f:y(Math.exp),vec3h:l(Math.exp),vec4f:u(Math.exp),vec4h:i(Math.exp)},fract:{vec2f:x(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:u(e=>e-Math.floor(e)),vec4h:i(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:x(e=>-e),vec2h:w(e=>-e),vec2i:N(e=>-e),vec2u:K(e=>-e),"vec2<bool>":e=>_chunkV4CSEIB2cjs.qa.call(void 0, !e.x,!e.y),vec3f:y(e=>-e),vec3h:l(e=>-e),vec3i:R(e=>-e),vec3u:k(e=>-e),"vec3<bool>":e=>_chunkV4CSEIB2cjs.va.call(void 0, !e.x,!e.y,!e.z),vec4f:u(e=>-e),vec4h:i(e=>-e),vec4i:$(e=>-e),vec4u:O(e=>-e),"vec4<bool>":e=>_chunkV4CSEIB2cjs.Aa.call(void 0, !e.x,!e.y,!e.z,!e.w)},select:{vec2f:(e,n,s)=>_chunkV4CSEIB2cjs.ma.call(void 0, s.x?n.x:e.x,s.y?n.y:e.y),vec2h:(e,n,s)=>_chunkV4CSEIB2cjs.na.call(void 0, s.x?n.x:e.x,s.y?n.y:e.y),vec2i:(e,n,s)=>_chunkV4CSEIB2cjs.oa.call(void 0, s.x?n.x:e.x,s.y?n.y:e.y),vec2u:(e,n,s)=>_chunkV4CSEIB2cjs.pa.call(void 0, s.x?n.x:e.x,s.y?n.y:e.y),"vec2<bool>":(e,n,s)=>_chunkV4CSEIB2cjs.qa.call(void 0, s.x?n.x:e.x,s.y?n.y:e.y),vec3f:(e,n,s)=>_chunkV4CSEIB2cjs.ra.call(void 0, s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z),vec3h:(e,n,s)=>_chunkV4CSEIB2cjs.sa.call(void 0, s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z),vec3i:(e,n,s)=>_chunkV4CSEIB2cjs.ta.call(void 0, s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z),vec3u:(e,n,s)=>_chunkV4CSEIB2cjs.ua.call(void 0, s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z),"vec3<bool>":(e,n,s)=>_chunkV4CSEIB2cjs.va.call(void 0, s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z),vec4f:(e,n,s)=>_chunkV4CSEIB2cjs.wa.call(void 0, 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)=>_chunkV4CSEIB2cjs.xa.call(void 0, 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)=>_chunkV4CSEIB2cjs.ya.call(void 0, 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)=>_chunkV4CSEIB2cjs.za.call(void 0, 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)=>_chunkV4CSEIB2cjs.Aa.call(void 0, s.x?n.x:e.x,s.y?n.y:e.y,s.z?n.z:e.z,s.w?n.w:e.w)}};function G(e){return Te(e.dataType)}function Te(e){let n=_optionalChain([e, 'optionalAccess', _2 => _2.type]);return!!_optionalChain([e, 'optionalAccess', _3 => _3[_chunkV4CSEIB2cjs.a]])&&(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"&&_chunkV4CSEIB2cjs.z.call(void 0, n))return r.addMixed[n.kind](n,e);if(_chunkV4CSEIB2cjs.z.call(void 0, e)&&typeof n=="number")return r.addMixed[e.kind](e,n);if(_chunkV4CSEIB2cjs.z.call(void 0, e)&&_chunkV4CSEIB2cjs.z.call(void 0, n)||_chunkV4CSEIB2cjs.D.call(void 0, e)&&_chunkV4CSEIB2cjs.D.call(void 0, n))return r.add[e.kind](e,n);throw new Error("Add/Sub called with invalid arguments.")}var _e=_chunkV4CSEIB2cjs.ea.call(void 0, oe,(e,n)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} + ${n.value})`,G(e)?n.dataType:e.dataType),"coerce");function be(e,n){return oe(e,xe(-1,n))}var fe=_chunkV4CSEIB2cjs.ea.call(void 0, be,(e,n)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} - ${n.value})`,G(e)?n.dataType:e.dataType),"coerce");function ze(e,n){if(typeof e=="number"&&typeof n=="number")return e*n;if(typeof e=="number"&&(_chunkV4CSEIB2cjs.z.call(void 0, n)||_chunkV4CSEIB2cjs.D.call(void 0, n)))return r.mulSxV[n.kind](e,n);if((_chunkV4CSEIB2cjs.z.call(void 0, e)||_chunkV4CSEIB2cjs.D.call(void 0, e))&&typeof n=="number")return r.mulSxV[e.kind](n,e);if(_chunkV4CSEIB2cjs.z.call(void 0, e)&&_chunkV4CSEIB2cjs.z.call(void 0, n))return r.mulVxV[e.kind](e,n);if(_chunkV4CSEIB2cjs.H.call(void 0, e)&&_chunkV4CSEIB2cjs.D.call(void 0, n))return r.mulVxM[n.kind](e,n);if(_chunkV4CSEIB2cjs.D.call(void 0, e)&&_chunkV4CSEIB2cjs.H.call(void 0, n))return r.mulMxV[e.kind](e,n);if(_chunkV4CSEIB2cjs.D.call(void 0, e)&&_chunkV4CSEIB2cjs.D.call(void 0, n))return r.mulVxV[e.kind](e,n);throw new Error("Mul called with invalid arguments.")}var xe=_chunkV4CSEIB2cjs.ea.call(void 0, ze,(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 _chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} * ${n.value})`,s)});function Me(e,n){if(typeof e=="number"&&typeof n=="number")return e/n;if(typeof e=="number"&&_chunkV4CSEIB2cjs.z.call(void 0, n))return r.divMixed[n.kind](n,e);if(_chunkV4CSEIB2cjs.z.call(void 0, e)&&typeof n=="number")return r.divMixed[e.kind](e,n);if(_chunkV4CSEIB2cjs.z.call(void 0, e)&&_chunkV4CSEIB2cjs.z.call(void 0, n))return r.div[e.kind](e,n);throw new Error("Div called with invalid arguments.")}var Ue=_chunkV4CSEIB2cjs.ea.call(void 0, Me,(e,n)=>G(e)&&G(n)?_chunkV4CSEIB2cjs.ba.call(void 0, `(f32(${e.value}) / ${n.value})`,_chunkV4CSEIB2cjs.ka):_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} / ${n.value})`,e.dataType));_chunkV4CSEIB2cjs.f.call(void 0, xe,"mul");var We=_chunkV4CSEIB2cjs.ea.call(void 0, e=>typeof e=="number"?Math.abs(e):r.abs[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `abs(${e.value})`,e.dataType)),Ce= exports.i =_chunkV4CSEIB2cjs.ea.call(void 0, (e,n)=>typeof e=="number"&&typeof n=="number"?Math.atan2(e,n):r.atan2[e.kind](e,n),(e,n)=>_chunkV4CSEIB2cjs.ba.call(void 0, `atan2(${e.value}, ${n.value})`,e.dataType)),qe= exports.j =_chunkV4CSEIB2cjs.ea.call(void 0, e=>typeof e=="number"?Math.acos(e):r.acos[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `acos(${e.value})`,e.dataType)),Se= exports.k =_chunkV4CSEIB2cjs.ea.call(void 0, e=>typeof e=="number"?Math.asin(e):r.asin[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `asin(${e.value})`,e.dataType)),De= exports.l =_chunkV4CSEIB2cjs.ea.call(void 0, e=>typeof e=="number"?Math.ceil(e):r.ceil[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `ceil(${e.value})`,e.dataType)),Ee= exports.m =_chunkV4CSEIB2cjs.ea.call(void 0, (e,n,s)=>typeof e=="number"?Math.min(Math.max(n,e),s):r.clamp[e.kind](e,n,s),(e,n,s)=>_chunkV4CSEIB2cjs.ba.call(void 0, `clamp(${e.value}, ${n.value}, ${s.value})`,e.dataType)),je= exports.n =_chunkV4CSEIB2cjs.ea.call(void 0, e=>typeof e=="number"?Math.cos(e):r.cos[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `cos(${e.value})`,e.dataType)),Pe= exports.o =_chunkV4CSEIB2cjs.ea.call(void 0, (e,n)=>r.cross[e.kind](e,n),(e,n)=>_chunkV4CSEIB2cjs.ba.call(void 0, `cross(${e.value}, ${n.value})`,e.dataType)),pe= exports.p =_chunkV4CSEIB2cjs.ea.call(void 0, (e,n)=>r.dot[e.kind](e,n),(e,n)=>_chunkV4CSEIB2cjs.ba.call(void 0, `dot(${e.value}, ${n.value})`,_chunkV4CSEIB2cjs.ka)),Ze= exports.q =_chunkV4CSEIB2cjs.ea.call(void 0, e=>r.normalize[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `normalize(${e.value})`,e.dataType)),Ge= exports.r =_chunkV4CSEIB2cjs.ea.call(void 0, e=>typeof e=="number"?Math.floor(e):r.floor[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `floor(${e.value})`,e.dataType)),He= exports.s =_chunkV4CSEIB2cjs.ea.call(void 0, e=>typeof e=="number"?e-Math.floor(e):r.fract[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `fract(${e.value})`,e.dataType)),Ve= exports.t =_chunkV4CSEIB2cjs.ea.call(void 0, e=>typeof e=="number"?Math.abs(e):r.length[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `length(${e.value})`,_chunkV4CSEIB2cjs.ka)),Je= exports.u =_chunkV4CSEIB2cjs.ea.call(void 0, (e,n)=>typeof e=="number"?Math.max(e,n):r.max[e.kind](e,n),(e,n)=>_chunkV4CSEIB2cjs.ba.call(void 0, `max(${e.value}, ${n.value})`,e.dataType),"coerce"),Qe= exports.v =_chunkV4CSEIB2cjs.ea.call(void 0, (e,n)=>typeof e=="number"?Math.min(e,n):r.min[e.kind](e,n),(e,n)=>_chunkV4CSEIB2cjs.ba.call(void 0, `min(${e.value}, ${n.value})`,e.dataType),"coerce"),Xe= exports.w =_chunkV4CSEIB2cjs.ea.call(void 0, e=>typeof e=="number"?Math.sign(e):r.sign[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `sign(${e.value})`,e.dataType)),Ye= exports.x =_chunkV4CSEIB2cjs.ea.call(void 0, e=>typeof e=="number"?Math.sin(e):r.sin[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `sin(${e.value})`,e.dataType)),en= exports.y =_chunkV4CSEIB2cjs.ea.call(void 0, e=>typeof e=="number"?Math.exp(e):r.exp[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `exp(${e.value})`,e.dataType)),Ie= exports.z =_chunkV4CSEIB2cjs.ea.call(void 0, (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 r.pow[e.kind](e,n);throw new Error("Invalid arguments to pow()")},(e,n)=>_chunkV4CSEIB2cjs.ba.call(void 0, `pow(${e.value}, ${n.value})`,e.dataType));_chunkV4CSEIB2cjs.f.call(void 0, Ie,"pow");var nn=_chunkV4CSEIB2cjs.ea.call(void 0, (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 r.mix[e.kind](e,n,s)},(e,n,s)=>_chunkV4CSEIB2cjs.ba.call(void 0, `mix(${e.value}, ${n.value}, ${s.value})`,e.dataType)),sn= exports.B =_chunkV4CSEIB2cjs.ea.call(void 0, (e,n)=>fe(e,xe(2*pe(n,e),n)),(e,n)=>_chunkV4CSEIB2cjs.ba.call(void 0, `reflect(${e.value}, ${n.value})`,e.dataType)),tn= exports.C =_chunkV4CSEIB2cjs.ea.call(void 0, (e,n)=>typeof e=="number"&&typeof n=="number"?Math.abs(e-n):Ve(fe(e,n)),(e,n)=>_chunkV4CSEIB2cjs.ba.call(void 0, `distance(${e.value}, ${n.value})`,_chunkV4CSEIB2cjs.ka)),cn= exports.D =_chunkV4CSEIB2cjs.ea.call(void 0, e=>typeof e=="number"?-e:r.neg[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `-(${e.value})`,e.dataType)),rn= exports.E =_chunkV4CSEIB2cjs.ea.call(void 0, e=>typeof e=="number"?Math.sqrt(e):r.sqrt[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `sqrt(${e.value})`,e.dataType));exports.a = r; exports.b = G; exports.c = Te; exports.d = _e; exports.e = fe; exports.f = xe; exports.g = Ue; exports.h = We; exports.i = Ce; exports.j = qe; exports.k = Se; exports.l = De; exports.m = Ee; exports.n = je; exports.o = Pe; exports.p = pe; exports.q = Ze; exports.r = Ge; exports.s = He; exports.t = Ve; exports.u = Je; exports.v = Qe; exports.w = Xe; exports.x = Ye; exports.y = en; exports.z = Ie; exports.A = nn; exports.B = sn; exports.C = tn; exports.D = cn; exports.E = rn;
|
2
|
+
//# sourceMappingURL=chunk-TF6YPHJS.cjs.map
|