@agpu/bindings 0.2.11 → 0.2.13

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/README.md CHANGED
@@ -0,0 +1,14 @@
1
+ # @agpu/bindings
2
+
3
+ **@agpu/bindings** is a set of classes that is made to wrap WebGPU but with modularity and ease of use.
4
+
5
+ # Installation
6
+
7
+ ```js
8
+ import {WebGPUControls} from "@agpu/bindings"
9
+
10
+ const webgpu = new WebGPUControls(document.getElementById("canvas"))
11
+ const adapter = new webgpu.Adapter()
12
+ const context = new webgpu.Context()
13
+ const device = new adapter.Device()
14
+ ```
@@ -1,7 +1,7 @@
1
1
  import { BRAND, RAW } from "@agpu/helpers/decorators";
2
2
  import DeviceControls from "./device";
3
3
  import "@webgpu/types";
4
- export interface ADAPTER_CONTROLS extends BRAND<"AdapterControls">, RAW<"adapter"> {
4
+ export interface AdapterControls extends BRAND<"AdapterControls">, RAW<"adapter"> {
5
5
  }
6
6
  export declare class AdapterControls {
7
7
  #private;
@@ -23,7 +23,8 @@ export declare class AdapterControls {
23
23
  readonly features: GPUSupportedFeatures;
24
24
  readonly limits: GPUSupportedLimits;
25
25
  adapter: GPUAdapter;
26
- device: (options: DEVICE_REQUEST) => Promise<DeviceControls>;
26
+ device: (options?: DEVICE_REQUEST) => Promise<DeviceControls>;
27
+ get Device(): Promise<DeviceControls>;
27
28
  }
28
29
  export default AdapterControls;
29
30
  interface DEVICE_REQUEST {
@@ -1 +1 @@
1
- "use strict";var e=this&&this.__esDecorate||((e,t,r,i,a,s)=>{function o(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var u,n=i.kind,d="getter"===n?"get":"setter"===n?"set":"value",l=!t&&e?i.static?e:e.prototype:null,c=t||(l?Object.getOwnPropertyDescriptor(l,i.name):{}),f=!1,p=r.length-1;p>=0;p--){var h={};for(var v in i)h[v]="access"===v?{}:i[v];for(var v in i.access)h.access[v]=i.access[v];h.addInitializer=e=>{if(f)throw new TypeError("Cannot add initializers after decoration has completed");s.push(o(e||null))};var m=(0,r[p])("accessor"===n?{get:c.get,set:c.set}:c[d],h);if("accessor"===n){if(void 0===m)continue;if(null===m||"object"!=typeof m)throw new TypeError("Object expected");(u=o(m.get))&&(c.get=u),(u=o(m.set))&&(c.set=u),(u=o(m.init))&&a.unshift(u)}else(u=o(m))&&("field"===n?a.unshift(u):c[d]=u)}l&&Object.defineProperty(l,i.name,c),f=!0}),t=this&&this.__runInitializers||function(e,t,r){for(var i=arguments.length>2,a=0;t.length>a;a++)r=i?t[a].call(e,r):t[a].call(e);return i?r:void 0},r=this&&this.__importDefault||(e=>e&&e.__esModule?e:{default:e});Object.defineProperty(exports,"__esModule",{value:!0}),exports.AdapterControls=void 0;const i=require("@agpu/helpers/decorators"),a=r(require("../../helpers/errors")),s=require("@agpu/helpers/decorators"),o=r(require("./device"));require("@webgpu/types");let u=(()=>{let r,u,n=[(0,i.brand)("AdapterControls"),(0,s.raw)("adapter")],d=[];return class{static{u=this}static{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;e(null,r={value:u},n,{kind:"class",name:u.name,metadata:i},null,d),u=r.value,i&&Object.defineProperty(u,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),t(u,d)}constructor(e){this.info={subgroup:{max:e.info.subgroupMaxSize,min:e.info.subgroupMinSize},...e.info},this.device=async t=>{if(this.#e)return this.#e;const r=t.required?.features?.filter(t=>!e.features.has(t))??[];if(r.length)throw(0,a.default)(29,`Adapter does not support required feature(s): ${r.join(", ")}.`,"Check adapter.features before requesting the device or remove unsupported required features.");return this.#e=new o.default(await e.requestDevice({requiredFeatures:t.required?.features,requiredLimits:t.required?.limits,defaultQueue:t.defaultQueue}).catch(()=>{throw(0,a.default)(30,"Failed to request a GPU device from the adapter.","Verify the required features and limits are valid for the selected adapter.")}))},this.features=e.features,this.limits=e.limits,this.adapter=e}#e;info;features;limits;adapter;device},u})();exports.AdapterControls=u,exports.default=u;
1
+ "use strict";var e=this&&this.__esDecorate||((e,t,r,i,a,s)=>{function o(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var u,n=i.kind,d="getter"===n?"get":"setter"===n?"set":"value",l=!t&&e?i.static?e:e.prototype:null,c=t||(l?Object.getOwnPropertyDescriptor(l,i.name):{}),f=!1,p=r.length-1;p>=0;p--){var h={};for(var v in i)h[v]="access"===v?{}:i[v];for(var v in i.access)h.access[v]=i.access[v];h.addInitializer=e=>{if(f)throw new TypeError("Cannot add initializers after decoration has completed");s.push(o(e||null))};var m=(0,r[p])("accessor"===n?{get:c.get,set:c.set}:c[d],h);if("accessor"===n){if(void 0===m)continue;if(null===m||"object"!=typeof m)throw new TypeError("Object expected");(u=o(m.get))&&(c.get=u),(u=o(m.set))&&(c.set=u),(u=o(m.init))&&a.unshift(u)}else(u=o(m))&&("field"===n?a.unshift(u):c[d]=u)}l&&Object.defineProperty(l,i.name,c),f=!0}),t=this&&this.__runInitializers||function(e,t,r){for(var i=arguments.length>2,a=0;t.length>a;a++)r=i?t[a].call(e,r):t[a].call(e);return i?r:void 0},r=this&&this.__importDefault||(e=>e&&e.__esModule?e:{default:e});Object.defineProperty(exports,"__esModule",{value:!0}),exports.AdapterControls=void 0;const i=require("@agpu/helpers/decorators"),a=r(require("../../helpers/errors")),s=require("@agpu/helpers/decorators"),o=r(require("./device"));require("@webgpu/types");let u=(()=>{let r,u,n=[(0,i.brand)("AdapterControls"),(0,s.raw)("adapter")],d=[];return class{static{u=this}static{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;e(null,r={value:u},n,{kind:"class",name:u.name,metadata:i},null,d),u=r.value,i&&Object.defineProperty(u,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),t(u,d)}constructor(e){this.info={subgroup:{max:e.info.subgroupMaxSize,min:e.info.subgroupMinSize},...e.info},this.device=async t=>{if(this.#e)return this.#e;const r=t?.required?.features?.filter(t=>!e.features.has(t))??[];if(r.length)throw(0,a.default)(29,`Adapter does not support required feature(s): ${r.join(", ")}.`,"Check adapter.features before requesting the device or remove unsupported required features.");return this.#e=new o.default(await e.requestDevice({requiredFeatures:t?.required?.features,requiredLimits:t?.required?.limits,defaultQueue:t?.defaultQueue}).catch(()=>{throw(0,a.default)(30,"Failed to request a GPU device from the adapter.","Verify the required features and limits are valid for the selected adapter.")}))},this.features=e.features,this.limits=e.limits,this.adapter=e}#e;info;features;limits;adapter;device;get Device(){return this.device()}},u})();exports.AdapterControls=u,exports.default=u;
@@ -78,7 +78,7 @@ export declare class DeviceControls {
78
78
  new (options: TEXTURE_CREATOR_OPTIONS): {
79
79
  "__#private@#device": GPUDevice;
80
80
  "__#private@#texture": GPUTexture;
81
- "__#private@#view": import("../sub/data/texture/textureView").TextureViewCreator;
81
+ "__#private@#view": import("../..").TextureViewCreator;
82
82
  "__#private@#options": TEXTURE_CREATOR_OPTIONS | undefined;
83
83
  "__#private@#value"?: GPUAllowSharedBufferSource;
84
84
  "__#private@#destroyed": boolean;
@@ -111,7 +111,7 @@ export declare class DeviceControls {
111
111
  sync(): void;
112
112
  raw(): GPUTexture;
113
113
  clone(): TextureCreator;
114
- view(): import("../sub/data/texture/textureView").TextureViewCreator;
114
+ view(): import("../..").TextureViewCreator;
115
115
  copyToBuffer(destination: BufferCreator | import("../../helpers/types/DCMember").default<"Buffer"> | GPUBuffer, options?: import("../sub/data/texture").TEXTURE_TO_BUFFER_OPTIONS): void;
116
116
  copyToTexture(destination: TextureCreator | import("../../helpers/types/DCMember").default<"Texture"> | GPUTexture, options?: import("../sub/data/texture").TEXTURE_TO_TEXTURE_OPTIONS): void;
117
117
  aspect(): number;
@@ -125,10 +125,10 @@ export declare class DeviceControls {
125
125
  };
126
126
  fromURL(url: string): Promise<TextureCreator>;
127
127
  from(gputexture: GPUTexture): TextureCreator;
128
- fromBitmap(bitmap: ImageBitmap): Promise<{
128
+ fromBitmap(bitmap: ImageBitmap): {
129
129
  "__#private@#device": GPUDevice;
130
130
  "__#private@#texture": GPUTexture;
131
- "__#private@#view": import("../sub/data/texture/textureView").TextureViewCreator;
131
+ "__#private@#view": import("../..").TextureViewCreator;
132
132
  "__#private@#options": TEXTURE_CREATOR_OPTIONS | undefined;
133
133
  "__#private@#value"?: GPUAllowSharedBufferSource;
134
134
  "__#private@#destroyed": boolean;
@@ -161,7 +161,7 @@ export declare class DeviceControls {
161
161
  sync(): void;
162
162
  raw(): GPUTexture;
163
163
  clone(): TextureCreator;
164
- view(): import("../sub/data/texture/textureView").TextureViewCreator;
164
+ view(): import("../..").TextureViewCreator;
165
165
  copyToBuffer(destination: BufferCreator | import("../../helpers/types/DCMember").default<"Buffer"> | GPUBuffer, options?: import("../sub/data/texture").TEXTURE_TO_BUFFER_OPTIONS): void;
166
166
  copyToTexture(destination: TextureCreator | import("../../helpers/types/DCMember").default<"Texture"> | GPUTexture, options?: import("../sub/data/texture").TEXTURE_TO_TEXTURE_OPTIONS): void;
167
167
  aspect(): number;
@@ -172,7 +172,7 @@ export declare class DeviceControls {
172
172
  label<T extends string>(label: T): T;
173
173
  readonly __brand: "TextureCreator";
174
174
  [Symbol.hasInstance](instance: TextureCreator): instance is TextureCreator;
175
- }>;
175
+ };
176
176
  };
177
177
  readonly Sampler: {
178
178
  new (options?: GPUSamplerDescriptor): {
@@ -346,13 +346,13 @@ export declare class DeviceControls {
346
346
  readonly CommandEncoder: {
347
347
  new (label?: string): {
348
348
  cmdencoder: GPUCommandEncoder;
349
- readonly RenderPass: typeof import("../sub/pipeline/commandEncoder/renderPass").RenderPassCreator;
349
+ readonly RenderPass: typeof import("../..").RenderPassCreator;
350
350
  readonly ComputePass: {
351
351
  new (options: import("../sub/pipeline/commandEncoder/computepass").COMPUTE_PASS_OPTIONS): {
352
352
  readonly computepass: GPUComputePassEncoder;
353
353
  "__#private@#debugDepth": number;
354
354
  "__#private@#buildOptions"(options?: import("../sub/pipeline/commandEncoder/computepass").COMPUTE_PASS_OPTIONS): GPUComputePassDescriptor;
355
- bindGroup(index: number, bindGroup: BindGroupCreator | import("../../helpers/types/DCMember").default<"BindGroup">, dynamicOffsets?: number[] | Uint32Array, dynamicOffsetData?: import("../sub/pipeline/commandEncoder/computepass").ComputePassCreator.bindGroup.DYNAMIC_OFFSET_DATA): void;
355
+ bindGroup(index: number, bindGroup: BindGroupCreator | import("../../helpers/types/DCMember").default<"BindGroup">, dynamicOffsets?: number[] | Uint32Array, dynamicOffsetData?: import("../..").ComputePassCreator.bindGroup.DYNAMIC_OFFSET_DATA): void;
356
356
  "__#private@#pipeline"?: ComputePipelineCreator;
357
357
  pipeline(): Promise<import("@agpu/helpers/unsure").default<ComputePipelineCreator>>;
358
358
  pipeline<T extends ComputePipelineCreator | import("../../helpers/types/DCMember").default<"ComputePipeline">>(pipeline: T): Promise<T>;
@@ -400,7 +400,7 @@ export declare class DeviceControls {
400
400
  [Symbol.hasInstance](instance: BufferCreator): instance is BufferCreator;
401
401
  };
402
402
  readonly len: 3;
403
- from(buffer: BufferCreator | GPUBuffer): Promise<import("../sub/pipeline/commandEncoder/renderPass/indirectBuffer").default>;
403
+ from(buffer: BufferCreator | GPUBuffer): Promise<import("../..").IndirectBufferCreator>;
404
404
  };
405
405
  indirect: (buffer: {
406
406
  "__#private@#currentBuffer": GPUBuffer;
@@ -1 +1 @@
1
- "use strict";var e=this&&this.__esDecorate||((e,t,r,u,s,a)=>{function n(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var i,o=u.kind,c="getter"===o?"get":"setter"===o?"set":"value",l=!t&&e?u.static?e:e.prototype:null,d=t||(l?Object.getOwnPropertyDescriptor(l,u.name):{}),p=!1,f=r.length-1;f>=0;f--){var m={};for(var h in u)m[h]="access"===h?{}:u[h];for(var h in u.access)m.access[h]=u.access[h];m.addInitializer=e=>{if(p)throw new TypeError("Cannot add initializers after decoration has completed");a.push(n(e||null))};var b=(0,r[f])("accessor"===o?{get:d.get,set:d.set}:d[c],m);if("accessor"===o){if(void 0===b)continue;if(null===b||"object"!=typeof b)throw new TypeError("Object expected");(i=n(b.get))&&(d.get=i),(i=n(b.set))&&(d.set=i),(i=n(b.init))&&s.unshift(i)}else(i=n(b))&&("field"===o?s.unshift(i):d[c]=i)}l&&Object.defineProperty(l,u.name,d),p=!0}),t=this&&this.__runInitializers||function(e,t,r){for(var u=arguments.length>2,s=0;t.length>s;s++)r=u?t[s].call(e,r):t[s].call(e);return u?r:void 0},r=this&&this.__importDefault||(e=>e&&e.__esModule?e:{default:e});Object.defineProperty(exports,"__esModule",{value:!0}),exports.DeviceControls=void 0;const u=r(require("../sub/data/bindGroupLayout")),s=r(require("../sub/data/buffers")),a=r(require("../sub/pipeline/pipelineLayout")),n=r(require("../sub/pipeline/renderPipeline")),i=r(require("../sub/pipeline/sampler")),o=r(require("../sub/data/shaderModule")),c=r(require("../sub/data/texture")),l=r(require("../sub/data/bindGroup")),d=r(require("../sub/pipeline/computePipeline")),p=r(require("../../helpers/errors")),f=r(require("../sub/pipeline/querySet")),m=r(require("../sub/pipeline/renderBundleEncoder")),h=require("@agpu/helpers/decorators"),b=require("@agpu/helpers/decorators"),g=r(require("../sub/pipeline/commandEncoder"));require("@webgpu/types");let w=(()=>{let r,w,x=[(0,h.brand)("DeviceControls"),(0,b.raw)("device")],y=[];return class{static{w=this}static{const u="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;e(null,r={value:w},x,{kind:"class",name:w.name,metadata:u},null,y),w=r.value,u&&Object.defineProperty(w,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:u}),t(w,y)}constructor(e){this.#e=e,this.device=e,this.Buffer=class extends s.default{constructor(t){super(e,t)}static async from(t){if(!(t.usage&GPUBufferUsage.MAP_READ))throw(0,p.default)(18,"Buffer is not MAP_READ compatible","Ensure GPUBufferUsage.MAP_READ was set during creation.");await t.mapAsync(GPUMapMode.READ);const r=t.getMappedRange().slice(0);return t.unmap(),new s.default(e,{value:r,usage:t.usage})}};const t=this;this.Texture=class extends c.default{constructor(t){super(e,t)}static async fromURL(r){const u=await fetch(r),s=await u.blob(),a=await createImageBitmap(s),n=new t.Texture({size:[a.width,a.height,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});return e.queue.copyExternalImageToTexture({source:a},{texture:n.raw()},[a.width,a.height]),n}static from(t){return new c.default(e,t)}static async fromBitmap(r){const u=new t.Texture({size:[r.width,r.height,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});return e.queue.copyExternalImageToTexture({source:r},{texture:u.raw()},[r.width,r.height]),u}},this.Sampler=class extends i.default{constructor(t={magFilter:"linear",minFilter:"linear"}){super(e,t)}static from(t){return new i.default(e,t)}},this.ShaderModule=class extends o.default{constructor(t,r){super(e,t,r)}static from(t){return new o.default(e,t)}},this.RenderPipeline=class extends n.default{constructor(t){super(e,t)}static from(t){return new n.default(e,t)}},this.BindGroupLayout=class extends u.default{constructor(t){super(e,t)}static from(t){return new u.default(e,t)}},this.PipelineLayout=class extends a.default{constructor(t={}){super(e,t)}static from(t){return new a.default(e,t)}},this.BindGroup=class extends l.default{constructor(t){super(e,t)}static from(t){return new l.default(e,t)}},this.ComputePipeline=class extends d.default{constructor(t){super(e,t)}static from(t){return new d.default(e,t)}},this.QuerySet=class extends f.default{constructor(t){super(e,t)}static from(t){return new f.default(e,t)}},this.RenderBundleEncoder=class extends m.default{constructor(t){super(e,e.createRenderBundleEncoder(t))}},this.CommandEncoder=class extends g.default{constructor(t){super(e,t)}static from(t){return new g.default(e,t)}}}queue={submit:e=>{if(!Array.isArray(e)||0===e.length)throw(0,p.default)(34,"queue.submit requires at least one CommandBufferCreator.","Finish a command encoder first and pass the resulting command buffer(s) to queue.submit(...).");return this.#e.queue.submit(e.map(e=>e.raw()))},on:(e,t)=>{if("submittedWorkDone"!==e)throw(0,p.default)(35,`Unsupported queue event: ${e+""}.`,"Use queue.on('submittedWorkDone', callback).");this.#e.queue.onSubmittedWorkDone().then(()=>t())}};#e;device;Buffer;Texture;Sampler;ShaderModule;BindGroupLayout;BindGroup;RenderPipeline;ComputePipeline;PipelineLayout;QuerySet;RenderBundleEncoder;CommandEncoder},w})();exports.DeviceControls=w,exports.default=w;
1
+ "use strict";var e=this&&this.__esDecorate||((e,t,r,u,s,a)=>{function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var n,o=u.kind,c="getter"===o?"get":"setter"===o?"set":"value",l=!t&&e?u.static?e:e.prototype:null,d=t||(l?Object.getOwnPropertyDescriptor(l,u.name):{}),p=!1,f=r.length-1;f>=0;f--){var m={};for(var h in u)m[h]="access"===h?{}:u[h];for(var h in u.access)m.access[h]=u.access[h];m.addInitializer=e=>{if(p)throw new TypeError("Cannot add initializers after decoration has completed");a.push(i(e||null))};var b=(0,r[f])("accessor"===o?{get:d.get,set:d.set}:d[c],m);if("accessor"===o){if(void 0===b)continue;if(null===b||"object"!=typeof b)throw new TypeError("Object expected");(n=i(b.get))&&(d.get=n),(n=i(b.set))&&(d.set=n),(n=i(b.init))&&s.unshift(n)}else(n=i(b))&&("field"===o?s.unshift(n):d[c]=n)}l&&Object.defineProperty(l,u.name,d),p=!0}),t=this&&this.__runInitializers||function(e,t,r){for(var u=arguments.length>2,s=0;t.length>s;s++)r=u?t[s].call(e,r):t[s].call(e);return u?r:void 0},r=this&&this.__importDefault||(e=>e&&e.__esModule?e:{default:e});Object.defineProperty(exports,"__esModule",{value:!0}),exports.DeviceControls=void 0;const u=r(require("../sub/data/bindGroupLayout")),s=r(require("../sub/data/buffers")),a=r(require("../sub/pipeline/pipelineLayout")),i=r(require("../sub/pipeline/renderPipeline")),n=r(require("../sub/pipeline/sampler")),o=r(require("../sub/data/shaderModule")),c=r(require("../sub/data/texture")),l=r(require("../sub/data/bindGroup")),d=r(require("../sub/pipeline/computePipeline")),p=r(require("../../helpers/errors")),f=r(require("../sub/pipeline/querySet")),m=r(require("../sub/pipeline/renderBundleEncoder")),h=require("@agpu/helpers/decorators"),b=require("@agpu/helpers/decorators"),g=r(require("../sub/pipeline/commandEncoder"));require("@webgpu/types");let w=(()=>{let r,w,x=[(0,h.brand)("DeviceControls"),(0,b.raw)("device")],y=[];return class{static{w=this}static{const u="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;e(null,r={value:w},x,{kind:"class",name:w.name,metadata:u},null,y),w=r.value,u&&Object.defineProperty(w,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:u}),t(w,y)}constructor(e){this.#e=e,this.device=e,this.Buffer=class extends s.default{constructor(t){super(e,t)}static async from(t){if(!(t.usage&GPUBufferUsage.MAP_READ))throw(0,p.default)(18,"Buffer is not MAP_READ compatible","Ensure GPUBufferUsage.MAP_READ was set during creation.");await t.mapAsync(GPUMapMode.READ);const r=t.getMappedRange().slice(0);return t.unmap(),new s.default(e,{value:r,usage:t.usage})}};const t=this;this.Texture=class extends c.default{constructor(t){super(e,t)}static async fromURL(r){const u=await fetch(r),s=await u.blob(),a=await createImageBitmap(s),i=new t.Texture({size:[a.width,a.height,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});return e.queue.copyExternalImageToTexture({source:a},{texture:i.raw()},[a.width,a.height]),i}static from(t){return new c.default(e,t)}static fromBitmap(r){const u=new t.Texture({size:[r.width,r.height,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});return e.queue.copyExternalImageToTexture({source:r},{texture:u.raw()},[r.width,r.height]),u}},this.Sampler=class extends n.default{constructor(t={magFilter:"linear",minFilter:"linear"}){super(e,t)}static from(t){return new n.default(e,t)}},this.ShaderModule=class extends o.default{constructor(t,r){super(e,t,r)}static from(t){return new o.default(e,t)}},this.RenderPipeline=class extends i.default{constructor(t){super(e,t)}static from(t){return new i.default(e,t)}},this.BindGroupLayout=class extends u.default{constructor(t){super(e,t)}static from(t){return new u.default(e,t)}},this.PipelineLayout=class extends a.default{constructor(t={}){super(e,t)}static from(t){return new a.default(e,t)}},this.BindGroup=class extends l.default{constructor(t){super(e,t)}static from(t){return new l.default(e,t)}},this.ComputePipeline=class extends d.default{constructor(t){super(e,t)}static from(t){return new d.default(e,t)}},this.QuerySet=class extends f.default{constructor(t){super(e,t)}static from(t){return new f.default(e,t)}},this.RenderBundleEncoder=class extends m.default{constructor(t){super(e,e.createRenderBundleEncoder(t))}},this.CommandEncoder=class extends g.default{constructor(t){super(e,t)}static from(t){return new g.default(e,t)}}}queue={submit:e=>{if(!Array.isArray(e)||0===e.length)throw(0,p.default)(34,"queue.submit requires at least one CommandBufferCreator.","Finish a command encoder first and pass the resulting command buffer(s) to queue.submit(...).");return this.#e.queue.submit(e.map(e=>e.raw()))},on:(e,t)=>{if("submittedWorkDone"!==e)throw(0,p.default)(35,`Unsupported queue event: ${e+""}.`,"Use queue.on('submittedWorkDone', callback).");this.#e.queue.onSubmittedWorkDone().then(()=>t())}};#e;device;Buffer;Texture;Sampler;ShaderModule;BindGroupLayout;BindGroup;RenderPipeline;ComputePipeline;PipelineLayout;QuerySet;RenderBundleEncoder;CommandEncoder},w})();exports.DeviceControls=w,exports.default=w;
@@ -10,6 +10,7 @@ declare class WebGPUControls {
10
10
  readonly cv: HTMLCanvasElement;
11
11
  preferredCanvasFormat(): GPUTextureFormat;
12
12
  context(): ContextControls;
13
+ get Context(): ContextControls;
13
14
  get Adapter(): Promise<AdapterControls>;
14
15
  }
15
16
  export default WebGPUControls;
@@ -1 +1 @@
1
- "use strict";var e=this&&this.__esDecorate||((e,t,r,a,n,o)=>{function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var s,c=a.kind,l="getter"===c?"get":"setter"===c?"set":"value",u=!t&&e?a.static?e:e.prototype:null,d=t||(u?Object.getOwnPropertyDescriptor(u,a.name):{}),p=!1,f=r.length-1;f>=0;f--){var h={};for(var v in a)h[v]="access"===v?{}:a[v];for(var v in a.access)h.access[v]=a.access[v];h.addInitializer=e=>{if(p)throw new TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var g=(0,r[f])("accessor"===c?{get:d.get,set:d.set}:d[l],h);if("accessor"===c){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(s=i(g.get))&&(d.get=s),(s=i(g.set))&&(d.set=s),(s=i(g.init))&&n.unshift(s)}else(s=i(g))&&("field"===c?n.unshift(s):d[l]=s)}u&&Object.defineProperty(u,a.name,d),p=!0}),t=this&&this.__runInitializers||function(e,t,r){for(var a=arguments.length>2,n=0;t.length>n;n++)r=a?t[n].call(e,r):t[n].call(e);return a?r:void 0},r=this&&this.__importDefault||(e=>e&&e.__esModule?e:{default:e});Object.defineProperty(exports,"__esModule",{value:!0});const a=require("@agpu/helpers/decorators"),n=r(require("../../helpers/errors")),o=r(require("./adapter")),i=require("./context");require("@webgpu/types");let s=(()=>{let r,s,c=[(0,a.brand)("WebGPUControls")],l=[];return class{static{s=this}static{const a="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;e(null,r={value:s},c,{kind:"class",name:s.name,metadata:a},null,l),s=r.value,a&&Object.defineProperty(s,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:a}),t(s,l)}constructor(e){if(!navigator.gpu)throw(0,n.default)(24,"WebGPU not supported!");if(!(e instanceof HTMLCanvasElement))throw(0,n.default)(26,"WebGPUControls requires a HTMLCanvasElement.","Pass a real <canvas> element when constructing WebGPUControls.");this.#e=navigator.gpu.getPreferredCanvasFormat(),this.cv=e}cv;#e;preferredCanvasFormat(){return this.#e}context(){let e=this.cv.getContext("webgpu");if(e)return new i.ContextControls(e);throw(0,n.default)(27,"Failed to acquire a WebGPU canvas context.","Ensure the canvas supports getContext('webgpu') and has not been initialized with a different context type.")}#t;get Adapter(){return this.#t?Promise.resolve(this.#t):navigator.gpu.requestAdapter().then(e=>{if(!e)throw(0,n.default)(25,"navigator.gpu.requestAdapter returned null");return this.#t=new o.default(e)}).catch(e=>{if(e instanceof Error&&"code"in e)throw e;throw(0,n.default)(28,"Failed to acquire a GPU adapter.","Ensure a compatible WebGPU adapter is available and the browser has permission to use it.")})}},s})();exports.default=s;
1
+ "use strict";var e=this&&this.__esDecorate||((e,t,r,a,n,o)=>{function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var s,c=a.kind,l="getter"===c?"get":"setter"===c?"set":"value",u=!t&&e?a.static?e:e.prototype:null,d=t||(u?Object.getOwnPropertyDescriptor(u,a.name):{}),h=!1,p=r.length-1;p>=0;p--){var f={};for(var v in a)f[v]="access"===v?{}:a[v];for(var v in a.access)f.access[v]=a.access[v];f.addInitializer=e=>{if(h)throw new TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var g=(0,r[p])("accessor"===c?{get:d.get,set:d.set}:d[l],f);if("accessor"===c){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(s=i(g.get))&&(d.get=s),(s=i(g.set))&&(d.set=s),(s=i(g.init))&&n.unshift(s)}else(s=i(g))&&("field"===c?n.unshift(s):d[l]=s)}u&&Object.defineProperty(u,a.name,d),h=!0}),t=this&&this.__runInitializers||function(e,t,r){for(var a=arguments.length>2,n=0;t.length>n;n++)r=a?t[n].call(e,r):t[n].call(e);return a?r:void 0},r=this&&this.__importDefault||(e=>e&&e.__esModule?e:{default:e});Object.defineProperty(exports,"__esModule",{value:!0});const a=require("@agpu/helpers/decorators"),n=r(require("../../helpers/errors")),o=r(require("./adapter")),i=require("./context");require("@webgpu/types");let s=(()=>{let r,s,c=[(0,a.brand)("WebGPUControls")],l=[];return class{static{s=this}static{const a="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;e(null,r={value:s},c,{kind:"class",name:s.name,metadata:a},null,l),s=r.value,a&&Object.defineProperty(s,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:a}),t(s,l)}constructor(e){if(!navigator.gpu)throw(0,n.default)(24,"WebGPU not supported!");if(!(e instanceof HTMLCanvasElement))throw(0,n.default)(26,"WebGPUControls requires a HTMLCanvasElement.","Pass a real <canvas> element when constructing WebGPUControls.");this.#e=navigator.gpu.getPreferredCanvasFormat(),this.cv=e}cv;#e;preferredCanvasFormat(){return this.#e}context(){let e=this.cv.getContext("webgpu");if(e)return new i.ContextControls(e);throw(0,n.default)(27,"Failed to acquire a WebGPU canvas context.","Ensure the canvas supports getContext('webgpu') and has not been initialized with a different context type.")}get Context(){return this.context()}#t;get Adapter(){return this.#t?Promise.resolve(this.#t):navigator.gpu.requestAdapter().then(e=>{if(!e)throw(0,n.default)(25,"navigator.gpu.requestAdapter returned null");return this.#t=new o.default(e)}).catch(e=>{if(e instanceof Error&&"code"in e)throw e;throw(0,n.default)(28,"Failed to acquire a GPU adapter.","Ensure a compatible WebGPU adapter is available and the browser has permission to use it.")})}},s})();exports.default=s;
package/dist/index.d.ts CHANGED
@@ -6,4 +6,58 @@
6
6
  import BufferUsage from "./constants/bufferusage";
7
7
  import TextureUsage from "./constants/textureusage";
8
8
  import WebGPUControls from "./classes/main/webgpucontrols";
9
- export { WebGPUControls, BufferUsage, TextureUsage };
9
+ import DeviceControls from "./classes/main/device";
10
+ import AdapterControls from "./classes/main/adapter";
11
+ import { ContextControls } from "./classes/main/context";
12
+ import CommandBufferCreator from "./classes/sub/data/commandbuffer";
13
+ import BufferCreator from "./classes/sub/data/buffers";
14
+ import SamplerCreator from "./classes/sub/pipeline/sampler";
15
+ import TextureCreator from "./classes/sub/data/texture";
16
+ import QuerySetCreator from "./classes/sub/pipeline/querySet";
17
+ import BindGroupCreator from "./classes/sub/data/bindGroup";
18
+ import RenderPassCreator from "./classes/sub/pipeline/commandEncoder/renderPass";
19
+ import ComputePassCreator from "./classes/sub/pipeline/commandEncoder/computepass";
20
+ import TextureViewCreator from "./classes/sub/data/texture/textureView";
21
+ import RenderBundleCreator from "./classes/sub/pipeline/renderBundleEncoder/renderBundle";
22
+ import ShaderModuleCreator from "./classes/sub/data/shaderModule";
23
+ import CommandEncoderCreator from "./classes/sub/pipeline/commandEncoder";
24
+ import IndirectBufferCreator from "./classes/sub/pipeline/commandEncoder/renderPass/indirectBuffer";
25
+ import PipelineLayoutCreator from "./classes/sub/pipeline/pipelineLayout";
26
+ import RenderPipelineCreator from "./classes/sub/pipeline/renderPipeline";
27
+ import BindGroupLayoutCreator from "./classes/sub/data/bindGroupLayout";
28
+ import ComputePipelineCreator from "./classes/sub/pipeline/computePipeline";
29
+ export { WebGPUControls, BufferUsage, TextureUsage, DeviceControls, AdapterControls, ContextControls,
30
+ /**Internal class. exported for types */
31
+ TextureCreator,
32
+ /**Internal class. exported for types */
33
+ QuerySetCreator,
34
+ /**Internal class. exported for types */
35
+ CommandBufferCreator,
36
+ /**Internal class. exported for types */
37
+ CommandEncoderCreator,
38
+ /**Internal class. exported for types */
39
+ BufferCreator,
40
+ /**Internal class. exported for types */
41
+ SamplerCreator,
42
+ /**Internal class. exported for types */
43
+ BindGroupCreator,
44
+ /**Internal class. exported for types */
45
+ BindGroupLayoutCreator,
46
+ /**Internal class. exported for types */
47
+ RenderPassCreator,
48
+ /**Internal class. exported for types */
49
+ RenderPipelineCreator,
50
+ /**Internal class. exported for types */
51
+ ComputePassCreator,
52
+ /**Internal class. exported for types */
53
+ ComputePipelineCreator,
54
+ /**Internal class. exported for types */
55
+ TextureViewCreator,
56
+ /**Internal class. exported for types */
57
+ RenderBundleCreator,
58
+ /**Internal class. exported for types */
59
+ ShaderModuleCreator,
60
+ /**Internal class. exported for types */
61
+ IndirectBufferCreator,
62
+ /**Internal class. exported for types */
63
+ PipelineLayoutCreator };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=this&&this.__importDefault||(e=>e&&e.__esModule?e:{default:e});Object.defineProperty(exports,"__esModule",{value:!0}),exports.TextureUsage=exports.BufferUsage=exports.WebGPUControls=void 0;const t=e(require("./constants/bufferusage"));exports.BufferUsage=t.default;const s=e(require("./constants/textureusage"));exports.TextureUsage=s.default;const r=e(require("./classes/main/webgpucontrols"));exports.WebGPUControls=r.default;
1
+ "use strict";var e=this&&this.__importDefault||(e=>e&&e.__esModule?e:{default:e});Object.defineProperty(exports,"__esModule",{value:!0}),exports.PipelineLayoutCreator=exports.IndirectBufferCreator=exports.ShaderModuleCreator=exports.RenderBundleCreator=exports.TextureViewCreator=exports.ComputePipelineCreator=exports.ComputePassCreator=exports.RenderPipelineCreator=exports.RenderPassCreator=exports.BindGroupLayoutCreator=exports.BindGroupCreator=exports.SamplerCreator=exports.BufferCreator=exports.CommandEncoderCreator=exports.CommandBufferCreator=exports.QuerySetCreator=exports.TextureCreator=exports.ContextControls=exports.AdapterControls=exports.DeviceControls=exports.TextureUsage=exports.BufferUsage=exports.WebGPUControls=void 0;const r=e(require("./constants/bufferusage"));exports.BufferUsage=r.default;const t=e(require("./constants/textureusage"));exports.TextureUsage=t.default;const s=e(require("./classes/main/webgpucontrols"));exports.WebGPUControls=s.default;const o=e(require("./classes/main/device"));exports.DeviceControls=o.default;const a=e(require("./classes/main/adapter"));exports.AdapterControls=a.default;const u=require("./classes/main/context");Object.defineProperty(exports,"ContextControls",{enumerable:!0,get:()=>u.ContextControls});const n=e(require("./classes/sub/data/commandbuffer"));exports.CommandBufferCreator=n.default;const p=e(require("./classes/sub/data/buffers"));exports.BufferCreator=p.default;const i=e(require("./classes/sub/pipeline/sampler"));exports.SamplerCreator=i.default;const l=e(require("./classes/sub/data/texture"));exports.TextureCreator=l.default;const d=e(require("./classes/sub/pipeline/querySet"));exports.QuerySetCreator=d.default;const c=e(require("./classes/sub/data/bindGroup"));exports.BindGroupCreator=c.default;const x=e(require("./classes/sub/pipeline/commandEncoder/renderPass"));exports.RenderPassCreator=x.default;const C=e(require("./classes/sub/pipeline/commandEncoder/computepass"));exports.ComputePassCreator=C.default;const f=e(require("./classes/sub/data/texture/textureView"));exports.TextureViewCreator=f.default;const m=e(require("./classes/sub/pipeline/renderBundleEncoder/renderBundle"));exports.RenderBundleCreator=m.default;const b=e(require("./classes/sub/data/shaderModule"));exports.ShaderModuleCreator=b.default;const q=e(require("./classes/sub/pipeline/commandEncoder"));exports.CommandEncoderCreator=q.default;const P=e(require("./classes/sub/pipeline/commandEncoder/renderPass/indirectBuffer"));exports.IndirectBufferCreator=P.default;const B=e(require("./classes/sub/pipeline/pipelineLayout"));exports.PipelineLayoutCreator=B.default;const y=e(require("./classes/sub/pipeline/renderPipeline"));exports.RenderPipelineCreator=y.default;const g=e(require("./classes/sub/data/bindGroupLayout"));exports.BindGroupLayoutCreator=g.default;const G=e(require("./classes/sub/pipeline/computePipeline"));exports.ComputePipelineCreator=G.default;
package/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "@webgpu/types": "^0.1.69"
17
17
  },
18
18
  "name": "@agpu/bindings",
19
- "version": "0.2.11",
19
+ "version": "0.2.13",
20
20
  "author": {
21
21
  "name": "Kryft Studios",
22
22
  "email": "AfriaStudios@outlook.in",
@@ -31,6 +31,16 @@
31
31
  "types": "./dist/index.d.ts"
32
32
  }
33
33
  },
34
+ "keywords": [
35
+ "webgpu",
36
+ "3d",
37
+ "graphics",
38
+ "andromeda",
39
+ "gpu",
40
+ "modular",
41
+ "bindings",
42
+ "rendering"
43
+ ],
34
44
  "scripts": {
35
45
  "lint": "eslint",
36
46
  "build": "node --no-warnings cmd/build.js",