typegpu 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE.md +1 -1
- package/chunk-2CMWQRQC.cjs +2 -0
- package/chunk-2CMWQRQC.cjs.map +1 -0
- package/chunk-2ZAQFPSX.js +1266 -0
- package/chunk-2ZAQFPSX.js.map +1 -0
- package/chunk-35UVS2JJ.cjs +591 -0
- package/chunk-35UVS2JJ.cjs.map +1 -0
- package/chunk-A2QB4MSZ.js +4 -0
- package/{chunk-47YH5LQ7.cjs.map → chunk-A2QB4MSZ.js.map} +1 -1
- package/chunk-CMYXKKUP.cjs +1266 -0
- package/chunk-CMYXKKUP.cjs.map +1 -0
- package/chunk-DDEF2Y4S.js +591 -0
- package/chunk-DDEF2Y4S.js.map +1 -0
- package/chunk-KYBPSQX5.js +2 -0
- package/chunk-KYBPSQX5.js.map +1 -0
- package/chunk-VRYGOFCW.cjs +4 -0
- package/chunk-VRYGOFCW.cjs.map +1 -0
- package/data/index.cjs +192 -1
- package/data/index.d.cts +2 -2
- package/data/index.d.ts +2 -2
- package/data/index.js +192 -1
- package/{index-CopjPGJg.d.cts → index-CuzbyKXg.d.cts} +5 -3
- package/{index-BM7ZTN7E.d.ts → index-FHKuURMs.d.ts} +5 -3
- package/index.cjs +4269 -14
- package/index.cjs.map +1 -1
- package/index.d.cts +80 -11
- package/index.d.ts +80 -11
- package/index.js +4269 -14
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/std/index.cjs +490 -1
- package/std/index.cjs.map +1 -1
- package/std/index.d.cts +1 -1
- package/std/index.d.ts +1 -1
- package/std/index.js +490 -1
- package/std/index.js.map +1 -1
- package/{vector-BSez01sn.d.cts → vector-CDD2FV2v.d.cts} +19 -3
- package/{vector-BSez01sn.d.ts → vector-CDD2FV2v.d.ts} +19 -3
- package/chunk-47YH5LQ7.cjs +0 -4
- package/chunk-BGPVBIFN.js +0 -4
- package/chunk-BGPVBIFN.js.map +0 -1
- package/chunk-MCUGRE3S.js +0 -2
- package/chunk-MCUGRE3S.js.map +0 -1
- package/chunk-OHFPIYFY.cjs +0 -2
- package/chunk-OHFPIYFY.cjs.map +0 -1
@@ -0,0 +1,4 @@
|
|
1
|
+
var A=Object.defineProperty,E=Object.defineProperties;var D=Object.getOwnPropertyDescriptors;var N=Object.getOwnPropertySymbols;var G=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable;var P=(e,t,n)=>t in e?A(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,K=(e,t)=>{for(var n in t||(t={}))G.call(t,n)&&P(e,n,t[n]);if(N)for(var n of N(t))H.call(t,n)&&P(e,n,t[n]);return e},L=(e,t)=>E(e,D(t));var o=(e,t,n)=>(P(e,typeof t!="symbol"?t+"":t,n),n);var S="Invariant failed";function C(e,t){if(e)return;throw new Error(S)}var $=class e extends Error{constructor(n,r){let u=r.map(a=>`- ${a}`);u.length>20&&(u=[...u.slice(0,11),"...",...u.slice(-10)]);super(`Resolution of the following tree failed:
|
2
|
+
${u.join(`
|
3
|
+
`)}`);this.cause=n;this.trace=r;Object.setPrototypeOf(this,e.prototype)}appendToTrace(n){let r=[n,...this.trace];return new e(this.cause,r)}},z=class e extends Error{constructor(n){super(`Missing value for '${n}'`);this.slot=n;Object.setPrototypeOf(this,e.prototype)}},O=class e extends Error{constructor(t){var n;super(`Buffer '${(n=t.label)!=null?n:"<unnamed>"}' is not bindable as a uniform. Use .$usage('uniform') to allow it.`),Object.setPrototypeOf(this,e.prototype)}},F=class e extends Error{constructor(t,n){super(`The function '${t!=null?t:"<unnamed>"}' is missing links to the following external values: ${n}.`),Object.setPrototypeOf(this,e.prototype)}},R=class e extends Error{constructor(t){super(`Missing bind groups for layouts: '${[...t].map(n=>{var r;return(r=n.label)!=null?r:"<unnamed>"}).join(", ")}'. Please provide it using pipeline.with(layout, bindGroup).(...)`),Object.setPrototypeOf(this,e.prototype)}},j=class e extends Error{constructor(t){super(`Missing vertex buffers for layouts: '${[...t].map(n=>{var r;return(r=n.label)!=null?r:"<unnamed>"}).join(", ")}'. Please provide it using pipeline.with(layout, buffer).(...)`),Object.setPrototypeOf(this,e.prototype)}};var T=null;function q(e,t){C(T===null,"Cannot nest context providers"),T=e;try{return t()}finally{T=null}}function J(){return T}var B=()=>T!==null;function m(e){let t={"~repr":void 0,type:e.type};return Object.assign((...r)=>{var a;let u=r;if(B())return`${t.type}(${u.join(", ")})`;if(u.length<=1)return e.makeFromScalar((a=u[0])!=null?a:0);if(u.length===e.length)return e.make(...u);throw new Error(`'${e.type}' constructor called with invalid number of arguments.`)},t)}var i=class{constructor(t,n){this.x=t;this.y=n;o(this,"length",2)}*[Symbol.iterator](){yield this.x,yield this.y}get 0(){return this.x}get 1(){return this.y}set 0(t){this.x=t}set 1(t){this.y=t}"~resolve"(){return`${this.kind}(${this.x}, ${this.y})`}toString(){return this["~resolve"]()}},c=class e extends i{constructor(){super(...arguments);o(this,"kind","vec2f")}make2(n,r){return new e(n,r)}make3(n,r,u){return new w(n,r,u)}make4(n,r,u,a){return new x(n,r,u,a)}},b=class e extends i{constructor(){super(...arguments);o(this,"kind","vec2h")}make2(n,r){return new e(n,r)}make3(n,r,u){return new h(n,r,u)}make4(n,r,u,a){return new d(n,r,u,a)}},v=class e extends i{constructor(){super(...arguments);o(this,"kind","vec2i")}make2(n,r){return new e(n,r)}make3(n,r,u){return new p(n,r,u)}make4(n,r,u,a){return new V(n,r,u,a)}},l=class e extends i{constructor(){super(...arguments);o(this,"kind","vec2u")}make2(n,r){return new e(n,r)}make3(n,r,u){return new k(n,r,u)}make4(n,r,u,a){return new g(n,r,u,a)}},y=class{constructor(t,n,r){this.x=t;this.y=n;this.z=r;o(this,"length",3)}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}get 0(){return this.x}get 1(){return this.y}get 2(){return this.z}set 0(t){this.x=t}set 1(t){this.y=t}set 2(t){this.z=t}"~resolve"(){return`${this.kind}(${this.x}, ${this.y}, ${this.z})`}toString(){return this["~resolve"]()}},w=class e extends y{constructor(){super(...arguments);o(this,"kind","vec3f")}make2(n,r){return new c(n,r)}make3(n,r,u){return new e(n,r,u)}make4(n,r,u,a){return new x(n,r,u,a)}},h=class e extends y{constructor(){super(...arguments);o(this,"kind","vec3h")}make2(n,r){return new b(n,r)}make3(n,r,u){return new e(n,r,u)}make4(n,r,u,a){return new d(n,r,u,a)}},p=class e extends y{constructor(){super(...arguments);o(this,"kind","vec3i")}make2(n,r){return new v(n,r)}make3(n,r,u){return new e(n,r,u)}make4(n,r,u,a){return new V(n,r,u,a)}},k=class e extends y{constructor(){super(...arguments);o(this,"kind","vec3u")}make2(n,r){return new l(n,r)}make3(n,r,u){return new e(n,r,u)}make4(n,r,u,a){return new g(n,r,u,a)}},f=class{constructor(t,n,r,u){this.x=t;this.y=n;this.z=r;this.w=u;o(this,"length",4)}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}get 0(){return this.x}get 1(){return this.y}get 2(){return this.z}get 3(){return this.w}set 0(t){this.x=t}set 1(t){this.y=t}set 2(t){this.z=t}set 3(t){this.w=t}"~resolve"(){return`${this.kind}(${this.x}, ${this.y}, ${this.z}, ${this.w})`}toString(){return this["~resolve"]()}},x=class e extends f{constructor(){super(...arguments);o(this,"kind","vec4f")}make2(n,r){return new c(n,r)}make3(n,r,u){return new w(n,r,u)}make4(n,r,u,a){return new e(n,r,u,a)}},d=class e extends f{constructor(){super(...arguments);o(this,"kind","vec4h")}make2(n,r){return new b(n,r)}make3(n,r,u){return new h(n,r,u)}make4(n,r,u,a){return new e(n,r,u,a)}},V=class e extends f{constructor(){super(...arguments);o(this,"kind","vec4i")}make2(n,r){return new v(n,r)}make3(n,r,u){return new p(n,r,u)}make4(n,r,u,a){return new e(n,r,u,a)}},g=class e extends f{constructor(){super(...arguments);o(this,"kind","vec4u")}make2(n,r){return new l(n,r)}make3(n,r,u){return new k(n,r,u)}make4(n,r,u,a){return new e(n,r,u,a)}},s={get:(e,t)=>{if(typeof t=="symbol"||!Number.isNaN(Number.parseInt(t)))return Reflect.get(e,t);let n=e,r=new Array(t.length),u=0;for(let a of t){switch(a){case"x":r[u]=n.x;break;case"y":r[u]=n.y;break;case"z":r[u]=n.z;break;case"w":r[u]=n.w;break;default:return Reflect.get(n,t)}u++}return t.length===4?new Proxy(n.make4(r[0],r[1],r[2],r[3]),s):t.length===3?new Proxy(n.make3(r[0],r[1],r[2]),s):t.length===2?new Proxy(n.make2(r[0],r[1]),s):Reflect.get(e,t)}},Y=m({type:"vec2f",length:2,make:(e,t)=>new Proxy(new c(e,t),s),makeFromScalar:e=>new Proxy(new c(e,e),s)}),Z=m({type:"vec2h",length:2,make:(e,t)=>new Proxy(new b(e,t),s),makeFromScalar:e=>new Proxy(new b(e,e),s)}),I=m({type:"vec2i",length:2,make:(e,t)=>new Proxy(new v(e,t),s),makeFromScalar:e=>new Proxy(new v(e,e),s)}),_=m({type:"vec2u",length:2,make:(e,t)=>new Proxy(new l(e,t),s),makeFromScalar:e=>new Proxy(new l(e,e),s)}),ee=m({type:"vec3f",length:3,make:(e,t,n)=>new Proxy(new w(e,t,n),s),makeFromScalar:e=>new Proxy(new w(e,e,e),s)}),ne=m({type:"vec3h",length:3,make:(e,t,n)=>new Proxy(new h(e,t,n),s),makeFromScalar:e=>new Proxy(new h(e,e,e),s)}),re=m({type:"vec3i",length:3,make:(e,t,n)=>new Proxy(new p(e,t,n),s),makeFromScalar:e=>new Proxy(new p(e,e,e),s)}),te=m({type:"vec3u",length:3,make:(e,t,n)=>new Proxy(new k(e,t,n),s),makeFromScalar:e=>new Proxy(new k(e,e,e),s)}),ue=m({type:"vec4f",length:4,make:(e,t,n,r)=>new Proxy(new x(e,t,n,r),s),makeFromScalar:e=>new Proxy(new x(e,e,e,e),s)}),ae=m({type:"vec4h",length:4,make:(e,t,n,r)=>new Proxy(new d(e,t,n,r),s),makeFromScalar:e=>new Proxy(new d(e,e,e,e),s)}),se=m({type:"vec4i",length:4,make:(e,t,n,r)=>new Proxy(new V(e,t,n,r),s),makeFromScalar:e=>new Proxy(new V(e,e,e,e),s)}),oe=m({length:4,type:"vec4u",make:(e,t,n,r)=>new Proxy(new g(e,t,n,r),s),makeFromScalar:e=>new Proxy(new g(e,e,e,e),s)});export{K as a,L as b,o as c,C as d,$ as e,z as f,O as g,F as h,R as i,j,q as k,J as l,B as m,Y as n,Z as o,I as p,_ as q,ee as r,ne as s,re as t,te as u,ue as v,ae as w,se as x,oe as y};
|
4
|
+
//# sourceMappingURL=chunk-A2QB4MSZ.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/gpuMode.ts","../src/data/vector.ts"],"names":["prefix","invariant","condition","message","ResolutionError","_ResolutionError","cause","trace","entries","ancestor","newTrace","MissingSlotValueError","_MissingSlotValueError","slot","NotUniformError","_NotUniformError","value","_a","MissingLinksError","_MissingLinksError","fnLabel","externalNames","MissingBindGroupError","_MissingBindGroupError","layoutLabel","resolutionCtx","provideCtx","ctx","callback","getResolutionCtx","inGPUMode","makeVecSchema","options","VecSchema","args","values","vec2Impl","x","y","__publicField","vec2fImpl","_vec2fImpl","z","vec3fImpl","w","vec4fImpl","vec2hImpl","_vec2hImpl","vec3hImpl","vec4hImpl","vec2iImpl","_vec2iImpl","vec3iImpl","vec4iImpl","vec2uImpl","_vec2uImpl","vec3uImpl","vec4uImpl","vec3Impl","_vec3fImpl","_vec3hImpl","_vec3iImpl","_vec3uImpl","vec4Impl","_vec4fImpl","_vec4hImpl","_vec4iImpl","_vec4uImpl","vecProxyHandler","target","prop","targetAsVec4","idx","char","vec2f","vec2h","vec2i","vec2u","vec3f","vec3h","vec3i","vec3u","vec4f","vec4h","vec4i","vec4u"],"mappings":"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","sourcesContent":["import type { TgpuBuffer } from './core/buffer/buffer';\nimport type { TgpuSlot } from './core/slot/slotTypes';\nimport type { AnyData } from './data/dataTypes';\n\nconst prefix = 'Invariant failed';\n\n/**\n * Inspired by: https://github.com/alexreardon/tiny-invariant/blob/master/src/tiny-invariant.ts\n */\nexport function invariant(\n condition: unknown,\n message?: string | (() => string),\n): asserts condition {\n if (condition) {\n // Condition passed\n return;\n }\n\n // In production we strip the message but still throw\n if (process.env.NODE_ENV === 'production') {\n throw new Error(prefix);\n }\n\n // When not in production we allow the message to pass through\n // *This block will be removed in production builds*\n\n const provided = typeof message === 'function' ? message() : message;\n\n // Options:\n // 1. message provided: `${prefix}: ${provided}`\n // 2. message not provided: prefix\n const value = provided ? `${prefix}: ${provided}` : prefix;\n throw new Error(value);\n}\n\n/**\n * An error that happens during resolution of WGSL code.\n * Contains a trace of all ancestor resolvables in\n * which this error originated.\n *\n * @category Errors\n */\nexport class ResolutionError extends Error {\n constructor(\n public readonly cause: unknown,\n public readonly trace: unknown[],\n ) {\n let entries = trace.map((ancestor) => `- ${ancestor}`);\n\n // Showing only the root and leaf nodes.\n if (entries.length > 20) {\n entries = [...entries.slice(0, 11), '...', ...entries.slice(-10)];\n }\n\n super(`Resolution of the following tree failed: \\n${entries.join('\\n')}`);\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, ResolutionError.prototype);\n }\n\n appendToTrace(ancestor: unknown): ResolutionError {\n const newTrace = [ancestor, ...this.trace];\n\n return new ResolutionError(this.cause, newTrace);\n }\n}\n\n/**\n * @category Errors\n */\nexport class MissingSlotValueError extends Error {\n constructor(public readonly slot: TgpuSlot<unknown>) {\n super(`Missing value for '${slot}'`);\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, MissingSlotValueError.prototype);\n }\n}\n\n/**\n * @category Errors\n */\nexport class NotUniformError extends Error {\n constructor(value: TgpuBuffer<AnyData>) {\n super(\n `Buffer '${value.label ?? '<unnamed>'}' is not bindable as a uniform. Use .$usage('uniform') to allow it.`,\n );\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, NotUniformError.prototype);\n }\n}\n\nexport class MissingLinksError extends Error {\n constructor(fnLabel: string | undefined, externalNames: string[]) {\n super(\n `The function '${fnLabel ?? '<unnamed>'}' is missing links to the following external values: ${externalNames}.`,\n );\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, MissingLinksError.prototype);\n }\n}\n\nexport class MissingBindGroupError extends Error {\n constructor(layoutLabel: string | undefined) {\n super(\n `Bind group was not provided for '${layoutLabel ?? '<unnamed>'}' layout.`,\n );\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, MissingBindGroupError.prototype);\n }\n}\n","import { invariant } from './errors';\nimport type { ResolutionCtx } from './types';\n\nlet resolutionCtx: ResolutionCtx | null = null;\n\nexport function provideCtx<T>(ctx: ResolutionCtx, callback: () => T): T {\n invariant(resolutionCtx === null, 'Cannot nest context providers');\n\n resolutionCtx = ctx;\n try {\n return callback();\n } finally {\n resolutionCtx = null;\n }\n}\n\nexport function getResolutionCtx(): ResolutionCtx | null {\n return resolutionCtx;\n}\n\nexport const inGPUMode = () => resolutionCtx !== null;\n","import { inGPUMode } from '../gpuMode';\nimport type { SelfResolvable } from '../types';\nimport type {\n Vec2f,\n Vec2h,\n Vec2i,\n Vec2u,\n Vec3f,\n Vec3h,\n Vec3i,\n Vec3u,\n Vec4f,\n Vec4h,\n Vec4i,\n Vec4u,\n v2f,\n v2h,\n v2i,\n v2u,\n v3f,\n v3h,\n v3i,\n v3u,\n v4f,\n v4h,\n v4i,\n v4u,\n} from './wgslTypes';\n\n// --------------\n// Implementation\n// --------------\n\ninterface VecSchemaOptions<TType extends string, TValue> {\n type: TType;\n length: number;\n make: (...args: number[]) => TValue;\n makeFromScalar: (value: number) => TValue;\n}\n\ntype VecSchemaBase<TValue> = {\n readonly type: string;\n readonly '~repr': TValue;\n};\n\nfunction makeVecSchema<TType extends string, TValue>(\n options: VecSchemaOptions<TType, TValue>,\n): VecSchemaBase<TValue> & ((...args: number[]) => TValue) {\n const VecSchema: VecSchemaBase<TValue> = {\n /** Type-token, not available at runtime */\n '~repr': undefined as unknown as TValue,\n type: options.type,\n };\n\n const construct = (...args: number[]): TValue => {\n const values = args; // TODO: Allow users to pass in vectors that fill part of the values.\n\n if (inGPUMode()) {\n return `${VecSchema.type}(${values.join(', ')})` as unknown as TValue;\n }\n\n if (values.length <= 1) {\n return options.makeFromScalar(values[0] ?? 0);\n }\n\n if (values.length === options.length) {\n return options.make(...values);\n }\n\n throw new Error(\n `'${options.type}' constructor called with invalid number of arguments.`,\n );\n };\n\n return Object.assign(construct, VecSchema);\n}\n\nabstract class vec2Impl implements SelfResolvable {\n public readonly length = 2;\n abstract readonly kind: `vec2${'f' | 'u' | 'i' | 'h'}`;\n\n [n: number]: number;\n\n constructor(\n public x: number,\n public y: number,\n ) {}\n\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n }\n\n get [0]() {\n return this.x;\n }\n\n get [1]() {\n return this.y;\n }\n\n set [0](value: number) {\n this.x = value;\n }\n\n set [1](value: number) {\n this.y = value;\n }\n\n '~resolve'(): string {\n return `${this.kind}(${this.x}, ${this.y})`;\n }\n\n toString() {\n return this['~resolve']();\n }\n}\n\nclass vec2fImpl extends vec2Impl {\n readonly kind = 'vec2f';\n\n make2(x: number, y: number): v2f {\n return new vec2fImpl(x, y) as unknown as v2f;\n }\n\n make3(x: number, y: number, z: number): v3f {\n return new vec3fImpl(x, y, z) as unknown as v3f;\n }\n\n make4(x: number, y: number, z: number, w: number): v4f {\n return new vec4fImpl(x, y, z, w) as unknown as v4f;\n }\n}\n\nclass vec2hImpl extends vec2Impl {\n readonly kind = 'vec2h';\n\n make2(x: number, y: number): v2h {\n return new vec2hImpl(x, y) as unknown as v2h;\n }\n\n make3(x: number, y: number, z: number): v3h {\n return new vec3hImpl(x, y, z) as unknown as v3h;\n }\n\n make4(x: number, y: number, z: number, w: number): v4h {\n return new vec4hImpl(x, y, z, w) as unknown as v4h;\n }\n}\n\nclass vec2iImpl extends vec2Impl {\n readonly kind = 'vec2i';\n\n make2(x: number, y: number): v2i {\n return new vec2iImpl(x, y) as unknown as v2i;\n }\n\n make3(x: number, y: number, z: number): v3i {\n return new vec3iImpl(x, y, z) as unknown as v3i;\n }\n\n make4(x: number, y: number, z: number, w: number): v4i {\n return new vec4iImpl(x, y, z, w) as unknown as v4i;\n }\n}\n\nclass vec2uImpl extends vec2Impl {\n readonly kind = 'vec2u';\n\n make2(x: number, y: number): v2u {\n return new vec2uImpl(x, y) as unknown as v2u;\n }\n\n make3(x: number, y: number, z: number): v3u {\n return new vec3uImpl(x, y, z) as unknown as v3u;\n }\n\n make4(x: number, y: number, z: number, w: number): v4u {\n return new vec4uImpl(x, y, z, w) as unknown as v4u;\n }\n}\n\nabstract class vec3Impl implements SelfResolvable {\n public readonly length = 3;\n abstract readonly kind: `vec3${'f' | 'u' | 'i' | 'h'}`;\n [n: number]: number;\n\n constructor(\n public x: number,\n public y: number,\n public z: number,\n ) {}\n\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n yield this.z;\n }\n\n get [0]() {\n return this.x;\n }\n\n get [1]() {\n return this.y;\n }\n\n get [2]() {\n return this.z;\n }\n\n set [0](value: number) {\n this.x = value;\n }\n\n set [1](value: number) {\n this.y = value;\n }\n\n set [2](value: number) {\n this.z = value;\n }\n\n '~resolve'(): string {\n return `${this.kind}(${this.x}, ${this.y}, ${this.z})`;\n }\n\n toString() {\n return this['~resolve']();\n }\n}\n\nclass vec3fImpl extends vec3Impl {\n readonly kind = 'vec3f';\n\n make2(x: number, y: number): v2f {\n return new vec2fImpl(x, y) as unknown as v2f;\n }\n\n make3(x: number, y: number, z: number): v3f {\n return new vec3fImpl(x, y, z) as unknown as v3f;\n }\n\n make4(x: number, y: number, z: number, w: number): v4f {\n return new vec4fImpl(x, y, z, w) as unknown as v4f;\n }\n}\n\nclass vec3hImpl extends vec3Impl {\n readonly kind = 'vec3h';\n\n make2(x: number, y: number): v2h {\n return new vec2hImpl(x, y) as unknown as v2h;\n }\n\n make3(x: number, y: number, z: number): v3h {\n return new vec3hImpl(x, y, z) as unknown as v3h;\n }\n\n make4(x: number, y: number, z: number, w: number): v4h {\n return new vec4hImpl(x, y, z, w) as unknown as v4h;\n }\n}\n\nclass vec3iImpl extends vec3Impl {\n readonly kind = 'vec3i';\n\n make2(x: number, y: number): v2i {\n return new vec2iImpl(x, y) as unknown as v2i;\n }\n\n make3(x: number, y: number, z: number): v3i {\n return new vec3iImpl(x, y, z) as unknown as v3i;\n }\n\n make4(x: number, y: number, z: number, w: number): v4i {\n return new vec4iImpl(x, y, z, w) as unknown as v4i;\n }\n}\n\nclass vec3uImpl extends vec3Impl {\n readonly kind = 'vec3u';\n\n make2(x: number, y: number): v2u {\n return new vec2uImpl(x, y) as unknown as v2u;\n }\n\n make3(x: number, y: number, z: number): v3u {\n return new vec3uImpl(x, y, z) as unknown as v3u;\n }\n\n make4(x: number, y: number, z: number, w: number): v4u {\n return new vec4uImpl(x, y, z, w) as unknown as v4u;\n }\n}\n\nabstract class vec4Impl implements SelfResolvable {\n public readonly length = 4;\n abstract readonly kind: `vec4${'f' | 'u' | 'i' | 'h'}`;\n [n: number]: number;\n\n constructor(\n public x: number,\n public y: number,\n public z: number,\n public w: number,\n ) {}\n\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n yield this.z;\n yield this.w;\n }\n\n get [0]() {\n return this.x;\n }\n\n get [1]() {\n return this.y;\n }\n\n get [2]() {\n return this.z;\n }\n\n get [3]() {\n return this.w;\n }\n\n set [0](value: number) {\n this.x = value;\n }\n\n set [1](value: number) {\n this.y = value;\n }\n\n set [2](value: number) {\n this.z = value;\n }\n\n set [3](value: number) {\n this.w = value;\n }\n\n '~resolve'(): string {\n return `${this.kind}(${this.x}, ${this.y}, ${this.z}, ${this.w})`;\n }\n\n toString() {\n return this['~resolve']();\n }\n}\n\nclass vec4fImpl extends vec4Impl {\n readonly kind = 'vec4f';\n\n make2(x: number, y: number): v2f {\n return new vec2fImpl(x, y) as unknown as v2f;\n }\n\n make3(x: number, y: number, z: number): v3f {\n return new vec3fImpl(x, y, z) as unknown as v3f;\n }\n\n make4(x: number, y: number, z: number, w: number): v4f {\n return new vec4fImpl(x, y, z, w) as unknown as v4f;\n }\n}\n\nclass vec4hImpl extends vec4Impl {\n readonly kind = 'vec4h';\n\n make2(x: number, y: number): v2h {\n return new vec2hImpl(x, y) as unknown as v2h;\n }\n\n make3(x: number, y: number, z: number): v3h {\n return new vec3hImpl(x, y, z) as unknown as v3h;\n }\n\n make4(x: number, y: number, z: number, w: number): v4h {\n return new vec4hImpl(x, y, z, w) as unknown as v4h;\n }\n}\n\nclass vec4iImpl extends vec4Impl {\n readonly kind = 'vec4i';\n\n make2(x: number, y: number): v2i {\n return new vec2iImpl(x, y) as unknown as v2i;\n }\n\n make3(x: number, y: number, z: number): v3i {\n return new vec3iImpl(x, y, z) as unknown as v3i;\n }\n\n make4(x: number, y: number, z: number, w: number): v4i {\n return new vec4iImpl(x, y, z, w) as unknown as v4i;\n }\n}\n\nclass vec4uImpl extends vec4Impl {\n readonly kind = 'vec4u';\n\n make2(x: number, y: number): v2u {\n return new vec2uImpl(x, y) as unknown as v2u;\n }\n\n make3(x: number, y: number, z: number): v3u {\n return new vec3uImpl(x, y, z) as unknown as v3u;\n }\n\n make4(x: number, y: number, z: number, w: number): v4u {\n return new vec4uImpl(x, y, z, w) as unknown as v4u;\n }\n}\n\nconst vecProxyHandler: ProxyHandler<{ kind: VecKind }> = {\n get: (target, prop) => {\n if (typeof prop === 'symbol' || !Number.isNaN(Number.parseInt(prop))) {\n return Reflect.get(target, prop);\n }\n\n const targetAsVec4 = target as unknown as vec4uImpl;\n const values = new Array(prop.length) as number[];\n\n let idx = 0;\n for (const char of prop as string) {\n switch (char) {\n case 'x':\n values[idx] = targetAsVec4.x;\n break;\n case 'y':\n values[idx] = targetAsVec4.y;\n break;\n case 'z':\n values[idx] = targetAsVec4.z;\n break;\n case 'w':\n values[idx] = targetAsVec4.w;\n break;\n default:\n return Reflect.get(targetAsVec4, prop);\n }\n idx++;\n }\n\n if (prop.length === 4) {\n return new Proxy(\n targetAsVec4.make4(\n values[0] as number,\n values[1] as number,\n values[2] as number,\n values[3] as number,\n ),\n vecProxyHandler,\n );\n }\n\n if (prop.length === 3) {\n return new Proxy(\n targetAsVec4.make3(\n values[0] as number,\n values[1] as number,\n values[2] as number,\n ),\n vecProxyHandler,\n );\n }\n\n if (prop.length === 2) {\n return new Proxy(\n targetAsVec4.make2(values[0] as number, values[1] as number),\n vecProxyHandler,\n );\n }\n\n return Reflect.get(target, prop);\n },\n};\n\n// ----------\n// Public API\n// ----------\n\n/**\n * Type encompassing all available kinds of vector.\n */\nexport type VecKind =\n | 'vec2f'\n | 'vec2i'\n | 'vec2u'\n | 'vec2h'\n | 'vec3f'\n | 'vec3i'\n | 'vec3u'\n | 'vec3h'\n | 'vec4f'\n | 'vec4i'\n | 'vec4u'\n | 'vec4h';\n\n/**\n * Type of the `d.vec2f` object/function: vector data type schema/constructor\n */\nexport type NativeVec2f = Vec2f & { '~exotic': Vec2f } & ((\n x: number,\n y: number,\n ) => v2f) &\n ((xy: number) => v2f) &\n (() => v2f);\n\n/**\n *\n * Schema representing vec2f - a vector with 2 elements of type f32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec2f(); // (0.0, 0.0)\n * const vector = d.vec2f(1); // (1.0, 1.0)\n * const vector = d.vec2f(0.5, 0.1); // (0.5, 0.1)\n *\n * @example\n * const buffer = root.createBuffer(d.vec2f, d.vec2f(0, 1)); // buffer holding a d.vec2f value, with an initial value of vec2f(0, 1);\n */\nexport const vec2f = makeVecSchema({\n type: 'vec2f',\n length: 2,\n make: (x: number, y: number) =>\n new Proxy(new vec2fImpl(x, y), vecProxyHandler) as v2f,\n makeFromScalar: (x) => new Proxy(new vec2fImpl(x, x), vecProxyHandler) as v2f,\n}) as NativeVec2f;\n\n/**\n * Type of the `d.vec2h` object/function: vector data type schema/constructor\n */\nexport type NativeVec2h = Vec2h & { '~exotic': Vec2h } & ((\n x: number,\n y: number,\n ) => v2h) &\n ((xy: number) => v2h) &\n (() => v2h);\n\n/**\n *\n * Schema representing vec2h - a vector with 2 elements of type f16.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec2h(); // (0.0, 0.0)\n * const vector = d.vec2h(1); // (1.0, 1.0)\n * const vector = d.vec2h(0.5, 0.1); // (0.5, 0.1)\n *\n * @example\n * const buffer = root.createBuffer(d.vec2h, d.vec2h(0, 1)); // buffer holding a d.vec2h value, with an initial value of vec2h(0, 1);\n */\nexport const vec2h = makeVecSchema({\n type: 'vec2h',\n length: 2,\n make: (x: number, y: number) =>\n new Proxy(new vec2hImpl(x, y), vecProxyHandler) as v2h,\n makeFromScalar: (x) => new Proxy(new vec2hImpl(x, x), vecProxyHandler) as v2h,\n}) as NativeVec2h;\n\n/**\n * Type of the `d.vec2i` object/function: vector data type schema/constructor\n */\nexport type NativeVec2i = Vec2i & { '~exotic': Vec2i } & ((\n x: number,\n y: number,\n ) => v2i) &\n ((xy: number) => v2i) &\n (() => v2i);\n\n/**\n *\n * Schema representing vec2i - a vector with 2 elements of type i32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec2i(); // (0, 0)\n * const vector = d.vec2i(1); // (1, 1)\n * const vector = d.vec2i(-1, 1); // (-1, 1)\n *\n * @example\n * const buffer = root.createBuffer(d.vec2i, d.vec2i(0, 1)); // buffer holding a d.vec2i value, with an initial value of vec2i(0, 1);\n */\nexport const vec2i = makeVecSchema({\n type: 'vec2i',\n length: 2,\n make: (x: number, y: number) =>\n new Proxy(new vec2iImpl(x, y), vecProxyHandler) as v2i,\n makeFromScalar: (x) => new Proxy(new vec2iImpl(x, x), vecProxyHandler) as v2i,\n}) as NativeVec2i;\n\n/**\n * Type of the `d.vec2u` object/function: vector data type schema/constructor\n */\nexport type NativeVec2u = Vec2u & { '~exotic': Vec2u } & ((\n x: number,\n y: number,\n ) => v2u) &\n ((xy: number) => v2u) &\n (() => v2u);\n\n/**\n *\n * Schema representing vec2u - a vector with 2 elements of type u32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec2u(); // (0, 0)\n * const vector = d.vec2u(1); // (1, 1)\n * const vector = d.vec2u(1, 2); // (1, 2)\n *\n * @example\n * const buffer = root.createBuffer(d.vec2u, d.vec2u(0, 1)); // buffer holding a d.vec2u value, with an initial value of vec2u(0, 1);\n */\nexport const vec2u = makeVecSchema({\n type: 'vec2u',\n length: 2,\n make: (x: number, y: number) =>\n new Proxy(new vec2uImpl(x, y), vecProxyHandler) as v2u,\n makeFromScalar: (x) => new Proxy(new vec2uImpl(x, x), vecProxyHandler) as v2u,\n}) as NativeVec2u;\n\n/**\n * Type of the `d.vec3f` object/function: vector data type schema/constructor\n */\nexport type NativeVec3f = Vec3f & { '~exotic': Vec3f } & ((\n x: number,\n y: number,\n z: number,\n ) => v3f) &\n ((xyz: number) => v3f) &\n (() => v3f);\n\n/**\n *\n * Schema representing vec3f - a vector with 3 elements of type f32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec3f(); // (0.0, 0.0, 0.0)\n * const vector = d.vec3f(1); // (1.0, 1.0, 1.0)\n * const vector = d.vec3f(1, 2, 3.5); // (1.0, 2.0, 3.5)\n *\n * @example\n * const buffer = root.createBuffer(d.vec3f, d.vec3f(0, 1, 2)); // buffer holding a d.vec3f value, with an initial value of vec3f(0, 1, 2);\n */\nexport const vec3f = makeVecSchema({\n type: 'vec3f',\n length: 3,\n make: (x, y, z) => new Proxy(new vec3fImpl(x, y, z), vecProxyHandler) as v3f,\n makeFromScalar: (x) =>\n new Proxy(new vec3fImpl(x, x, x), vecProxyHandler) as v3f,\n}) as NativeVec3f;\n\n/**\n * Type of the `d.vec3h` object/function: vector data type schema/constructor\n */\nexport type NativeVec3h = Vec3h & { '~exotic': Vec3h } & ((\n x: number,\n y: number,\n z: number,\n ) => v3h) &\n ((xyz: number) => v3h) &\n (() => v3h);\n\n/**\n *\n * Schema representing vec3h - a vector with 3 elements of type f16.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec3h(); // (0.0, 0.0, 0.0)\n * const vector = d.vec3h(1); // (1.0, 1.0, 1.0)\n * const vector = d.vec3h(1, 2, 3.5); // (1.0, 2.0, 3.5)\n *\n * @example\n * const buffer = root.createBuffer(d.vec3h, d.vec3h(0, 1, 2)); // buffer holding a d.vec3h value, with an initial value of vec3h(0, 1, 2);\n */\nexport const vec3h = makeVecSchema({\n type: 'vec3h',\n length: 3,\n make: (x, y, z) => new Proxy(new vec3hImpl(x, y, z), vecProxyHandler) as v3h,\n makeFromScalar: (x) =>\n new Proxy(new vec3hImpl(x, x, x), vecProxyHandler) as v3h,\n}) as NativeVec3h;\n\n/**\n * Type of the `d.vec3i` object/function: vector data type schema/constructor\n */\nexport type NativeVec3i = Vec3i & { '~exotic': Vec3i } & ((\n x: number,\n y: number,\n z: number,\n ) => v3i) &\n ((xyz: number) => v3i) &\n (() => v3i);\n\n/**\n *\n * Schema representing vec3i - a vector with 3 elements of type i32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec3i(); // (0, 0, 0)\n * const vector = d.vec3i(1); // (1, 1, 1)\n * const vector = d.vec3i(1, 2, -3); // (1, 2, -3)\n *\n * @example\n * const buffer = root.createBuffer(d.vec3i, d.vec3i(0, 1, 2)); // buffer holding a d.vec3i value, with an initial value of vec3i(0, 1, 2);\n */\nexport const vec3i = makeVecSchema({\n type: 'vec3i',\n length: 3,\n make: (x, y, z) => new Proxy(new vec3iImpl(x, y, z), vecProxyHandler) as v3i,\n makeFromScalar: (x) =>\n new Proxy(new vec3iImpl(x, x, x), vecProxyHandler) as v3i,\n}) as NativeVec3i;\n\n/**\n * Type of the `d.vec3u` object/function: vector data type schema/constructor\n */\nexport type NativeVec3u = Vec3u & { '~exotic': Vec3u } & ((\n x: number,\n y: number,\n z: number,\n ) => v3u) &\n ((xyz: number) => v3u) &\n (() => v3u);\n\n/**\n *\n * Schema representing vec3u - a vector with 3 elements of type u32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec3u(); // (0, 0, 0)\n * const vector = d.vec3u(1); // (1, 1, 1)\n * const vector = d.vec3u(1, 2, 3); // (1, 2, 3)\n *\n * @example\n * const buffer = root.createBuffer(d.vec3u, d.vec3u(0, 1, 2)); // buffer holding a d.vec3u value, with an initial value of vec3u(0, 1, 2);\n */\nexport const vec3u = makeVecSchema({\n type: 'vec3u',\n length: 3,\n make: (x, y, z) => new Proxy(new vec3uImpl(x, y, z), vecProxyHandler) as v3u,\n makeFromScalar: (x) =>\n new Proxy(new vec3uImpl(x, x, x), vecProxyHandler) as v3u,\n}) as NativeVec3u;\n\n/**\n * Type of the `d.vec4f` object/function: vector data type schema/constructor\n */\nexport type NativeVec4f = Vec4f & { '~exotic': Vec4f } & ((\n x: number,\n y: number,\n z: number,\n w: number,\n ) => v4f) &\n ((xyzw: number) => v4f) &\n (() => v4f);\n\n/**\n *\n * Schema representing vec4f - a vector with 4 elements of type f32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec4f(); // (0.0, 0.0, 0.0, 0.0)\n * const vector = d.vec4f(1); // (1.0, 1.0, 1.0, 1.0)\n * const vector = d.vec4f(1, 2, 3, 4.5); // (1.0, 2.0, 3.0, 4.5)\n *\n * @example\n * const buffer = root.createBuffer(d.vec4f, d.vec4f(0, 1, 2, 3)); // buffer holding a d.vec4f value, with an initial value of vec4f(0, 1, 2, 3);\n */\nexport const vec4f = makeVecSchema({\n type: 'vec4f',\n length: 4,\n make: (x, y, z, w) =>\n new Proxy(new vec4fImpl(x, y, z, w), vecProxyHandler) as v4f,\n makeFromScalar: (x) =>\n new Proxy(new vec4fImpl(x, x, x, x), vecProxyHandler) as v4f,\n}) as NativeVec4f;\n\n/**\n * Type of the `d.vec4h` object/function: vector data type schema/constructor\n */\nexport type NativeVec4h = Vec4h & { '~exotic': Vec4h } & ((\n x: number,\n y: number,\n z: number,\n w: number,\n ) => v4h) &\n ((xyzw: number) => v4h) &\n (() => v4h);\n\n/**\n *\n * Schema representing vec4h - a vector with 4 elements of type f16.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec4h(); // (0.0, 0.0, 0.0, 0.0)\n * const vector = d.vec4h(1); // (1.0, 1.0, 1.0, 1.0)\n * const vector = d.vec4h(1, 2, 3, 4.5); // (1.0, 2.0, 3.0, 4.5)\n *\n * @example\n * const buffer = root.createBuffer(d.vec4h, d.vec4h(0, 1, 2, 3)); // buffer holding a d.vec4h value, with an initial value of vec4h(0, 1, 2, 3);\n */\nexport const vec4h = makeVecSchema({\n type: 'vec4h',\n length: 4,\n make: (x, y, z, w) =>\n new Proxy(new vec4hImpl(x, y, z, w), vecProxyHandler) as v4h,\n makeFromScalar: (x) =>\n new Proxy(new vec4hImpl(x, x, x, x), vecProxyHandler) as v4h,\n}) as NativeVec4h;\n\n/**\n * Type of the `d.vec4i` object/function: vector data type schema/constructor\n */\nexport type NativeVec4i = Vec4i & { '~exotic': Vec4i } & ((\n x: number,\n y: number,\n z: number,\n w: number,\n ) => v4i) &\n ((xyzw: number) => v4i) &\n (() => v4i);\n\n/**\n *\n * Schema representing vec4i - a vector with 4 elements of type i32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec4i(); // (0, 0, 0, 0)\n * const vector = d.vec4i(1); // (1, 1, 1, 1)\n * const vector = d.vec4i(1, 2, 3, -4); // (1, 2, 3, -4)\n *\n * @example\n * const buffer = root.createBuffer(d.vec4i, d.vec4i(0, 1, 2, 3)); // buffer holding a d.vec4i value, with an initial value of vec4i(0, 1, 2, 3);\n */\nexport const vec4i = makeVecSchema({\n type: 'vec4i',\n length: 4,\n make: (x, y, z, w) =>\n new Proxy(new vec4iImpl(x, y, z, w), vecProxyHandler) as v4i,\n makeFromScalar: (x) =>\n new Proxy(new vec4iImpl(x, x, x, x), vecProxyHandler) as v4i,\n}) as NativeVec4i;\n\n/**\n * Type of the `d.vec4u` object/function: vector data type schema/constructor\n */\nexport type NativeVec4u = Vec4u & { '~exotic': Vec4u } & ((\n x: number,\n y: number,\n z: number,\n w: number,\n ) => v4u) &\n ((xyzw: number) => v4u) &\n (() => v4u);\n\n/**\n *\n * Schema representing vec4u - a vector with 4 elements of type u32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec4u(); // (0, 0, 0, 0)\n * const vector = d.vec4u(1); // (1, 1, 1, 1)\n * const vector = d.vec4u(1, 2, 3, 4); // (1, 2, 3, 4)\n *\n * @example\n * const buffer = root.createBuffer(d.vec4u, d.vec4u(0, 1, 2, 3)); // buffer holding a d.vec4u value, with an initial value of vec4u(0, 1, 2, 3);\n */\nexport const vec4u = makeVecSchema({\n length: 4,\n type: 'vec4u',\n make: (x, y, z, w) =>\n new Proxy(new vec4uImpl(x, y, z, w), vecProxyHandler) as v4u,\n makeFromScalar: (x) =>\n new Proxy(new vec4uImpl(x, x, x, x), vecProxyHandler) as v4u,\n}) as NativeVec4u;\n"]}
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/gpuMode.ts","../src/data/vector.ts"],"sourcesContent":["import type { TgpuBuffer } from './core/buffer/buffer';\nimport type { TgpuSlot } from './core/slot/slotTypes';\nimport type { TgpuVertexLayout } from './core/vertexLayout/vertexLayout';\nimport type { AnyData, Disarray } from './data/dataTypes';\nimport type { WgslArray } from './data/wgslTypes';\nimport type { TgpuBindGroupLayout } from './tgpuBindGroupLayout';\n\nconst prefix = 'Invariant failed';\n\n/**\n * Inspired by: https://github.com/alexreardon/tiny-invariant/blob/master/src/tiny-invariant.ts\n */\nexport function invariant(\n condition: unknown,\n message?: string | (() => string),\n): asserts condition {\n if (condition) {\n // Condition passed\n return;\n }\n\n // In production we strip the message but still throw\n if (process.env.NODE_ENV === 'production') {\n throw new Error(prefix);\n }\n\n // When not in production we allow the message to pass through\n // *This block will be removed in production builds*\n\n const provided = typeof message === 'function' ? message() : message;\n\n // Options:\n // 1. message provided: `${prefix}: ${provided}`\n // 2. message not provided: prefix\n const value = provided ? `${prefix}: ${provided}` : prefix;\n throw new Error(value);\n}\n\n/**\n * An error that happens during resolution of WGSL code.\n * Contains a trace of all ancestor resolvables in\n * which this error originated.\n *\n * @category Errors\n */\nexport class ResolutionError extends Error {\n constructor(\n public readonly cause: unknown,\n public readonly trace: unknown[],\n ) {\n let entries = trace.map((ancestor) => `- ${ancestor}`);\n\n // Showing only the root and leaf nodes.\n if (entries.length > 20) {\n entries = [...entries.slice(0, 11), '...', ...entries.slice(-10)];\n }\n\n super(`Resolution of the following tree failed: \\n${entries.join('\\n')}`);\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, ResolutionError.prototype);\n }\n\n appendToTrace(ancestor: unknown): ResolutionError {\n const newTrace = [ancestor, ...this.trace];\n\n return new ResolutionError(this.cause, newTrace);\n }\n}\n\n/**\n * @category Errors\n */\nexport class MissingSlotValueError extends Error {\n constructor(public readonly slot: TgpuSlot<unknown>) {\n super(`Missing value for '${slot}'`);\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, MissingSlotValueError.prototype);\n }\n}\n\n/**\n * @category Errors\n */\nexport class NotUniformError extends Error {\n constructor(value: TgpuBuffer<AnyData>) {\n super(\n `Buffer '${value.label ?? '<unnamed>'}' is not bindable as a uniform. Use .$usage('uniform') to allow it.`,\n );\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, NotUniformError.prototype);\n }\n}\n\nexport class MissingLinksError extends Error {\n constructor(fnLabel: string | undefined, externalNames: string[]) {\n super(\n `The function '${fnLabel ?? '<unnamed>'}' is missing links to the following external values: ${externalNames}.`,\n );\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, MissingLinksError.prototype);\n }\n}\n\nexport class MissingBindGroupsError extends Error {\n constructor(layouts: Iterable<TgpuBindGroupLayout>) {\n super(\n `Missing bind groups for layouts: '${[...layouts].map((layout) => layout.label ?? '<unnamed>').join(', ')}'. Please provide it using pipeline.with(layout, bindGroup).(...)`,\n );\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, MissingBindGroupsError.prototype);\n }\n}\n\nexport class MissingVertexBuffersError extends Error {\n constructor(layouts: Iterable<TgpuVertexLayout<WgslArray | Disarray>>) {\n super(\n `Missing vertex buffers for layouts: '${[...layouts].map((layout) => layout.label ?? '<unnamed>').join(', ')}'. Please provide it using pipeline.with(layout, buffer).(...)`,\n );\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, MissingVertexBuffersError.prototype);\n }\n}\n","import { invariant } from './errors';\nimport type { ResolutionCtx } from './types';\n\nlet resolutionCtx: ResolutionCtx | null = null;\n\nexport function provideCtx<T>(ctx: ResolutionCtx, callback: () => T): T {\n invariant(resolutionCtx === null, 'Cannot nest context providers');\n\n resolutionCtx = ctx;\n try {\n return callback();\n } finally {\n resolutionCtx = null;\n }\n}\n\nexport function getResolutionCtx(): ResolutionCtx | null {\n return resolutionCtx;\n}\n\nexport const inGPUMode = () => resolutionCtx !== null;\n","import { inGPUMode } from '../gpuMode';\nimport type { SelfResolvable } from '../types';\nimport type {\n Vec2f,\n Vec2h,\n Vec2i,\n Vec2u,\n Vec3f,\n Vec3h,\n Vec3i,\n Vec3u,\n Vec4f,\n Vec4h,\n Vec4i,\n Vec4u,\n v2f,\n v2h,\n v2i,\n v2u,\n v3f,\n v3h,\n v3i,\n v3u,\n v4f,\n v4h,\n v4i,\n v4u,\n} from './wgslTypes';\n\n// --------------\n// Implementation\n// --------------\n\ninterface VecSchemaOptions<TType extends string, TValue> {\n type: TType;\n length: number;\n make: (...args: number[]) => TValue;\n makeFromScalar: (value: number) => TValue;\n}\n\ntype VecSchemaBase<TValue> = {\n readonly type: string;\n readonly '~repr': TValue;\n};\n\nfunction makeVecSchema<TType extends string, TValue>(\n options: VecSchemaOptions<TType, TValue>,\n): VecSchemaBase<TValue> & ((...args: number[]) => TValue) {\n const VecSchema: VecSchemaBase<TValue> = {\n /** Type-token, not available at runtime */\n '~repr': undefined as unknown as TValue,\n type: options.type,\n };\n\n const construct = (...args: number[]): TValue => {\n const values = args; // TODO: Allow users to pass in vectors that fill part of the values.\n\n if (inGPUMode()) {\n return `${VecSchema.type}(${values.join(', ')})` as unknown as TValue;\n }\n\n if (values.length <= 1) {\n return options.makeFromScalar(values[0] ?? 0);\n }\n\n if (values.length === options.length) {\n return options.make(...values);\n }\n\n throw new Error(\n `'${options.type}' constructor called with invalid number of arguments.`,\n );\n };\n\n return Object.assign(construct, VecSchema);\n}\n\nabstract class vec2Impl implements SelfResolvable {\n public readonly length = 2;\n abstract readonly kind: `vec2${'f' | 'u' | 'i' | 'h'}`;\n\n [n: number]: number;\n\n constructor(\n public x: number,\n public y: number,\n ) {}\n\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n }\n\n get [0]() {\n return this.x;\n }\n\n get [1]() {\n return this.y;\n }\n\n set [0](value: number) {\n this.x = value;\n }\n\n set [1](value: number) {\n this.y = value;\n }\n\n '~resolve'(): string {\n return `${this.kind}(${this.x}, ${this.y})`;\n }\n\n toString() {\n return this['~resolve']();\n }\n}\n\nclass vec2fImpl extends vec2Impl {\n readonly kind = 'vec2f';\n\n make2(x: number, y: number): v2f {\n return new vec2fImpl(x, y) as unknown as v2f;\n }\n\n make3(x: number, y: number, z: number): v3f {\n return new vec3fImpl(x, y, z) as unknown as v3f;\n }\n\n make4(x: number, y: number, z: number, w: number): v4f {\n return new vec4fImpl(x, y, z, w) as unknown as v4f;\n }\n}\n\nclass vec2hImpl extends vec2Impl {\n readonly kind = 'vec2h';\n\n make2(x: number, y: number): v2h {\n return new vec2hImpl(x, y) as unknown as v2h;\n }\n\n make3(x: number, y: number, z: number): v3h {\n return new vec3hImpl(x, y, z) as unknown as v3h;\n }\n\n make4(x: number, y: number, z: number, w: number): v4h {\n return new vec4hImpl(x, y, z, w) as unknown as v4h;\n }\n}\n\nclass vec2iImpl extends vec2Impl {\n readonly kind = 'vec2i';\n\n make2(x: number, y: number): v2i {\n return new vec2iImpl(x, y) as unknown as v2i;\n }\n\n make3(x: number, y: number, z: number): v3i {\n return new vec3iImpl(x, y, z) as unknown as v3i;\n }\n\n make4(x: number, y: number, z: number, w: number): v4i {\n return new vec4iImpl(x, y, z, w) as unknown as v4i;\n }\n}\n\nclass vec2uImpl extends vec2Impl {\n readonly kind = 'vec2u';\n\n make2(x: number, y: number): v2u {\n return new vec2uImpl(x, y) as unknown as v2u;\n }\n\n make3(x: number, y: number, z: number): v3u {\n return new vec3uImpl(x, y, z) as unknown as v3u;\n }\n\n make4(x: number, y: number, z: number, w: number): v4u {\n return new vec4uImpl(x, y, z, w) as unknown as v4u;\n }\n}\n\nabstract class vec3Impl implements SelfResolvable {\n public readonly length = 3;\n abstract readonly kind: `vec3${'f' | 'u' | 'i' | 'h'}`;\n [n: number]: number;\n\n constructor(\n public x: number,\n public y: number,\n public z: number,\n ) {}\n\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n yield this.z;\n }\n\n get [0]() {\n return this.x;\n }\n\n get [1]() {\n return this.y;\n }\n\n get [2]() {\n return this.z;\n }\n\n set [0](value: number) {\n this.x = value;\n }\n\n set [1](value: number) {\n this.y = value;\n }\n\n set [2](value: number) {\n this.z = value;\n }\n\n '~resolve'(): string {\n return `${this.kind}(${this.x}, ${this.y}, ${this.z})`;\n }\n\n toString() {\n return this['~resolve']();\n }\n}\n\nclass vec3fImpl extends vec3Impl {\n readonly kind = 'vec3f';\n\n make2(x: number, y: number): v2f {\n return new vec2fImpl(x, y) as unknown as v2f;\n }\n\n make3(x: number, y: number, z: number): v3f {\n return new vec3fImpl(x, y, z) as unknown as v3f;\n }\n\n make4(x: number, y: number, z: number, w: number): v4f {\n return new vec4fImpl(x, y, z, w) as unknown as v4f;\n }\n}\n\nclass vec3hImpl extends vec3Impl {\n readonly kind = 'vec3h';\n\n make2(x: number, y: number): v2h {\n return new vec2hImpl(x, y) as unknown as v2h;\n }\n\n make3(x: number, y: number, z: number): v3h {\n return new vec3hImpl(x, y, z) as unknown as v3h;\n }\n\n make4(x: number, y: number, z: number, w: number): v4h {\n return new vec4hImpl(x, y, z, w) as unknown as v4h;\n }\n}\n\nclass vec3iImpl extends vec3Impl {\n readonly kind = 'vec3i';\n\n make2(x: number, y: number): v2i {\n return new vec2iImpl(x, y) as unknown as v2i;\n }\n\n make3(x: number, y: number, z: number): v3i {\n return new vec3iImpl(x, y, z) as unknown as v3i;\n }\n\n make4(x: number, y: number, z: number, w: number): v4i {\n return new vec4iImpl(x, y, z, w) as unknown as v4i;\n }\n}\n\nclass vec3uImpl extends vec3Impl {\n readonly kind = 'vec3u';\n\n make2(x: number, y: number): v2u {\n return new vec2uImpl(x, y) as unknown as v2u;\n }\n\n make3(x: number, y: number, z: number): v3u {\n return new vec3uImpl(x, y, z) as unknown as v3u;\n }\n\n make4(x: number, y: number, z: number, w: number): v4u {\n return new vec4uImpl(x, y, z, w) as unknown as v4u;\n }\n}\n\nabstract class vec4Impl implements SelfResolvable {\n public readonly length = 4;\n abstract readonly kind: `vec4${'f' | 'u' | 'i' | 'h'}`;\n [n: number]: number;\n\n constructor(\n public x: number,\n public y: number,\n public z: number,\n public w: number,\n ) {}\n\n *[Symbol.iterator]() {\n yield this.x;\n yield this.y;\n yield this.z;\n yield this.w;\n }\n\n get [0]() {\n return this.x;\n }\n\n get [1]() {\n return this.y;\n }\n\n get [2]() {\n return this.z;\n }\n\n get [3]() {\n return this.w;\n }\n\n set [0](value: number) {\n this.x = value;\n }\n\n set [1](value: number) {\n this.y = value;\n }\n\n set [2](value: number) {\n this.z = value;\n }\n\n set [3](value: number) {\n this.w = value;\n }\n\n '~resolve'(): string {\n return `${this.kind}(${this.x}, ${this.y}, ${this.z}, ${this.w})`;\n }\n\n toString() {\n return this['~resolve']();\n }\n}\n\nclass vec4fImpl extends vec4Impl {\n readonly kind = 'vec4f';\n\n make2(x: number, y: number): v2f {\n return new vec2fImpl(x, y) as unknown as v2f;\n }\n\n make3(x: number, y: number, z: number): v3f {\n return new vec3fImpl(x, y, z) as unknown as v3f;\n }\n\n make4(x: number, y: number, z: number, w: number): v4f {\n return new vec4fImpl(x, y, z, w) as unknown as v4f;\n }\n}\n\nclass vec4hImpl extends vec4Impl {\n readonly kind = 'vec4h';\n\n make2(x: number, y: number): v2h {\n return new vec2hImpl(x, y) as unknown as v2h;\n }\n\n make3(x: number, y: number, z: number): v3h {\n return new vec3hImpl(x, y, z) as unknown as v3h;\n }\n\n make4(x: number, y: number, z: number, w: number): v4h {\n return new vec4hImpl(x, y, z, w) as unknown as v4h;\n }\n}\n\nclass vec4iImpl extends vec4Impl {\n readonly kind = 'vec4i';\n\n make2(x: number, y: number): v2i {\n return new vec2iImpl(x, y) as unknown as v2i;\n }\n\n make3(x: number, y: number, z: number): v3i {\n return new vec3iImpl(x, y, z) as unknown as v3i;\n }\n\n make4(x: number, y: number, z: number, w: number): v4i {\n return new vec4iImpl(x, y, z, w) as unknown as v4i;\n }\n}\n\nclass vec4uImpl extends vec4Impl {\n readonly kind = 'vec4u';\n\n make2(x: number, y: number): v2u {\n return new vec2uImpl(x, y) as unknown as v2u;\n }\n\n make3(x: number, y: number, z: number): v3u {\n return new vec3uImpl(x, y, z) as unknown as v3u;\n }\n\n make4(x: number, y: number, z: number, w: number): v4u {\n return new vec4uImpl(x, y, z, w) as unknown as v4u;\n }\n}\n\nconst vecProxyHandler: ProxyHandler<{ kind: VecKind }> = {\n get: (target, prop) => {\n if (typeof prop === 'symbol' || !Number.isNaN(Number.parseInt(prop))) {\n return Reflect.get(target, prop);\n }\n\n const targetAsVec4 = target as unknown as vec4uImpl;\n const values = new Array(prop.length) as number[];\n\n let idx = 0;\n for (const char of prop as string) {\n switch (char) {\n case 'x':\n values[idx] = targetAsVec4.x;\n break;\n case 'y':\n values[idx] = targetAsVec4.y;\n break;\n case 'z':\n values[idx] = targetAsVec4.z;\n break;\n case 'w':\n values[idx] = targetAsVec4.w;\n break;\n default:\n return Reflect.get(targetAsVec4, prop);\n }\n idx++;\n }\n\n if (prop.length === 4) {\n return new Proxy(\n targetAsVec4.make4(\n values[0] as number,\n values[1] as number,\n values[2] as number,\n values[3] as number,\n ),\n vecProxyHandler,\n );\n }\n\n if (prop.length === 3) {\n return new Proxy(\n targetAsVec4.make3(\n values[0] as number,\n values[1] as number,\n values[2] as number,\n ),\n vecProxyHandler,\n );\n }\n\n if (prop.length === 2) {\n return new Proxy(\n targetAsVec4.make2(values[0] as number, values[1] as number),\n vecProxyHandler,\n );\n }\n\n return Reflect.get(target, prop);\n },\n};\n\n// ----------\n// Public API\n// ----------\n\n/**\n * Type encompassing all available kinds of vector.\n */\nexport type VecKind =\n | 'vec2f'\n | 'vec2i'\n | 'vec2u'\n | 'vec2h'\n | 'vec3f'\n | 'vec3i'\n | 'vec3u'\n | 'vec3h'\n | 'vec4f'\n | 'vec4i'\n | 'vec4u'\n | 'vec4h';\n\n/**\n * Type of the `d.vec2f` object/function: vector data type schema/constructor\n */\nexport type NativeVec2f = Vec2f & { '~exotic': Vec2f } & ((\n x: number,\n y: number,\n ) => v2f) &\n ((xy: number) => v2f) &\n (() => v2f);\n\n/**\n *\n * Schema representing vec2f - a vector with 2 elements of type f32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec2f(); // (0.0, 0.0)\n * const vector = d.vec2f(1); // (1.0, 1.0)\n * const vector = d.vec2f(0.5, 0.1); // (0.5, 0.1)\n *\n * @example\n * const buffer = root.createBuffer(d.vec2f, d.vec2f(0, 1)); // buffer holding a d.vec2f value, with an initial value of vec2f(0, 1);\n */\nexport const vec2f = makeVecSchema({\n type: 'vec2f',\n length: 2,\n make: (x: number, y: number) =>\n new Proxy(new vec2fImpl(x, y), vecProxyHandler) as v2f,\n makeFromScalar: (x) => new Proxy(new vec2fImpl(x, x), vecProxyHandler) as v2f,\n}) as NativeVec2f;\n\n/**\n * Type of the `d.vec2h` object/function: vector data type schema/constructor\n */\nexport type NativeVec2h = Vec2h & { '~exotic': Vec2h } & ((\n x: number,\n y: number,\n ) => v2h) &\n ((xy: number) => v2h) &\n (() => v2h);\n\n/**\n *\n * Schema representing vec2h - a vector with 2 elements of type f16.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec2h(); // (0.0, 0.0)\n * const vector = d.vec2h(1); // (1.0, 1.0)\n * const vector = d.vec2h(0.5, 0.1); // (0.5, 0.1)\n *\n * @example\n * const buffer = root.createBuffer(d.vec2h, d.vec2h(0, 1)); // buffer holding a d.vec2h value, with an initial value of vec2h(0, 1);\n */\nexport const vec2h = makeVecSchema({\n type: 'vec2h',\n length: 2,\n make: (x: number, y: number) =>\n new Proxy(new vec2hImpl(x, y), vecProxyHandler) as v2h,\n makeFromScalar: (x) => new Proxy(new vec2hImpl(x, x), vecProxyHandler) as v2h,\n}) as NativeVec2h;\n\n/**\n * Type of the `d.vec2i` object/function: vector data type schema/constructor\n */\nexport type NativeVec2i = Vec2i & { '~exotic': Vec2i } & ((\n x: number,\n y: number,\n ) => v2i) &\n ((xy: number) => v2i) &\n (() => v2i);\n\n/**\n *\n * Schema representing vec2i - a vector with 2 elements of type i32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec2i(); // (0, 0)\n * const vector = d.vec2i(1); // (1, 1)\n * const vector = d.vec2i(-1, 1); // (-1, 1)\n *\n * @example\n * const buffer = root.createBuffer(d.vec2i, d.vec2i(0, 1)); // buffer holding a d.vec2i value, with an initial value of vec2i(0, 1);\n */\nexport const vec2i = makeVecSchema({\n type: 'vec2i',\n length: 2,\n make: (x: number, y: number) =>\n new Proxy(new vec2iImpl(x, y), vecProxyHandler) as v2i,\n makeFromScalar: (x) => new Proxy(new vec2iImpl(x, x), vecProxyHandler) as v2i,\n}) as NativeVec2i;\n\n/**\n * Type of the `d.vec2u` object/function: vector data type schema/constructor\n */\nexport type NativeVec2u = Vec2u & { '~exotic': Vec2u } & ((\n x: number,\n y: number,\n ) => v2u) &\n ((xy: number) => v2u) &\n (() => v2u);\n\n/**\n *\n * Schema representing vec2u - a vector with 2 elements of type u32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec2u(); // (0, 0)\n * const vector = d.vec2u(1); // (1, 1)\n * const vector = d.vec2u(1, 2); // (1, 2)\n *\n * @example\n * const buffer = root.createBuffer(d.vec2u, d.vec2u(0, 1)); // buffer holding a d.vec2u value, with an initial value of vec2u(0, 1);\n */\nexport const vec2u = makeVecSchema({\n type: 'vec2u',\n length: 2,\n make: (x: number, y: number) =>\n new Proxy(new vec2uImpl(x, y), vecProxyHandler) as v2u,\n makeFromScalar: (x) => new Proxy(new vec2uImpl(x, x), vecProxyHandler) as v2u,\n}) as NativeVec2u;\n\n/**\n * Type of the `d.vec3f` object/function: vector data type schema/constructor\n */\nexport type NativeVec3f = Vec3f & { '~exotic': Vec3f } & ((\n x: number,\n y: number,\n z: number,\n ) => v3f) &\n ((xyz: number) => v3f) &\n (() => v3f);\n\n/**\n *\n * Schema representing vec3f - a vector with 3 elements of type f32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec3f(); // (0.0, 0.0, 0.0)\n * const vector = d.vec3f(1); // (1.0, 1.0, 1.0)\n * const vector = d.vec3f(1, 2, 3.5); // (1.0, 2.0, 3.5)\n *\n * @example\n * const buffer = root.createBuffer(d.vec3f, d.vec3f(0, 1, 2)); // buffer holding a d.vec3f value, with an initial value of vec3f(0, 1, 2);\n */\nexport const vec3f = makeVecSchema({\n type: 'vec3f',\n length: 3,\n make: (x, y, z) => new Proxy(new vec3fImpl(x, y, z), vecProxyHandler) as v3f,\n makeFromScalar: (x) =>\n new Proxy(new vec3fImpl(x, x, x), vecProxyHandler) as v3f,\n}) as NativeVec3f;\n\n/**\n * Type of the `d.vec3h` object/function: vector data type schema/constructor\n */\nexport type NativeVec3h = Vec3h & { '~exotic': Vec3h } & ((\n x: number,\n y: number,\n z: number,\n ) => v3h) &\n ((xyz: number) => v3h) &\n (() => v3h);\n\n/**\n *\n * Schema representing vec3h - a vector with 3 elements of type f16.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec3h(); // (0.0, 0.0, 0.0)\n * const vector = d.vec3h(1); // (1.0, 1.0, 1.0)\n * const vector = d.vec3h(1, 2, 3.5); // (1.0, 2.0, 3.5)\n *\n * @example\n * const buffer = root.createBuffer(d.vec3h, d.vec3h(0, 1, 2)); // buffer holding a d.vec3h value, with an initial value of vec3h(0, 1, 2);\n */\nexport const vec3h = makeVecSchema({\n type: 'vec3h',\n length: 3,\n make: (x, y, z) => new Proxy(new vec3hImpl(x, y, z), vecProxyHandler) as v3h,\n makeFromScalar: (x) =>\n new Proxy(new vec3hImpl(x, x, x), vecProxyHandler) as v3h,\n}) as NativeVec3h;\n\n/**\n * Type of the `d.vec3i` object/function: vector data type schema/constructor\n */\nexport type NativeVec3i = Vec3i & { '~exotic': Vec3i } & ((\n x: number,\n y: number,\n z: number,\n ) => v3i) &\n ((xyz: number) => v3i) &\n (() => v3i);\n\n/**\n *\n * Schema representing vec3i - a vector with 3 elements of type i32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec3i(); // (0, 0, 0)\n * const vector = d.vec3i(1); // (1, 1, 1)\n * const vector = d.vec3i(1, 2, -3); // (1, 2, -3)\n *\n * @example\n * const buffer = root.createBuffer(d.vec3i, d.vec3i(0, 1, 2)); // buffer holding a d.vec3i value, with an initial value of vec3i(0, 1, 2);\n */\nexport const vec3i = makeVecSchema({\n type: 'vec3i',\n length: 3,\n make: (x, y, z) => new Proxy(new vec3iImpl(x, y, z), vecProxyHandler) as v3i,\n makeFromScalar: (x) =>\n new Proxy(new vec3iImpl(x, x, x), vecProxyHandler) as v3i,\n}) as NativeVec3i;\n\n/**\n * Type of the `d.vec3u` object/function: vector data type schema/constructor\n */\nexport type NativeVec3u = Vec3u & { '~exotic': Vec3u } & ((\n x: number,\n y: number,\n z: number,\n ) => v3u) &\n ((xyz: number) => v3u) &\n (() => v3u);\n\n/**\n *\n * Schema representing vec3u - a vector with 3 elements of type u32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec3u(); // (0, 0, 0)\n * const vector = d.vec3u(1); // (1, 1, 1)\n * const vector = d.vec3u(1, 2, 3); // (1, 2, 3)\n *\n * @example\n * const buffer = root.createBuffer(d.vec3u, d.vec3u(0, 1, 2)); // buffer holding a d.vec3u value, with an initial value of vec3u(0, 1, 2);\n */\nexport const vec3u = makeVecSchema({\n type: 'vec3u',\n length: 3,\n make: (x, y, z) => new Proxy(new vec3uImpl(x, y, z), vecProxyHandler) as v3u,\n makeFromScalar: (x) =>\n new Proxy(new vec3uImpl(x, x, x), vecProxyHandler) as v3u,\n}) as NativeVec3u;\n\n/**\n * Type of the `d.vec4f` object/function: vector data type schema/constructor\n */\nexport type NativeVec4f = Vec4f & { '~exotic': Vec4f } & ((\n x: number,\n y: number,\n z: number,\n w: number,\n ) => v4f) &\n ((xyzw: number) => v4f) &\n (() => v4f);\n\n/**\n *\n * Schema representing vec4f - a vector with 4 elements of type f32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec4f(); // (0.0, 0.0, 0.0, 0.0)\n * const vector = d.vec4f(1); // (1.0, 1.0, 1.0, 1.0)\n * const vector = d.vec4f(1, 2, 3, 4.5); // (1.0, 2.0, 3.0, 4.5)\n *\n * @example\n * const buffer = root.createBuffer(d.vec4f, d.vec4f(0, 1, 2, 3)); // buffer holding a d.vec4f value, with an initial value of vec4f(0, 1, 2, 3);\n */\nexport const vec4f = makeVecSchema({\n type: 'vec4f',\n length: 4,\n make: (x, y, z, w) =>\n new Proxy(new vec4fImpl(x, y, z, w), vecProxyHandler) as v4f,\n makeFromScalar: (x) =>\n new Proxy(new vec4fImpl(x, x, x, x), vecProxyHandler) as v4f,\n}) as NativeVec4f;\n\n/**\n * Type of the `d.vec4h` object/function: vector data type schema/constructor\n */\nexport type NativeVec4h = Vec4h & { '~exotic': Vec4h } & ((\n x: number,\n y: number,\n z: number,\n w: number,\n ) => v4h) &\n ((xyzw: number) => v4h) &\n (() => v4h);\n\n/**\n *\n * Schema representing vec4h - a vector with 4 elements of type f16.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec4h(); // (0.0, 0.0, 0.0, 0.0)\n * const vector = d.vec4h(1); // (1.0, 1.0, 1.0, 1.0)\n * const vector = d.vec4h(1, 2, 3, 4.5); // (1.0, 2.0, 3.0, 4.5)\n *\n * @example\n * const buffer = root.createBuffer(d.vec4h, d.vec4h(0, 1, 2, 3)); // buffer holding a d.vec4h value, with an initial value of vec4h(0, 1, 2, 3);\n */\nexport const vec4h = makeVecSchema({\n type: 'vec4h',\n length: 4,\n make: (x, y, z, w) =>\n new Proxy(new vec4hImpl(x, y, z, w), vecProxyHandler) as v4h,\n makeFromScalar: (x) =>\n new Proxy(new vec4hImpl(x, x, x, x), vecProxyHandler) as v4h,\n}) as NativeVec4h;\n\n/**\n * Type of the `d.vec4i` object/function: vector data type schema/constructor\n */\nexport type NativeVec4i = Vec4i & { '~exotic': Vec4i } & ((\n x: number,\n y: number,\n z: number,\n w: number,\n ) => v4i) &\n ((xyzw: number) => v4i) &\n (() => v4i);\n\n/**\n *\n * Schema representing vec4i - a vector with 4 elements of type i32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec4i(); // (0, 0, 0, 0)\n * const vector = d.vec4i(1); // (1, 1, 1, 1)\n * const vector = d.vec4i(1, 2, 3, -4); // (1, 2, 3, -4)\n *\n * @example\n * const buffer = root.createBuffer(d.vec4i, d.vec4i(0, 1, 2, 3)); // buffer holding a d.vec4i value, with an initial value of vec4i(0, 1, 2, 3);\n */\nexport const vec4i = makeVecSchema({\n type: 'vec4i',\n length: 4,\n make: (x, y, z, w) =>\n new Proxy(new vec4iImpl(x, y, z, w), vecProxyHandler) as v4i,\n makeFromScalar: (x) =>\n new Proxy(new vec4iImpl(x, x, x, x), vecProxyHandler) as v4i,\n}) as NativeVec4i;\n\n/**\n * Type of the `d.vec4u` object/function: vector data type schema/constructor\n */\nexport type NativeVec4u = Vec4u & { '~exotic': Vec4u } & ((\n x: number,\n y: number,\n z: number,\n w: number,\n ) => v4u) &\n ((xyzw: number) => v4u) &\n (() => v4u);\n\n/**\n *\n * Schema representing vec4u - a vector with 4 elements of type u32.\n * Also a constructor function for this vector value.\n *\n * @example\n * const vector = d.vec4u(); // (0, 0, 0, 0)\n * const vector = d.vec4u(1); // (1, 1, 1, 1)\n * const vector = d.vec4u(1, 2, 3, 4); // (1, 2, 3, 4)\n *\n * @example\n * const buffer = root.createBuffer(d.vec4u, d.vec4u(0, 1, 2, 3)); // buffer holding a d.vec4u value, with an initial value of vec4u(0, 1, 2, 3);\n */\nexport const vec4u = makeVecSchema({\n length: 4,\n type: 'vec4u',\n make: (x, y, z, w) =>\n new Proxy(new vec4uImpl(x, y, z, w), vecProxyHandler) as v4u,\n makeFromScalar: (x) =>\n new Proxy(new vec4uImpl(x, x, x, x), vecProxyHandler) as v4u,\n}) as NativeVec4u;\n"],"mappings":"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","names":["prefix","invariant","condition","message","ResolutionError","_ResolutionError","cause","trace","entries","ancestor","newTrace","MissingSlotValueError","_MissingSlotValueError","slot","NotUniformError","_NotUniformError","value","_a","MissingLinksError","_MissingLinksError","fnLabel","externalNames","MissingBindGroupsError","_MissingBindGroupsError","layouts","layout","MissingVertexBuffersError","_MissingVertexBuffersError","resolutionCtx","provideCtx","ctx","callback","invariant","getResolutionCtx","inGPUMode","makeVecSchema","options","VecSchema","args","_a","values","inGPUMode","vec2Impl","x","y","__publicField","value","vec2fImpl","_vec2fImpl","z","vec3fImpl","w","vec4fImpl","vec2hImpl","_vec2hImpl","vec3hImpl","vec4hImpl","vec2iImpl","_vec2iImpl","vec3iImpl","vec4iImpl","vec2uImpl","_vec2uImpl","vec3uImpl","vec4uImpl","vec3Impl","_vec3fImpl","_vec3hImpl","_vec3iImpl","_vec3uImpl","vec4Impl","_vec4fImpl","_vec4hImpl","_vec4iImpl","_vec4uImpl","vecProxyHandler","target","prop","targetAsVec4","idx","char","vec2f","vec2h","vec2i","vec2u","vec3f","vec3h","vec3i","vec3u","vec4f","vec4h","vec4i","vec4u"]}
|