@flighthq/render-wgpu 0.5.1-next.1069.554a2ac → 0.5.1-next.1201.9b49dee
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 +2 -2
- package/dist/contract.d.ts +9 -6
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +9 -6
- package/dist/contract.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/wgpuDraw.js +1 -1
- package/dist/wgpuDraw.js.map +1 -1
- package/dist/wgpuFrame.d.ts +23 -0
- package/dist/wgpuFrame.d.ts.map +1 -0
- package/dist/{wgpuBackground.js → wgpuFrame.js} +67 -121
- package/dist/wgpuFrame.js.map +1 -0
- package/dist/wgpuFullscreenPass.d.ts +2 -2
- package/dist/wgpuFullscreenPass.d.ts.map +1 -1
- package/dist/wgpuFullscreenPass.js +1 -2
- package/dist/wgpuFullscreenPass.js.map +1 -1
- package/dist/wgpuHost.d.ts +6 -6
- package/dist/wgpuHost.d.ts.map +1 -1
- package/dist/wgpuHost.js +17 -3
- package/dist/wgpuHost.js.map +1 -1
- package/dist/wgpuRenderPass.d.ts +9 -0
- package/dist/wgpuRenderPass.d.ts.map +1 -0
- package/dist/wgpuRenderPass.js +222 -0
- package/dist/wgpuRenderPass.js.map +1 -0
- package/dist/wgpuRenderState.d.ts +3 -4
- package/dist/wgpuRenderState.d.ts.map +1 -1
- package/dist/wgpuRenderState.js +17 -88
- package/dist/wgpuRenderState.js.map +1 -1
- package/dist/wgpuRenderTarget.d.ts +12 -29
- package/dist/wgpuRenderTarget.d.ts.map +1 -1
- package/dist/wgpuRenderTarget.js +19 -252
- package/dist/wgpuRenderTarget.js.map +1 -1
- package/dist/wgpuRenderTargetPool.d.ts +5 -5
- package/dist/wgpuRenderTargetPool.d.ts.map +1 -1
- package/dist/wgpuRenderTargetPool.js +7 -7
- package/dist/wgpuRenderTargetPool.js.map +1 -1
- package/dist/wgpuRenderTexture.d.ts +5 -4
- package/dist/wgpuRenderTexture.d.ts.map +1 -1
- package/dist/wgpuRenderTexture.js +14 -16
- package/dist/wgpuRenderTexture.js.map +1 -1
- package/dist/wgpuRenderTexturePool.js +1 -3
- package/dist/wgpuRenderTexturePool.js.map +1 -1
- package/dist/wgpuScissor.d.ts +1 -1
- package/dist/wgpuScissor.d.ts.map +1 -1
- package/dist/wgpuScissor.js +7 -4
- package/dist/wgpuScissor.js.map +1 -1
- package/dist/wgpuScreenAntialias.d.ts +3 -0
- package/dist/wgpuScreenAntialias.d.ts.map +1 -0
- package/dist/wgpuScreenAntialias.js +119 -0
- package/dist/wgpuScreenAntialias.js.map +1 -0
- package/dist/wgpuScreenCapture.d.ts +5 -0
- package/dist/wgpuScreenCapture.d.ts.map +1 -0
- package/dist/{wgpuSurface.js → wgpuScreenCapture.js} +55 -73
- package/dist/wgpuScreenCapture.js.map +1 -0
- package/dist/wgpuScreenRenderTarget.d.ts +9 -0
- package/dist/wgpuScreenRenderTarget.d.ts.map +1 -0
- package/dist/wgpuScreenRenderTarget.js +123 -0
- package/dist/wgpuScreenRenderTarget.js.map +1 -0
- package/dist/wgpuShader.js +2 -2
- package/dist/wgpuShader.js.map +1 -1
- package/dist/wgpuTestHelper.d.ts +8 -2
- package/dist/wgpuTestHelper.d.ts.map +1 -1
- package/dist/wgpuTestHelper.js +38 -3
- package/dist/wgpuTestHelper.js.map +1 -1
- package/dist/wgpuTextureRenderTarget.d.ts +18 -0
- package/dist/wgpuTextureRenderTarget.d.ts.map +1 -0
- package/dist/wgpuTextureRenderTarget.js +122 -0
- package/dist/wgpuTextureRenderTarget.js.map +1 -0
- package/package.json +11 -11
- package/src/wgpuDraw.test.ts +8 -8
- package/src/{wgpuBackground.test.ts → wgpuFrame.test.ts} +34 -20
- package/src/wgpuFullscreenPass.test.ts +7 -7
- package/src/wgpuHost.test.ts +28 -82
- package/src/wgpuRenderPass.test.ts +258 -0
- package/src/wgpuRenderState.test.ts +34 -313
- package/src/wgpuRenderTarget.test.ts +44 -219
- package/src/wgpuRenderTargetPool.test.ts +21 -21
- package/src/wgpuRenderTexture.test.ts +17 -15
- package/src/wgpuScissor.test.ts +43 -13
- package/src/wgpuScreenAntialias.test.ts +60 -0
- package/src/wgpuScreenCapture.test.ts +156 -0
- package/src/wgpuScreenRenderTarget.test.ts +152 -0
- package/src/wgpuShader.test.ts +5 -6
- package/src/wgpuTextureRenderTarget.test.ts +129 -0
- package/src/wgpuTextureResolver.test.ts +5 -5
- package/dist/wgpuAntialias.d.ts +0 -14
- package/dist/wgpuAntialias.d.ts.map +0 -1
- package/dist/wgpuAntialias.js +0 -155
- package/dist/wgpuAntialias.js.map +0 -1
- package/dist/wgpuBackground.d.ts +0 -20
- package/dist/wgpuBackground.d.ts.map +0 -1
- package/dist/wgpuBackground.js.map +0 -1
- package/dist/wgpuElement.d.ts +0 -7
- package/dist/wgpuElement.d.ts.map +0 -1
- package/dist/wgpuElement.js +0 -20
- package/dist/wgpuElement.js.map +0 -1
- package/dist/wgpuSurface.d.ts +0 -6
- package/dist/wgpuSurface.d.ts.map +0 -1
- package/dist/wgpuSurface.js.map +0 -1
- package/src/wgpuAntialias.test.ts +0 -239
- package/src/wgpuElement.test.ts +0 -145
- package/src/wgpuSurface.test.ts +0 -141
package/dist/wgpuAntialias.js
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { getWgpuRenderStateDeviceResources, getWgpuRenderStateRuntime } from './wgpuRenderState';
|
|
2
|
-
const SUPERSAMPLE_SCALE = 2;
|
|
3
|
-
// Redirects the main frame into a 2× texture view when surface antialiasing is enabled. The caller retains
|
|
4
|
-
// the presentation view so encodeWgpuSurfaceAntialiasResolve can downsample into it on the same encoder.
|
|
5
|
-
// Null means the normal direct-to-presentation path remains active.
|
|
6
|
-
export function acquireWgpuSurfaceAntialiasView(state, presentationView) {
|
|
7
|
-
const runtime = getWgpuRenderStateRuntime(state);
|
|
8
|
-
if (!runtime.surfaceAntialiasEnabled) {
|
|
9
|
-
runtime.surfacePresentationView = null;
|
|
10
|
-
return null;
|
|
11
|
-
}
|
|
12
|
-
const width = Math.max(1, state.surface.width) * SUPERSAMPLE_SCALE;
|
|
13
|
-
const height = Math.max(1, state.surface.height) * SUPERSAMPLE_SCALE;
|
|
14
|
-
const maxDimension = state.device.limits.maxTextureDimension2D;
|
|
15
|
-
if (width > maxDimension || height > maxDimension) {
|
|
16
|
-
throw new Error(`WgpuRenderOptions.antialias requires a ${width}x${height} supersample surface, exceeding maxTextureDimension2D ${maxDimension}.`);
|
|
17
|
-
}
|
|
18
|
-
runtime.surfacePresentationView = presentationView;
|
|
19
|
-
if (runtime.surfaceAntialiasTexture !== null &&
|
|
20
|
-
runtime.surfaceAntialiasWidth === width &&
|
|
21
|
-
runtime.surfaceAntialiasHeight === height) {
|
|
22
|
-
return runtime.surfaceAntialiasView;
|
|
23
|
-
}
|
|
24
|
-
runtime.surfaceAntialiasTexture?.destroy();
|
|
25
|
-
const texture = state.device.createTexture({
|
|
26
|
-
size: [width, height, 1],
|
|
27
|
-
format: state.format,
|
|
28
|
-
usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,
|
|
29
|
-
});
|
|
30
|
-
const view = texture.createView();
|
|
31
|
-
runtime.surfaceAntialiasTexture = texture;
|
|
32
|
-
runtime.surfaceAntialiasView = view;
|
|
33
|
-
runtime.surfaceAntialiasWidth = width;
|
|
34
|
-
runtime.surfaceAntialiasHeight = height;
|
|
35
|
-
ensureWgpuSurfaceAntialiasPipeline(state);
|
|
36
|
-
runtime.surfaceAntialiasResolveBindGroup = state.device.createBindGroup({
|
|
37
|
-
layout: runtime.surfaceAntialiasResolveBindGroupLayout,
|
|
38
|
-
entries: [
|
|
39
|
-
{ binding: 0, resource: view },
|
|
40
|
-
{ binding: 1, resource: getWgpuRenderStateDeviceResources(state).linearSampler },
|
|
41
|
-
],
|
|
42
|
-
});
|
|
43
|
-
return view;
|
|
44
|
-
}
|
|
45
|
-
export function clearWgpuSurfacePresentation(state) {
|
|
46
|
-
getWgpuRenderStateRuntime(state).surfacePresentationView = null;
|
|
47
|
-
}
|
|
48
|
-
// Encodes the single surface resolve after every scene/effect/3D draw has completed and before capture
|
|
49
|
-
// readback. Linear sampling at each destination pixel center averages the corresponding 2×2 source
|
|
50
|
-
// texels, so this is a real supersample resolve rather than a post-capture image filter.
|
|
51
|
-
export function encodeWgpuSurfaceAntialiasResolve(state, encoder) {
|
|
52
|
-
const runtime = getWgpuRenderStateRuntime(state);
|
|
53
|
-
const presentationView = runtime.surfacePresentationView;
|
|
54
|
-
const pipeline = runtime.surfaceAntialiasResolvePipeline;
|
|
55
|
-
const bindGroup = runtime.surfaceAntialiasResolveBindGroup;
|
|
56
|
-
if (!runtime.surfaceAntialiasEnabled || presentationView === null || pipeline === null || bindGroup === null)
|
|
57
|
-
return;
|
|
58
|
-
const pass = encoder.beginRenderPass({
|
|
59
|
-
colorAttachments: [
|
|
60
|
-
{
|
|
61
|
-
view: presentationView,
|
|
62
|
-
loadOp: 'clear',
|
|
63
|
-
storeOp: 'store',
|
|
64
|
-
clearValue: { r: 0, g: 0, b: 0, a: 0 },
|
|
65
|
-
},
|
|
66
|
-
],
|
|
67
|
-
});
|
|
68
|
-
pass.setPipeline(pipeline);
|
|
69
|
-
pass.setBindGroup(0, bindGroup);
|
|
70
|
-
pass.draw(3);
|
|
71
|
-
pass.end();
|
|
72
|
-
}
|
|
73
|
-
// Logical surface dimensions for descriptor/effect distances. Unlike getWgpuSurfaceRenderExtent this
|
|
74
|
-
// deliberately ignores the optional 2× presentation target; an explicit frame borrower receives the
|
|
75
|
-
// logical owner extent for the bounded session.
|
|
76
|
-
export function getWgpuSurfaceLogicalExtent(state) {
|
|
77
|
-
if ('surface' in state) {
|
|
78
|
-
const presentationState = state;
|
|
79
|
-
return { width: presentationState.surface.width, height: presentationState.surface.height };
|
|
80
|
-
}
|
|
81
|
-
const borrowed = getWgpuRenderStateRuntime(state).borrowedSurfaceExtent;
|
|
82
|
-
if (borrowed !== null)
|
|
83
|
-
return borrowed;
|
|
84
|
-
throw new Error('A device-only WgpuRenderState has no logical surface extent outside an explicit frame borrow');
|
|
85
|
-
}
|
|
86
|
-
// The logical canvas dimensions remain the coordinate space used by 2D transforms. This helper is
|
|
87
|
-
// only for hardware viewport restoration after an offscreen target returns to the supersampled surface.
|
|
88
|
-
export function getWgpuSurfaceRenderExtent(state) {
|
|
89
|
-
const runtime = getWgpuRenderStateRuntime(state);
|
|
90
|
-
if (runtime.surfacePresentationView !== null) {
|
|
91
|
-
return { width: runtime.surfaceAntialiasWidth, height: runtime.surfaceAntialiasHeight };
|
|
92
|
-
}
|
|
93
|
-
if ('surface' in state) {
|
|
94
|
-
const presentationState = state;
|
|
95
|
-
return { width: presentationState.surface.width, height: presentationState.surface.height };
|
|
96
|
-
}
|
|
97
|
-
if (runtime.borrowedSurfaceExtent !== null)
|
|
98
|
-
return runtime.borrowedSurfaceExtent;
|
|
99
|
-
throw new Error('A device-only WgpuRenderState has no presentation extent outside an explicit frame borrow');
|
|
100
|
-
}
|
|
101
|
-
// Scissor rectangles are expressed in the logical main-surface coordinate space. Scale only while the
|
|
102
|
-
// active pass is the supersampled main surface; offscreen render targets retain their native extent.
|
|
103
|
-
export function getWgpuSurfaceRenderScale(state) {
|
|
104
|
-
const runtime = getWgpuRenderStateRuntime(state);
|
|
105
|
-
return runtime.currentRenderTarget === null && runtime.surfacePresentationView !== null ? SUPERSAMPLE_SCALE : 1;
|
|
106
|
-
}
|
|
107
|
-
function ensureWgpuSurfaceAntialiasPipeline(state) {
|
|
108
|
-
const runtime = getWgpuRenderStateRuntime(state);
|
|
109
|
-
if (runtime.surfaceAntialiasResolvePipeline !== null)
|
|
110
|
-
return;
|
|
111
|
-
const bindGroupLayout = state.device.createBindGroupLayout({
|
|
112
|
-
entries: [
|
|
113
|
-
{ binding: 0, visibility: GPUShaderStage.FRAGMENT, texture: { sampleType: 'float' } },
|
|
114
|
-
{ binding: 1, visibility: GPUShaderStage.FRAGMENT, sampler: { type: 'filtering' } },
|
|
115
|
-
],
|
|
116
|
-
});
|
|
117
|
-
const layout = state.device.createPipelineLayout({ bindGroupLayouts: [bindGroupLayout] });
|
|
118
|
-
const module = state.device.createShaderModule({ code: SURFACE_ANTIALIAS_WGSL });
|
|
119
|
-
runtime.surfaceAntialiasResolveBindGroupLayout = bindGroupLayout;
|
|
120
|
-
runtime.surfaceAntialiasResolvePipeline = state.device.createRenderPipeline({
|
|
121
|
-
layout,
|
|
122
|
-
vertex: { module, entryPoint: 'vs_main' },
|
|
123
|
-
fragment: { module, entryPoint: 'fs_main', targets: [{ format: state.format }] },
|
|
124
|
-
primitive: { topology: 'triangle-list' },
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
const SURFACE_ANTIALIAS_WGSL = /* wgsl */ `
|
|
128
|
-
struct VertexOutput {
|
|
129
|
-
@builtin(position) position: vec4f,
|
|
130
|
-
@location(0) uv: vec2f,
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
@vertex
|
|
134
|
-
fn vs_main(@builtin(vertex_index) index: u32) -> VertexOutput {
|
|
135
|
-
let positions = array<vec2f, 3>(
|
|
136
|
-
vec2f(-1.0, -1.0),
|
|
137
|
-
vec2f(3.0, -1.0),
|
|
138
|
-
vec2f(-1.0, 3.0),
|
|
139
|
-
);
|
|
140
|
-
let position = positions[index];
|
|
141
|
-
var output: VertexOutput;
|
|
142
|
-
output.position = vec4f(position, 0.0, 1.0);
|
|
143
|
-
output.uv = position * vec2f(0.5, -0.5) + vec2f(0.5);
|
|
144
|
-
return output;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
@group(0) @binding(0) var source_texture: texture_2d<f32>;
|
|
148
|
-
@group(0) @binding(1) var source_sampler: sampler;
|
|
149
|
-
|
|
150
|
-
@fragment
|
|
151
|
-
fn fs_main(input: VertexOutput) -> @location(0) vec4f {
|
|
152
|
-
return textureSample(source_texture, source_sampler, input.uv);
|
|
153
|
-
}
|
|
154
|
-
`;
|
|
155
|
-
//# sourceMappingURL=wgpuAntialias.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuAntialias.js","sourceRoot":"","sources":["../src/wgpuAntialias.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEjG,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,2GAA2G;AAC3G,yGAAyG;AACzG,oEAAoE;AACpE,MAAM,UAAU,+BAA+B,CAC7C,KAA4C,EAC5C,gBAAgC;IAEhC,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACrC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,iBAAiB,CAAC;IACrE,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;IAC/D,IAAI,KAAK,GAAG,YAAY,IAAI,MAAM,GAAG,YAAY,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,0CAA0C,KAAK,IAAI,MAAM,yDAAyD,YAAY,GAAG,CAClI,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,uBAAuB,GAAG,gBAAgB,CAAC;IACnD,IACE,OAAO,CAAC,uBAAuB,KAAK,IAAI;QACxC,OAAO,CAAC,qBAAqB,KAAK,KAAK;QACvC,OAAO,CAAC,sBAAsB,KAAK,MAAM,EACzC,CAAC;QACD,OAAO,OAAO,CAAC,oBAAoB,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,uBAAuB,EAAE,OAAO,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;QACzC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,eAAe,CAAC,eAAe;KAC3E,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAClC,OAAO,CAAC,uBAAuB,GAAG,OAAO,CAAC;IAC1C,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACtC,OAAO,CAAC,sBAAsB,GAAG,MAAM,CAAC;IAExC,kCAAkC,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,CAAC,gCAAgC,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;QACtE,MAAM,EAAE,OAAO,CAAC,sCAAuC;QACvD,OAAO,EAAE;YACP,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9B,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,iCAAiC,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE;SACjF;KACF,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAA4C;IACvF,yBAAyB,CAAC,KAAK,CAAC,CAAC,uBAAuB,GAAG,IAAI,CAAC;AAClE,CAAC;AAED,uGAAuG;AACvG,mGAAmG;AACnG,yFAAyF;AACzF,MAAM,UAAU,iCAAiC,CAC/C,KAA4C,EAC5C,OAA0B;IAE1B,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,+BAA+B,CAAC;IACzD,MAAM,SAAS,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAC3D,IAAI,CAAC,OAAO,CAAC,uBAAuB,IAAI,gBAAgB,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO;IAErH,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC;QACnC,gBAAgB,EAAE;YAChB;gBACE,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,OAAO;gBAChB,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;aACvC;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC3B,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACb,IAAI,CAAC,GAAG,EAAE,CAAC;AACb,CAAC;AAED,qGAAqG;AACrG,oGAAoG;AACpG,gDAAgD;AAChD,MAAM,UAAU,2BAA2B,CAAC,KAAgC;IAC1E,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,iBAAiB,GAAG,KAAoC,CAAC;QAC/D,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC9F,CAAC;IACD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC;IACxE,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACvC,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;AAClH,CAAC;AAED,kGAAkG;AAClG,wGAAwG;AACxG,MAAM,UAAU,0BAA0B,CAAC,KAAgC;IACzE,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,uBAAuB,KAAK,IAAI,EAAE,CAAC;QAC7C,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAC1F,CAAC;IACD,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,iBAAiB,GAAG,KAAoC,CAAC;QAC/D,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC9F,CAAC;IACD,IAAI,OAAO,CAAC,qBAAqB,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC,qBAAqB,CAAC;IACjF,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;AAC/G,CAAC;AAED,sGAAsG;AACtG,qGAAqG;AACrG,MAAM,UAAU,yBAAyB,CAAC,KAAgC;IACxE,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,mBAAmB,KAAK,IAAI,IAAI,OAAO,CAAC,uBAAuB,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAClH,CAAC;AAED,SAAS,kCAAkC,CAAC,KAA4C;IACtF,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,+BAA+B,KAAK,IAAI;QAAE,OAAO;IAE7D,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC;QACzD,OAAO,EAAE;YACP,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;YACrF,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;SACpF;KACF,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,sCAAsC,GAAG,eAAe,CAAC;IACjE,OAAO,CAAC,+BAA+B,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAC1E,MAAM;QACN,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;QACzC,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;QAChF,SAAS,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE;KACzC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,sBAAsB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BzC,CAAC"}
|
package/dist/wgpuBackground.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { WgpuPresentationRenderState, WgpuRenderState } from '@flighthq/types/contract';
|
|
2
|
-
/**
|
|
3
|
-
* Opens the command encoder for a WebGPU frame without opening the canvas render pass.
|
|
4
|
-
*
|
|
5
|
-
* Recipes with prerequisite GPU work (for example a directional-shadow depth pass) call this first,
|
|
6
|
-
* record that work, then call renderWgpuBackground to open the forward canvas pass on the same encoder.
|
|
7
|
-
* Ordinary render loops can keep calling renderWgpuBackground directly; it begins a frame lazily.
|
|
8
|
-
*/
|
|
9
|
-
export declare function beginWgpuFrame(state: WgpuPresentationRenderState): void;
|
|
10
|
-
export declare function renderWgpuBackground(state: WgpuPresentationRenderState): void;
|
|
11
|
-
export declare function retireWgpuBuffer(state: WgpuRenderState, buffer: GPUBuffer): void;
|
|
12
|
-
export declare function retireWgpuTexture(state: WgpuRenderState, texture: GPUTexture): void;
|
|
13
|
-
export declare function submitWgpuRenderPass(state: WgpuPresentationRenderState): void;
|
|
14
|
-
/**
|
|
15
|
-
* Temporarily records an offscreen state's work into a presentation state's live command encoder.
|
|
16
|
-
* The borrower keeps its own uniform ring, batch buffers, traversal counters, and GPU resources; only
|
|
17
|
-
* the frame encoder/pass boundary is borrowed, and this callback bracket always returns it.
|
|
18
|
-
*/
|
|
19
|
-
export declare function withWgpuFrameBorrow<T>(ownerState: WgpuPresentationRenderState, borrowerState: WgpuRenderState, callback: () => T): T;
|
|
20
|
-
//# sourceMappingURL=wgpuBackground.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuBackground.d.ts","sourceRoot":"","sources":["../src/wgpuBackground.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,eAAe,EAA0B,MAAM,0BAA0B,CAAC;AAkCrH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI,CAgBvE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI,CA8D7E;AAMD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAGhF;AAYD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAGnF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI,CA2C7E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,UAAU,EAAE,2BAA2B,EACvC,aAAa,EAAE,eAAe,EAC9B,QAAQ,EAAE,MAAM,CAAC,GAChB,CAAC,CAsDH"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuBackground.js","sourceRoot":"","sources":["../src/wgpuBackground.ts"],"names":[],"mappings":"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"}
|
package/dist/wgpuElement.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { WgpuRenderSurfaceProvider } from '@flighthq/types/contract';
|
|
2
|
-
export declare function createWgpuCanvasElement(width: number, height: number, pixelRatio?: number): HTMLCanvasElement;
|
|
3
|
-
export declare function createWgpuRenderSurface(width: number, height: number, pixelRatio?: number): HTMLCanvasElement | null;
|
|
4
|
-
export declare function getWgpuRenderSurfaceProvider(): Readonly<WgpuRenderSurfaceProvider> | null;
|
|
5
|
-
export declare function resetWgpuRenderSurfaceProviderForTest(): void;
|
|
6
|
-
export declare function setWgpuRenderSurfaceProvider(provider: Readonly<WgpuRenderSurfaceProvider> | null): void;
|
|
7
|
-
//# sourceMappingURL=wgpuElement.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuElement.d.ts","sourceRoot":"","sources":["../src/wgpuElement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAI1E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU,GAAG,iBAAiB,CAMhH;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,MAAU,GACrB,iBAAiB,GAAG,IAAI,CAE1B;AAED,wBAAgB,4BAA4B,IAAI,QAAQ,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAEzF;AAED,wBAAgB,qCAAqC,IAAI,IAAI,CAE5D;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,IAAI,CAEvG"}
|
package/dist/wgpuElement.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
let _provider = null;
|
|
2
|
-
export function createWgpuCanvasElement(width, height, pixelRatio = 1) {
|
|
3
|
-
const surface = createWgpuRenderSurface(width, height, pixelRatio);
|
|
4
|
-
if (surface !== null)
|
|
5
|
-
return surface;
|
|
6
|
-
throw new Error('No WGPU render surface is available. Web callers must run enableHostWebWgpuRenderSurface() before creating WGPU state; native callers must inject a WgpuRenderSurfaceProvider.');
|
|
7
|
-
}
|
|
8
|
-
export function createWgpuRenderSurface(width, height, pixelRatio = 1) {
|
|
9
|
-
return _provider?.createRenderSurface(width, height, pixelRatio) ?? null;
|
|
10
|
-
}
|
|
11
|
-
export function getWgpuRenderSurfaceProvider() {
|
|
12
|
-
return _provider;
|
|
13
|
-
}
|
|
14
|
-
export function resetWgpuRenderSurfaceProviderForTest() {
|
|
15
|
-
_provider = null;
|
|
16
|
-
}
|
|
17
|
-
export function setWgpuRenderSurfaceProvider(provider) {
|
|
18
|
-
_provider = provider;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=wgpuElement.js.map
|
package/dist/wgpuElement.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuElement.js","sourceRoot":"","sources":["../src/wgpuElement.ts"],"names":[],"mappings":"AAEA,IAAI,SAAS,GAA+C,IAAI,CAAC;AAEjE,MAAM,UAAU,uBAAuB,CAAC,KAAa,EAAE,MAAc,EAAE,aAAqB,CAAC;IAC3F,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACnE,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IACrC,MAAM,IAAI,KAAK,CACb,gLAAgL,CACjL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAa,EACb,MAAc,EACd,aAAqB,CAAC;IAEtB,OAAO,SAAS,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,qCAAqC;IACnD,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,QAAoD;IAC/F,SAAS,GAAG,QAAQ,CAAC;AACvB,CAAC"}
|
package/dist/wgpuSurface.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { Bitmap, WgpuPresentationRenderState } from '@flighthq/types/contract';
|
|
2
|
-
export declare function acquireWgpuFrameCaptureTexture(state: Readonly<WgpuPresentationRenderState>): GPUTexture | null;
|
|
3
|
-
export declare function createBitmapFromWgpuRenderState(state: Readonly<WgpuPresentationRenderState>, timeoutMs?: number): Promise<Bitmap>;
|
|
4
|
-
export declare function enableWgpuFrameCapture(state: Readonly<WgpuPresentationRenderState>): void;
|
|
5
|
-
export declare function encodeWgpuFrameCapture(state: Readonly<WgpuPresentationRenderState>, encoder: GPUCommandEncoder): void;
|
|
6
|
-
//# sourceMappingURL=wgpuSurface.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuSurface.d.ts","sourceRoot":"","sources":["../src/wgpuSurface.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAmBpF,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,QAAQ,CAAC,2BAA2B,CAAC,GAAG,UAAU,GAAG,IAAI,CAmB9G;AAWD,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,QAAQ,CAAC,2BAA2B,CAAC,EAC5C,SAAS,SAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CA0CjB;AAMD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,2BAA2B,CAAC,GAAG,IAAI,CAEzF;AAKD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,2BAA2B,CAAC,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAsCrH"}
|
package/dist/wgpuSurface.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuSurface.js","sourceRoot":"","sources":["../src/wgpuSurface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,gGAAgG;AAChG,sGAAsG;AACtG,sGAAsG;AACtG,gGAAgG;AAChG,uGAAuG;AACvG,kGAAkG;AAClG,EAAE;AACF,uGAAuG;AACvG,qGAAqG;AACrG,sGAAsG;AACtG,sGAAsG;AAEtG,wGAAwG;AACxG,sGAAsG;AACtG,8FAA8F;AAC9F,MAAM,UAAU,8BAA8B,CAAC,KAA4C;IACzF,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAE9C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAC7C,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1G,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;QACzC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,eAAe,CAAC,eAAe,GAAG,eAAe,CAAC,QAAQ;KACtG,CAAC,CAAC;IACH,OAAO,CAAC,mBAAmB,GAAG,OAAO,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mGAAmG;AACnG,iGAAiG;AACjG,wGAAwG;AACxG,uGAAuG;AACvG,0FAA0F;AAC1F,EAAE;AACF,wGAAwG;AACxG,oGAAoG;AACpG,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,KAA4C,EAC5C,SAAS,GAAG,sBAAsB;IAElC,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAC1C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAEpD,MAAM,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;IACxB,oGAAoG;IACpG,mGAAmG;IACnG,uGAAuG;IACvG,uGAAuG;IACvG,uGAAuG;IACvG,uGAAuG;IACvG,qEAAqE;IACrE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC;IACxF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC;QAC/B,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjD,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrD,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,0FAA0F;IAC1F,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sGAAsG;AACtG,gGAAgG;AAChG,uGAAuG;AACvG,8FAA8F;AAC9F,MAAM,UAAU,sBAAsB,CAAC,KAA4C;IACjF,yBAAyB,CAAC,KAAK,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAC9D,CAAC;AAED,0GAA0G;AAC1G,oGAAoG;AACpG,8FAA8F;AAC9F,MAAM,UAAU,sBAAsB,CAAC,KAA4C,EAAE,OAA0B;IAC7G,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAC5C,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO;IACtF,kGAAkG;IAClG,mGAAmG;IACnG,oGAAoG;IACpG,mGAAmG;IACnG,mCAAmC;IACnC,EAAE;IACF,mGAAmG;IACnG,mGAAmG;IACnG,qGAAqG;IACrG,MAAM,QAAQ,GAAG,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC;IACtD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO;IAE5D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,+FAA+F;IAC/F,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAEvD,IACE,OAAO,CAAC,kBAAkB,KAAK,IAAI;QACnC,OAAO,CAAC,kBAAkB,KAAK,SAAS;QACxC,OAAO,CAAC,iBAAiB,KAAK,KAAK;QACnC,OAAO,CAAC,kBAAkB,KAAK,MAAM,EACrC,CAAC;QACD,OAAO,CAAC,kBAAkB,EAAE,OAAO,EAAE,CAAC;QACtC,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;YACrD,IAAI,EAAE,WAAW,GAAG,MAAM;YAC1B,KAAK,EAAE,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ;SACzD,CAAC,CAAC;QACH,OAAO,CAAC,uBAAuB,GAAG,WAAW,CAAC;QAC9C,OAAO,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAClC,OAAO,CAAC,kBAAkB,GAAG,MAAM,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE,WAAW,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AACpH,CAAC;AAED,gGAAgG;AAChG,uGAAuG;AACvG,4GAA4G;AAC5G,2GAA2G;AAC3G,wGAAwG;AACxG,KAAK,UAAU,oBAAoB,CAAC,MAAiB,EAAE,SAAiB;IACtE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAEnC,sGAAsG;IACtG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAExB,IAAI,KAAgD,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;QACrD,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,MAAM,CAAC,IAAI,KAAK,CAAC,4EAA4E,SAAS,IAAI,CAAC,CAAC,CAAC;QAC/G,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,uGAAuG;AACvG,gEAAgE;AAChE,MAAM,sBAAsB,GAAG,MAAM,CAAC"}
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
import type { WgpuRenderTarget } from '@flighthq/types/contract';
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
acquireWgpuSurfaceAntialiasView,
|
|
5
|
-
clearWgpuSurfacePresentation,
|
|
6
|
-
encodeWgpuSurfaceAntialiasResolve,
|
|
7
|
-
getWgpuSurfaceLogicalExtent,
|
|
8
|
-
getWgpuSurfaceRenderExtent,
|
|
9
|
-
getWgpuSurfaceRenderScale,
|
|
10
|
-
} from './wgpuAntialias';
|
|
11
|
-
import { renderWgpuBackground, submitWgpuRenderPass } from './wgpuBackground';
|
|
12
|
-
import { createEmptyWgpuRegistries, createWgpuPipeline } from './wgpuPipeline';
|
|
13
|
-
import { createWgpuRenderStateFromCanvasElement, getWgpuRenderStateRuntime } from './wgpuRenderState';
|
|
14
|
-
import { setWgpuRenderPassScissorRect } from './wgpuScissor';
|
|
15
|
-
import { enableWgpuFrameCapture } from './wgpuSurface';
|
|
16
|
-
import { createWgpuRenderStateForTest, installWgpuMock } from './wgpuTestHelper';
|
|
17
|
-
|
|
18
|
-
beforeAll(() => {
|
|
19
|
-
installWgpuMock();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
const _pipeline = createWgpuPipeline(createEmptyWgpuRegistries());
|
|
23
|
-
|
|
24
|
-
describe('acquireWgpuSurfaceAntialiasView', () => {
|
|
25
|
-
it('returns and retains a 2x render view when the option is enabled', async () => {
|
|
26
|
-
const state = await createWgpuRenderStateForTest({ antialias: true });
|
|
27
|
-
const presentationView = state.context.getCurrentTexture().createView();
|
|
28
|
-
|
|
29
|
-
const view = acquireWgpuSurfaceAntialiasView(state, presentationView);
|
|
30
|
-
|
|
31
|
-
expect(view).toBe(getWgpuRenderStateRuntime(state).surfaceAntialiasView);
|
|
32
|
-
expect(getWgpuRenderStateRuntime(state).surfacePresentationView).toBe(presentationView);
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
describe('clearWgpuSurfacePresentation', () => {
|
|
37
|
-
it('drops the per-frame presentation view without destroying reusable resolve resources', async () => {
|
|
38
|
-
const state = await createWgpuRenderStateForTest({ antialias: true });
|
|
39
|
-
acquireWgpuSurfaceAntialiasView(state, state.context.getCurrentTexture().createView());
|
|
40
|
-
const runtime = getWgpuRenderStateRuntime(state);
|
|
41
|
-
const texture = runtime.surfaceAntialiasTexture;
|
|
42
|
-
|
|
43
|
-
clearWgpuSurfacePresentation(state);
|
|
44
|
-
|
|
45
|
-
expect(runtime.surfacePresentationView).toBeNull();
|
|
46
|
-
expect(runtime.surfaceAntialiasTexture).toBe(texture);
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
describe('encodeWgpuSurfaceAntialiasResolve', () => {
|
|
51
|
-
it('draws one fullscreen triangle into the retained presentation view', async () => {
|
|
52
|
-
const state = await createWgpuRenderStateForTest({ antialias: true });
|
|
53
|
-
acquireWgpuSurfaceAntialiasView(state, state.context.getCurrentTexture().createView());
|
|
54
|
-
const draw = vi.fn();
|
|
55
|
-
const beginRenderPass = vi.fn(() => ({
|
|
56
|
-
draw,
|
|
57
|
-
end: () => {},
|
|
58
|
-
setBindGroup: () => {},
|
|
59
|
-
setPipeline: () => {},
|
|
60
|
-
}));
|
|
61
|
-
|
|
62
|
-
encodeWgpuSurfaceAntialiasResolve(state, { beginRenderPass } as unknown as GPUCommandEncoder);
|
|
63
|
-
|
|
64
|
-
expect(beginRenderPass).toHaveBeenCalledOnce();
|
|
65
|
-
expect(draw).toHaveBeenCalledWith(3);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
describe('getWgpuSurfaceLogicalExtent', () => {
|
|
70
|
-
it('keeps presentation coordinates logical while the render extent is supersampled', async () => {
|
|
71
|
-
const state = await createWgpuRenderStateForTest({ antialias: true });
|
|
72
|
-
acquireWgpuSurfaceAntialiasView(state, state.context.getCurrentTexture().createView());
|
|
73
|
-
|
|
74
|
-
expect(getWgpuSurfaceLogicalExtent(state)).toEqual({ height: 600, width: 800 });
|
|
75
|
-
expect(getWgpuSurfaceRenderExtent(state)).toEqual({ height: 1200, width: 1600 });
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
describe('getWgpuSurfaceRenderExtent', () => {
|
|
80
|
-
it('switches from the logical canvas extent to the acquired supersample extent', async () => {
|
|
81
|
-
const state = await createWgpuRenderStateForTest({ antialias: true });
|
|
82
|
-
expect(getWgpuSurfaceRenderExtent(state)).toEqual({ width: 800, height: 600 });
|
|
83
|
-
|
|
84
|
-
acquireWgpuSurfaceAntialiasView(state, state.context.getCurrentTexture().createView());
|
|
85
|
-
|
|
86
|
-
expect(getWgpuSurfaceRenderExtent(state)).toEqual({ width: 1600, height: 1200 });
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
describe('getWgpuSurfaceRenderScale', () => {
|
|
91
|
-
it('scales only the acquired main surface', async () => {
|
|
92
|
-
const state = await createWgpuRenderStateForTest({ antialias: true });
|
|
93
|
-
acquireWgpuSurfaceAntialiasView(state, state.context.getCurrentTexture().createView());
|
|
94
|
-
const runtime = getWgpuRenderStateRuntime(state);
|
|
95
|
-
|
|
96
|
-
expect(getWgpuSurfaceRenderScale(state)).toBe(2);
|
|
97
|
-
runtime.currentRenderTarget = {} as WgpuRenderTarget;
|
|
98
|
-
expect(getWgpuSurfaceRenderScale(state)).toBe(1);
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
describe('WgpuRenderOptions.antialias', () => {
|
|
103
|
-
it('leaves the direct presentation path and all resolve resources off by default', async () => {
|
|
104
|
-
const state = await createWgpuRenderStateForTest();
|
|
105
|
-
const runtime = getWgpuRenderStateRuntime(state);
|
|
106
|
-
const { encoder, setViewport } = installRecordingEncoder(state);
|
|
107
|
-
|
|
108
|
-
renderWgpuBackground(state);
|
|
109
|
-
|
|
110
|
-
expect(runtime.surfaceAntialiasEnabled).toBe(false);
|
|
111
|
-
expect(runtime.surfaceAntialiasTexture).toBeNull();
|
|
112
|
-
expect(runtime.surfaceAntialiasResolvePipeline).toBeNull();
|
|
113
|
-
expect(runtime.surfacePresentationView).toBeNull();
|
|
114
|
-
expect(setViewport).toHaveBeenCalledWith(0, 0, 800, 600, 0, 1);
|
|
115
|
-
expect(encoder.beginRenderPass).toHaveBeenCalledTimes(1);
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
it('renders the main pass into a 2x surface while preserving logical canvas coordinates', async () => {
|
|
119
|
-
const state = await createWgpuRenderStateForTest({ antialias: true });
|
|
120
|
-
const runtime = getWgpuRenderStateRuntime(state);
|
|
121
|
-
const { setViewport } = installRecordingEncoder(state);
|
|
122
|
-
|
|
123
|
-
renderWgpuBackground(state);
|
|
124
|
-
|
|
125
|
-
expect(runtime.surfaceAntialiasTexture?.width).toBe(1600);
|
|
126
|
-
expect(runtime.surfaceAntialiasTexture?.height).toBe(1200);
|
|
127
|
-
expect(runtime.depthStencilWidth).toBe(1600);
|
|
128
|
-
expect(runtime.depthStencilHeight).toBe(1200);
|
|
129
|
-
expect(runtime.renderTargetViewport).toBeNull();
|
|
130
|
-
expect(runtime.surfacePresentationView).not.toBeNull();
|
|
131
|
-
expect(setViewport).toHaveBeenCalledWith(0, 0, 1600, 1200, 0, 1);
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
it('encodes one fullscreen resolve before frame-capture readback', async () => {
|
|
135
|
-
const state = await createWgpuRenderStateForTest({ antialias: true });
|
|
136
|
-
const events: string[] = [];
|
|
137
|
-
let passIndex = 0;
|
|
138
|
-
const encoder = {
|
|
139
|
-
beginRenderPass: vi.fn(() => {
|
|
140
|
-
const name = passIndex++ === 0 ? 'main' : 'resolve';
|
|
141
|
-
events.push(`${name}:begin`);
|
|
142
|
-
return {
|
|
143
|
-
draw: (vertices: number) => events.push(`${name}:draw:${vertices}`),
|
|
144
|
-
end: () => events.push(`${name}:end`),
|
|
145
|
-
setBindGroup: () => {},
|
|
146
|
-
setPipeline: () => {},
|
|
147
|
-
setScissorRect: () => {},
|
|
148
|
-
setStencilReference: () => {},
|
|
149
|
-
setViewport: () => {},
|
|
150
|
-
} as unknown as GPURenderPassEncoder;
|
|
151
|
-
}),
|
|
152
|
-
copyTextureToBuffer: () => events.push('capture:copy'),
|
|
153
|
-
finish: () => {
|
|
154
|
-
events.push('encoder:finish');
|
|
155
|
-
return {} as GPUCommandBuffer;
|
|
156
|
-
},
|
|
157
|
-
} as unknown as GPUCommandEncoder;
|
|
158
|
-
vi.spyOn(state.device, 'createCommandEncoder').mockReturnValue(encoder);
|
|
159
|
-
enableWgpuFrameCapture(state);
|
|
160
|
-
|
|
161
|
-
renderWgpuBackground(state);
|
|
162
|
-
submitWgpuRenderPass(state);
|
|
163
|
-
|
|
164
|
-
expect(events).toEqual([
|
|
165
|
-
'main:begin',
|
|
166
|
-
'main:end',
|
|
167
|
-
'resolve:begin',
|
|
168
|
-
'resolve:draw:3',
|
|
169
|
-
'resolve:end',
|
|
170
|
-
'capture:copy',
|
|
171
|
-
'encoder:finish',
|
|
172
|
-
]);
|
|
173
|
-
expect(getWgpuRenderStateRuntime(state).surfacePresentationView).toBeNull();
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
// C1b: the size is LIVE. The state's `surface` is readonly to the consumer, so the resize happens on the
|
|
177
|
-
// PROVIDER — the canvas — and the state must observe the new value. A provider that snapshotted its size
|
|
178
|
-
// at acquisition would leave this reading 800x600 forever and still pass every test that never resizes.
|
|
179
|
-
it('reallocates the supersample surface when the canvas size changes', async () => {
|
|
180
|
-
const canvas = document.createElement('canvas');
|
|
181
|
-
canvas.width = 800;
|
|
182
|
-
canvas.height = 600;
|
|
183
|
-
const state = await createWgpuRenderStateFromCanvasElement(canvas, _pipeline, { antialias: true });
|
|
184
|
-
renderWgpuBackground(state);
|
|
185
|
-
const runtime = getWgpuRenderStateRuntime(state);
|
|
186
|
-
const first = runtime.surfaceAntialiasTexture!;
|
|
187
|
-
const destroy = vi.spyOn(first, 'destroy');
|
|
188
|
-
submitWgpuRenderPass(state);
|
|
189
|
-
|
|
190
|
-
canvas.width = 400;
|
|
191
|
-
canvas.height = 300;
|
|
192
|
-
expect(state.surface.width).toBe(400);
|
|
193
|
-
expect(state.surface.height).toBe(300);
|
|
194
|
-
renderWgpuBackground(state);
|
|
195
|
-
|
|
196
|
-
expect(destroy).toHaveBeenCalledOnce();
|
|
197
|
-
expect(runtime.surfaceAntialiasTexture).not.toBe(first);
|
|
198
|
-
expect(runtime.surfaceAntialiasTexture?.width).toBe(800);
|
|
199
|
-
expect(runtime.surfaceAntialiasTexture?.height).toBe(600);
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
it('scales main-surface scissors but leaves offscreen-target scissors unchanged', async () => {
|
|
203
|
-
const state = await createWgpuRenderStateForTest({ antialias: true });
|
|
204
|
-
renderWgpuBackground(state);
|
|
205
|
-
const runtime = getWgpuRenderStateRuntime(state);
|
|
206
|
-
const setScissorRect = vi.fn();
|
|
207
|
-
const pass = { setScissorRect } as unknown as GPURenderPassEncoder;
|
|
208
|
-
|
|
209
|
-
setWgpuRenderPassScissorRect(state, pass, 3, 5, 7, 11);
|
|
210
|
-
expect(setScissorRect).toHaveBeenLastCalledWith(6, 10, 14, 22);
|
|
211
|
-
|
|
212
|
-
runtime.currentRenderTarget = {} as WgpuRenderTarget;
|
|
213
|
-
setWgpuRenderPassScissorRect(state, pass, 3, 5, 7, 11);
|
|
214
|
-
expect(setScissorRect).toHaveBeenLastCalledWith(3, 5, 7, 11);
|
|
215
|
-
});
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
function installRecordingEncoder(state: { device: GPUDevice }): {
|
|
219
|
-
encoder: GPUCommandEncoder & { beginRenderPass: ReturnType<typeof vi.fn> };
|
|
220
|
-
setViewport: ReturnType<typeof vi.fn>;
|
|
221
|
-
} {
|
|
222
|
-
const setViewport = vi.fn();
|
|
223
|
-
const pass = {
|
|
224
|
-
draw: () => {},
|
|
225
|
-
end: () => {},
|
|
226
|
-
setBindGroup: () => {},
|
|
227
|
-
setPipeline: () => {},
|
|
228
|
-
setScissorRect: () => {},
|
|
229
|
-
setStencilReference: () => {},
|
|
230
|
-
setViewport,
|
|
231
|
-
} as unknown as GPURenderPassEncoder;
|
|
232
|
-
const beginRenderPass = vi.fn(() => pass);
|
|
233
|
-
const encoder = {
|
|
234
|
-
beginRenderPass,
|
|
235
|
-
finish: () => ({}) as GPUCommandBuffer,
|
|
236
|
-
} as unknown as GPUCommandEncoder & { beginRenderPass: ReturnType<typeof vi.fn> };
|
|
237
|
-
vi.spyOn(state.device, 'createCommandEncoder').mockReturnValue(encoder);
|
|
238
|
-
return { encoder, setViewport };
|
|
239
|
-
}
|