@flighthq/effects-wgpu 0.5.1-next.685.f72fc7f → 0.5.1-next.704.19c91ec
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 +1 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +1 -0
- package/dist/contract.js.map +1 -1
- package/dist/enableWgpuRenderEffectGuards.d.ts.map +1 -1
- package/dist/enableWgpuRenderEffectGuards.js +9 -5
- package/dist/enableWgpuRenderEffectGuards.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/wgpuBitmapDisplacementEffect.d.ts +7 -0
- package/dist/wgpuBitmapDisplacementEffect.d.ts.map +1 -0
- package/dist/wgpuBitmapDisplacementEffect.js +156 -0
- package/dist/wgpuBitmapDisplacementEffect.js.map +1 -0
- package/dist/wgpuRenderEffectRegistry.d.ts +3 -2
- package/dist/wgpuRenderEffectRegistry.d.ts.map +1 -1
- package/dist/wgpuRenderEffectRegistry.js +12 -3
- package/dist/wgpuRenderEffectRegistry.js.map +1 -1
- package/dist/wgpuRenderTextureEffect.d.ts.map +1 -1
- package/dist/wgpuRenderTextureEffect.js +22 -9
- package/dist/wgpuRenderTextureEffect.js.map +1 -1
- package/package.json +9 -9
- package/src/wgpuBitmapDisplacementEffect.test.ts +173 -0
- package/src/wgpuRenderEffectRegistry.test.ts +20 -1
- package/src/wgpuRenderTextureEffect.test.ts +20 -3
- package/src/wgpuSpatialEffectRegistration.test.ts +1 -0
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/effects-wgpu`. The `
|
|
|
13
13
|
This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
|
|
14
14
|
|
|
15
15
|
- [Flight project](https://github.com/flighthq/flight)
|
|
16
|
-
- [Source for @flighthq/effects-wgpu@0.5.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/effects-wgpu@0.5.1-next.704.19c91ec](https://github.com/flighthq/flight/tree/19c91ec3e569d6b3b471682726465a79fba9f8cb/packages/effects-wgpu)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/19c91ec3e569d6b3b471682726465a79fba9f8cb/LICENSE.md)
|
package/dist/contract.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from './wgpuCompositeEffect';
|
|
|
4
4
|
export * from './wgpuContactShadowsEffect';
|
|
5
5
|
export * from './wgpuBlendEffect';
|
|
6
6
|
export * from './wgpuBevelEffect';
|
|
7
|
+
export * from './wgpuBitmapDisplacementEffect';
|
|
7
8
|
export * from './wgpuBloomEffect';
|
|
8
9
|
export * from './wgpuBlurEffect';
|
|
9
10
|
export * from './wgpuCameraMotionBlurEffect';
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
|
package/dist/contract.js
CHANGED
|
@@ -4,6 +4,7 @@ export * from './wgpuCompositeEffect';
|
|
|
4
4
|
export * from './wgpuContactShadowsEffect';
|
|
5
5
|
export * from './wgpuBlendEffect';
|
|
6
6
|
export * from './wgpuBevelEffect';
|
|
7
|
+
export * from './wgpuBitmapDisplacementEffect';
|
|
7
8
|
export * from './wgpuBloomEffect';
|
|
8
9
|
export * from './wgpuBlurEffect';
|
|
9
10
|
export * from './wgpuCameraMotionBlurEffect';
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enableWgpuRenderEffectGuards.d.ts","sourceRoot":"","sources":["../src/enableWgpuRenderEffectGuards.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA0C,eAAe,EAAE,MAAM,0BAA0B,CAAC;AASxG,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAEhF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAK1E;
|
|
1
|
+
{"version":3,"file":"enableWgpuRenderEffectGuards.d.ts","sourceRoot":"","sources":["../src/enableWgpuRenderEffectGuards.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA0C,eAAe,EAAE,MAAM,0BAA0B,CAAC;AASxG,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAEhF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAK1E;AAUD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAKzE"}
|
|
@@ -16,10 +16,9 @@ export function disableWgpuRenderEffectGuards(state) {
|
|
|
16
16
|
// whatever was last in it, and a partially registered chain succeeds while silently dropping the effects
|
|
17
17
|
// it could not run. Both are correct by contract and neither surfaces anywhere.
|
|
18
18
|
//
|
|
19
|
-
// The WGPU sibling of enableGlRenderEffectGuards
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
// warning that can never fire, so the absence is the honest shape rather than an oversight.
|
|
19
|
+
// The WGPU sibling of enableGlRenderEffectGuards. WGPU now observes per-instance resolution for effects
|
|
20
|
+
// that name external resources (BitmapDisplacementEffect); GL alone additionally guards custom-shader
|
|
21
|
+
// source re-registration because WGPU has no custom-shader effect.
|
|
23
22
|
export function enableWgpuRenderEffectGuards(state) {
|
|
24
23
|
setWgpuRenderEffectApplicationGuard(state, warnWgpuRenderEffectApplication);
|
|
25
24
|
setWgpuRenderEffectPipelineSampleCountGuard(state, warnWgpuRenderEffectPipelineSampleCount);
|
|
@@ -42,8 +41,12 @@ function getWgpuRenderEffectApplicationMessage(explanation) {
|
|
|
42
41
|
return `applyWgpuRenderEffectsToRenderTexture: ${explanation.unregisteredKinds.length} of ${explanation.requestedCount} effect kinds have no registered runner and were SKIPPED — the destination was written without them; call registerWgpuRenderEffect(state, kind, runner) for ${explanation.unregisteredKinds.join(', ')}`;
|
|
43
42
|
case 'source-unavailable':
|
|
44
43
|
return 'applyWgpuRenderEffectsToRenderTexture: the source render Texture has no realized WGPU target, so the call returned false and the destination was NOT written — render into the source before applying effects';
|
|
44
|
+
case 'partial-resolution':
|
|
45
|
+
return `applyWgpuRenderEffectsToRenderTexture: ${explanation.unresolvedIndexes.length} of ${explanation.requestedCount} effects have a runner but no resolved external resource, so those stages COPIED THE INPUT THROUGH UNCHANGED; chain position(s) ${explanation.unresolvedIndexes.join(', ')}`;
|
|
45
46
|
case 'stale-destination':
|
|
46
47
|
return 'applyWgpuRenderEffectsToRenderTexture: the call returned false before replacing the destination, so its previously published pixels are a STALE DESTINATION — handle the false return before sampling dest, and make the source and runners available before retrying';
|
|
48
|
+
case 'unresolved-effects':
|
|
49
|
+
return `applyWgpuRenderEffectsToRenderTexture: every registered effect was unresolved and COPIED THE INPUT THROUGH UNCHANGED; chain position(s) ${explanation.unresolvedIndexes.join(', ')}`;
|
|
47
50
|
default:
|
|
48
51
|
return `applyWgpuRenderEffectsToRenderTexture: no registered runner for any of ${explanation.unregisteredKinds.join(', ')}, so the call returned false and the destination was NEVER WRITTEN — anything sampling it reads a stale or empty texture; call registerWgpuRenderEffect(state, kind, runner)`;
|
|
49
52
|
}
|
|
@@ -51,12 +54,13 @@ function getWgpuRenderEffectApplicationMessage(explanation) {
|
|
|
51
54
|
function warnWgpuRenderEffectApplication(_state, explanation) {
|
|
52
55
|
// Keyed by status plus the kinds involved: a chain missing a different effect is a different
|
|
53
56
|
// observation worth reporting, while the same miss every frame is not.
|
|
54
|
-
logOnce(`effects-wgpu:effect-application:${explanation.status}:${explanation.unregisteredKinds.join(',')}`, LogLevel.Warn, {
|
|
57
|
+
logOnce(`effects-wgpu:effect-application:${explanation.status}:${explanation.unregisteredKinds.join(',')}:${explanation.unresolvedIndexes.join(',')}`, LogLevel.Warn, {
|
|
55
58
|
message: getWgpuRenderEffectApplicationMessage(explanation),
|
|
56
59
|
registeredCount: explanation.registeredCount,
|
|
57
60
|
requestedCount: explanation.requestedCount,
|
|
58
61
|
status: explanation.status,
|
|
59
62
|
unregisteredKinds: explanation.unregisteredKinds,
|
|
63
|
+
unresolvedIndexes: explanation.unresolvedIndexes,
|
|
60
64
|
}, 'effects-wgpu');
|
|
61
65
|
}
|
|
62
66
|
// A pipeline pass drops an effect whose kind has no runner with a bare `continue`: no draw, no error, no
|
|
@@ -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,
|
|
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,wGAAwG;AACxG,sGAAsG;AACtG,mEAAmE;AACnE,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,oGAAoG;AACpG,mGAAmG;AACnG,yDAAyD;AACzD,SAAS,uCAAuC,CAC9C,MAAuB,EACvB,oBAA4B,EAC5B,kBAA0B;IAE1B,OAAO,CACL,kDAAkD,oBAAoB,EAAE,EACxE,QAAQ,CAAC,IAAI,EACb;QACE,kBAAkB;QAClB,OAAO,EAAE,+CAA+C,oBAAoB,oFAAoF,kBAAkB,EAAE;QACpL,oBAAoB;KACrB,EACD,cAAc,CACf,CAAC;AACJ,CAAC;AAED,SAAS,qCAAqC,CAAC,WAA6D;IAC1G,QAAQ,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3B,KAAK,sBAAsB;YACzB,OAAO,0CAA0C,WAAW,CAAC,iBAAiB,CAAC,MAAM,OAAO,WAAW,CAAC,cAAc,+JAA+J,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClU,KAAK,oBAAoB;YACvB,OAAO,+MAA+M,CAAC;QACzN,KAAK,oBAAoB;YACvB,OAAO,0CAA0C,WAAW,CAAC,iBAAiB,CAAC,MAAM,OAAO,WAAW,CAAC,cAAc,mIAAmI,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtS,KAAK,mBAAmB;YACtB,OAAO,uQAAuQ,CAAC;QACjR,KAAK,oBAAoB;YACvB,OAAO,2IAA2I,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/L;YACE,OAAO,0EAA0E,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,8KAA8K,CAAC;IAC5S,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CACtC,MAAuB,EACvB,WAA6D;IAE7D,6FAA6F;IAC7F,uEAAuE;IACvE,OAAO,CACL,mCAAmC,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAC7I,QAAQ,CAAC,IAAI,EACb;QACE,OAAO,EAAE,qCAAqC,CAAC,WAAW,CAAC;QAC3D,eAAe,EAAE,WAAW,CAAC,eAAe;QAC5C,cAAc,EAAE,WAAW,CAAC,cAAc;QAC1C,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;QAChD,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;KACjD,EACD,cAAc,CACf,CAAC;AACJ,CAAC;AAED,yGAAyG;AACzG,iGAAiG;AACjG,sGAAsG;AACtG,uFAAuF;AACvF,SAAS,gCAAgC,CAAC,MAAuB,EAAE,IAAY;IAC7E,uGAAuG;IACvG,8CAA8C;IAC9C,OAAO,CACL,wCAAwC,IAAI,EAAE,EAC9C,QAAQ,CAAC,IAAI,EACb;QACE,IAAI;QACJ,OAAO,EAAE,6CAA6C,IAAI,+JAA+J,IAAI,4EAA4E;KAC1S,EACD,cAAc,CACf,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,OAAO,EAAmB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { applyWgpuRenderEffectsToRenderTexture, beginWgpuRenderEffectPipeline, createWgpuRenderEffectPipeline, disableWgpuRenderEffectGuards, enableWgpuRenderEffectGuards, defaultWgpuBevelEffectRunner, defaultWgpuBlendEffectRunner, defaultWgpuBloomEffectRunner, defaultWgpuBlurEffectRunner, defaultWgpuCameraMotionBlurEffectRunner, defaultWgpuChromaticAberrationEffectRunner, defaultWgpuCompositeEffectRunner, defaultWgpuContactShadowsEffectRunner, defaultWgpuConvolutionEffectRunner, defaultWgpuCrtEffectRunner, defaultWgpuDirectionalBlurEffectRunner, defaultWgpuDisplacementEffectRunner, defaultWgpuDitherEffectRunner, defaultWgpuDropShadowEffectRunner, defaultWgpuFilmGrainEffectRunner, defaultWgpuFxaaEffectRunner, defaultWgpuGlitchEffectRunner, defaultWgpuGodRaysEffectRunner, defaultWgpuGradientBevelEffectRunner, defaultWgpuGradientGlowEffectRunner, defaultWgpuHalftoneEffectRunner, defaultWgpuInnerGlowEffectRunner, defaultWgpuInnerShadowEffectRunner, defaultWgpuKuwaharaEffectRunner, defaultWgpuLensDirtEffectRunner, defaultWgpuLensDistortionEffectRunner, defaultWgpuLensFlareEffectRunner, defaultWgpuMedianEffectRunner, defaultWgpuMotionBlurEffectRunner, defaultWgpuOuterGlowEffectRunner, defaultWgpuOutlineEffectRunner, defaultWgpuPixelateEffectRunner, defaultWgpuPosterizeEffectRunner, defaultWgpuRadialBlurEffectRunner, defaultWgpuScanlinesEffectRunner, defaultWgpuScreenSpaceFogEffectRunner, defaultWgpuSharpenEffectRunner, defaultWgpuSketchEffectRunner, defaultWgpuSmaaEffectRunner, defaultWgpuSsaoEffectRunner, defaultWgpuTiltShiftEffectRunner, defaultWgpuToneMapEffectRunner, defaultWgpuVignetteEffectRunner, defaultWgpuWhiteBalanceEffectRunner, endWgpuRenderEffectPipeline, registerWgpuBlendEffectBackdrop, registerWgpuBevelEffect, registerWgpuBlurEffect, registerWgpuContactShadowsEffect, registerWgpuDropShadowEffect, registerWgpuGradientBevelEffect, registerWgpuGradientGlowEffect, registerWgpuInnerGlowEffect, registerWgpuInnerShadowEffect, registerWgpuOuterGlowEffect, registerWgpuBlendEffect, registerWgpuBloomEffect, registerWgpuCameraMotionBlurEffect, registerWgpuChromaticAberrationEffect, registerWgpuCompositeEffect, registerWgpuConvolutionEffect, registerWgpuCrtEffect, registerWgpuDirectionalBlurEffect, registerWgpuDisplacementEffect, registerWgpuDitherEffect, registerWgpuFilmGrainEffect, registerWgpuFxaaEffect, registerWgpuGlitchEffect, registerWgpuGodRaysEffect, registerWgpuHalftoneEffect, registerWgpuKuwaharaEffect, registerWgpuLensDirtEffect, registerWgpuLensDistortionEffect, registerWgpuLensFlareEffect, registerWgpuMedianEffect, registerWgpuMotionBlurEffect, registerWgpuOutlineEffect, registerWgpuPixelateEffect, registerWgpuPosterizeEffect, registerWgpuRadialBlurEffect, registerWgpuScanlinesEffect, registerWgpuScreenSpaceFogEffect, registerWgpuSharpenEffect, registerWgpuSketchEffect, registerWgpuSmaaEffect, registerWgpuSsaoEffect, registerWgpuTiltShiftEffect, registerWgpuToneMapEffect, registerWgpuVignetteEffect, registerWgpuWhiteBalanceEffect, registerWgpuRenderEffect, setWgpuRenderEffectVelocityTexture, } from './contract';
|
|
1
|
+
export { applyWgpuRenderEffectsToRenderTexture, beginWgpuRenderEffectPipeline, createWgpuRenderEffectPipeline, disableWgpuRenderEffectGuards, enableWgpuRenderEffectGuards, defaultWgpuBevelEffectRunner, defaultWgpuBitmapDisplacementEffectRunner, defaultWgpuBlendEffectRunner, defaultWgpuBloomEffectRunner, defaultWgpuBlurEffectRunner, defaultWgpuCameraMotionBlurEffectRunner, defaultWgpuChromaticAberrationEffectRunner, defaultWgpuCompositeEffectRunner, defaultWgpuContactShadowsEffectRunner, defaultWgpuConvolutionEffectRunner, defaultWgpuCrtEffectRunner, defaultWgpuDirectionalBlurEffectRunner, defaultWgpuDisplacementEffectRunner, defaultWgpuDitherEffectRunner, defaultWgpuDropShadowEffectRunner, defaultWgpuFilmGrainEffectRunner, defaultWgpuFxaaEffectRunner, defaultWgpuGlitchEffectRunner, defaultWgpuGodRaysEffectRunner, defaultWgpuGradientBevelEffectRunner, defaultWgpuGradientGlowEffectRunner, defaultWgpuHalftoneEffectRunner, defaultWgpuInnerGlowEffectRunner, defaultWgpuInnerShadowEffectRunner, defaultWgpuKuwaharaEffectRunner, defaultWgpuLensDirtEffectRunner, defaultWgpuLensDistortionEffectRunner, defaultWgpuLensFlareEffectRunner, defaultWgpuMedianEffectRunner, defaultWgpuMotionBlurEffectRunner, defaultWgpuOuterGlowEffectRunner, defaultWgpuOutlineEffectRunner, defaultWgpuPixelateEffectRunner, defaultWgpuPosterizeEffectRunner, defaultWgpuRadialBlurEffectRunner, defaultWgpuScanlinesEffectRunner, defaultWgpuScreenSpaceFogEffectRunner, defaultWgpuSharpenEffectRunner, defaultWgpuSketchEffectRunner, defaultWgpuSmaaEffectRunner, defaultWgpuSsaoEffectRunner, defaultWgpuTiltShiftEffectRunner, defaultWgpuToneMapEffectRunner, defaultWgpuVignetteEffectRunner, defaultWgpuWhiteBalanceEffectRunner, endWgpuRenderEffectPipeline, registerWgpuBlendEffectBackdrop, registerWgpuBevelEffect, registerWgpuBitmapDisplacementEffect, registerWgpuBlurEffect, registerWgpuContactShadowsEffect, registerWgpuDropShadowEffect, registerWgpuGradientBevelEffect, registerWgpuGradientGlowEffect, registerWgpuInnerGlowEffect, registerWgpuInnerShadowEffect, registerWgpuOuterGlowEffect, registerWgpuBlendEffect, registerWgpuBloomEffect, registerWgpuCameraMotionBlurEffect, registerWgpuChromaticAberrationEffect, registerWgpuCompositeEffect, registerWgpuConvolutionEffect, registerWgpuCrtEffect, registerWgpuDirectionalBlurEffect, registerWgpuDisplacementEffect, registerWgpuDitherEffect, registerWgpuFilmGrainEffect, registerWgpuFxaaEffect, registerWgpuGlitchEffect, registerWgpuGodRaysEffect, registerWgpuHalftoneEffect, registerWgpuKuwaharaEffect, registerWgpuLensDirtEffect, registerWgpuLensDistortionEffect, registerWgpuLensFlareEffect, registerWgpuMedianEffect, registerWgpuMotionBlurEffect, registerWgpuOutlineEffect, registerWgpuPixelateEffect, registerWgpuPosterizeEffect, registerWgpuRadialBlurEffect, registerWgpuScanlinesEffect, registerWgpuScreenSpaceFogEffect, registerWgpuSharpenEffect, registerWgpuSketchEffect, registerWgpuSmaaEffect, registerWgpuSsaoEffect, registerWgpuTiltShiftEffect, registerWgpuToneMapEffect, registerWgpuVignetteEffect, registerWgpuWhiteBalanceEffect, registerWgpuRenderEffect, setWgpuRenderEffectVelocityTexture, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,uCAAuC,EACvC,0CAA0C,EAC1C,gCAAgC,EAChC,qCAAqC,EACrC,kCAAkC,EAClC,0BAA0B,EAC1B,sCAAsC,EACtC,mCAAmC,EACnC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,oCAAoC,EACpC,mCAAmC,EACnC,+BAA+B,EAC/B,gCAAgC,EAChC,kCAAkC,EAClC,+BAA+B,EAC/B,+BAA+B,EAC/B,qCAAqC,EACrC,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,qCAAqC,EACrC,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mCAAmC,EACnC,2BAA2B,EAC3B,+BAA+B,EAC/B,uBAAuB,EACvB,sBAAsB,EACtB,gCAAgC,EAChC,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,kCAAkC,EAClC,qCAAqC,EACrC,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,EAChC,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EACxB,kCAAkC,GACnC,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,yCAAyC,EACzC,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,uCAAuC,EACvC,0CAA0C,EAC1C,gCAAgC,EAChC,qCAAqC,EACrC,kCAAkC,EAClC,0BAA0B,EAC1B,sCAAsC,EACtC,mCAAmC,EACnC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,oCAAoC,EACpC,mCAAmC,EACnC,+BAA+B,EAC/B,gCAAgC,EAChC,kCAAkC,EAClC,+BAA+B,EAC/B,+BAA+B,EAC/B,qCAAqC,EACrC,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,qCAAqC,EACrC,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mCAAmC,EACnC,2BAA2B,EAC3B,+BAA+B,EAC/B,uBAAuB,EACvB,oCAAoC,EACpC,sBAAsB,EACtB,gCAAgC,EAChC,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,kCAAkC,EAClC,qCAAqC,EACrC,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,EAChC,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EACxB,kCAAkC,GACnC,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { applyWgpuRenderEffectsToRenderTexture, beginWgpuRenderEffectPipeline, createWgpuRenderEffectPipeline, disableWgpuRenderEffectGuards, enableWgpuRenderEffectGuards, defaultWgpuBevelEffectRunner, defaultWgpuBlendEffectRunner, defaultWgpuBloomEffectRunner, defaultWgpuBlurEffectRunner, defaultWgpuCameraMotionBlurEffectRunner, defaultWgpuChromaticAberrationEffectRunner, defaultWgpuCompositeEffectRunner, defaultWgpuContactShadowsEffectRunner, defaultWgpuConvolutionEffectRunner, defaultWgpuCrtEffectRunner, defaultWgpuDirectionalBlurEffectRunner, defaultWgpuDisplacementEffectRunner, defaultWgpuDitherEffectRunner, defaultWgpuDropShadowEffectRunner, defaultWgpuFilmGrainEffectRunner, defaultWgpuFxaaEffectRunner, defaultWgpuGlitchEffectRunner, defaultWgpuGodRaysEffectRunner, defaultWgpuGradientBevelEffectRunner, defaultWgpuGradientGlowEffectRunner, defaultWgpuHalftoneEffectRunner, defaultWgpuInnerGlowEffectRunner, defaultWgpuInnerShadowEffectRunner, defaultWgpuKuwaharaEffectRunner, defaultWgpuLensDirtEffectRunner, defaultWgpuLensDistortionEffectRunner, defaultWgpuLensFlareEffectRunner, defaultWgpuMedianEffectRunner, defaultWgpuMotionBlurEffectRunner, defaultWgpuOuterGlowEffectRunner, defaultWgpuOutlineEffectRunner, defaultWgpuPixelateEffectRunner, defaultWgpuPosterizeEffectRunner, defaultWgpuRadialBlurEffectRunner, defaultWgpuScanlinesEffectRunner, defaultWgpuScreenSpaceFogEffectRunner, defaultWgpuSharpenEffectRunner, defaultWgpuSketchEffectRunner, defaultWgpuSmaaEffectRunner, defaultWgpuSsaoEffectRunner, defaultWgpuTiltShiftEffectRunner, defaultWgpuToneMapEffectRunner, defaultWgpuVignetteEffectRunner, defaultWgpuWhiteBalanceEffectRunner, endWgpuRenderEffectPipeline, registerWgpuBlendEffectBackdrop, registerWgpuBevelEffect, registerWgpuBlurEffect, registerWgpuContactShadowsEffect, registerWgpuDropShadowEffect, registerWgpuGradientBevelEffect, registerWgpuGradientGlowEffect, registerWgpuInnerGlowEffect, registerWgpuInnerShadowEffect, registerWgpuOuterGlowEffect, registerWgpuBlendEffect, registerWgpuBloomEffect, registerWgpuCameraMotionBlurEffect, registerWgpuChromaticAberrationEffect, registerWgpuCompositeEffect, registerWgpuConvolutionEffect, registerWgpuCrtEffect, registerWgpuDirectionalBlurEffect, registerWgpuDisplacementEffect, registerWgpuDitherEffect, registerWgpuFilmGrainEffect, registerWgpuFxaaEffect, registerWgpuGlitchEffect, registerWgpuGodRaysEffect, registerWgpuHalftoneEffect, registerWgpuKuwaharaEffect, registerWgpuLensDirtEffect, registerWgpuLensDistortionEffect, registerWgpuLensFlareEffect, registerWgpuMedianEffect, registerWgpuMotionBlurEffect, registerWgpuOutlineEffect, registerWgpuPixelateEffect, registerWgpuPosterizeEffect, registerWgpuRadialBlurEffect, registerWgpuScanlinesEffect, registerWgpuScreenSpaceFogEffect, registerWgpuSharpenEffect, registerWgpuSketchEffect, registerWgpuSmaaEffect, registerWgpuSsaoEffect, registerWgpuTiltShiftEffect, registerWgpuToneMapEffect, registerWgpuVignetteEffect, registerWgpuWhiteBalanceEffect, registerWgpuRenderEffect, setWgpuRenderEffectVelocityTexture, } from './contract';
|
|
1
|
+
export { applyWgpuRenderEffectsToRenderTexture, beginWgpuRenderEffectPipeline, createWgpuRenderEffectPipeline, disableWgpuRenderEffectGuards, enableWgpuRenderEffectGuards, defaultWgpuBevelEffectRunner, defaultWgpuBitmapDisplacementEffectRunner, defaultWgpuBlendEffectRunner, defaultWgpuBloomEffectRunner, defaultWgpuBlurEffectRunner, defaultWgpuCameraMotionBlurEffectRunner, defaultWgpuChromaticAberrationEffectRunner, defaultWgpuCompositeEffectRunner, defaultWgpuContactShadowsEffectRunner, defaultWgpuConvolutionEffectRunner, defaultWgpuCrtEffectRunner, defaultWgpuDirectionalBlurEffectRunner, defaultWgpuDisplacementEffectRunner, defaultWgpuDitherEffectRunner, defaultWgpuDropShadowEffectRunner, defaultWgpuFilmGrainEffectRunner, defaultWgpuFxaaEffectRunner, defaultWgpuGlitchEffectRunner, defaultWgpuGodRaysEffectRunner, defaultWgpuGradientBevelEffectRunner, defaultWgpuGradientGlowEffectRunner, defaultWgpuHalftoneEffectRunner, defaultWgpuInnerGlowEffectRunner, defaultWgpuInnerShadowEffectRunner, defaultWgpuKuwaharaEffectRunner, defaultWgpuLensDirtEffectRunner, defaultWgpuLensDistortionEffectRunner, defaultWgpuLensFlareEffectRunner, defaultWgpuMedianEffectRunner, defaultWgpuMotionBlurEffectRunner, defaultWgpuOuterGlowEffectRunner, defaultWgpuOutlineEffectRunner, defaultWgpuPixelateEffectRunner, defaultWgpuPosterizeEffectRunner, defaultWgpuRadialBlurEffectRunner, defaultWgpuScanlinesEffectRunner, defaultWgpuScreenSpaceFogEffectRunner, defaultWgpuSharpenEffectRunner, defaultWgpuSketchEffectRunner, defaultWgpuSmaaEffectRunner, defaultWgpuSsaoEffectRunner, defaultWgpuTiltShiftEffectRunner, defaultWgpuToneMapEffectRunner, defaultWgpuVignetteEffectRunner, defaultWgpuWhiteBalanceEffectRunner, endWgpuRenderEffectPipeline, registerWgpuBlendEffectBackdrop, registerWgpuBevelEffect, registerWgpuBitmapDisplacementEffect, registerWgpuBlurEffect, registerWgpuContactShadowsEffect, registerWgpuDropShadowEffect, registerWgpuGradientBevelEffect, registerWgpuGradientGlowEffect, registerWgpuInnerGlowEffect, registerWgpuInnerShadowEffect, registerWgpuOuterGlowEffect, registerWgpuBlendEffect, registerWgpuBloomEffect, registerWgpuCameraMotionBlurEffect, registerWgpuChromaticAberrationEffect, registerWgpuCompositeEffect, registerWgpuConvolutionEffect, registerWgpuCrtEffect, registerWgpuDirectionalBlurEffect, registerWgpuDisplacementEffect, registerWgpuDitherEffect, registerWgpuFilmGrainEffect, registerWgpuFxaaEffect, registerWgpuGlitchEffect, registerWgpuGodRaysEffect, registerWgpuHalftoneEffect, registerWgpuKuwaharaEffect, registerWgpuLensDirtEffect, registerWgpuLensDistortionEffect, registerWgpuLensFlareEffect, registerWgpuMedianEffect, registerWgpuMotionBlurEffect, registerWgpuOutlineEffect, registerWgpuPixelateEffect, registerWgpuPosterizeEffect, registerWgpuRadialBlurEffect, registerWgpuScanlinesEffect, registerWgpuScreenSpaceFogEffect, registerWgpuSharpenEffect, registerWgpuSketchEffect, registerWgpuSmaaEffect, registerWgpuSsaoEffect, registerWgpuTiltShiftEffect, registerWgpuToneMapEffect, registerWgpuVignetteEffect, registerWgpuWhiteBalanceEffect, registerWgpuRenderEffect, setWgpuRenderEffectVelocityTexture, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,uCAAuC,EACvC,0CAA0C,EAC1C,gCAAgC,EAChC,qCAAqC,EACrC,kCAAkC,EAClC,0BAA0B,EAC1B,sCAAsC,EACtC,mCAAmC,EACnC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,oCAAoC,EACpC,mCAAmC,EACnC,+BAA+B,EAC/B,gCAAgC,EAChC,kCAAkC,EAClC,+BAA+B,EAC/B,+BAA+B,EAC/B,qCAAqC,EACrC,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,qCAAqC,EACrC,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mCAAmC,EACnC,2BAA2B,EAC3B,+BAA+B,EAC/B,uBAAuB,EACvB,sBAAsB,EACtB,gCAAgC,EAChC,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,kCAAkC,EAClC,qCAAqC,EACrC,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,EAChC,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EACxB,kCAAkC,GACnC,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,yCAAyC,EACzC,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,uCAAuC,EACvC,0CAA0C,EAC1C,gCAAgC,EAChC,qCAAqC,EACrC,kCAAkC,EAClC,0BAA0B,EAC1B,sCAAsC,EACtC,mCAAmC,EACnC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,oCAAoC,EACpC,mCAAmC,EACnC,+BAA+B,EAC/B,gCAAgC,EAChC,kCAAkC,EAClC,+BAA+B,EAC/B,+BAA+B,EAC/B,qCAAqC,EACrC,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,qCAAqC,EACrC,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mCAAmC,EACnC,2BAA2B,EAC3B,+BAA+B,EAC/B,uBAAuB,EACvB,oCAAoC,EACpC,sBAAsB,EACtB,gCAAgC,EAChC,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,kCAAkC,EAClC,qCAAqC,EACrC,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,EAChC,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EACxB,kCAAkC,GACnC,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BitmapDisplacementEffect, RenderEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types/contract';
|
|
2
|
+
export declare function applyBitmapDisplacementEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<BitmapDisplacementEffect>): void;
|
|
3
|
+
export declare const defaultWgpuBitmapDisplacementEffectRunner: WgpuRenderEffectRunner;
|
|
4
|
+
export declare function isWgpuBitmapDisplacementEffectResolvable(state: WgpuRenderState, effect: Readonly<RenderEffect>): boolean;
|
|
5
|
+
export declare function registerWgpuBitmapDisplacementEffect(state: WgpuRenderState): void;
|
|
6
|
+
export declare const BITMAP_DISPLACEMENT_FRAGMENT_WGSL = "\nstruct Uniforms {\n scale : vec2f,\n resolution : vec2f,\n componentX : i32,\n componentY : i32,\n edgeMode : i32,\n _pad0 : i32,\n}\n@group(0) @binding(0) var<uniform> uni : Uniforms;\n@group(1) @binding(0) var sourceTexture : texture_2d<f32>;\n@group(1) @binding(1) var sourceSampler : sampler;\n@group(2) @binding(0) var mapTexture : texture_2d<f32>;\n@group(2) @binding(1) var mapSampler : sampler;\n\nfn sampleChannel(value : vec4f, component : i32) -> f32 {\n if (component == 0) { return value.r; }\n if (component == 1) { return value.g; }\n if (component == 2) { return value.b; }\n return value.a;\n}\n\n@fragment\nfn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {\n let mapSample = textureSampleLevel(mapTexture, mapSampler, uv, 0.0);\n let mapped = vec2f(\n sampleChannel(mapSample, uni.componentX),\n sampleChannel(mapSample, uni.componentY),\n );\n let displacementPixels = (mapped - vec2f(0.5)) * uni.scale;\n let displacement = displacementPixels / uni.resolution;\n let displaced = vec2f(uv.x + displacement.x, uv.y + displacement.y);\n let sourceUv = select(\n clamp(displaced, vec2f(0.0), vec2f(1.0)),\n fract(displaced),\n uni.edgeMode == 1,\n );\n return textureSampleLevel(sourceTexture, sourceSampler, sourceUv, 0.0);\n}";
|
|
7
|
+
//# sourceMappingURL=wgpuBitmapDisplacementEffect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wgpuBitmapDisplacementEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBitmapDisplacementEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EACxB,YAAY,EAIZ,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAOlC,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,wBAAwB,CAAC,GACzC,IAAI,CAsDN;AAED,eAAO,MAAM,yCAAyC,EAAE,sBAEvD,CAAC;AAEF,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,OAAO,CAKT;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAOjF;AAyDD,eAAO,MAAM,iCAAiC,8wCAsC5C,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { getWgpuSampler, resolveWgpuTexture } from '@flighthq/render-wgpu/contract';
|
|
2
|
+
import { ImageChannel } from '@flighthq/types/contract';
|
|
3
|
+
import { drawWgpuEffectPass, EFFECT_VERTEX_WGSL, getWgpuEffectPassState } from './wgpuEffectPass';
|
|
4
|
+
import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
|
|
5
|
+
import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
|
|
6
|
+
export function applyBitmapDisplacementEffectToWgpu(state, source, dest, effect) {
|
|
7
|
+
const map = effect.map;
|
|
8
|
+
const mapEntry = map === null ? null : resolveWgpuTexture(state, map, false, source.colorSpace);
|
|
9
|
+
if (mapEntry === null) {
|
|
10
|
+
drawWgpuEffectPass(state, source, dest, getWgpuEffectPipeline(state, 'spatial.bitmapDisplacement.passthrough', BITMAP_DISPLACEMENT_PASSTHROUGH_FRAGMENT_WGSL, 'replace'), NO_UNIFORMS);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const resolvedMap = map;
|
|
14
|
+
const fs = getWgpuEffectPassState(state);
|
|
15
|
+
const sourceBindGroup = state.device.createBindGroup({
|
|
16
|
+
layout: fs.textureBGLayout,
|
|
17
|
+
entries: [
|
|
18
|
+
{ binding: 0, resource: source.view },
|
|
19
|
+
{ binding: 1, resource: fs.sampler },
|
|
20
|
+
],
|
|
21
|
+
});
|
|
22
|
+
const mapBindGroup = state.device.createBindGroup({
|
|
23
|
+
layout: fs.textureBGLayout,
|
|
24
|
+
entries: [
|
|
25
|
+
{ binding: 0, resource: mapEntry.view },
|
|
26
|
+
{ binding: 1, resource: mapEntry.sampler ?? getBitmapDisplacementMapSampler(state, resolvedMap.sampler) },
|
|
27
|
+
],
|
|
28
|
+
});
|
|
29
|
+
const slotOffset = fs.acquireSlot();
|
|
30
|
+
fs.writeSlot(slotOffset, (f32, i32) => {
|
|
31
|
+
f32[0] = effect.scaleX ?? 0;
|
|
32
|
+
f32[1] = effect.scaleY ?? 0;
|
|
33
|
+
f32[2] = source.width;
|
|
34
|
+
f32[3] = source.height;
|
|
35
|
+
i32[4] = effect.componentX ?? ImageChannel.Red;
|
|
36
|
+
i32[5] = effect.componentY ?? ImageChannel.Green;
|
|
37
|
+
i32[6] = effect.edgeMode === 'clamp' ? 0 : 1;
|
|
38
|
+
});
|
|
39
|
+
const pass = fs.beginPass(dest, 'load');
|
|
40
|
+
pass.setPipeline(getBitmapDisplacementPipeline(state, dest.format).pipeline);
|
|
41
|
+
pass.setBindGroup(0, fs.uniformBG, [slotOffset]);
|
|
42
|
+
pass.setBindGroup(1, sourceBindGroup);
|
|
43
|
+
pass.setBindGroup(2, mapBindGroup);
|
|
44
|
+
pass.draw(6);
|
|
45
|
+
pass.end();
|
|
46
|
+
}
|
|
47
|
+
export const defaultWgpuBitmapDisplacementEffectRunner = (ctx, effect) => {
|
|
48
|
+
applyBitmapDisplacementEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
|
|
49
|
+
};
|
|
50
|
+
export function isWgpuBitmapDisplacementEffectResolvable(state, effect) {
|
|
51
|
+
const map = effect.map;
|
|
52
|
+
return (map !== null && resolveWgpuTexture(state, map, false, map.colorSpace === 'linear' ? 'linear' : 'srgb') !== null);
|
|
53
|
+
}
|
|
54
|
+
export function registerWgpuBitmapDisplacementEffect(state) {
|
|
55
|
+
registerWgpuRenderEffect(state, 'BitmapDisplacementEffect', defaultWgpuBitmapDisplacementEffectRunner, isWgpuBitmapDisplacementEffectResolvable);
|
|
56
|
+
}
|
|
57
|
+
function getBitmapDisplacementMapSampler(state, sampler) {
|
|
58
|
+
const mipmapFilter = getMipmapFilter(sampler.minFilter, sampler.mipmaps);
|
|
59
|
+
return getWgpuSampler(state, getFilter(sampler.minFilter), getFilter(sampler.magFilter), sampler.wrapU, sampler.wrapV, mipmapFilter, sampler.anisotropy);
|
|
60
|
+
}
|
|
61
|
+
function getFilter(filter) {
|
|
62
|
+
return filter.startsWith('nearest') ? 'nearest' : 'linear';
|
|
63
|
+
}
|
|
64
|
+
function getMipmapFilter(filter, mipmaps) {
|
|
65
|
+
if (!mipmaps || !filter.includes('mipmap'))
|
|
66
|
+
return undefined;
|
|
67
|
+
return filter.endsWith('nearest') ? 'nearest' : 'linear';
|
|
68
|
+
}
|
|
69
|
+
function getBitmapDisplacementPipeline(state, format) {
|
|
70
|
+
let byFormat = _pipelines.get(state);
|
|
71
|
+
if (byFormat === undefined) {
|
|
72
|
+
byFormat = new Map();
|
|
73
|
+
_pipelines.set(state, byFormat);
|
|
74
|
+
}
|
|
75
|
+
let pipeline = byFormat.get(format);
|
|
76
|
+
if (pipeline !== undefined)
|
|
77
|
+
return pipeline;
|
|
78
|
+
const fs = getWgpuEffectPassState(state);
|
|
79
|
+
const shaderModule = state.device.createShaderModule({
|
|
80
|
+
code: EFFECT_VERTEX_WGSL + BITMAP_DISPLACEMENT_FRAGMENT_WGSL,
|
|
81
|
+
});
|
|
82
|
+
const layout = state.device.createPipelineLayout({
|
|
83
|
+
bindGroupLayouts: [fs.uniformBGLayout, fs.textureBGLayout, fs.textureBGLayout],
|
|
84
|
+
});
|
|
85
|
+
pipeline = {
|
|
86
|
+
blendMode: 'replace',
|
|
87
|
+
pipeline: state.device.createRenderPipeline({
|
|
88
|
+
layout,
|
|
89
|
+
vertex: { module: shaderModule, entryPoint: 'vs_main' },
|
|
90
|
+
fragment: {
|
|
91
|
+
module: shaderModule,
|
|
92
|
+
entryPoint: 'fs_main',
|
|
93
|
+
targets: [{ format, blend: REPLACE_BLEND }],
|
|
94
|
+
},
|
|
95
|
+
primitive: { topology: 'triangle-list' },
|
|
96
|
+
}),
|
|
97
|
+
};
|
|
98
|
+
byFormat.set(format, pipeline);
|
|
99
|
+
return pipeline;
|
|
100
|
+
}
|
|
101
|
+
export const BITMAP_DISPLACEMENT_FRAGMENT_WGSL = /* wgsl */ `
|
|
102
|
+
struct Uniforms {
|
|
103
|
+
scale : vec2f,
|
|
104
|
+
resolution : vec2f,
|
|
105
|
+
componentX : i32,
|
|
106
|
+
componentY : i32,
|
|
107
|
+
edgeMode : i32,
|
|
108
|
+
_pad0 : i32,
|
|
109
|
+
}
|
|
110
|
+
@group(0) @binding(0) var<uniform> uni : Uniforms;
|
|
111
|
+
@group(1) @binding(0) var sourceTexture : texture_2d<f32>;
|
|
112
|
+
@group(1) @binding(1) var sourceSampler : sampler;
|
|
113
|
+
@group(2) @binding(0) var mapTexture : texture_2d<f32>;
|
|
114
|
+
@group(2) @binding(1) var mapSampler : sampler;
|
|
115
|
+
|
|
116
|
+
fn sampleChannel(value : vec4f, component : i32) -> f32 {
|
|
117
|
+
if (component == 0) { return value.r; }
|
|
118
|
+
if (component == 1) { return value.g; }
|
|
119
|
+
if (component == 2) { return value.b; }
|
|
120
|
+
return value.a;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@fragment
|
|
124
|
+
fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
|
|
125
|
+
let mapSample = textureSampleLevel(mapTexture, mapSampler, uv, 0.0);
|
|
126
|
+
let mapped = vec2f(
|
|
127
|
+
sampleChannel(mapSample, uni.componentX),
|
|
128
|
+
sampleChannel(mapSample, uni.componentY),
|
|
129
|
+
);
|
|
130
|
+
let displacementPixels = (mapped - vec2f(0.5)) * uni.scale;
|
|
131
|
+
let displacement = displacementPixels / uni.resolution;
|
|
132
|
+
let displaced = vec2f(uv.x + displacement.x, uv.y + displacement.y);
|
|
133
|
+
let sourceUv = select(
|
|
134
|
+
clamp(displaced, vec2f(0.0), vec2f(1.0)),
|
|
135
|
+
fract(displaced),
|
|
136
|
+
uni.edgeMode == 1,
|
|
137
|
+
);
|
|
138
|
+
return textureSampleLevel(sourceTexture, sourceSampler, sourceUv, 0.0);
|
|
139
|
+
}`;
|
|
140
|
+
const BITMAP_DISPLACEMENT_PASSTHROUGH_FRAGMENT_WGSL = /* wgsl */ `
|
|
141
|
+
struct Uniforms { _pad0 : f32, _pad1 : f32, _pad2 : f32, _pad3 : f32, }
|
|
142
|
+
@group(0) @binding(0) var<uniform> uni : Uniforms;
|
|
143
|
+
@group(1) @binding(0) var sourceTexture : texture_2d<f32>;
|
|
144
|
+
@group(1) @binding(1) var sourceSampler : sampler;
|
|
145
|
+
|
|
146
|
+
@fragment
|
|
147
|
+
fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
|
|
148
|
+
return textureSampleLevel(sourceTexture, sourceSampler, uv, 0.0);
|
|
149
|
+
}`;
|
|
150
|
+
const NO_UNIFORMS = () => { };
|
|
151
|
+
const REPLACE_BLEND = {
|
|
152
|
+
color: { srcFactor: 'one', dstFactor: 'zero', operation: 'add' },
|
|
153
|
+
alpha: { srcFactor: 'one', dstFactor: 'zero', operation: 'add' },
|
|
154
|
+
};
|
|
155
|
+
const _pipelines = new WeakMap();
|
|
156
|
+
//# sourceMappingURL=wgpuBitmapDisplacementEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wgpuBitmapDisplacementEffect.js","sourceRoot":"","sources":["../src/wgpuBitmapDisplacementEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAWpF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,UAAU,mCAAmC,CACjD,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA0C;IAE1C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAChG,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,kBAAkB,CAChB,KAAK,EACL,MAA0B,EAC1B,IAAwB,EACxB,qBAAqB,CACnB,KAAK,EACL,wCAAwC,EACxC,6CAA6C,EAC7C,SAAS,CACV,EACD,WAAW,CACZ,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,WAAW,GAAG,GAAI,CAAC;IAEzB,MAAM,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;QACnD,MAAM,EAAE,EAAE,CAAC,eAAe;QAC1B,OAAO,EAAE;YACP,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE;YACrC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,EAAE;SACrC;KACF,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;QAChD,MAAM,EAAE,EAAE,CAAC,eAAe;QAC1B,OAAO,EAAE;YACP,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE;YACvC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,IAAI,+BAA+B,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE;SAC1G;KACF,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACpC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;QAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;QAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACtB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACvB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,YAAY,CAAC,GAAG,CAAC;QAC/C,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,YAAY,CAAC,KAAK,CAAC;QACjD,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAwB,EAAE,MAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7E,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IACtC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACb,IAAI,CAAC,GAAG,EAAE,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,yCAAyC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAC/F,mCAAmC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAkC,CAAC,CAAC;AAC3G,CAAC,CAAC;AAEF,MAAM,UAAU,wCAAwC,CACtD,KAAsB,EACtB,MAA8B;IAE9B,MAAM,GAAG,GAAI,MAA6C,CAAC,GAAG,CAAC;IAC/D,OAAO,CACL,GAAG,KAAK,IAAI,IAAI,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAChH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,KAAsB;IACzE,wBAAwB,CACtB,KAAK,EACL,0BAA0B,EAC1B,yCAAyC,EACzC,wCAAwC,CACzC,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CAAC,KAAsB,EAAE,OAA0B;IACzF,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,OAAO,cAAc,CACnB,KAAK,EACL,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAC5B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAC5B,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,YAAY,EACZ,OAAO,CAAC,UAAU,CACnB,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,MAAqB;IACtC,OAAO,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC7D,CAAC;AAED,SAAS,eAAe,CAAC,MAAqB,EAAE,OAAgB;IAC9D,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7D,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3D,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAsB,EAAE,MAAwB;IACrF,IAAI,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QACrB,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAE5C,MAAM,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACnD,IAAI,EAAE,kBAAkB,GAAG,iCAAiC;KAC7D,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAC/C,gBAAgB,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,CAAC;KAC/E,CAAC,CAAC;IACH,QAAQ,GAAG;QACT,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC;YAC1C,MAAM;YACN,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE;YACvD,QAAQ,EAAE;gBACR,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;aAC5C;YACD,SAAS,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE;SACzC,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,iCAAiC,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsC1D,CAAC;AAEH,MAAM,6CAA6C,GAAG,UAAU,CAAC;;;;;;;;;EAS/D,CAAC;AAEH,MAAM,WAAW,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAE7B,MAAM,aAAa,GAAkB;IACnC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;IAChE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;CACjE,CAAC;AAEF,MAAM,UAAU,GAAG,IAAI,OAAO,EAA8D,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { WgpuRenderEffectRunner, WgpuRenderState } from '@flighthq/types/contract';
|
|
1
|
+
import type { RenderEffect, WgpuRenderEffectResolver, WgpuRenderEffectRunner, WgpuRenderState } from '@flighthq/types/contract';
|
|
2
2
|
export declare function getWgpuRenderEffectRunner(state: WgpuRenderState, kind: string): WgpuRenderEffectRunner | null;
|
|
3
3
|
export declare function hasWgpuRenderEffectRunner(state: WgpuRenderState, kind: string): boolean;
|
|
4
|
-
export declare function
|
|
4
|
+
export declare function isWgpuRenderEffectResolvable(state: WgpuRenderState, effect: Readonly<RenderEffect>): boolean;
|
|
5
|
+
export declare function registerWgpuRenderEffect(state: WgpuRenderState, kind: string, runner: WgpuRenderEffectRunner, isResolvable?: WgpuRenderEffectResolver): void;
|
|
5
6
|
//# sourceMappingURL=wgpuRenderEffectRegistry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuRenderEffectRegistry.d.ts","sourceRoot":"","sources":["../src/wgpuRenderEffectRegistry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"wgpuRenderEffectRegistry.d.ts","sourceRoot":"","sources":["../src/wgpuRenderEffectRegistry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAWlC,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAG7G;AAMD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAIvF;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,OAAO,CAI5G;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,sBAAsB,EAC9B,YAAY,CAAC,EAAE,wBAAwB,GACtC,IAAI,CAMN"}
|
|
@@ -10,7 +10,7 @@ import { RegistryEntryState } from '@flighthq/types/contract';
|
|
|
10
10
|
// literal kind and public default runner, and installs no padding, shader-source, or backdrop companions.
|
|
11
11
|
export function getWgpuRenderEffectRunner(state, kind) {
|
|
12
12
|
const entry = getWgpuRenderStateRuntime(state).registries.renderEffects.entries.get(kind);
|
|
13
|
-
return entry?.state === RegistryEntryState.Bound ? entry.value : null;
|
|
13
|
+
return entry?.state === RegistryEntryState.Bound ? entry.value.runner : null;
|
|
14
14
|
}
|
|
15
15
|
// Returns true if a runner is registered for the given kind in this state. Symmetric with
|
|
16
16
|
// hasGlRenderEffectRunner. Use to validate an effect chain before dispatching — the pipeline
|
|
@@ -19,8 +19,17 @@ export function getWgpuRenderEffectRunner(state, kind) {
|
|
|
19
19
|
export function hasWgpuRenderEffectRunner(state, kind) {
|
|
20
20
|
return (getWgpuRenderStateRuntime(state).registries.renderEffects.entries.get(kind)?.state === RegistryEntryState.Bound);
|
|
21
21
|
}
|
|
22
|
-
export function
|
|
22
|
+
export function isWgpuRenderEffectResolvable(state, effect) {
|
|
23
|
+
const entry = getWgpuRenderStateRuntime(state).registries.renderEffects.entries.get(effect.kind);
|
|
24
|
+
if (entry?.state !== RegistryEntryState.Bound)
|
|
25
|
+
return false;
|
|
26
|
+
return entry.value.isResolvable === undefined || entry.value.isResolvable(state, effect);
|
|
27
|
+
}
|
|
28
|
+
export function registerWgpuRenderEffect(state, kind, runner, isResolvable) {
|
|
23
29
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
24
|
-
runtime.registries.renderEffects = withRegistryTableEntry(runtime.registries.renderEffects, kind,
|
|
30
|
+
runtime.registries.renderEffects = withRegistryTableEntry(runtime.registries.renderEffects, kind, {
|
|
31
|
+
isResolvable,
|
|
32
|
+
runner,
|
|
33
|
+
});
|
|
25
34
|
}
|
|
26
35
|
//# sourceMappingURL=wgpuRenderEffectRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuRenderEffectRegistry.js","sourceRoot":"","sources":["../src/wgpuRenderEffectRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuRenderEffectRegistry.js","sourceRoot":"","sources":["../src/wgpuRenderEffectRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAO3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,gGAAgG;AAChG,sGAAsG;AACtG,sGAAsG;AACtG,8FAA8F;AAC9F,yGAAyG;AACzG,kGAAkG;AAClG,0GAA0G;AAE1G,MAAM,UAAU,yBAAyB,CAAC,KAAsB,EAAE,IAAY;IAC5E,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1F,OAAO,KAAK,EAAE,KAAK,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED,0FAA0F;AAC1F,6FAA6F;AAC7F,4FAA4F;AAC5F,wCAAwC;AACxC,MAAM,UAAU,yBAAyB,CAAC,KAAsB,EAAE,IAAY;IAC5E,OAAO,CACL,yBAAyB,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,kBAAkB,CAAC,KAAK,CAChH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAsB,EAAE,MAA8B;IACjG,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjG,IAAI,KAAK,EAAE,KAAK,KAAK,kBAAkB,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAC5D,OAAO,KAAK,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAsB,EACtB,IAAY,EACZ,MAA8B,EAC9B,YAAuC;IAEvC,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,UAAU,CAAC,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE;QAChG,YAAY;QACZ,MAAM;KACP,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuRenderTextureEffect.d.ts","sourceRoot":"","sources":["../src/wgpuRenderTextureEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,sCAAsC,EACtC,gCAAgC,EAEhC,eAAe,EACf,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAOlC,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"wgpuRenderTextureEffect.d.ts","sourceRoot":"","sources":["../src/wgpuRenderTextureEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,sCAAsC,EACtC,gCAAgC,EAEhC,eAAe,EACf,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAOlC,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAC7C,OAAO,CAwDT;AAED,mFAAmF;AACnF,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/B,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC7B,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAC7C,sCAAsC,CAsBxC;AAID,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,gCAAgC,GAAG,IAAI,GAC7C,IAAI,CAGN"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getWgpuRenderTextureTarget, writeWgpuRenderTextureTarget } from '@flighthq/render-wgpu/contract';
|
|
2
|
-
import { getWgpuRenderEffectRunner } from './wgpuRenderEffectRegistry';
|
|
2
|
+
import { getWgpuRenderEffectRunner, isWgpuRenderEffectResolvable } from './wgpuRenderEffectRegistry';
|
|
3
3
|
// Encodes the registered members of a chain from one completed RenderTexture into another. The
|
|
4
4
|
// caller owns an active command encoder and supplies one distinct scratch lease. Parity chooses the
|
|
5
5
|
// first destination so the final registered operation always publishes `dest`.
|
|
@@ -9,12 +9,15 @@ export function applyWgpuRenderEffectsToRenderTexture(state, pool, source, dest,
|
|
|
9
9
|
}
|
|
10
10
|
const sourceTarget = getWgpuRenderTextureTarget(state, source);
|
|
11
11
|
const unregisteredKinds = [];
|
|
12
|
-
const
|
|
12
|
+
const unresolvedIndexes = [];
|
|
13
|
+
const operations = effects.flatMap((effect, index) => {
|
|
13
14
|
const runner = getWgpuRenderEffectRunner(state, effect.kind);
|
|
14
15
|
if (runner === null) {
|
|
15
16
|
unregisteredKinds.push(effect.kind);
|
|
16
17
|
return [];
|
|
17
18
|
}
|
|
19
|
+
if (!isWgpuRenderEffectResolvable(state, effect))
|
|
20
|
+
unresolvedIndexes.push(index);
|
|
18
21
|
return [{ effect, runner }];
|
|
19
22
|
});
|
|
20
23
|
// Reported BEFORE either early return, because both of them are the silent cases: a false return that
|
|
@@ -23,8 +26,9 @@ export function applyWgpuRenderEffectsToRenderTexture(state, pool, source, dest,
|
|
|
23
26
|
reportWgpuRenderEffectApplication(state, {
|
|
24
27
|
registeredCount: operations.length,
|
|
25
28
|
requestedCount: effects.length,
|
|
26
|
-
status: getWgpuRenderEffectApplicationStatus(effects.length, operations.length, sourceTarget !== null, getWgpuRenderTextureTarget(state, dest) !== null),
|
|
29
|
+
status: getWgpuRenderEffectApplicationStatus(effects.length, operations.length, unresolvedIndexes.length, sourceTarget !== null, getWgpuRenderTextureTarget(state, dest) !== null),
|
|
27
30
|
unregisteredKinds,
|
|
31
|
+
unresolvedIndexes,
|
|
28
32
|
});
|
|
29
33
|
if (sourceTarget === null)
|
|
30
34
|
return false;
|
|
@@ -51,15 +55,22 @@ export function applyWgpuRenderEffectsToRenderTexture(state, pool, source, dest,
|
|
|
51
55
|
}
|
|
52
56
|
/** Explains why an application did not do what the caller asked, as plain data. */
|
|
53
57
|
export function explainWgpuRenderEffectApplication(state, source, dest, effects) {
|
|
54
|
-
const unregisteredKinds =
|
|
55
|
-
|
|
56
|
-
|
|
58
|
+
const unregisteredKinds = [];
|
|
59
|
+
const unresolvedIndexes = [];
|
|
60
|
+
for (let index = 0; index < effects.length; index++) {
|
|
61
|
+
const effect = effects[index];
|
|
62
|
+
if (getWgpuRenderEffectRunner(state, effect.kind) === null)
|
|
63
|
+
unregisteredKinds.push(effect.kind);
|
|
64
|
+
else if (!isWgpuRenderEffectResolvable(state, effect))
|
|
65
|
+
unresolvedIndexes.push(index);
|
|
66
|
+
}
|
|
57
67
|
const registeredCount = effects.length - unregisteredKinds.length;
|
|
58
68
|
return {
|
|
59
69
|
registeredCount,
|
|
60
70
|
requestedCount: effects.length,
|
|
61
|
-
status: getWgpuRenderEffectApplicationStatus(effects.length, registeredCount, getWgpuRenderTextureTarget(state, source) !== null, getWgpuRenderTextureTarget(state, dest) !== null),
|
|
71
|
+
status: getWgpuRenderEffectApplicationStatus(effects.length, registeredCount, unresolvedIndexes.length, getWgpuRenderTextureTarget(state, source) !== null, getWgpuRenderTextureTarget(state, dest) !== null),
|
|
62
72
|
unregisteredKinds,
|
|
73
|
+
unresolvedIndexes,
|
|
63
74
|
};
|
|
64
75
|
}
|
|
65
76
|
// The diagnostics seam. Core stays message-free; enableWgpuRenderEffectGuards installs the reporter that
|
|
@@ -70,7 +81,7 @@ export function setWgpuRenderEffectApplicationGuard(state, guard) {
|
|
|
70
81
|
else
|
|
71
82
|
_guards.set(state, guard);
|
|
72
83
|
}
|
|
73
|
-
function getWgpuRenderEffectApplicationStatus(requestedCount, registeredCount, sourceAvailable, destinationAvailable) {
|
|
84
|
+
function getWgpuRenderEffectApplicationStatus(requestedCount, registeredCount, unresolvedCount, sourceAvailable, destinationAvailable) {
|
|
74
85
|
// An empty chain is a no-op the caller asked for, NOT a miss — reporting it would train readers to
|
|
75
86
|
// ignore the crumb. A ready destination is the highest-cost failed-call outcome, because consumers
|
|
76
87
|
// keep sampling plausible pixels from an older application instead of an empty texture.
|
|
@@ -84,7 +95,9 @@ function getWgpuRenderEffectApplicationStatus(requestedCount, registeredCount, s
|
|
|
84
95
|
return 'unregistered-effects';
|
|
85
96
|
if (registeredCount < requestedCount)
|
|
86
97
|
return 'partial-registration';
|
|
87
|
-
|
|
98
|
+
if (unresolvedCount === 0)
|
|
99
|
+
return 'complete';
|
|
100
|
+
return unresolvedCount === registeredCount ? 'unresolved-effects' : 'partial-resolution';
|
|
88
101
|
}
|
|
89
102
|
function reportWgpuRenderEffectApplication(state, explanation) {
|
|
90
103
|
if (explanation.status === 'complete' || explanation.status === 'no-effects')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuRenderTextureEffect.js","sourceRoot":"","sources":["../src/wgpuRenderTextureEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAW1G,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuRenderTextureEffect.js","sourceRoot":"","sources":["../src/wgpuRenderTextureEffect.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.5.1-next.
|
|
3
|
+
"version": "0.5.1-next.704.19c91ec",
|
|
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.5.1-next.
|
|
42
|
-
"@flighthq/color": "0.5.1-next.
|
|
43
|
-
"@flighthq/effects": "0.5.1-next.
|
|
44
|
-
"@flighthq/geometry": "0.5.1-next.
|
|
45
|
-
"@flighthq/log": "0.5.1-next.
|
|
46
|
-
"@flighthq/render-wgpu": "0.5.1-next.
|
|
47
|
-
"@flighthq/registry": "0.5.1-next.
|
|
48
|
-
"@flighthq/types": "0.5.1-next.
|
|
41
|
+
"@flighthq/adjustments": "0.5.1-next.704.19c91ec",
|
|
42
|
+
"@flighthq/color": "0.5.1-next.704.19c91ec",
|
|
43
|
+
"@flighthq/effects": "0.5.1-next.704.19c91ec",
|
|
44
|
+
"@flighthq/geometry": "0.5.1-next.704.19c91ec",
|
|
45
|
+
"@flighthq/log": "0.5.1-next.704.19c91ec",
|
|
46
|
+
"@flighthq/render-wgpu": "0.5.1-next.704.19c91ec",
|
|
47
|
+
"@flighthq/registry": "0.5.1-next.704.19c91ec",
|
|
48
|
+
"@flighthq/types": "0.5.1-next.704.19c91ec"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"@webgpu/types": "^0.1.70"
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import * as renderWgpuContract from '@flighthq/render-wgpu/contract';
|
|
2
|
+
import { createWgpuRenderStateForTest, installWgpuMock } from '@flighthq/render-wgpu/contract';
|
|
3
|
+
import type { BitmapDisplacementEffect, Texture2D, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types/contract';
|
|
4
|
+
import { ImageChannel } from '@flighthq/types/contract';
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
applyBitmapDisplacementEffectToWgpu,
|
|
8
|
+
BITMAP_DISPLACEMENT_FRAGMENT_WGSL,
|
|
9
|
+
defaultWgpuBitmapDisplacementEffectRunner,
|
|
10
|
+
isWgpuBitmapDisplacementEffectResolvable,
|
|
11
|
+
registerWgpuBitmapDisplacementEffect,
|
|
12
|
+
} from './wgpuBitmapDisplacementEffect';
|
|
13
|
+
import * as wgpuEffectPass from './wgpuEffectPass';
|
|
14
|
+
import * as wgpuEffectProgramCache from './wgpuEffectProgramCache';
|
|
15
|
+
import { getWgpuRenderEffectRunner, isWgpuRenderEffectResolvable } from './wgpuRenderEffectRegistry';
|
|
16
|
+
|
|
17
|
+
const sourceView = {} as GPUTextureView;
|
|
18
|
+
const mapView = {} as GPUTextureView;
|
|
19
|
+
const source = {
|
|
20
|
+
colorSpace: 'srgb',
|
|
21
|
+
format: 'rgba8unorm',
|
|
22
|
+
height: 64,
|
|
23
|
+
view: sourceView,
|
|
24
|
+
width: 128,
|
|
25
|
+
} as WgpuRenderTarget;
|
|
26
|
+
const dest = { ...source, view: {} as GPUTextureView } as WgpuRenderTarget;
|
|
27
|
+
const map = {
|
|
28
|
+
colorSpace: 'linear',
|
|
29
|
+
dimension: '2d',
|
|
30
|
+
sampler: {
|
|
31
|
+
anisotropy: 1,
|
|
32
|
+
magFilter: 'linear',
|
|
33
|
+
minFilter: 'linear',
|
|
34
|
+
mipmaps: false,
|
|
35
|
+
wrapU: 'clamp-to-edge',
|
|
36
|
+
wrapV: 'clamp-to-edge',
|
|
37
|
+
},
|
|
38
|
+
source: {},
|
|
39
|
+
} as unknown as Texture2D;
|
|
40
|
+
const mapSampler = {} as GPUSampler;
|
|
41
|
+
const sourceBindGroup = { id: 'source' } as unknown as GPUBindGroup;
|
|
42
|
+
const mapBindGroup = { id: 'map' } as unknown as GPUBindGroup;
|
|
43
|
+
const pass = {
|
|
44
|
+
draw: vi.fn(),
|
|
45
|
+
end: vi.fn(),
|
|
46
|
+
setBindGroup: vi.fn(),
|
|
47
|
+
setPipeline: vi.fn(),
|
|
48
|
+
};
|
|
49
|
+
const fs = {
|
|
50
|
+
acquireSlot: vi.fn(() => 256),
|
|
51
|
+
beginPass: vi.fn(() => pass),
|
|
52
|
+
sampler: {} as GPUSampler,
|
|
53
|
+
textureBGLayout: {} as GPUBindGroupLayout,
|
|
54
|
+
uniformBG: {} as GPUBindGroup,
|
|
55
|
+
uniformBGLayout: {} as GPUBindGroupLayout,
|
|
56
|
+
writeSlot: vi.fn((_offset: number, callback: (f32: Float32Array, i32: Int32Array) => void) => {
|
|
57
|
+
const f32 = new Float32Array(16);
|
|
58
|
+
callback(f32, new Int32Array(f32.buffer));
|
|
59
|
+
writtenUniforms = f32;
|
|
60
|
+
}),
|
|
61
|
+
};
|
|
62
|
+
const device = {
|
|
63
|
+
createBindGroup: vi.fn(({ entries }: GPUBindGroupDescriptor) =>
|
|
64
|
+
Array.from(entries)[0]?.resource === sourceView ? sourceBindGroup : mapBindGroup,
|
|
65
|
+
),
|
|
66
|
+
createPipelineLayout: vi.fn(() => ({})),
|
|
67
|
+
createRenderPipeline: vi.fn(() => ({ id: 'pipeline' })),
|
|
68
|
+
createShaderModule: vi.fn(() => ({})),
|
|
69
|
+
};
|
|
70
|
+
const state = { device, format: 'rgba8unorm' } as unknown as WgpuRenderState;
|
|
71
|
+
let writtenUniforms = new Float32Array();
|
|
72
|
+
|
|
73
|
+
beforeAll(() => installWgpuMock());
|
|
74
|
+
|
|
75
|
+
beforeEach(() => {
|
|
76
|
+
writtenUniforms = new Float32Array();
|
|
77
|
+
vi.clearAllMocks();
|
|
78
|
+
vi.spyOn(renderWgpuContract, 'resolveWgpuTexture').mockReturnValue({ view: mapView } as never);
|
|
79
|
+
vi.spyOn(renderWgpuContract, 'getWgpuSampler').mockReturnValue(mapSampler);
|
|
80
|
+
vi.spyOn(wgpuEffectPass, 'getWgpuEffectPassState').mockReturnValue(fs as never);
|
|
81
|
+
vi.spyOn(wgpuEffectPass, 'drawWgpuEffectPass').mockImplementation((() => {}) as never);
|
|
82
|
+
vi.spyOn(wgpuEffectProgramCache, 'getWgpuEffectPipeline').mockReturnValue({ pipeline: {} } as never);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
afterEach(() => vi.restoreAllMocks());
|
|
86
|
+
|
|
87
|
+
function effect(overrides: Readonly<Partial<BitmapDisplacementEffect>> = {}): BitmapDisplacementEffect {
|
|
88
|
+
return { kind: 'BitmapDisplacementEffect', map, ...overrides } as BitmapDisplacementEffect;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
describe('applyBitmapDisplacementEffectToWgpu', () => {
|
|
92
|
+
it('binds source and resolved map views in one pass', () => {
|
|
93
|
+
applyBitmapDisplacementEffectToWgpu(state, source, dest, effect());
|
|
94
|
+
|
|
95
|
+
expect(renderWgpuContract.resolveWgpuTexture).toHaveBeenCalledWith(state, map, false, source.colorSpace);
|
|
96
|
+
expect(pass.setBindGroup).toHaveBeenNthCalledWith(2, 1, sourceBindGroup);
|
|
97
|
+
expect(pass.setBindGroup).toHaveBeenNthCalledWith(3, 2, mapBindGroup);
|
|
98
|
+
expect(pass.draw).toHaveBeenCalledWith(6);
|
|
99
|
+
expect(pass.end).toHaveBeenCalledOnce();
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('maps channels, signed scales, dimensions, and edge modes into uniforms', () => {
|
|
103
|
+
applyBitmapDisplacementEffectToWgpu(
|
|
104
|
+
state,
|
|
105
|
+
source,
|
|
106
|
+
dest,
|
|
107
|
+
effect({
|
|
108
|
+
componentX: ImageChannel.Alpha,
|
|
109
|
+
componentY: ImageChannel.Blue,
|
|
110
|
+
edgeMode: 'clamp',
|
|
111
|
+
scaleX: -14,
|
|
112
|
+
scaleY: 9,
|
|
113
|
+
}),
|
|
114
|
+
);
|
|
115
|
+
const i32 = new Int32Array(writtenUniforms.buffer);
|
|
116
|
+
|
|
117
|
+
expect([...writtenUniforms.slice(0, 4)]).toEqual([-14, 9, source.width, source.height]);
|
|
118
|
+
expect([...i32.slice(4, 7)]).toEqual([ImageChannel.Alpha, ImageChannel.Blue, 0]);
|
|
119
|
+
|
|
120
|
+
applyBitmapDisplacementEffectToWgpu(state, source, dest, effect({ edgeMode: 'wrap' }));
|
|
121
|
+
expect(new Int32Array(writtenUniforms.buffer)[6]).toBe(1);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it('ships channel mapping, centred offset, wrap, clamp, and top-left vertical displacement', () => {
|
|
125
|
+
applyBitmapDisplacementEffectToWgpu(state, source, dest, effect());
|
|
126
|
+
|
|
127
|
+
expect(BITMAP_DISPLACEMENT_FRAGMENT_WGSL).toContain('sampleChannel(mapSample, uni.componentX)');
|
|
128
|
+
expect(BITMAP_DISPLACEMENT_FRAGMENT_WGSL).toContain('sampleChannel(mapSample, uni.componentY)');
|
|
129
|
+
expect(BITMAP_DISPLACEMENT_FRAGMENT_WGSL).toContain('(mapped - vec2f(0.5)) * uni.scale');
|
|
130
|
+
expect(BITMAP_DISPLACEMENT_FRAGMENT_WGSL).toContain('fract(displaced)');
|
|
131
|
+
expect(BITMAP_DISPLACEMENT_FRAGMENT_WGSL).toContain('clamp(displaced, vec2f(0.0), vec2f(1.0))');
|
|
132
|
+
expect(BITMAP_DISPLACEMENT_FRAGMENT_WGSL).toContain('uv.y + displacement.y');
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
it('copies through when the map is absent or unresolved', () => {
|
|
136
|
+
vi.mocked(renderWgpuContract.resolveWgpuTexture).mockReturnValue(null);
|
|
137
|
+
applyBitmapDisplacementEffectToWgpu(state, source, dest, effect());
|
|
138
|
+
applyBitmapDisplacementEffectToWgpu(state, source, dest, effect({ map: null }));
|
|
139
|
+
|
|
140
|
+
expect(wgpuEffectPass.drawWgpuEffectPass).toHaveBeenCalledTimes(2);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
describe('defaultWgpuBitmapDisplacementEffectRunner', () => {
|
|
145
|
+
it('routes the runner context through to the pass', () => {
|
|
146
|
+
defaultWgpuBitmapDisplacementEffectRunner(
|
|
147
|
+
{ dest, pool: { free: [] }, source, state } as never,
|
|
148
|
+
effect({ scaleX: 3, scaleY: 4 }),
|
|
149
|
+
);
|
|
150
|
+
expect([...writtenUniforms.slice(0, 2)]).toEqual([3, 4]);
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
describe('isWgpuBitmapDisplacementEffectResolvable', () => {
|
|
155
|
+
it('exposes the missing-map sentinel', () => {
|
|
156
|
+
expect(isWgpuBitmapDisplacementEffectResolvable(state, effect())).toBe(true);
|
|
157
|
+
expect(isWgpuBitmapDisplacementEffectResolvable(state, effect({ map: null }))).toBe(false);
|
|
158
|
+
vi.mocked(renderWgpuContract.resolveWgpuTexture).mockReturnValue(null);
|
|
159
|
+
expect(isWgpuBitmapDisplacementEffectResolvable(state, effect())).toBe(false);
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
describe('registerWgpuBitmapDisplacementEffect', () => {
|
|
164
|
+
it('registers both the runner and per-instance map resolver', async () => {
|
|
165
|
+
const registeredState = await createWgpuRenderStateForTest();
|
|
166
|
+
|
|
167
|
+
registerWgpuBitmapDisplacementEffect(registeredState);
|
|
168
|
+
expect(getWgpuRenderEffectRunner(registeredState, 'BitmapDisplacementEffect')).toBe(
|
|
169
|
+
defaultWgpuBitmapDisplacementEffectRunner,
|
|
170
|
+
);
|
|
171
|
+
expect(isWgpuRenderEffectResolvable(registeredState, effect({ map: null }))).toBe(false);
|
|
172
|
+
});
|
|
173
|
+
});
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
getWgpuRenderEffectRunner,
|
|
9
9
|
hasWgpuRenderEffectRunner,
|
|
10
|
+
isWgpuRenderEffectResolvable,
|
|
10
11
|
registerWgpuRenderEffect,
|
|
11
12
|
} from './wgpuRenderEffectRegistry';
|
|
12
13
|
|
|
@@ -34,6 +35,21 @@ describe('hasWgpuRenderEffectRunner', () => {
|
|
|
34
35
|
});
|
|
35
36
|
});
|
|
36
37
|
|
|
38
|
+
describe('isWgpuRenderEffectResolvable', () => {
|
|
39
|
+
it('treats a runner without a resolver as always resolvable', async () => {
|
|
40
|
+
const state = await createWgpuRenderStateForTest();
|
|
41
|
+
registerWgpuRenderEffect(state, 'acme.Always', vi.fn());
|
|
42
|
+
expect(isWgpuRenderEffectResolvable(state, { kind: 'acme.Always' })).toBe(true);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('asks the resolver for each effect instance', async () => {
|
|
46
|
+
const state = await createWgpuRenderStateForTest();
|
|
47
|
+
registerWgpuRenderEffect(state, 'acme.Named', vi.fn(), (_state, effect) => 'key' in effect);
|
|
48
|
+
expect(isWgpuRenderEffectResolvable(state, { kind: 'acme.Named' })).toBe(false);
|
|
49
|
+
expect(isWgpuRenderEffectResolvable(state, { key: 'ready', kind: 'acme.Named' } as never)).toBe(true);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
37
53
|
describe('registerWgpuRenderEffect', () => {
|
|
38
54
|
it('registers a runner retrievable by its kind', async () => {
|
|
39
55
|
const state = await createWgpuRenderStateForTest();
|
|
@@ -55,6 +71,9 @@ describe('registerWgpuRenderEffect', () => {
|
|
|
55
71
|
registerWgpuRenderEffect(state, 'TestEffect', runnerB);
|
|
56
72
|
|
|
57
73
|
expect(getWgpuRenderEffectRunner(state, 'TestEffect')).toBe(runnerB);
|
|
58
|
-
expect(before.entries.get('TestEffect')).toEqual({
|
|
74
|
+
expect(before.entries.get('TestEffect')).toEqual({
|
|
75
|
+
state: 'bound',
|
|
76
|
+
value: { isResolvable: undefined, runner: runnerA },
|
|
77
|
+
});
|
|
59
78
|
});
|
|
60
79
|
});
|
|
@@ -105,10 +105,27 @@ describe('explainWgpuRenderEffectApplication', () => {
|
|
|
105
105
|
requestedCount: 2,
|
|
106
106
|
status: 'partial-registration',
|
|
107
107
|
unregisteredKinds: ['test.explain-missing'],
|
|
108
|
+
unresolvedIndexes: [],
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it('names a registered effect whose instance cannot resolve', async () => {
|
|
113
|
+
const state = await createWgpuRenderStateForTest();
|
|
114
|
+
const pool = createWgpuRenderTexturePool();
|
|
115
|
+
const source = acquireWgpuRenderTexture(state, pool, { width: 8, height: 8 });
|
|
116
|
+
const dest = acquireWgpuRenderTexture(state, pool, { width: 8, height: 8 });
|
|
117
|
+
writeWgpuRenderTextureTarget(state, source, () => {});
|
|
118
|
+
registerWgpuRenderEffect(state, 'test.explain-unresolved', vi.fn(), () => false);
|
|
119
|
+
|
|
120
|
+
expect(
|
|
121
|
+
explainWgpuRenderEffectApplication(state, source, dest, [{ kind: 'test.explain-unresolved' }]),
|
|
122
|
+
).toMatchObject({
|
|
123
|
+
registeredCount: 1,
|
|
124
|
+
requestedCount: 1,
|
|
125
|
+
status: 'unresolved-effects',
|
|
126
|
+
unregisteredKinds: [],
|
|
127
|
+
unresolvedIndexes: [0],
|
|
108
128
|
});
|
|
109
|
-
// No resolvability field: WGPU has no resolver half to registration, so a field mirroring GL's
|
|
110
|
-
// unresolvedIndexes could never be non-empty. Its absence is the contract, not an omission.
|
|
111
|
-
expect('unresolvedIndexes' in explanation).toBe(false);
|
|
112
129
|
});
|
|
113
130
|
});
|
|
114
131
|
|
|
@@ -11,6 +11,7 @@ beforeAll(() => {
|
|
|
11
11
|
describe('WGPU effect registration', () => {
|
|
12
12
|
it.each([
|
|
13
13
|
['BevelEffect', 'registerWgpuBevelEffect', 'defaultWgpuBevelEffectRunner'],
|
|
14
|
+
['BitmapDisplacementEffect', 'registerWgpuBitmapDisplacementEffect', 'defaultWgpuBitmapDisplacementEffectRunner'],
|
|
14
15
|
['BlendEffect', 'registerWgpuBlendEffect', 'defaultWgpuBlendEffectRunner'],
|
|
15
16
|
['BloomEffect', 'registerWgpuBloomEffect', 'defaultWgpuBloomEffectRunner'],
|
|
16
17
|
['BlurEffect', 'registerWgpuBlurEffect', 'defaultWgpuBlurEffectRunner'],
|