layershift 0.3.0 → 0.4.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.
Files changed (48) hide show
  1. package/README.md +46 -43
  2. package/dist/components/layershift.js +264 -1119
  3. package/dist/npm/layershift.es.js +2277 -3774
  4. package/dist/types/components/layershift/global.d.ts +2 -2
  5. package/dist/types/components/layershift/index.d.ts +5 -1
  6. package/dist/types/components/layershift/index.d.ts.map +1 -1
  7. package/dist/types/components/layershift/layershift-element.d.ts +39 -9
  8. package/dist/types/components/layershift/layershift-element.d.ts.map +1 -1
  9. package/dist/types/components/layershift/lifecycle.d.ts +6 -0
  10. package/dist/types/components/layershift/lifecycle.d.ts.map +1 -1
  11. package/dist/types/components/layershift/portal-element.d.ts +11 -3
  12. package/dist/types/components/layershift/portal-element.d.ts.map +1 -1
  13. package/dist/types/components/layershift/types.d.ts +22 -9
  14. package/dist/types/components/layershift/types.d.ts.map +1 -1
  15. package/dist/types/depth-analysis.d.ts +10 -6
  16. package/dist/types/depth-analysis.d.ts.map +1 -1
  17. package/dist/types/{parallax-renderer.d.ts → depth-effect-renderer.d.ts} +63 -15
  18. package/dist/types/depth-effect-renderer.d.ts.map +1 -0
  19. package/dist/types/depth-estimator.d.ts +96 -0
  20. package/dist/types/depth-estimator.d.ts.map +1 -0
  21. package/dist/types/input-handler.d.ts +8 -2
  22. package/dist/types/input-handler.d.ts.map +1 -1
  23. package/dist/types/media-source.d.ts +76 -0
  24. package/dist/types/media-source.d.ts.map +1 -0
  25. package/dist/types/portal-renderer.d.ts +2 -1
  26. package/dist/types/portal-renderer.d.ts.map +1 -1
  27. package/dist/types/precomputed-depth.d.ts +5 -0
  28. package/dist/types/precomputed-depth.d.ts.map +1 -1
  29. package/dist/types/renderer-base.d.ts +13 -8
  30. package/dist/types/renderer-base.d.ts.map +1 -1
  31. package/dist/types/shared/channel-to-renderer.d.ts +72 -0
  32. package/dist/types/shared/channel-to-renderer.d.ts.map +1 -0
  33. package/dist/types/shared/filter-config.d.ts +184 -0
  34. package/dist/types/shared/filter-config.d.ts.map +1 -0
  35. package/dist/types/video-source.d.ts +0 -1
  36. package/dist/types/video-source.d.ts.map +1 -1
  37. package/package.json +9 -3
  38. package/dist/types/gpu-backend.d.ts +0 -37
  39. package/dist/types/gpu-backend.d.ts.map +0 -1
  40. package/dist/types/parallax-renderer-webgpu.d.ts +0 -103
  41. package/dist/types/parallax-renderer-webgpu.d.ts.map +0 -1
  42. package/dist/types/parallax-renderer.d.ts.map +0 -1
  43. package/dist/types/portal-renderer-webgpu.d.ts +0 -199
  44. package/dist/types/portal-renderer-webgpu.d.ts.map +0 -1
  45. package/dist/types/render-pass-webgpu.d.ts +0 -76
  46. package/dist/types/render-pass-webgpu.d.ts.map +0 -1
  47. package/dist/types/webgpu-utils.d.ts +0 -42
  48. package/dist/types/webgpu-utils.d.ts.map +0 -1
