wgsl-renderer 0.4.2 → 0.5.0

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/dist/cjs/index.js CHANGED
@@ -1,4 +1,4 @@
1
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region src/RenderPass.ts
3
3
  var RenderPass = class {
4
4
  name;
@@ -32,11 +32,11 @@ var RenderPass = class {
32
32
  this.format = descriptor.format;
33
33
  this.renderToCanvas = descriptor.renderToCanvas;
34
34
  const actualFormat = descriptor.format || format;
35
- const module$1 = this.device.createShaderModule({
35
+ const module = this.device.createShaderModule({
36
36
  code: descriptor.shaderCode,
37
37
  label: `Shader for ${descriptor.name}`
38
38
  });
39
- this.compilationInfo = module$1.getCompilationInfo();
39
+ this.compilationInfo = module.getCompilationInfo();
40
40
  this.vertexBuffer = this.device.createBuffer({
41
41
  size: 36,
42
42
  usage: GPUBufferUsage.VERTEX,
@@ -59,7 +59,7 @@ var RenderPass = class {
59
59
  this.pipeline = this.device.createRenderPipeline({
60
60
  layout,
61
61
  vertex: {
62
- module: module$1,
62
+ module,
63
63
  entryPoint: vertexEntryPoint,
64
64
  buffers: [{
65
65
  arrayStride: 12,
@@ -71,7 +71,7 @@ var RenderPass = class {
71
71
  }]
72
72
  },
73
73
  fragment: {
74
- module: module$1,
74
+ module,
75
75
  entryPoint: fragmentEntryPoint,
76
76
  targets: [{
77
77
  format: actualFormat,
@@ -308,7 +308,6 @@ var RenderPass = class {
308
308
  }
309
309
  }
310
310
  };
311
-
312
311
  //#endregion
313
312
  //#region src/TextureManager.ts
314
313
  var TextureManager = class {
@@ -418,7 +417,6 @@ var TextureManager = class {
418
417
  };
419
418
  }
420
419
  };
421
-
422
420
  //#endregion
423
421
  //#region src/PassTextureRef.ts
424
422
  const PASS_TEXTURE_REF_SYMBOL = Symbol("PassTextureRef");
@@ -454,13 +452,12 @@ function createSamplingView(texture, ref) {
454
452
  mipLevelCount: ref.options?.mipmaps ? texture.mipLevelCount : 1
455
453
  });
456
454
  }
457
-
458
455
  //#endregion
459
456
  //#region src/index.ts
460
- var RenderMode = /* @__PURE__ */ function(RenderMode$1) {
461
- RenderMode$1["NORMAL"] = "normal";
462
- RenderMode$1["EXPORT"] = "export";
463
- return RenderMode$1;
457
+ var RenderMode = /* @__PURE__ */ function(RenderMode) {
458
+ RenderMode["NORMAL"] = "normal";
459
+ RenderMode["EXPORT"] = "export";
460
+ return RenderMode;
464
461
  }(RenderMode || {});
465
462
  var WGSLRenderer = class {
466
463
  ctx;
@@ -470,7 +467,7 @@ var WGSLRenderer = class {
470
467
  textureManager;
471
468
  animationFrameId = null;
472
469
  isResizing = false;
473
- renderMode = RenderMode.NORMAL;
470
+ renderMode = "normal";
474
471
  readBuffer = null;
475
472
  hasClearedCanvasThisFrame = false;
476
473
  constructor(canvas, options) {
@@ -480,7 +477,8 @@ var WGSLRenderer = class {
480
477
  this.ctx = canvas.getContext("webgpu");
481
478
  }
482
479
  async init() {
483
- this.device = await (await navigator.gpu.requestAdapter()).requestDevice();
480
+ const adapter = await navigator.gpu.requestAdapter();
481
+ this.device = await adapter.requestDevice();
484
482
  this.format = navigator.gpu.getPreferredCanvasFormat();
485
483
  const config = Object.assign({
486
484
  device: this.device,
@@ -695,7 +693,10 @@ var WGSLRenderer = class {
695
693
  if (info.messages.length > 0) {
696
694
  let errMsg = "";
697
695
  for (const msg of info.messages) errMsg += `[WGSL ${msg.type}] Shader compilation failed for pass ${pass.name} (${msg.lineNum}:${msg.linePos}): ${msg.message}\n`;
698
- throw new Error(errMsg);
696
+ return Promise.reject({
697
+ messages: info.messages,
698
+ cause: errMsg
699
+ });
699
700
  }
700
701
  }));
701
702
  await Promise.all(validations);
@@ -707,7 +708,7 @@ var WGSLRenderer = class {
707
708
  renderError = e;
708
709
  }
709
710
  const error = await this.device.popErrorScope();
710
- if (error) throw new Error(`Binding/validation error: ${error.message}`);
711
+ if (error) throw new Error(`Binding/validation error: ${error.message}`, { cause: error.message });
711
712
  if (renderError) throw renderError;
712
713
  }
713
714
  insertPassesTo(passName, descriptors) {
@@ -832,7 +833,7 @@ var WGSLRenderer = class {
832
833
  let renderTargetView;
833
834
  let isRenderingToCanvas = false;
834
835
  if (pass.view) renderTargetView = pass.view;
835
- else if (this.renderMode === RenderMode.EXPORT && (pass.renderToCanvas || isLastPass)) {
836
+ else if (this.renderMode === "export" && (pass.renderToCanvas || isLastPass)) {
836
837
  renderTargetView = this.textureManager.getOrCreateOutputTexture(canvasWidth, canvasHeight, this.format).createView();
837
838
  if (this.hasClearedCanvasThisFrame) {
838
839
  if (loadOp === "clear") loadOp = "load";
@@ -932,10 +933,9 @@ async function createWGSLRenderer(cvs, options) {
932
933
  await renderer.init();
933
934
  return renderer;
934
935
  }
935
-
936
936
  //#endregion
937
937
  exports.PassTextureRef = PassTextureRef;
938
938
  exports.RenderMode = RenderMode;
939
939
  exports.WGSLRenderer = WGSLRenderer;
940
940
  exports.createSamplingView = createSamplingView;
941
- exports.createWGSLRenderer = createWGSLRenderer;
941
+ exports.createWGSLRenderer = createWGSLRenderer;
@@ -144,7 +144,7 @@ declare class RenderPass {
144
144
  declare enum RenderMode {
145
145
  NORMAL = "normal",
146
146
  // 正常模式:渲染到canvas和outputTexture
147
- EXPORT = "export",
147
+ EXPORT = "export"
148
148
  }
149
149
  interface WGSLRendererOptions {
150
150
  config?: Partial<GPUCanvasConfiguration>;
package/dist/esm/index.js CHANGED
@@ -307,7 +307,6 @@ var RenderPass = class {
307
307
  }
308
308
  }
309
309
  };
310
-
311
310
  //#endregion
312
311
  //#region src/TextureManager.ts
313
312
  var TextureManager = class {
@@ -417,7 +416,6 @@ var TextureManager = class {
417
416
  };
418
417
  }
419
418
  };
420
-
421
419
  //#endregion
422
420
  //#region src/PassTextureRef.ts
423
421
  const PASS_TEXTURE_REF_SYMBOL = Symbol("PassTextureRef");
@@ -453,13 +451,12 @@ function createSamplingView(texture, ref) {
453
451
  mipLevelCount: ref.options?.mipmaps ? texture.mipLevelCount : 1
454
452
  });
455
453
  }
456
-
457
454
  //#endregion
458
455
  //#region src/index.ts
459
- var RenderMode = /* @__PURE__ */ function(RenderMode$1) {
460
- RenderMode$1["NORMAL"] = "normal";
461
- RenderMode$1["EXPORT"] = "export";
462
- return RenderMode$1;
456
+ var RenderMode = /* @__PURE__ */ function(RenderMode) {
457
+ RenderMode["NORMAL"] = "normal";
458
+ RenderMode["EXPORT"] = "export";
459
+ return RenderMode;
463
460
  }(RenderMode || {});
464
461
  var WGSLRenderer = class {
465
462
  ctx;
@@ -469,7 +466,7 @@ var WGSLRenderer = class {
469
466
  textureManager;
470
467
  animationFrameId = null;
471
468
  isResizing = false;
472
- renderMode = RenderMode.NORMAL;
469
+ renderMode = "normal";
473
470
  readBuffer = null;
474
471
  hasClearedCanvasThisFrame = false;
475
472
  constructor(canvas, options) {
@@ -479,7 +476,8 @@ var WGSLRenderer = class {
479
476
  this.ctx = canvas.getContext("webgpu");
480
477
  }
481
478
  async init() {
482
- this.device = await (await navigator.gpu.requestAdapter()).requestDevice();
479
+ const adapter = await navigator.gpu.requestAdapter();
480
+ this.device = await adapter.requestDevice();
483
481
  this.format = navigator.gpu.getPreferredCanvasFormat();
484
482
  const config = Object.assign({
485
483
  device: this.device,
@@ -694,7 +692,10 @@ var WGSLRenderer = class {
694
692
  if (info.messages.length > 0) {
695
693
  let errMsg = "";
696
694
  for (const msg of info.messages) errMsg += `[WGSL ${msg.type}] Shader compilation failed for pass ${pass.name} (${msg.lineNum}:${msg.linePos}): ${msg.message}\n`;
697
- throw new Error(errMsg);
695
+ return Promise.reject({
696
+ messages: info.messages,
697
+ cause: errMsg
698
+ });
698
699
  }
699
700
  }));
700
701
  await Promise.all(validations);
@@ -706,7 +707,7 @@ var WGSLRenderer = class {
706
707
  renderError = e;
707
708
  }
708
709
  const error = await this.device.popErrorScope();
709
- if (error) throw new Error(`Binding/validation error: ${error.message}`);
710
+ if (error) throw new Error(`Binding/validation error: ${error.message}`, { cause: error.message });
710
711
  if (renderError) throw renderError;
711
712
  }
712
713
  insertPassesTo(passName, descriptors) {
@@ -831,7 +832,7 @@ var WGSLRenderer = class {
831
832
  let renderTargetView;
832
833
  let isRenderingToCanvas = false;
833
834
  if (pass.view) renderTargetView = pass.view;
834
- else if (this.renderMode === RenderMode.EXPORT && (pass.renderToCanvas || isLastPass)) {
835
+ else if (this.renderMode === "export" && (pass.renderToCanvas || isLastPass)) {
835
836
  renderTargetView = this.textureManager.getOrCreateOutputTexture(canvasWidth, canvasHeight, this.format).createView();
836
837
  if (this.hasClearedCanvasThisFrame) {
837
838
  if (loadOp === "clear") loadOp = "load";
@@ -931,6 +932,5 @@ async function createWGSLRenderer(cvs, options) {
931
932
  await renderer.init();
932
933
  return renderer;
933
934
  }
934
-
935
935
  //#endregion
936
- export { PassTextureRef, RenderMode, WGSLRenderer, createSamplingView, createWGSLRenderer };
936
+ export { PassTextureRef, RenderMode, WGSLRenderer, createSamplingView, createWGSLRenderer };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wgsl-renderer",
3
- "version": "0.4.2",
3
+ "version": "0.5.0",
4
4
  "description": "A multi-pass renderer based on WebGPU and WGSL.",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -33,16 +33,15 @@
33
33
  "files": [
34
34
  "dist"
35
35
  ],
36
- "dependencies": {},
37
36
  "devDependencies": {
38
- "@taiyuuki/eslint-config": "^1.4.14",
39
- "@types/node": "^20.14.2",
40
- "@webgpu/types": "^0.1.66",
41
- "eslint": "^9.5.0",
42
- "rimraf": "^6.1.2",
43
- "rolldown": "1.0.0-beta.52",
44
- "rolldown-plugin-dts": "^0.18.1",
45
- "typescript": "^5.4.5"
37
+ "@taiyuuki/eslint-config": "^1.6.6",
38
+ "@types/node": "^25.5.2",
39
+ "@webgpu/types": "^0.1.69",
40
+ "eslint": "^10.2.0",
41
+ "rimraf": "^6.1.3",
42
+ "rolldown": "1.0.0-rc.17",
43
+ "rolldown-plugin-dts": "^0.23.2",
44
+ "typescript": "^6.0.2"
46
45
  },
47
46
  "scripts": {
48
47
  "lint": "eslint --fix",