@flighthq/effects-wgpu 0.4.0-next.1585.bf131c8 → 0.4.0-next.1652.39f08fd
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/enableWgpuRenderEffectGuards.js +5 -5
- package/dist/enableWgpuRenderEffectGuards.js.map +1 -1
- package/dist/wgpuKuwaharaEffect.js +9 -3
- package/dist/wgpuKuwaharaEffect.js.map +1 -1
- package/dist/wgpuRenderEffectPipeline.d.ts.map +1 -1
- package/dist/wgpuRenderEffectPipeline.js +6 -14
- package/dist/wgpuRenderEffectPipeline.js.map +1 -1
- package/package.json +9 -9
- package/src/enableWgpuRenderEffectGuards.test.ts +21 -12
- package/src/wgpuRenderEffectPipeline.test.ts +20 -10
|
@@ -26,13 +26,13 @@ export function enableWgpuRenderEffectGuards(state) {
|
|
|
26
26
|
setWgpuRenderEffectPipelineSkipGuard(state, warnWgpuRenderEffectPipelineSkip);
|
|
27
27
|
_guardedStates.add(state);
|
|
28
28
|
}
|
|
29
|
-
// WGPU effect targets
|
|
30
|
-
//
|
|
31
|
-
//
|
|
29
|
+
// WGPU effect targets support one or four coverage samples. Counts outside that set are substituted
|
|
30
|
+
// rather than rejected so module-scope pipeline construction remains loadable; the guard makes the
|
|
31
|
+
// applied count explicit. Warn once per requested count.
|
|
32
32
|
function warnWgpuRenderEffectPipelineSampleCount(_state, requestedSampleCount, appliedSampleCount) {
|
|
33
|
-
logOnce(`effects-wgpu:pipeline-sample-count-
|
|
33
|
+
logOnce(`effects-wgpu:pipeline-sample-count-substituted:${requestedSampleCount}`, LogLevel.Warn, {
|
|
34
34
|
appliedSampleCount,
|
|
35
|
-
message: `createWgpuRenderEffectPipeline: sampleCount ${requestedSampleCount} requested, but WGPU effect targets
|
|
35
|
+
message: `createWgpuRenderEffectPipeline: sampleCount ${requestedSampleCount} requested, but WGPU effect targets support 1 or 4 — continuing with sampleCount ${appliedSampleCount}`,
|
|
36
36
|
requestedSampleCount,
|
|
37
37
|
}, 'effects-wgpu');
|
|
38
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enableWgpuRenderEffectGuards.js","sourceRoot":"","sources":["../src/enableWgpuRenderEffectGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EACL,2CAA2C,EAC3C,oCAAoC,GACrC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AAEhF,MAAM,UAAU,gCAAgC,CAAC,KAAsB;IACrE,OAAO,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAsB;IAClE,mCAAmC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjD,2CAA2C,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzD,oCAAoC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClD,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,uGAAuG;AACvG,wGAAwG;AACxG,yGAAyG;AACzG,gFAAgF;AAChF,EAAE;AACF,oGAAoG;AACpG,0GAA0G;AAC1G,mGAAmG;AACnG,4FAA4F;AAC5F,MAAM,UAAU,4BAA4B,CAAC,KAAsB;IACjE,mCAAmC,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;IAC5E,2CAA2C,CAAC,KAAK,EAAE,uCAAuC,CAAC,CAAC;IAC5F,oCAAoC,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;IAC9E,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"enableWgpuRenderEffectGuards.js","sourceRoot":"","sources":["../src/enableWgpuRenderEffectGuards.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,16 +39,16 @@ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
|
|
|
39
39
|
let r = i32(min(f32(R), uni.u_radius));
|
|
40
40
|
var means : array<vec3f, 4>;
|
|
41
41
|
var vars : array<f32, 4>;
|
|
42
|
-
var lo = array<vec2i, 4>(vec2i(-1, -1), vec2i(0, -1), vec2i(-1, 0), vec2i(0, 0));
|
|
43
42
|
for (var q = 0; q < 4; q++) {
|
|
43
|
+
let ox = select(-r, 0, (q & 1) != 0);
|
|
44
|
+
let oy = select(-r, 0, (q & 2) != 0);
|
|
44
45
|
var sum = vec3f(0.0);
|
|
45
46
|
var sumSq = vec3f(0.0);
|
|
46
47
|
var n = 0.0;
|
|
47
48
|
for (var y = 0; y <= R; y++) {
|
|
48
49
|
for (var x = 0; x <= R; x++) {
|
|
49
50
|
if (x > r || y > r) { continue; }
|
|
50
|
-
let
|
|
51
|
-
let off = vec2f(f32(d.x), f32(d.y)) * texel;
|
|
51
|
+
let off = vec2f(f32(ox + x), f32(oy + y)) * texel;
|
|
52
52
|
let col = textureSampleLevel(tex, smp, uv + off, 0.0).rgb;
|
|
53
53
|
sum += col;
|
|
54
54
|
sumSq += col * col;
|
|
@@ -62,12 +62,18 @@ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
|
|
|
62
62
|
}
|
|
63
63
|
var minVar = vars[0];
|
|
64
64
|
var result = means[0];
|
|
65
|
+
var tiedCount = 1.0;
|
|
65
66
|
for (var q = 1; q < 4; q++) {
|
|
66
67
|
if (vars[q] < minVar) {
|
|
67
68
|
minVar = vars[q];
|
|
68
69
|
result = means[q];
|
|
70
|
+
tiedCount = 1.0;
|
|
71
|
+
} else if (vars[q] == minVar) {
|
|
72
|
+
result += means[q];
|
|
73
|
+
tiedCount += 1.0;
|
|
69
74
|
}
|
|
70
75
|
}
|
|
76
|
+
result /= tiedCount;
|
|
71
77
|
return vec4f(result, textureSampleLevel(tex, smp, uv, 0.0).a);
|
|
72
78
|
}`;
|
|
73
79
|
//# sourceMappingURL=wgpuKuwaharaEffect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuKuwaharaEffect.js","sourceRoot":"","sources":["../src/wgpuKuwaharaEffect.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,kGAAkG;AAClG,sGAAsG;AACtG,wEAAwE;AACxE,MAAM,UAAU,yBAAyB,CACvC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAgC;IAEhC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;IACzG,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7B,2CAA2C;QAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACtB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,+BAA+B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACrF,yBAAyB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAwB,CAAC,CAAC;AACvF,CAAC,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,KAAsB;IAC/D,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,EAAE,+BAA+B,CAAC,CAAC;AACrF,CAAC;AAED,uDAAuD;AACvD,MAAM,sBAAsB,GAAG,UAAU,CAAC
|
|
1
|
+
{"version":3,"file":"wgpuKuwaharaEffect.js","sourceRoot":"","sources":["../src/wgpuKuwaharaEffect.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,kGAAkG;AAClG,sGAAsG;AACtG,wEAAwE;AACxE,MAAM,UAAU,yBAAyB,CACvC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAgC;IAEhC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;IACzG,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7B,2CAA2C;QAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACtB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,+BAA+B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACrF,yBAAyB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAwB,CAAC,CAAC;AACvF,CAAC,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,KAAsB;IAC/D,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,EAAE,+BAA+B,CAAC,CAAC;AACrF,CAAC;AAED,uDAAuD;AACvD,MAAM,sBAAsB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsDxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuRenderEffectPipeline.d.ts","sourceRoot":"","sources":["../src/wgpuRenderEffectPipeline.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,wCAAwC,EACxC,iCAAiC,EACjC,eAAe,EAEhB,MAAM,0BAA0B,CAAC;AAmBlC,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,wBAAwB,EAClC,UAAU,GAAE,sBAA+B,GAC1C,IAAI,CAqBN;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,QAAQ,CAAC,2BAA2B,CAAM,GAClD,wBAAwB,
|
|
1
|
+
{"version":3,"file":"wgpuRenderEffectPipeline.d.ts","sourceRoot":"","sources":["../src/wgpuRenderEffectPipeline.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,wCAAwC,EACxC,iCAAiC,EACjC,eAAe,EAEhB,MAAM,0BAA0B,CAAC;AAmBlC,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,wBAAwB,EAClC,UAAU,GAAE,sBAA+B,GAC1C,IAAI,CAqBN;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,QAAQ,CAAC,2BAA2B,CAAM,GAClD,wBAAwB,CAiB1B;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAYhH;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,wBAAwB,EAClC,UAAU,EAAE,aAAa,CAAC,YAAY,GAAG,UAAU,CAAC,GACnD,IAAI,CA2EN;AAID,wBAAgB,2CAA2C,CACzD,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,wCAAwC,GAAG,IAAI,GACrD,IAAI,CAGN;AAOD,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,iCAAiC,GAAG,IAAI,GAC9C,IAAI,CAGN;AAED,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,wBAAwB,EAClC,OAAO,EAAE,UAAU,GAAG,IAAI,GACzB,IAAI,CAEN"}
|
|
@@ -20,10 +20,10 @@ export function beginWgpuRenderEffectPipeline(state, pipeline, colorSpace = 'srg
|
|
|
20
20
|
const h = state.canvas.height;
|
|
21
21
|
const format = pipeline.options.format === 'rgba16f' ? 'rgba16float' : state.format;
|
|
22
22
|
if (pipeline.sceneTarget === null) {
|
|
23
|
-
pipeline.sceneTarget = createWgpuRenderTarget(state, w, h, format, colorSpace);
|
|
23
|
+
pipeline.sceneTarget = createWgpuRenderTarget(state, w, h, format, colorSpace, pipeline.options.sampleCount);
|
|
24
24
|
}
|
|
25
25
|
else {
|
|
26
|
-
resizeWgpuRenderTarget(state, pipeline.sceneTarget, w, h);
|
|
26
|
+
resizeWgpuRenderTarget(state, pipeline.sceneTarget, w, h, pipeline.options.sampleCount);
|
|
27
27
|
}
|
|
28
28
|
// Declare the producer's space before the pass opens: the clear value is packed sRGB input and
|
|
29
29
|
// must be decoded when the target stores linear scene color.
|
|
@@ -38,23 +38,15 @@ export function beginWgpuRenderEffectPipeline(state, pipeline, colorSpace = 'srg
|
|
|
38
38
|
beginWgpuRenderPass(state, pipeline.sceneTarget);
|
|
39
39
|
}
|
|
40
40
|
export function createWgpuRenderEffectPipeline(state, options = {}) {
|
|
41
|
-
// WebGPU effect targets are single-sample: a requested sampleCount above 1 cannot be honoured here and
|
|
42
|
-
// is normalised away. This ACCEPTS rather than rejects, deliberately. An earlier revision threw, which
|
|
43
|
-
// was authorised by a ruling that omitted the caller-migration constraint — 102 live call sites pass
|
|
44
|
-
// sampleCount 4, all at module scope, so the throw made those scene modules unloadable. Rejecting an
|
|
45
|
-
// argument a live population passes is a breaking change wearing the clothes of strictness; the fault in
|
|
46
|
-
// accept-and-drop was that it is SILENT, not that it is permissive. Do not restore the throw until
|
|
47
|
-
// sampleCount is genuinely forwarded or every caller has been migrated. The core reports through a
|
|
48
|
-
// message-free seam; enableWgpuRenderEffectGuards owns the caller-facing warning and logging dependency.
|
|
49
41
|
const requestedSampleCount = options.sampleCount ?? 1;
|
|
50
|
-
const appliedSampleCount = requestedSampleCount > 1 ?
|
|
42
|
+
const appliedSampleCount = requestedSampleCount > 1 ? 4 : 1;
|
|
51
43
|
if (requestedSampleCount !== appliedSampleCount) {
|
|
52
44
|
_sampleCountGuards.get(state)?.(state, requestedSampleCount, appliedSampleCount);
|
|
53
45
|
}
|
|
54
46
|
return {
|
|
55
47
|
options: {
|
|
56
48
|
...options,
|
|
57
|
-
|
|
49
|
+
sampleCount: appliedSampleCount,
|
|
58
50
|
},
|
|
59
51
|
sceneTarget: null,
|
|
60
52
|
pool: createWgpuRenderTargetPool(),
|
|
@@ -151,8 +143,8 @@ export function endWgpuRenderEffectPipeline(state, pipeline, operations) {
|
|
|
151
143
|
if (scratchB !== null)
|
|
152
144
|
releaseWgpuRenderTarget(pipeline.pool, scratchB);
|
|
153
145
|
}
|
|
154
|
-
// The diagnostics seam for
|
|
155
|
-
//
|
|
146
|
+
// The diagnostics seam for sample-count substitutions. Core stays free of warning strings and
|
|
147
|
+
// @flighthq/log; the separately-importable guard module installs the reporter when wanted.
|
|
156
148
|
export function setWgpuRenderEffectPipelineSampleCountGuard(state, guard) {
|
|
157
149
|
if (guard === null)
|
|
158
150
|
_sampleCountGuards.delete(state);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuRenderEffectPipeline.js","sourceRoot":"","sources":["../src/wgpuRenderEffectPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AAaxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,iGAAiG;AACjG,gGAAgG;AAChG,2FAA2F;AAC3F,8BAA8B;AAC9B,kGAAkG;AAClG,kGAAkG;AAClG,+CAA+C;AAC/C,kGAAkG;AAClG,sGAAsG;AACtG,gFAAgF;AAEhF,MAAM,UAAU,6BAA6B,CAC3C,KAAsB,EACtB,QAAkC,EAClC,aAAqC,MAAM;IAE3C,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IAEpF,IAAI,QAAQ,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAClC,QAAQ,CAAC,WAAW,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuRenderEffectPipeline.js","sourceRoot":"","sources":["../src/wgpuRenderEffectPipeline.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/effects-wgpu",
|
|
3
|
-
"version": "0.4.0-next.
|
|
3
|
+
"version": "0.4.0-next.1652.39f08fd",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,14 +38,14 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/adjustments": "0.4.0-next.
|
|
42
|
-
"@flighthq/color": "0.4.0-next.
|
|
43
|
-
"@flighthq/effects": "0.4.0-next.
|
|
44
|
-
"@flighthq/geometry": "0.4.0-next.
|
|
45
|
-
"@flighthq/log": "0.4.0-next.
|
|
46
|
-
"@flighthq/render-wgpu": "0.4.0-next.
|
|
47
|
-
"@flighthq/registry": "0.4.0-next.
|
|
48
|
-
"@flighthq/types": "0.4.0-next.
|
|
41
|
+
"@flighthq/adjustments": "0.4.0-next.1652.39f08fd",
|
|
42
|
+
"@flighthq/color": "0.4.0-next.1652.39f08fd",
|
|
43
|
+
"@flighthq/effects": "0.4.0-next.1652.39f08fd",
|
|
44
|
+
"@flighthq/geometry": "0.4.0-next.1652.39f08fd",
|
|
45
|
+
"@flighthq/log": "0.4.0-next.1652.39f08fd",
|
|
46
|
+
"@flighthq/render-wgpu": "0.4.0-next.1652.39f08fd",
|
|
47
|
+
"@flighthq/registry": "0.4.0-next.1652.39f08fd",
|
|
48
|
+
"@flighthq/types": "0.4.0-next.1652.39f08fd"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"@webgpu/types": "^0.1.70"
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
addLogSink,
|
|
3
|
+
clearLogOnceKeys,
|
|
4
|
+
createMemoryLogSink,
|
|
5
|
+
getMemoryLogSinkEntries,
|
|
6
|
+
removeLogSink,
|
|
7
|
+
} from '@flighthq/log/contract';
|
|
2
8
|
import {
|
|
3
9
|
acquireWgpuRenderTexture,
|
|
4
10
|
beginWgpuFrame,
|
|
@@ -23,6 +29,7 @@ import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
|
|
|
23
29
|
import { applyWgpuRenderEffectsToRenderTexture } from './wgpuRenderTextureEffect';
|
|
24
30
|
|
|
25
31
|
beforeAll(() => installWgpuMock());
|
|
32
|
+
beforeEach(() => clearLogOnceKeys());
|
|
26
33
|
|
|
27
34
|
describe('areWgpuRenderEffectGuardsEnabled', () => {
|
|
28
35
|
it('reports whether diagnostics were installed for the state', async () => {
|
|
@@ -52,9 +59,8 @@ describe('disableWgpuRenderEffectGuards', () => {
|
|
|
52
59
|
});
|
|
53
60
|
|
|
54
61
|
describe('enableWgpuRenderEffectGuards', () => {
|
|
55
|
-
// logOnce suppresses a key
|
|
56
|
-
//
|
|
57
|
-
// uses distinct effect kinds so no two share a key.
|
|
62
|
+
// logOnce suppresses a key until the next test reset. Both the fire and silence assertions still live
|
|
63
|
+
// in one test, in order, so the once-per-key behavior itself remains observable.
|
|
58
64
|
it('WARNS that an unregistered chain returned false without writing dest, then stays quiet', async () => {
|
|
59
65
|
const state = await createWgpuRenderStateForTest();
|
|
60
66
|
enableWgpuRenderEffectGuards(state);
|
|
@@ -115,29 +121,32 @@ describe('enableWgpuRenderEffectGuards', () => {
|
|
|
115
121
|
expect(again).toHaveLength(0);
|
|
116
122
|
});
|
|
117
123
|
|
|
118
|
-
it('WARNS once when
|
|
124
|
+
it('WARNS once when an unsupported sample count is substituted', async () => {
|
|
119
125
|
const state = await createWgpuRenderStateForTest();
|
|
120
126
|
enableWgpuRenderEffectGuards(state);
|
|
121
127
|
|
|
122
128
|
let pipeline = createWgpuRenderEffectPipeline(state);
|
|
123
129
|
const entries = captureLog(() => {
|
|
124
|
-
pipeline = createWgpuRenderEffectPipeline(state, { sampleCount:
|
|
125
|
-
createWgpuRenderEffectPipeline(state, { sampleCount:
|
|
130
|
+
pipeline = createWgpuRenderEffectPipeline(state, { sampleCount: 8 });
|
|
131
|
+
createWgpuRenderEffectPipeline(state, { sampleCount: 8 });
|
|
126
132
|
});
|
|
127
133
|
|
|
128
|
-
expect(pipeline.options.sampleCount).toBe(
|
|
134
|
+
expect(pipeline.options.sampleCount).toBe(4);
|
|
129
135
|
expect(entries).toHaveLength(1);
|
|
130
|
-
expect(messageOf(entries[0])).toContain('sampleCount
|
|
131
|
-
expect(messageOf(entries[0])).toContain('
|
|
132
|
-
expect(entries[0]
|
|
136
|
+
expect(messageOf(entries[0])).toContain('sampleCount 8 requested');
|
|
137
|
+
expect(messageOf(entries[0])).toContain('effect targets support 1 or 4');
|
|
138
|
+
expect(messageOf(entries[0])).toContain('continuing with sampleCount 4');
|
|
139
|
+
expect(messageOf(entries[0])).not.toContain('multisampling was NOT applied');
|
|
140
|
+
expect(entries[0]?.data).toMatchObject({ appliedSampleCount: 4, requestedSampleCount: 8 });
|
|
133
141
|
});
|
|
134
142
|
|
|
135
|
-
it('stays SILENT when the requested sample
|
|
143
|
+
it('stays SILENT when the requested sample counts are supported', async () => {
|
|
136
144
|
const state = await createWgpuRenderStateForTest();
|
|
137
145
|
enableWgpuRenderEffectGuards(state);
|
|
138
146
|
|
|
139
147
|
const entries = captureLog(() => {
|
|
140
148
|
expect(createWgpuRenderEffectPipeline(state, { sampleCount: 1 }).options.sampleCount).toBe(1);
|
|
149
|
+
expect(createWgpuRenderEffectPipeline(state, { sampleCount: 4 }).options.sampleCount).toBe(4);
|
|
141
150
|
});
|
|
142
151
|
|
|
143
152
|
expect(entries).toHaveLength(0);
|
|
@@ -71,6 +71,19 @@ describe('beginWgpuRenderEffectPipeline', () => {
|
|
|
71
71
|
expect(pipeline.sceneTarget?.clearColors).toEqual([]);
|
|
72
72
|
endWgpuRenderEffectPipeline(state, pipeline, []);
|
|
73
73
|
});
|
|
74
|
+
|
|
75
|
+
it('realizes a four-sample scene target at twice the canvas extent', async () => {
|
|
76
|
+
const state = await createWgpuRenderStateForTest();
|
|
77
|
+
const pipeline = createWgpuRenderEffectPipeline(state, { sampleCount: 4 });
|
|
78
|
+
|
|
79
|
+
beginWgpuFrame(state);
|
|
80
|
+
beginWgpuRenderEffectPipeline(state, pipeline);
|
|
81
|
+
|
|
82
|
+
expect(pipeline.sceneTarget?.width).toBe(state.canvas.width * 2);
|
|
83
|
+
expect(pipeline.sceneTarget?.height).toBe(state.canvas.height * 2);
|
|
84
|
+
expect(pipeline.sceneTarget?.sampleCount).toBe(4);
|
|
85
|
+
endWgpuRenderEffectPipeline(state, pipeline, []);
|
|
86
|
+
});
|
|
74
87
|
});
|
|
75
88
|
|
|
76
89
|
describe('createWgpuRenderEffectPipeline', () => {
|
|
@@ -97,31 +110,28 @@ describe('createWgpuRenderEffectPipeline', () => {
|
|
|
97
110
|
expect(pipeline.options.format).toBe('rgba16f');
|
|
98
111
|
});
|
|
99
112
|
|
|
100
|
-
|
|
101
|
-
// ACCEPT an unsupported count and normalise it. If this starts throwing again, the callers were not
|
|
102
|
-
// migrated first.
|
|
103
|
-
it('accepts an unsupported multisample request instead of refusing to build', async () => {
|
|
113
|
+
it('retains the supported four-sample request', async () => {
|
|
104
114
|
const state = await createWgpuRenderStateForTest();
|
|
105
115
|
|
|
106
116
|
const pipeline = createWgpuRenderEffectPipeline(state, { sampleCount: 4 });
|
|
107
117
|
|
|
108
|
-
expect(pipeline.options.sampleCount).toBe(
|
|
118
|
+
expect(pipeline.options.sampleCount).toBe(4);
|
|
109
119
|
});
|
|
110
120
|
|
|
111
121
|
describe('setWgpuRenderEffectPipelineSampleCountGuard', () => {
|
|
112
122
|
it('reports the requested and applied sample counts through the optional diagnostics seam', async () => {
|
|
113
123
|
const state = await createWgpuRenderStateForTest();
|
|
114
|
-
const
|
|
124
|
+
const substitutions: Array<[number, number]> = [];
|
|
115
125
|
setWgpuRenderEffectPipelineSampleCountGuard(state, (_state, requested, applied) => {
|
|
116
|
-
|
|
126
|
+
substitutions.push([requested, applied]);
|
|
117
127
|
});
|
|
118
128
|
|
|
119
|
-
createWgpuRenderEffectPipeline(state, { sampleCount:
|
|
120
|
-
expect(
|
|
129
|
+
createWgpuRenderEffectPipeline(state, { sampleCount: 2 });
|
|
130
|
+
expect(substitutions).toEqual([[2, 4]]);
|
|
121
131
|
|
|
122
132
|
setWgpuRenderEffectPipelineSampleCountGuard(state, null);
|
|
123
133
|
createWgpuRenderEffectPipeline(state, { sampleCount: 8 });
|
|
124
|
-
expect(
|
|
134
|
+
expect(substitutions).toEqual([[2, 4]]);
|
|
125
135
|
});
|
|
126
136
|
});
|
|
127
137
|
|