@@ -1,103 +0,0 @@
1
- /**
2
- * Parallax Renderer (WebGPU) — GPU-accelerated depth-aware video parallax.
3
- *
4
- * WebGPU counterpart to `parallax-renderer.ts` (WebGL2). Shares the same
5
- * `RendererBase` abstract base class and `ParallaxRendererConfig` interface.
6
- *
7
- * ## Pipeline
8
- *
9
- * 1. **Bilateral filter pass** — edge-preserving depth smoothing.
10
- * Reads raw depth, writes filtered depth to offscreen r8unorm texture.
11
- * Runs at RVFC rate (~5fps, only when depth data changes).
12
- *
13
- * 2. **Parallax pass** — per-pixel depth-based displacement.
14
- * Reads video + filtered depth, renders to canvas swap chain texture.
15
- * Runs at RAF rate (60-120fps).
16
- *
17
- * ## Key differences from WebGL2 version
18
- *
19
- * - Pipeline state objects bake all config at creation time
20
- * - Bind groups replace individual uniform calls
21
- * - Override constants replace #define injection
22
- * - `copyExternalImageToTexture` for zero-copy video frame import
23
- * - `writeTexture` for depth data upload
24
- */
25
- import { RendererBase } from './renderer-base';
26
- import type { ParallaxRendererConfig } from './parallax-renderer';
27
- export declare class ParallaxRendererWebGPU extends RendererBase {
28
- private device;
29
- private context;
30
- private canvasFormat;
31
- private readonly config;
32
- private quadBuffer;
33
- private linearSampler;
34
- private bilateralPipeline;
35
- private bilateralBindGroupLayout;
36
- private bilateralUniformBuffer;
37
- private bilateralBindGroup;
38
- private rawDepthTexture;
39
- private rawDepthView;
40
- private filteredDepthTexture;
41
- private filteredDepthView;
42
- private parallaxPipeline;
43
- private parallaxBindGroupLayout;
44
- private vertexUniformBuffer;
45
- private fragmentUniformBuffer;
46
- private parallaxBindGroup;
47
- private videoTexture;
48
- private videoTextureView;
49
- private readonly offsetData;
50
- private depthFlipBuffer;
51
- constructor(parent: HTMLElement, config: ParallaxRendererConfig, device: GPUDevice, adapterInfo: GPUAdapterInfo);
52
- /**
53
- * Set up textures, write static uniforms, and build bind groups.
54
- *
55
- * Call this once after the video element and depth data are loaded.
56
- */
57
- initialize(video: HTMLVideoElement, depthWidth: number, depthHeight: number): void;
58
- private createBilateralPipeline;
59
- private createParallaxPipeline;
60
- private rebuildBilateralBindGroup;
61
- private rebuildParallaxBindGroup;
62
- /** Write all static (non per-frame) fragment uniforms. */
63
- private writeStaticFragmentUniforms;
64
- /**
65
- * Flip depth data vertically to match video orientation.
66
- *
67
- * WebGPU `writeTexture` has no equivalent to WebGL's `UNPACK_FLIP_Y_WEBGL`.
68
- * Video frames are imported with `flipY: true` via `copyExternalImageToTexture`,
69
- * so depth data must also be flipped to maintain spatial alignment.
70
- */
71
- private flipDepthY;
72
- /**
73
- * Main render loop — called every animation frame at display refresh rate.
74
- *
75
- * 1. Upload current video frame to GPU texture.
76
- * 2. Update parallax offset from input (buttery smooth at RAF rate).
77
- * 3. Render fullscreen quad with parallax shader to canvas.
78
- */
79
- protected onRenderFrame(): void;
80
- /**
81
- * Upload raw depth data and run the bilateral filter pass.
82
- *
83
- * Runs at RVFC rate (~5fps) when supported, or every RAF frame otherwise.
84
- */
85
- protected onDepthUpdate(timeSec: number): void;
86
- /**
87
- * Recalculate canvas size and UV transform to match current container.
88
- */
89
- protected recalculateViewportLayout(): void;
90
- /** Release all GPU resources. */
91
- protected disposeRenderer(): void;
92
- /**
93
- * WebGPU device loss recovery.
94
- *
95
- * Device loss is handled via the `device.lost` promise (set in constructor).
96
- * Full recovery requires re-requesting adapter + device, which is managed
97
- * at the Web Component level by re-creating the renderer.
98
- */
99
- protected onContextRestored(): void;
100
- /** Destroy all textures and clear bind groups that reference them. */
101
- private disposeTextures;
102
- }
103
- //# sourceMappingURL=parallax-renderer-webgpu.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parallax-renderer-webgpu.d.ts","sourceRoot":"","sources":["../../src/parallax-renderer-webgpu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAgFlE,qBAAa,sBAAuB,SAAQ,YAAY;IAEtD,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,YAAY,CAAmB;IAGvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAGxC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,aAAa,CAA2B;IAGhD,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,wBAAwB,CAAmC;IACnE,OAAO,CAAC,sBAAsB,CAA0B;IACxD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,YAAY,CAA+B;IAGnD,OAAO,CAAC,oBAAoB,CAA2B;IACvD,OAAO,CAAC,iBAAiB,CAA+B;IAGxD,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,uBAAuB,CAAmC;IAClE,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,qBAAqB,CAA0B;IACvD,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,gBAAgB,CAA+B;IAGvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAGlD,OAAO,CAAC,eAAe,CAA2B;gBAGhD,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,cAAc;IAwD7B;;;;OAIG;IACH,UAAU,CACR,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,IAAI;IAgEP,OAAO,CAAC,uBAAuB;IAkC/B,OAAO,CAAC,sBAAsB;IA+C9B,OAAO,CAAC,yBAAyB;IAkBjC,OAAO,CAAC,wBAAwB;IA2BhC,0DAA0D;IAC1D,OAAO,CAAC,2BAA2B;IA2BnC;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAgBlB;;;;;;OAMG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAoD/B;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IA2C9C;;OAEG;IACH,SAAS,CAAC,yBAAyB,IAAI,IAAI;IA8B3C,iCAAiC;IACjC,SAAS,CAAC,eAAe,IAAI,IAAI;IAiCjC;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAQnC,sEAAsE;IACtE,OAAO,CAAC,eAAe;CAiBxB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parallax-renderer.d.ts","sourceRoot":"","sources":["../../src/parallax-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAUH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAe/C,8DAA8D;AAC9D,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAE/B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAySD,qBAAa,gBAAiB,SAAQ,YAAY;IAEhD,OAAO,CAAC,EAAE,CAAuC;IACjD,OAAO,CAAC,OAAO,CAAuC;IAGtD,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,YAAY,CAA6B;IAGjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAc;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAE3C,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IAExD;;;;;;;OAOG;gBAED,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,sBAAsB;IAoDhC;;;;;;;;;;OAUG;IACH,UAAU,CAAC,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IA6DlF;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAwC/B;;;;;;;OAOG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAqB9C;;;;;;OAMG;IACH,SAAS,CAAC,yBAAyB,IAAI,IAAI;IA0B3C,iCAAiC;IACjC,SAAS,CAAC,eAAe,IAAI,IAAI;IAYjC,mDAAmD;IACnD,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAwBnC,8EAA8E;IAC9E,OAAO,CAAC,eAAe;IAOvB,4CAA4C;IAC5C,OAAO,CAAC,mBAAmB;CAmB5B"}
@@ -1,199 +0,0 @@
1
- /**
2
- * Portal Renderer (WebGPU) — GPU-accelerated multi-pass portal compositing.
3
- *
4
- * WebGPU counterpart to `portal-renderer.ts` (WebGL2). Shares the same
5
- * `RendererBase` abstract base class and `PortalRendererConfig` interface.
6
- *
7
- * ## Pipeline (per frame, 6 draw calls)
8
- *
9
- * 1. **Interior pass** — POM ray-march + lens depth + DOF + fog + color grade.
10
- * MRT output: color (rgba8unorm) + depth (r8unorm) to offscreen textures.
11
- *
12
- * 2a. **Stencil mark** — triangulated SVG mesh into depth-stencil attachment.
13
- * Color writes disabled, stencil ref=1 written.
14
- *
15
- * 2b. **Composite** — emissive interior passthrough with edge occlusion ramp,
16
- * stencil-tested (only where stencil == 1).
17
- *
18
- * 2c. **Chamfer geometry** — Blinn-Phong lit ring with frosted-glass blur.
19
- *
20
- * 3. **Boundary effects** — rim lighting, refraction, chromatic fringe,
21
- * volumetric edge wall. Alpha blended onto backbuffer.
22
- *
23
- * ## JFA Distance Field (cached, recomputed on resize)
24
- *
25
- * mask render -> seed extraction -> flood iterations -> distance conversion.
26
- * Uses rg16float ping-pong textures. Runs at reduced resolution (quality tier).
27
- *
28
- * ## Key WebGPU differences from WebGL2 version
29
- *
30
- * - Stencil via explicit `depth24plus-stencil8` texture attachment.
31
- * - MRT via multiple color attachments in a single render pass.
32
- * - Float render targets (rg16float) natively supported — no extension needed.
33
- * - Pipeline state objects bake blend/stencil/depth config at creation time.
34
- * - Bind groups replace individual uniform calls.
35
- * - Override constants for POM loop bound.
36
- * - `writeTexture` with manual Y-flip (no UNPACK_FLIP_Y_WEBGL equivalent).
37
- * - `copyExternalImageToTexture` for zero-copy video frame import.
38
- */
39
- import { RendererBase } from './renderer-base';
40
- import type { PortalRendererConfig } from './portal-renderer';
41
- import type { ShapeMesh } from './shape-generator';
42
- export declare class PortalRendererWebGPU extends RendererBase {
43
- private device;
44
- private context;
45
- private canvasFormat;
46
- private readonly config;
47
- private quadBuffer;
48
- private linearSampler;
49
- private nearestSampler;
50
- private interiorPipeline;
51
- private interiorBindGroupLayout;
52
- private stencilMarkPipeline;
53
- private stencilMarkBindGroupLayout;
54
- private compositePipeline;
55
- private compositeBindGroupLayout;
56
- private chamferPipeline;
57
- private chamferBindGroupLayout;
58
- private boundaryPipeline;
59
- private boundaryBindGroupLayout;
60
- private maskPipeline;
61
- private maskBindGroupLayout;
62
- private jfaSeedPipeline;
63
- private jfaSeedBindGroupLayout;
64
- private jfaFloodPipeline;
65
- private jfaFloodBindGroupLayout;
66
- private jfaDistPipeline;
67
- private jfaDistBindGroupLayout;
68
- private meshScaleUniformBuffer;
69
- private interiorVertexUniformBuffer;
70
- private interiorFragmentUniformBuffer;
71
- private compositeUniformBuffer;
72
- private boundaryUniformBuffer;
73
- private chamferUniformBuffer;
74
- private jfaSeedUniformBuffer;
75
- private jfaFloodUniformBuffer;
76
- private jfaDistUniformBuffer;
77
- private interiorBindGroup;
78
- private stencilMarkBindGroup;
79
- private compositeBindGroup;
80
- private chamferBindGroup;
81
- private boundaryBindGroup;
82
- private maskBindGroup;
83
- private jfaSeedBindGroup;
84
- private jfaDistBindGroup;
85
- private videoTexture;
86
- private videoTextureView;
87
- private depthTexture;
88
- private depthTextureView;
89
- private interiorColorTexture;
90
- private interiorColorView;
91
- private interiorDepthTexture;
92
- private interiorDepthView;
93
- private fboWidth;
94
- private fboHeight;
95
- private depthStencilTexture;
96
- private depthStencilView;
97
- private dsWidth;
98
- private dsHeight;
99
- private jfaMaskTexture;
100
- private jfaMaskView;
101
- private jfaPingTexture;
102
- private jfaPingView;
103
- private jfaPongTexture;
104
- private jfaPongView;
105
- private jfaDistTexture;
106
- private jfaDistView;
107
- private jfaWidth;
108
- private jfaHeight;
109
- private jfaDirty;
110
- private stencilVertexBuffer;
111
- private stencilIndexBuffer;
112
- private stencilIndexCount;
113
- private boundaryVertexBuffer;
114
- private boundaryVertexCount;
115
- private chamferVertexBuffer;
116
- private chamferVertexCount;
117
- private meshAspect;
118
- private meshScaleX;
119
- private meshScaleY;
120
- private lightDirX;
121
- private lightDirY;
122
- private lightDir3;
123
- private depthFlipBuffer;
124
- private readonly offsetData;
125
- constructor(parent: HTMLElement, config: PortalRendererConfig, device: GPUDevice, adapterInfo: GPUAdapterInfo);
126
- initialize(video: HTMLVideoElement, depthWidth: number, depthHeight: number, mesh: ShapeMesh): void;
127
- private createInteriorPipeline;
128
- private createStencilMarkPipeline;
129
- private createCompositePipeline;
130
- private createChamferPipeline;
131
- private createBoundaryPipeline;
132
- private createMaskPipeline;
133
- private createJFASeedPipeline;
134
- private createJFAFloodPipeline;
135
- private createJFADistPipeline;
136
- private uploadStencilMesh;
137
- private uploadBoundaryMesh;
138
- private uploadChamferMesh;
139
- private writeStaticInteriorUniforms;
140
- private writeStaticCompositeUniforms;
141
- private writeStaticChamferUniforms;
142
- private writeStaticBoundaryUniforms;
143
- private rebuildInteriorBindGroup;
144
- private rebuildStencilMarkBindGroup;
145
- private rebuildCompositeBindGroup;
146
- private rebuildChamferBindGroup;
147
- private rebuildBoundaryBindGroup;
148
- private rebuildMaskBindGroup;
149
- private rebuildJFASeedBindGroup;
150
- private rebuildJFADistBindGroup;
151
- /** Rebuild all bind groups that reference textures (after resize or init). */
152
- private rebuildBindGroups;
153
- private createInteriorFBO;
154
- private createDepthStencilTexture;
155
- private createJFAResources;
156
- private computeDistanceField;
157
- /**
158
- * Flip depth data vertically.
159
- *
160
- * WebGPU writeTexture has no UNPACK_FLIP_Y_WEBGL equivalent. Video frames
161
- * are imported with flipY:true via copyExternalImageToTexture, so depth
162
- * data must also be flipped to maintain spatial alignment.
163
- */
164
- private flipDepthY;
165
- private fallbackTexture;
166
- private createFallbackTextureView;
167
- /**
168
- * Main render loop -- 6 draw calls per frame.
169
- *
170
- * Pass 1: Interior -> MRT offscreen textures.
171
- * Pass 2a: Stencil mark -> depth-stencil attachment.
172
- * Pass 2b: Composite -> canvas (stencil-tested).
173
- * Pass 2c: Chamfer geometry -> canvas.
174
- * Pass 3: Boundary effects -> canvas (alpha blended).
175
- * JFA: runs inside command encoder when dirty (cached on resize).
176
- */
177
- protected onRenderFrame(): void;
178
- /**
179
- * Upload depth data to the GPU texture.
180
- * Called from the RVFC loop at video frame rate, or from RAF fallback.
181
- */
182
- protected onDepthUpdate(timeSec: number): void;
183
- protected recalculateViewportLayout(): void;
184
- /**
185
- * WebGPU device loss recovery.
186
- *
187
- * Device loss is handled via the `device.lost` promise (set in constructor).
188
- * Full recovery requires re-requesting adapter + device, which is managed
189
- * at the Web Component level by re-creating the renderer.
190
- */
191
- protected onContextRestored(): void;
192
- protected disposeRenderer(): void;
193
- private disposeTextures;
194
- private disposeInteriorFBO;
195
- private disposeDepthStencilTexture;
196
- private disposeJFAResources;
197
- private disposeGeometryBuffers;
198
- }
199
- //# sourceMappingURL=portal-renderer-webgpu.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"portal-renderer-webgpu.d.ts","sourceRoot":"","sources":["../../src/portal-renderer-webgpu.ts"],"names":[],"mappings":"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"}
@@ -1,76 +0,0 @@
1
- /**
2
- * WebGPU Render Pass Framework — pipeline and bind group management.
3
- *
4
- * Parallel to `render-pass.ts` (WebGL2) but with idiomatic WebGPU patterns:
5
- * - Pipeline state objects bake blend/stencil/depth config at creation
6
- * - Bind groups replace individual uniform calls
7
- * - No mutable state machine
8
- *
9
- * @see render-pass.ts for the WebGL2 counterpart.
10
- */
11
- /** A single WebGPU render pass with its pipeline and bind group layout. */
12
- export interface WebGPURenderPass {
13
- readonly name: string;
14
- readonly pipeline: GPURenderPipeline;
15
- readonly bindGroupLayout: GPUBindGroupLayout;
16
- dispose(): void;
17
- }
18
- /** A WebGPU render pass that outputs to an offscreen texture. */
19
- export interface WebGPUFBOPass extends WebGPURenderPass {
20
- outputTexture: GPUTexture;
21
- outputView: GPUTextureView;
22
- width: number;
23
- height: number;
24
- resize(device: GPUDevice, w: number, h: number, format?: GPUTextureFormat): void;
25
- }
26
- /** Configuration for creating a WebGPU render pass. */
27
- export interface WebGPURenderPassConfig {
28
- readonly name: string;
29
- readonly vertexShader: string;
30
- readonly fragmentShader: string;
31
- readonly vertexBufferLayouts: GPUVertexBufferLayout[];
32
- readonly colorTargets: GPUColorTargetState[];
33
- readonly depthStencil?: GPUDepthStencilState;
34
- readonly primitive?: GPUPrimitiveState;
35
- /** Explicit bind group layout entries. If omitted, uses auto layout. */
36
- readonly bindGroupLayoutEntries?: GPUBindGroupLayoutEntry[];
37
- }
38
- /** Configuration for creating a WebGPU FBO pass. */
39
- export interface WebGPUFBOPassConfig extends WebGPURenderPassConfig {
40
- readonly outputWidth: number;
41
- readonly outputHeight: number;
42
- readonly outputFormat?: GPUTextureFormat;
43
- }
44
- /**
45
- * Create a WebGPU render pass with explicit bind group layout.
46
- */
47
- export declare function createWebGPUPass(device: GPUDevice, config: WebGPURenderPassConfig): WebGPURenderPass;
48
- /**
49
- * Create a WebGPU FBO pass that renders to an offscreen texture.
50
- */
51
- export declare function createWebGPUFBOPass(device: GPUDevice, config: WebGPUFBOPassConfig): WebGPUFBOPass;
52
- /**
53
- * Shared texture registry for WebGPU — manages texture unit allocation.
54
- *
55
- * Unlike WebGL2, WebGPU doesn't have numbered texture units. Instead,
56
- * textures are referenced by bind group entries. This registry provides
57
- * a consistent naming scheme across passes.
58
- */
59
- export declare class WebGPUTextureRegistry {
60
- private readonly textures;
61
- register(name: string, texture: GPUTexture): GPUTextureView;
62
- get(name: string): {
63
- texture: GPUTexture;
64
- view: GPUTextureView;
65
- } | undefined;
66
- dispose(): void;
67
- }
68
- /** Fullscreen quad vertex buffer layout: position (vec2). */
69
- export declare const FULLSCREEN_QUAD_LAYOUT: GPUVertexBufferLayout;
70
- /** Mesh vertex buffer layout: position (vec2) only. */
71
- export declare const MESH_POSITION_LAYOUT: GPUVertexBufferLayout;
72
- /** Boundary vertex buffer layout: position (vec2) + normal (vec2). */
73
- export declare const BOUNDARY_VERTEX_LAYOUT: GPUVertexBufferLayout;
74
- /** Chamfer vertex buffer layout: position (vec2) + normal3 (vec3) + lerpT (float). */
75
- export declare const CHAMFER_VERTEX_LAYOUT: GPUVertexBufferLayout;
76
- //# sourceMappingURL=render-pass-webgpu.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render-pass-webgpu.d.ts","sourceRoot":"","sources":["../../src/render-pass-webgpu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,kBAAkB,CAAC;IAC7C,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,aAAa,EAAE,UAAU,CAAC;IAC1B,UAAU,EAAE,cAAc,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAClF;AAED,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,CAAC;IACtD,QAAQ,CAAC,YAAY,EAAE,mBAAmB,EAAE,CAAC;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IACvC,wEAAwE;IACxE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,uBAAuB,EAAE,CAAC;CAC7D;AAED,oDAAoD;AACpD,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,sBAAsB,GAC7B,gBAAgB,CAqClB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,mBAAmB,GAC1B,aAAa,CA4Bf;AAMD;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoE;IAE7F,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,cAAc;IAM3D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE,GAAG,SAAS;IAI5E,OAAO,IAAI,IAAI;CAMhB;AAuBD,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,EAAE,qBAKpC,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,EAAE,qBAKlC,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,sBAAsB,EAAE,qBAMpC,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,EAAE,qBAOnC,CAAC"}
@@ -1,42 +0,0 @@
1
- /**
2
- * WebGPU Utilities — shared helpers for WebGPU renderers.
3
- *
4
- * Parallel to `webgl-utils.ts` but for the WebGPU backend.
5
- * Provides buffer creation, sampler factories, and fullscreen quad geometry.
6
- */
7
- /**
8
- * Create a GPU buffer containing a fullscreen quad (triangle strip, 4 vertices).
9
- */
10
- export declare function createFullscreenQuadBuffer(device: GPUDevice): GPUBuffer;
11
- /**
12
- * Create a GPU vertex buffer from Float32Array data.
13
- */
14
- export declare function createVertexBuffer(device: GPUDevice, data: Float32Array): GPUBuffer;
15
- /**
16
- * Create a GPU index buffer from Uint16Array data.
17
- */
18
- export declare function createIndexBuffer(device: GPUDevice, data: Uint16Array): GPUBuffer;
19
- /**
20
- * Create a GPU uniform buffer of the given byte size.
21
- */
22
- export declare function createUniformBuffer(device: GPUDevice, byteSize: number): GPUBuffer;
23
- /**
24
- * Create a 2D texture with common defaults for render targets.
25
- */
26
- export declare function createRenderTexture(device: GPUDevice, width: number, height: number, format?: GPUTextureFormat): GPUTexture;
27
- /**
28
- * Create a 2D texture for sampling (e.g., video frame, depth data).
29
- */
30
- export declare function createSampleTexture(device: GPUDevice, width: number, height: number, format?: GPUTextureFormat): GPUTexture;
31
- /** Create a linear-filtering, clamp-to-edge sampler. */
32
- export declare function createLinearSampler(device: GPUDevice): GPUSampler;
33
- /** Create a nearest-filtering, clamp-to-edge sampler. */
34
- export declare function createNearestSampler(device: GPUDevice): GPUSampler;
35
- /**
36
- * Import a video frame into a WebGPU texture using `copyExternalImageToTexture`.
37
- *
38
- * This is the WebGPU equivalent of `gl.texImage2D(gl.TEXTURE_2D, ..., video)`.
39
- * On supported browsers, this is a zero-copy operation.
40
- */
41
- export declare function importVideoFrame(device: GPUDevice, texture: GPUTexture, video: HTMLVideoElement, flipY?: boolean): void;
42
- //# sourceMappingURL=webgpu-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webgpu-utils.d.ts","sourceRoot":"","sources":["../../src/webgpu-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CASvE;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,SAAS,CASnF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,CASjF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAOlF;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,gBAA+B,GACtC,UAAU,CAMZ;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,gBAA+B,GACtC,UAAU,CASZ;AAMD,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAOjE;AAED,yDAAyD;AACzD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAOlE;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,gBAAgB,EACvB,KAAK,UAAO,GACX,IAAI,CAMN"}