wgsl-renderer 0.4.2 → 0.5.1

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,11 @@ 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
+ pass: pass.name
700
+ });
699
701
  }
700
702
  }));
701
703
  await Promise.all(validations);
@@ -707,7 +709,7 @@ var WGSLRenderer = class {
707
709
  renderError = e;
708
710
  }
709
711
  const error = await this.device.popErrorScope();
710
- if (error) throw new Error(`Binding/validation error: ${error.message}`);
712
+ if (error) throw new Error(`Binding/validation error: ${error.message}`, { cause: error.message });
711
713
  if (renderError) throw renderError;
712
714
  }
713
715
  insertPassesTo(passName, descriptors) {
@@ -832,7 +834,7 @@ var WGSLRenderer = class {
832
834
  let renderTargetView;
833
835
  let isRenderingToCanvas = false;
834
836
  if (pass.view) renderTargetView = pass.view;
835
- else if (this.renderMode === RenderMode.EXPORT && (pass.renderToCanvas || isLastPass)) {
837
+ else if (this.renderMode === "export" && (pass.renderToCanvas || isLastPass)) {
836
838
  renderTargetView = this.textureManager.getOrCreateOutputTexture(canvasWidth, canvasHeight, this.format).createView();
837
839
  if (this.hasClearedCanvasThisFrame) {
838
840
  if (loadOp === "clear") loadOp = "load";
@@ -932,10 +934,9 @@ async function createWGSLRenderer(cvs, options) {
932
934
  await renderer.init();
933
935
  return renderer;
934
936
  }
935
-
936
937
  //#endregion
937
938
  exports.PassTextureRef = PassTextureRef;
938
939
  exports.RenderMode = RenderMode;
939
940
  exports.WGSLRenderer = WGSLRenderer;
940
941
  exports.createSamplingView = createSamplingView;
941
- exports.createWGSLRenderer = createWGSLRenderer;
942
+ 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,11 @@ 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
+ pass: pass.name
699
+ });
698
700
  }
699
701
  }));
700
702
  await Promise.all(validations);
@@ -706,7 +708,7 @@ var WGSLRenderer = class {
706
708
  renderError = e;
707
709
  }
708
710
  const error = await this.device.popErrorScope();
709
- if (error) throw new Error(`Binding/validation error: ${error.message}`);
711
+ if (error) throw new Error(`Binding/validation error: ${error.message}`, { cause: error.message });
710
712
  if (renderError) throw renderError;
711
713
  }
712
714
  insertPassesTo(passName, descriptors) {
@@ -831,7 +833,7 @@ var WGSLRenderer = class {
831
833
  let renderTargetView;
832
834
  let isRenderingToCanvas = false;
833
835
  if (pass.view) renderTargetView = pass.view;
834
- else if (this.renderMode === RenderMode.EXPORT && (pass.renderToCanvas || isLastPass)) {
836
+ else if (this.renderMode === "export" && (pass.renderToCanvas || isLastPass)) {
835
837
  renderTargetView = this.textureManager.getOrCreateOutputTexture(canvasWidth, canvasHeight, this.format).createView();
836
838
  if (this.hasClearedCanvasThisFrame) {
837
839
  if (loadOp === "clear") loadOp = "load";
@@ -931,6 +933,5 @@ async function createWGSLRenderer(cvs, options) {
931
933
  await renderer.init();
932
934
  return renderer;
933
935
  }
934
-
935
936
  //#endregion
936
- export { PassTextureRef, RenderMode, WGSLRenderer, createSamplingView, createWGSLRenderer };
937
+ 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.1",
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",