@babylonjs/smart-filters 0.7.1-alpha → 0.7.3-alpha
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/blocks/outputBlock.js +1 -1
- package/dist/blocks/outputBlock.js.map +1 -1
- package/dist/blocks/shaderBlock.d.ts.map +1 -1
- package/dist/blocks/shaderBlock.js +7 -4
- package/dist/blocks/shaderBlock.js.map +1 -1
- package/dist/runtime/renderTargetGenerator.d.ts.map +1 -1
- package/dist/runtime/renderTargetGenerator.js +2 -14
- package/dist/runtime/renderTargetGenerator.js.map +1 -1
- package/dist/runtime/shaderRuntime.d.ts +10 -3
- package/dist/runtime/shaderRuntime.d.ts.map +1 -1
- package/dist/runtime/shaderRuntime.js +15 -2
- package/dist/runtime/shaderRuntime.js.map +1 -1
- package/dist/runtime/smartFilterRuntime.d.ts +1 -1
- package/dist/runtime/smartFilterRuntime.js +1 -1
- package/dist/smartFilter.d.ts +5 -0
- package/dist/smartFilter.d.ts.map +1 -1
- package/dist/smartFilter.js +20 -0
- package/dist/smartFilter.js.map +1 -1
- package/dist/utils/buildTools/shaderConverter.js +2 -2
- package/dist/utils/buildTools/shaderConverter.js.map +1 -1
- package/dist/utils/renderTargetUtils.d.ts +3 -13
- package/dist/utils/renderTargetUtils.d.ts.map +1 -1
- package/dist/utils/renderTargetUtils.js +4 -18
- package/dist/utils/renderTargetUtils.js.map +1 -1
- package/dist/utils/textureUtils.d.ts +13 -0
- package/dist/utils/textureUtils.d.ts.map +1 -0
- package/dist/utils/textureUtils.js +25 -0
- package/dist/utils/textureUtils.js.map +1 -0
- package/package.json +1 -1
- package/src/blocks/outputBlock.ts +1 -1
- package/src/blocks/shaderBlock.ts +8 -12
- package/src/runtime/renderTargetGenerator.ts +2 -13
- package/src/runtime/shaderRuntime.ts +19 -2
- package/src/runtime/smartFilterRuntime.ts +1 -1
- package/src/smartFilter.ts +22 -0
- package/src/utils/buildTools/shaderConverter.ts +2 -2
- package/src/utils/renderTargetUtils.ts +5 -25
- package/src/utils/textureUtils.ts +32 -0
|
@@ -62,7 +62,7 @@ export class OutputBlock extends BaseBlock {
|
|
|
62
62
|
const shaderBlockRuntime = new ShaderRuntime(runtime.effectRenderer, shaderProgram, new OutputShaderBinding(this.input.runtimeData));
|
|
63
63
|
initializationData.initializationPromises.push(shaderBlockRuntime.onReadyAsync);
|
|
64
64
|
runtime.registerResource(shaderBlockRuntime);
|
|
65
|
-
registerFinalRenderCommand(this
|
|
65
|
+
registerFinalRenderCommand(this, runtime, this, shaderBlockRuntime);
|
|
66
66
|
super.generateCommandsAndGatherInitPromises(initializationData, finalOutput);
|
|
67
67
|
}
|
|
68
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outputBlock.js","sourceRoot":"","sources":["../../src/blocks/outputBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,SAAS;IAkBtC;;;OAGG;IACH,YAAY,WAAwB;QAChC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAjBjC;;;WAGG;QACa,UAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAElF;;;WAGG;QACI,wBAAmB,GAAkC,IAAI,CAAC;IAQjE,CAAC;IAED;;OAEG;IACa,iBAAiB;QAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAgB,EAAE,UAAkB,EAAE,EAAE;YACpD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC9B,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACa,oBAAoB;QAChC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAgB,EAAE,UAAkB,EAAE,EAAE;YACpD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,KAAK,CAAC,oBAAoB,EAAE,CAAC;YACjC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACa,qCAAqC,CACjD,kBAAsC,EACtC,WAAoB;;QAEpB,2FAA2F;QAC3F,iEAAiE;QACjE,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,WAAW,0CAAE,UAAU,CAAC,OAAO,KAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACvE,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC;YAE3C,MAAM,kBAAkB,GAAG,IAAI,aAAa,CACxC,OAAO,CAAC,cAAc,EACtB,aAAa,EACb,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAClD,CAAC;YACF,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAChF,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;YAE7C,0BAA0B,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"outputBlock.js","sourceRoot":"","sources":["../../src/blocks/outputBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,SAAS;IAkBtC;;;OAGG;IACH,YAAY,WAAwB;QAChC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAjBjC;;;WAGG;QACa,UAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAElF;;;WAGG;QACI,wBAAmB,GAAkC,IAAI,CAAC;IAQjE,CAAC;IAED;;OAEG;IACa,iBAAiB;QAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAgB,EAAE,UAAkB,EAAE,EAAE;YACpD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC9B,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACa,oBAAoB;QAChC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAgB,EAAE,UAAkB,EAAE,EAAE;YACpD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,KAAK,CAAC,oBAAoB,EAAE,CAAC;YACjC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACa,qCAAqC,CACjD,kBAAsC,EACtC,WAAoB;;QAEpB,2FAA2F;QAC3F,iEAAiE;QACjE,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,WAAW,0CAAE,UAAU,CAAC,OAAO,KAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACvE,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC;YAE3C,MAAM,kBAAkB,GAAG,IAAI,aAAa,CACxC,OAAO,CAAC,cAAc,EACtB,aAAa,EACb,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAClD,CAAC;YACF,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAChF,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;YAE7C,0BAA0B,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;YAEpE,KAAK,CAAC,qCAAqC,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QACjF,CAAC;IACL,CAAC;;AA1ED;;GAEG;AACoB,qBAAS,GAAG,aAAa,AAAhB,CAAiB;AA0ErD;;GAEG;AACH,MAAM,mBAAoB,SAAQ,aAAa;IAG3C;;;OAGG;IACH,YAAY,YAAsD;QAC9D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACa,IAAI,CAAC,MAAc;QAC/B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACtF,CAAC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaderBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/shaderBlock.ts"],"names":[],"mappings":"AACA,OAAO,2DAA2D,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAI3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAA8B,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"shaderBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/shaderBlock.ts"],"names":[],"mappings":"AACA,OAAO,2DAA2D,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAI3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAA8B,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAM5F;;;;;;GAMG;AACH,8BAAsB,WAAY,SAAQ,SAAS;IAC/C;;OAEG;IACH,OAAuB,SAAS,SAAiB;IAEjD;;;;OAIG;aACa,gBAAgB,IAAI,aAAa;IAEjD;;OAEG;IACH,OAAc,UAAU,EAAE,aAAa,CAAC;IAExC;;OAEG;IACH,SAAgB,MAAM,+CAA+D;IAErF;;OAEG;IAyBI,oBAAoB,EAAE,oBAAoB,CAI/C;IAEF;;;OAGG;IACa,mBAAmB,CAAC,uBAAuB,CAAC,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC,EAAE,GAAG,IAAI;IASzG,SAAS,CAAC,iCAAiC,IAAI,eAAe;IAc9D;;;;;OAKG;gBACS,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,UAAQ;IAI/E;;;OAGG;IACI,gBAAgB;IAIvB;;;;OAIG;IACa,qCAAqC,CACjD,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,OAAO,GACrB,IAAI;CA2BV"}
|
|
@@ -9,7 +9,7 @@ import { ShaderRuntime } from "../runtime/shaderRuntime.js";
|
|
|
9
9
|
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
10
10
|
import { createCommand } from "../command/command.js";
|
|
11
11
|
import { undecorateSymbol } from "../utils/shaderCodeUtils.js";
|
|
12
|
-
import {
|
|
12
|
+
import { registerFinalRenderCommand } from "../utils/renderTargetUtils.js";
|
|
13
13
|
import { BaseBlock } from "./baseBlock.js";
|
|
14
14
|
import { TextureFormat, TextureType } from "./textureOptions.js";
|
|
15
15
|
import { editableInPropertyPage, PropertyTypeForEdition } from "../editorUtils/editableInPropertyPage.js";
|
|
@@ -84,12 +84,15 @@ export class ShaderBlock extends BaseBlock {
|
|
|
84
84
|
initializationData.initializationPromises.push(shaderBlockRuntime.onReadyAsync);
|
|
85
85
|
runtime.registerResource(shaderBlockRuntime);
|
|
86
86
|
if (finalOutput) {
|
|
87
|
-
registerFinalRenderCommand(initializationData.outputBlock
|
|
87
|
+
registerFinalRenderCommand(initializationData.outputBlock, runtime, this, shaderBlockRuntime);
|
|
88
88
|
}
|
|
89
89
|
else {
|
|
90
|
-
const
|
|
90
|
+
const renderTargetTexture = (_a = this.output.runtimeData) === null || _a === void 0 ? void 0 : _a.value;
|
|
91
|
+
if (!renderTargetTexture) {
|
|
92
|
+
throw new Error(`${this.blockType} did not have a render target texture.`);
|
|
93
|
+
}
|
|
91
94
|
runtime.registerCommand(createCommand(`${this.blockType}.render`, this, () => {
|
|
92
|
-
shaderBlockRuntime.
|
|
95
|
+
shaderBlockRuntime.renderToTargetTexture(renderTargetTexture);
|
|
93
96
|
}));
|
|
94
97
|
}
|
|
95
98
|
super.generateCommandsAndGatherInitPromises(initializationData, finalOutput);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaderBlock.js","sourceRoot":"","sources":["../../src/blocks/shaderBlock.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,2DAA2D,CAAC;AAMnE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"shaderBlock.js","sourceRoot":"","sources":["../../src/blocks/shaderBlock.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTargetGenerator.d.ts","sourceRoot":"","sources":["../../src/runtime/renderTargetGenerator.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"renderTargetGenerator.d.ts","sourceRoot":"","sources":["../../src/runtime/renderTargetGenerator.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAuBtE;;GAEG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,OAAO,CAAC,wBAAwB,CAAkC;IAElE,OAAO,CAAC,kBAAkB,CAAC;IAE3B;;;OAGG;gBACS,QAAQ,UAAO;IAM3B;;OAEG;IACH,IAAW,iBAAiB,WAE3B;IAED;;;;OAIG;IACI,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB;IA+DzF,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,WAAW;IAiCnB,OAAO,CAAC,eAAe;IAsBvB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAiCtB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;CAQjC"}
|
|
@@ -2,6 +2,7 @@ import { ThinRenderTargetTexture } from "@babylonjs/core/Materials/Textures/thin
|
|
|
2
2
|
import { ShaderBlock } from "../blocks/shaderBlock.js";
|
|
3
3
|
import { createStrongRef } from "./strongRef.js";
|
|
4
4
|
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
5
|
+
import { getBlockOutputTextureSize } from "../utils/textureUtils.js";
|
|
5
6
|
/**
|
|
6
7
|
* The render target generator is responsible for creating and assigning render targets to ShaderBlocks.
|
|
7
8
|
*/
|
|
@@ -143,20 +144,7 @@ export class RenderTargetGenerator {
|
|
|
143
144
|
type: textureOptions.type,
|
|
144
145
|
};
|
|
145
146
|
// Get the smartFilter output size - either from the output block's renderTargetTexture or the engine's render size
|
|
146
|
-
|
|
147
|
-
let outputHeight;
|
|
148
|
-
if (smartFilter.outputBlock.renderTargetWrapper) {
|
|
149
|
-
outputWidth = smartFilter.outputBlock.renderTargetWrapper.width;
|
|
150
|
-
outputHeight = smartFilter.outputBlock.renderTargetWrapper.height;
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
outputWidth = engine.getRenderWidth(true);
|
|
154
|
-
outputHeight = engine.getRenderHeight(true);
|
|
155
|
-
}
|
|
156
|
-
const size = {
|
|
157
|
-
width: Math.floor(outputWidth * textureOptions.ratio),
|
|
158
|
-
height: Math.floor(outputHeight * textureOptions.ratio),
|
|
159
|
-
};
|
|
147
|
+
const size = getBlockOutputTextureSize(smartFilter, engine, textureOptions);
|
|
160
148
|
// Creates frame buffers for effects
|
|
161
149
|
const finalRenderTarget = new ThinRenderTargetTexture(engine, size, setup);
|
|
162
150
|
runtime.registerResource(finalRenderTarget);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTargetGenerator.js","sourceRoot":"","sources":["../../src/runtime/renderTargetGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,+DAA+D,CAAC;AAMxG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"renderTargetGenerator.js","sourceRoot":"","sources":["../../src/runtime/renderTargetGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { EffectRenderer } from "@babylonjs/core/Materials/effectRenderer";
|
|
2
|
-
import type { RenderTargetWrapper } from "@babylonjs/core/Engines/renderTargetWrapper";
|
|
3
2
|
import type { Effect } from "@babylonjs/core/Materials/effect";
|
|
3
|
+
import type { ThinRenderTargetTexture } from "@babylonjs/core/Materials/Textures/thinRenderTargetTexture";
|
|
4
4
|
import type { IDisposable } from "../IDisposable";
|
|
5
5
|
import type { ShaderProgram } from "../utils/shaderCodeUtils";
|
|
6
6
|
import type { IDisableableBlock } from "../blocks/disableableShaderBlock";
|
|
7
|
+
import type { OutputBlock } from "../blocks/outputBlock";
|
|
7
8
|
/**
|
|
8
9
|
* The shader bindings for a ShaderBlock that can't be disabled.
|
|
9
10
|
*/
|
|
@@ -73,11 +74,17 @@ export declare class ShaderRuntime implements IDisposable {
|
|
|
73
74
|
* @param shaderBinding - defines the shader bindings associated with this runtime
|
|
74
75
|
*/
|
|
75
76
|
constructor(effectRenderer: EffectRenderer, shaderProgram: ShaderProgram, shaderBinding: ShaderBinding);
|
|
77
|
+
/**
|
|
78
|
+
* Renders the full screen effect into a render target.
|
|
79
|
+
* @param outputBlock - The output block to render to - assumes it has a .renderTargetWrapper
|
|
80
|
+
*/
|
|
81
|
+
renderToTargetWrapper(outputBlock: OutputBlock): void;
|
|
76
82
|
/**
|
|
77
83
|
* Renders the full screen effect into a texture.
|
|
78
|
-
* @param
|
|
84
|
+
* @param renderTargetTexture - The render target texture to render into
|
|
79
85
|
*/
|
|
80
|
-
|
|
86
|
+
renderToTargetTexture(renderTargetTexture: ThinRenderTargetTexture): void;
|
|
87
|
+
private _renderToTargetWrapper;
|
|
81
88
|
/**
|
|
82
89
|
* Renders the full screen effect into the main canvas.
|
|
83
90
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaderRuntime.d.ts","sourceRoot":"","sources":["../../src/runtime/shaderRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"shaderRuntime.d.ts","sourceRoot":"","sources":["../../src/runtime/shaderRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAG/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4DAA4D,CAAC;AAE1G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,8BAAsB,aAAa;IAC/B;;;;;;OAMG;aACa,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAE3E,OAAO,CAAC,wBAAwB,CAAiC;IAEjE;;;;OAIG;IACI,eAAe,CAAC,YAAY,EAAE,MAAM;IAK3C;;;;OAIG;IACI,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAG/E;AAED;;GAEG;AACH,8BAAsB,wBAAyB,SAAQ,aAAa;IAChE,OAAO,CAAC,SAAS,CAAqB;IAEtC;;;OAGG;gBACS,WAAW,EAAE,iBAAiB;IAK1C;;;;;OAKG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;CAGvE;AAED;;;;;;;;GAQG;AACH,qBAAa,aAAc,YAAW,WAAW;IAC7C;;OAEG;IACH,SAAgB,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAE/C;;;;;OAKG;gBACS,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa;IAqBtG;;;OAGG;IACI,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAI5D;;;OAGG;IACI,qBAAqB,CAAC,mBAAmB,EAAE,uBAAuB,GAAG,IAAI;IAOhF,OAAO,CAAC,sBAAsB;IAM9B;;OAEG;IACI,cAAc,IAAI,IAAI;IAK7B;;;;OAIG;IACH,OAAO,CAAC,KAAK;IAMb;;OAEG;IACI,OAAO,IAAI,IAAI;CAGzB"}
|
|
@@ -84,11 +84,24 @@ export class ShaderRuntime {
|
|
|
84
84
|
});
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Renders the full screen effect into a render target.
|
|
89
|
+
* @param outputBlock - The output block to render to - assumes it has a .renderTargetWrapper
|
|
90
|
+
*/
|
|
91
|
+
renderToTargetWrapper(outputBlock) {
|
|
92
|
+
this._renderToTargetWrapper(outputBlock.renderTargetWrapper);
|
|
93
|
+
}
|
|
87
94
|
/**
|
|
88
95
|
* Renders the full screen effect into a texture.
|
|
89
|
-
* @param
|
|
96
|
+
* @param renderTargetTexture - The render target texture to render into
|
|
90
97
|
*/
|
|
91
|
-
|
|
98
|
+
renderToTargetTexture(renderTargetTexture) {
|
|
99
|
+
const renderTargetWrapper = renderTargetTexture.renderTarget;
|
|
100
|
+
if (renderTargetWrapper) {
|
|
101
|
+
this._renderToTargetWrapper(renderTargetWrapper);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
_renderToTargetWrapper(renderTargetWrapper) {
|
|
92
105
|
this._engine.bindFramebuffer(renderTargetWrapper);
|
|
93
106
|
this._draw(renderTargetWrapper.width, renderTargetWrapper.height);
|
|
94
107
|
this._engine.unBindFramebuffer(renderTargetWrapper);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaderRuntime.js","sourceRoot":"","sources":["../../src/runtime/shaderRuntime.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"shaderRuntime.js","sourceRoot":"","sources":["../../src/runtime/shaderRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,7 @@ export declare class InternalSmartFilterRuntime implements SmartFilterRuntime {
|
|
|
47
47
|
*/
|
|
48
48
|
constructor(engine: ThinEngine);
|
|
49
49
|
/**
|
|
50
|
-
*
|
|
50
|
+
* Register a resource to be disposed when the runtime is disposed.
|
|
51
51
|
* @param resource - defines the resource to dispose once the runtime is disposed
|
|
52
52
|
*/
|
|
53
53
|
registerResource(resource: IDisposable): void;
|
|
@@ -19,7 +19,7 @@ export class InternalSmartFilterRuntime {
|
|
|
19
19
|
this.registerResource(this.effectRenderer);
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* Register a resource to be disposed when the runtime is disposed.
|
|
23
23
|
* @param resource - defines the resource to dispose once the runtime is disposed
|
|
24
24
|
*/
|
|
25
25
|
registerResource(resource) {
|
package/dist/smartFilter.d.ts
CHANGED
|
@@ -98,6 +98,11 @@ export declare class SmartFilter {
|
|
|
98
98
|
* @returns the runtime that can be used to render the smart filter
|
|
99
99
|
*/
|
|
100
100
|
createRuntimeAsync(engine: ThinEngine, renderTargetGenerator?: RenderTargetGenerator): Promise<SmartFilterRuntime>;
|
|
101
|
+
/**
|
|
102
|
+
* Resizes any intermediate textures according to the new size of the render target
|
|
103
|
+
* @param engine - The engine used to render the smart filter
|
|
104
|
+
*/
|
|
105
|
+
resize(engine: ThinEngine): void;
|
|
101
106
|
/**
|
|
102
107
|
* @internal
|
|
103
108
|
* Merges all aggregate blocks into the smart filter graph, executes the passed-in work, then restores the aggregate blocks.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartFilter.d.ts","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6EAA6E,CAAC;AAC/G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"smartFilter.d.ts","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6EAA6E,CAAC;AAC/G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAUjD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAE7C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAEjD;;OAEG;IACH,QAAQ,CAAC,mBAAmB,EAAE,WAAW,EAAE,CAAC;CAC/C,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,WAAW;IACpB;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;;;OAIG;IACH,SAAgB,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAErE;;OAEG;IACH,SAAgB,WAAW,EAAE,WAAW,CAAC;IAEzC;;OAEG;IACI,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAEzC;;OAEG;IACI,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAQ;IAEhD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD;;;OAGG;gBACS,IAAI,EAAE,MAAM;IAQxB;;OAEG;IACH,IAAW,cAAc,IAAI,aAAa,CAAC,SAAS,CAAC,CAEpD;IAED;;OAEG;IACI,YAAY,IAAI,MAAM;IAI7B;;;;;OAKG;IACI,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAe5C;;;;;OAKG;IACI,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAc1C,OAAO,CAAC,sCAAsC;IAW9C;;;;;OAKG;IACU,kBAAkB,CAC3B,MAAM,EAAE,UAAU,EAClB,qBAAqB,CAAC,EAAE,qBAAqB,GAC9C,OAAO,CAAC,kBAAkB,CAAC;IAqC9B;;;OAGG;IACI,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAevC;;;;OAIG;IACI,2BAA2B,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;CAoB7D"}
|
package/dist/smartFilter.js
CHANGED
|
@@ -2,6 +2,8 @@ import { OutputBlock } from "./blocks/outputBlock.js";
|
|
|
2
2
|
import { InternalSmartFilterRuntime } from "./runtime/smartFilterRuntime.js";
|
|
3
3
|
import { RenderTargetGenerator } from "./runtime/renderTargetGenerator.js";
|
|
4
4
|
import { AggregateBlock } from "./blocks/aggregateBlock.js";
|
|
5
|
+
import { ShaderBlock } from "./blocks/shaderBlock.js";
|
|
6
|
+
import { getBlockOutputTextureSize } from "./utils/textureUtils.js";
|
|
5
7
|
/**
|
|
6
8
|
* How long to wait for shader compilation and texture loading to complete before erroring out.
|
|
7
9
|
*/
|
|
@@ -120,6 +122,24 @@ export class SmartFilter {
|
|
|
120
122
|
initializationData.disposableResources.forEach((resource) => runtime.registerResource(resource));
|
|
121
123
|
return runtime;
|
|
122
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Resizes any intermediate textures according to the new size of the render target
|
|
127
|
+
* @param engine - The engine used to render the smart filter
|
|
128
|
+
*/
|
|
129
|
+
resize(engine) {
|
|
130
|
+
this._workWithAggregateFreeGraph(() => {
|
|
131
|
+
this.outputBlock.visit({}, (block) => {
|
|
132
|
+
var _a;
|
|
133
|
+
if (!(block instanceof ShaderBlock)) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if ((_a = block.output.runtimeData) === null || _a === void 0 ? void 0 : _a.value) {
|
|
137
|
+
const size = getBlockOutputTextureSize(this, engine, block.outputTextureOptions);
|
|
138
|
+
block.output.runtimeData.value.resize(size);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
}
|
|
123
143
|
/**
|
|
124
144
|
* @internal
|
|
125
145
|
* Merges all aggregate blocks into the smart filter graph, executes the passed-in work, then restores the aggregate blocks.
|
package/dist/smartFilter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartFilter.js","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"smartFilter.js","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,8 +63,8 @@ export function parseFragmentShader(fragmentShader) {
|
|
|
63
63
|
const finalConsts = [...fragmentShaderWithRenamedSymbols.matchAll(/^\s*(const\s.*)/gm)].map((match) => match[1]);
|
|
64
64
|
// Find the main input
|
|
65
65
|
const mainInputs = [...fragmentShaderWithRenamedSymbols.matchAll(/\S*uniform.*\s(\w*);\s*\/\/\s*main/gm)].map((match) => match[1]);
|
|
66
|
-
if (mainInputs.length
|
|
67
|
-
throw new Error("
|
|
66
|
+
if (mainInputs.length > 1) {
|
|
67
|
+
throw new Error("Shaders may have no more than 1 main input");
|
|
68
68
|
}
|
|
69
69
|
const mainInputTexture = mainInputs[0];
|
|
70
70
|
// Extract all the functions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaderConverter.js","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"shaderConverter.js","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AAGA,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AA+DrD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,cAAsB;IACtD,MAAM,EAAE,MAAM,EAAE,2BAA2B,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC3E,cAAc,GAAG,2BAA2B,CAAC;IAC7C,MAAM,SAAS,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,uBAAuB,CAAC,KAAI,SAAS,CAAC;IAEjE,oBAAoB;IACpB,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,kDAAkD,CAAC,CAAC;IACrF,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC7D,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QAClC,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAE/B,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3F,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,0CAA0C,WAAW,GAAG,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAE1C,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,WAAW,GAAG,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,WAAW,GAAG,CAAC,CAAC;QACnE,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;SAC/F,CAAC,CAAC;QAEH,IAAI,cAAc,EAAE,CAAC;YACjB,oEAAoE;YACpE,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAChE,CAAC;IACL,CAAC;IAED,MAAM,kCAAkC,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAEhF,wEAAwE;IACxE,6CAA6C;IAC7C,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,CAAC,GAAG,kCAAkC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAC7F,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CACtB,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAEjE,+CAA+C;IAC/C,MAAM,iBAAiB,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC;IACzE,IAAI,gCAAgC,GAAG,cAAc,CAAC;IACtD,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,MAAM,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7D,gCAAgC,GAAG,gCAAgC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,MAAM,oBAAoB,CAAC,CAAC;IAE7D,2BAA2B;IAC3B,MAAM,aAAa,GAAG,CAAC,GAAG,gCAAgC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAC3F,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CACtB,CAAC;IAEF,yBAAyB;IACzB,MAAM,WAAW,GAAG,CAAC,GAAG,gCAAgC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjH,sBAAsB;IACtB,MAAM,UAAU,GAAG,CAAC,GAAG,gCAAgC,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CAAC,CAAC,GAAG,CACzG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CACtB,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAEvC,4BAA4B;IAC5B,MAAM,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC,gCAAgC,CAAC,CAAC;IAEpG,MAAM,UAAU,GAAe;QAC3B,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,gBAAgB;QAChB,gBAAgB;QAChB,SAAS,EAAE,kBAAkB;KAChC,CAAC;IAEF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACH,SAAS;QACT,UAAU;QACV,QAAQ;QACR,mBAAmB,EAAE,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAA;KAClD,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,QAAgB;IAWtC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,kBAAkB,GAAqB,EAAE,CAAC;IAChD,IAAI,gBAAoC,CAAC;IACzC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,eAAe,GAAG,EAAE,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,UAAU,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACb,eAAe,IAAI,IAAI,GAAG,IAAI,CAAC;QACnC,CAAC;QACD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;gBACpB,KAAK,EAAE,CAAC;YACZ,CAAC;iBAAM,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC3B,KAAK,EAAE,CAAC;YACZ,CAAC;QACL,CAAC;QACD,IAAI,UAAU,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAC5B,UAAU,GAAG,KAAK,CAAC;YACnB,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;YAE5F,kBAAkB,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,YAAY;aACrB,CAAC,CAAC;YAEH,IAAI,cAAc,EAAE,CAAC;gBACjB,IAAI,gBAAgB,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBACpE,CAAC;gBACD,gBAAgB,GAAG,YAAY,CAAC;YACpC,CAAC;YACD,eAAe,GAAG,EAAE,CAAC;QACzB,CAAC;IACL,CAAC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,YAAoB;IAgB7C,4BAA4B;IAC5B,MAAM,kBAAkB,GAAG,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAExD,IAAI,cAAc,EAAE,CAAC;QACjB,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,KAAa;IACvC,IAAI,MAAM,GAAW,EAAE,CAAC;IACxB,IAAI,KAAK,GAAW,CAAC,CAAC;IAEtB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,KAAK,EAAE,CAAC;YACR,4DAA4D;YAC5D,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBACd,MAAM,IAAI,GAAG,CAAC;YAClB,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5B,KAAK,EAAE,CAAC;YACR,2DAA2D;YAC3D,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBACd,MAAM,IAAI,GAAG,CAAC;YAClB,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IAED,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,uBAAuB,GAAG,sBAAsB,CAAC;AAmBvD;;;;GAIG;AACH,SAAS,UAAU,CAAC,cAAsB;IAWtC,MAAM,qBAAqB,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpF,IAAI,qBAAqB,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACnD,2BAA2B,EAAE,cAAc,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACpF,CAAC;IACN,CAAC;IAED,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxF,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAClD,2BAA2B,EAAE,cAAc,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACnF,CAAC;IACN,CAAC;IAED,OAAO;QACH,MAAM,EAAE,IAAI;QACZ,2BAA2B,EAAE,cAAc;KAC9C,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,cAAsB;IAChD,OAAO,cAAc,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -1,24 +1,14 @@
|
|
|
1
|
-
import type { RenderTargetWrapper } from "@babylonjs/core/Engines/renderTargetWrapper";
|
|
2
|
-
import type { Nullable } from "@babylonjs/core/types";
|
|
3
1
|
import type { BaseBlock } from "../blocks/baseBlock";
|
|
4
2
|
import type { ShaderRuntime } from "../runtime/shaderRuntime";
|
|
5
3
|
import type { InternalSmartFilterRuntime } from "../runtime/smartFilterRuntime";
|
|
6
|
-
import type {
|
|
7
|
-
/**
|
|
8
|
-
* Tries to get a renderTargetWrapper from a ThinRenderTargetTexture, and throws an error if it fails.
|
|
9
|
-
* @param renderTargetTexture - The ThinRenderTargetTexture to get the renderTarget from.
|
|
10
|
-
* @param callerName - The name of the component calling this one, used for a more descriptive error message.
|
|
11
|
-
* @returns - The renderTarget or it throws an Error if it fails.
|
|
12
|
-
*/
|
|
13
|
-
export declare function getRenderTargetWrapper(renderTargetTexture: Nullable<ThinRenderTargetTexture>, callerName: string): RenderTargetWrapper;
|
|
4
|
+
import type { OutputBlock } from "../blocks/outputBlock.js";
|
|
14
5
|
/**
|
|
15
6
|
* Registers the final command of the command queue - the one that draws to either the canvas or
|
|
16
7
|
* renderTargetTexture.
|
|
17
|
-
* @param
|
|
18
|
-
* render to the canvas.
|
|
8
|
+
* @param outputBlock - The output block.
|
|
19
9
|
* @param runtime - The smart filter runtime to use.
|
|
20
10
|
* @param commandOwner - The owner of the command.
|
|
21
11
|
* @param shaderBlockRuntime - The shader block runtime to use.
|
|
22
12
|
*/
|
|
23
|
-
export declare function registerFinalRenderCommand(
|
|
13
|
+
export declare function registerFinalRenderCommand(outputBlock: OutputBlock, runtime: InternalSmartFilterRuntime, commandOwner: BaseBlock, shaderBlockRuntime: ShaderRuntime): void;
|
|
24
14
|
//# sourceMappingURL=renderTargetUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTargetUtils.d.ts","sourceRoot":"","sources":["../../src/utils/renderTargetUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderTargetUtils.d.ts","sourceRoot":"","sources":["../../src/utils/renderTargetUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACtC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,0BAA0B,EACnC,YAAY,EAAE,SAAS,EACvB,kBAAkB,EAAE,aAAa,GAClC,IAAI,CAeN"}
|
|
@@ -1,31 +1,17 @@
|
|
|
1
1
|
import { createCommand } from "../command/command.js";
|
|
2
|
-
/**
|
|
3
|
-
* Tries to get a renderTargetWrapper from a ThinRenderTargetTexture, and throws an error if it fails.
|
|
4
|
-
* @param renderTargetTexture - The ThinRenderTargetTexture to get the renderTarget from.
|
|
5
|
-
* @param callerName - The name of the component calling this one, used for a more descriptive error message.
|
|
6
|
-
* @returns - The renderTarget or it throws an Error if it fails.
|
|
7
|
-
*/
|
|
8
|
-
export function getRenderTargetWrapper(renderTargetTexture, callerName) {
|
|
9
|
-
const renderTarget = renderTargetTexture === null || renderTargetTexture === void 0 ? void 0 : renderTargetTexture.renderTarget;
|
|
10
|
-
if (!renderTarget) {
|
|
11
|
-
throw new Error(`${callerName} could not get a renderTarget it needed.`);
|
|
12
|
-
}
|
|
13
|
-
return renderTarget;
|
|
14
|
-
}
|
|
15
2
|
/**
|
|
16
3
|
* Registers the final command of the command queue - the one that draws to either the canvas or
|
|
17
4
|
* renderTargetTexture.
|
|
18
|
-
* @param
|
|
19
|
-
* render to the canvas.
|
|
5
|
+
* @param outputBlock - The output block.
|
|
20
6
|
* @param runtime - The smart filter runtime to use.
|
|
21
7
|
* @param commandOwner - The owner of the command.
|
|
22
8
|
* @param shaderBlockRuntime - The shader block runtime to use.
|
|
23
9
|
*/
|
|
24
|
-
export function registerFinalRenderCommand(
|
|
10
|
+
export function registerFinalRenderCommand(outputBlock, runtime, commandOwner, shaderBlockRuntime) {
|
|
25
11
|
const commandOwnerBlockType = commandOwner.blockType;
|
|
26
|
-
if (renderTargetWrapper) {
|
|
12
|
+
if (outputBlock.renderTargetWrapper) {
|
|
27
13
|
runtime.registerCommand(createCommand(`${commandOwnerBlockType}.renderToFinalTexture`, commandOwner, () => {
|
|
28
|
-
shaderBlockRuntime.
|
|
14
|
+
shaderBlockRuntime.renderToTargetWrapper(outputBlock);
|
|
29
15
|
}));
|
|
30
16
|
}
|
|
31
17
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTargetUtils.js","sourceRoot":"","sources":["../../src/utils/renderTargetUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderTargetUtils.js","sourceRoot":"","sources":["../../src/utils/renderTargetUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMtD;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACtC,WAAwB,EACxB,OAAmC,EACnC,YAAuB,EACvB,kBAAiC;IAEjC,MAAM,qBAAqB,GAAG,YAAY,CAAC,SAAS,CAAC;IACrD,IAAI,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAClC,OAAO,CAAC,eAAe,CACnB,aAAa,CAAC,GAAG,qBAAqB,uBAAuB,EAAE,YAAY,EAAE,GAAG,EAAE;YAC9E,kBAAkB,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAC1D,CAAC,CAAC,CACL,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,eAAe,CACnB,aAAa,CAAC,GAAG,qBAAqB,iBAAiB,EAAE,YAAY,EAAE,GAAG,EAAE;YACxE,kBAAkB,CAAC,cAAc,EAAE,CAAC;QACxC,CAAC,CAAC,CACL,CAAC;IACN,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TextureSize } from "@babylonjs/core/Materials/Textures/textureCreationOptions";
|
|
2
|
+
import type { OutputTextureOptions } from "../blocks/textureOptions";
|
|
3
|
+
import type { SmartFilter } from "../smartFilter";
|
|
4
|
+
import type { ThinEngine } from "@babylonjs/core/Engines/thinEngine";
|
|
5
|
+
/**
|
|
6
|
+
* Determines the output texture size for a given shader block
|
|
7
|
+
* @param smartFilter - The smart filter to use
|
|
8
|
+
* @param engine - The engine to use
|
|
9
|
+
* @param textureOptions - The texture options to use
|
|
10
|
+
* @returns - The output texture size
|
|
11
|
+
*/
|
|
12
|
+
export declare function getBlockOutputTextureSize(smartFilter: SmartFilter, engine: ThinEngine, textureOptions: OutputTextureOptions): TextureSize;
|
|
13
|
+
//# sourceMappingURL=textureUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textureUtils.d.ts","sourceRoot":"","sources":["../../src/utils/textureUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAC;AAC7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAErE;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACrC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,UAAU,EAClB,cAAc,EAAE,oBAAoB,GACrC,WAAW,CAeb"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Determines the output texture size for a given shader block
|
|
3
|
+
* @param smartFilter - The smart filter to use
|
|
4
|
+
* @param engine - The engine to use
|
|
5
|
+
* @param textureOptions - The texture options to use
|
|
6
|
+
* @returns - The output texture size
|
|
7
|
+
*/
|
|
8
|
+
export function getBlockOutputTextureSize(smartFilter, engine, textureOptions) {
|
|
9
|
+
let outputWidth;
|
|
10
|
+
let outputHeight;
|
|
11
|
+
const renderTargetWrapper = smartFilter.outputBlock.renderTargetWrapper;
|
|
12
|
+
if (renderTargetWrapper) {
|
|
13
|
+
outputWidth = renderTargetWrapper.width;
|
|
14
|
+
outputHeight = renderTargetWrapper.height;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
outputWidth = engine.getRenderWidth(true);
|
|
18
|
+
outputHeight = engine.getRenderHeight(true);
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
width: Math.floor(outputWidth * textureOptions.ratio),
|
|
22
|
+
height: Math.floor(outputHeight * textureOptions.ratio),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=textureUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textureUtils.js","sourceRoot":"","sources":["../../src/utils/textureUtils.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACrC,WAAwB,EACxB,MAAkB,EAClB,cAAoC;IAEpC,IAAI,WAAmB,CAAC;IACxB,IAAI,YAAoB,CAAC;IACzB,MAAM,mBAAmB,GAAG,WAAW,CAAC,WAAW,CAAC,mBAAmB,CAAC;IACxE,IAAI,mBAAmB,EAAE,CAAC;QACtB,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC;QACxC,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC;IAC9C,CAAC;SAAM,CAAC;QACJ,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1C,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IACD,OAAO;QACH,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC;QACrD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC;KAC1D,CAAC;AACN,CAAC"}
|
package/package.json
CHANGED
|
@@ -86,7 +86,7 @@ export class OutputBlock extends BaseBlock {
|
|
|
86
86
|
initializationData.initializationPromises.push(shaderBlockRuntime.onReadyAsync);
|
|
87
87
|
runtime.registerResource(shaderBlockRuntime);
|
|
88
88
|
|
|
89
|
-
registerFinalRenderCommand(this
|
|
89
|
+
registerFinalRenderCommand(this, runtime, this, shaderBlockRuntime);
|
|
90
90
|
|
|
91
91
|
super.generateCommandsAndGatherInitPromises(initializationData, finalOutput);
|
|
92
92
|
}
|
|
@@ -9,10 +9,11 @@ import { ShaderRuntime } from "../runtime/shaderRuntime.js";
|
|
|
9
9
|
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
10
10
|
import { createCommand } from "../command/command.js";
|
|
11
11
|
import { undecorateSymbol } from "../utils/shaderCodeUtils.js";
|
|
12
|
-
import {
|
|
12
|
+
import { registerFinalRenderCommand } from "../utils/renderTargetUtils.js";
|
|
13
13
|
import { BaseBlock } from "./baseBlock.js";
|
|
14
14
|
import { TextureFormat, TextureType, type OutputTextureOptions } from "./textureOptions.js";
|
|
15
15
|
import { editableInPropertyPage, PropertyTypeForEdition } from "../editorUtils/editableInPropertyPage.js";
|
|
16
|
+
import type { Nullable } from "@babylonjs/core/types";
|
|
16
17
|
|
|
17
18
|
const OutputTexturePropertiesGroupName = "OUTPUT TEXTURE PROPERTIES";
|
|
18
19
|
|
|
@@ -143,21 +144,16 @@ export abstract class ShaderBlock extends BaseBlock {
|
|
|
143
144
|
runtime.registerResource(shaderBlockRuntime);
|
|
144
145
|
|
|
145
146
|
if (finalOutput) {
|
|
146
|
-
registerFinalRenderCommand(
|
|
147
|
-
initializationData.outputBlock.renderTargetWrapper,
|
|
148
|
-
runtime,
|
|
149
|
-
this,
|
|
150
|
-
shaderBlockRuntime
|
|
151
|
-
);
|
|
147
|
+
registerFinalRenderCommand(initializationData.outputBlock, runtime, this, shaderBlockRuntime);
|
|
152
148
|
} else {
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
this.blockType
|
|
156
|
-
|
|
149
|
+
const renderTargetTexture = this.output.runtimeData?.value as Nullable<ThinRenderTargetTexture>;
|
|
150
|
+
if (!renderTargetTexture) {
|
|
151
|
+
throw new Error(`${this.blockType} did not have a render target texture.`);
|
|
152
|
+
}
|
|
157
153
|
|
|
158
154
|
runtime.registerCommand(
|
|
159
155
|
createCommand(`${this.blockType}.render`, this, () => {
|
|
160
|
-
shaderBlockRuntime.
|
|
156
|
+
shaderBlockRuntime.renderToTargetTexture(renderTargetTexture);
|
|
161
157
|
})
|
|
162
158
|
);
|
|
163
159
|
}
|
|
@@ -10,6 +10,7 @@ import { ShaderBlock } from "../blocks/shaderBlock.js";
|
|
|
10
10
|
import { createStrongRef } from "./strongRef.js";
|
|
11
11
|
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
12
12
|
import type { OutputTextureOptions } from "../blocks/textureOptions";
|
|
13
|
+
import { getBlockOutputTextureSize } from "../utils/textureUtils.js";
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* @internal
|
|
@@ -216,19 +217,7 @@ export class RenderTargetGenerator {
|
|
|
216
217
|
};
|
|
217
218
|
|
|
218
219
|
// Get the smartFilter output size - either from the output block's renderTargetTexture or the engine's render size
|
|
219
|
-
|
|
220
|
-
let outputHeight: number;
|
|
221
|
-
if (smartFilter.outputBlock.renderTargetWrapper) {
|
|
222
|
-
outputWidth = smartFilter.outputBlock.renderTargetWrapper.width;
|
|
223
|
-
outputHeight = smartFilter.outputBlock.renderTargetWrapper.height;
|
|
224
|
-
} else {
|
|
225
|
-
outputWidth = engine.getRenderWidth(true);
|
|
226
|
-
outputHeight = engine.getRenderHeight(true);
|
|
227
|
-
}
|
|
228
|
-
const size = {
|
|
229
|
-
width: Math.floor(outputWidth * textureOptions.ratio),
|
|
230
|
-
height: Math.floor(outputHeight * textureOptions.ratio),
|
|
231
|
-
};
|
|
220
|
+
const size = getBlockOutputTextureSize(smartFilter, engine, textureOptions);
|
|
232
221
|
|
|
233
222
|
// Creates frame buffers for effects
|
|
234
223
|
const finalRenderTarget = new ThinRenderTargetTexture(engine, size, setup);
|
|
@@ -3,12 +3,14 @@ import type { RenderTargetWrapper } from "@babylonjs/core/Engines/renderTargetWr
|
|
|
3
3
|
import type { AbstractEngine } from "@babylonjs/core/Engines/abstractEngine";
|
|
4
4
|
import type { Effect } from "@babylonjs/core/Materials/effect";
|
|
5
5
|
import { EffectWrapper } from "@babylonjs/core/Materials/effectRenderer.js";
|
|
6
|
+
import type { ThinRenderTargetTexture } from "@babylonjs/core/Materials/Textures/thinRenderTargetTexture";
|
|
6
7
|
|
|
7
8
|
import type { IDisposable } from "../IDisposable";
|
|
8
9
|
import type { ShaderProgram } from "../utils/shaderCodeUtils";
|
|
9
10
|
import { createStrongRef, type StrongRef } from "./strongRef.js";
|
|
10
11
|
import type { IDisableableBlock } from "../blocks/disableableShaderBlock";
|
|
11
12
|
import { decorateSymbol, DisableUniform, getShaderCreateOptions } from "../utils/shaderCodeUtils.js";
|
|
13
|
+
import type { OutputBlock } from "../blocks/outputBlock";
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
* The shader bindings for a ShaderBlock that can't be disabled.
|
|
@@ -118,11 +120,26 @@ export class ShaderRuntime implements IDisposable {
|
|
|
118
120
|
});
|
|
119
121
|
}
|
|
120
122
|
|
|
123
|
+
/**
|
|
124
|
+
* Renders the full screen effect into a render target.
|
|
125
|
+
* @param outputBlock - The output block to render to - assumes it has a .renderTargetWrapper
|
|
126
|
+
*/
|
|
127
|
+
public renderToTargetWrapper(outputBlock: OutputBlock): void {
|
|
128
|
+
this._renderToTargetWrapper(outputBlock.renderTargetWrapper!);
|
|
129
|
+
}
|
|
130
|
+
|
|
121
131
|
/**
|
|
122
132
|
* Renders the full screen effect into a texture.
|
|
123
|
-
* @param
|
|
133
|
+
* @param renderTargetTexture - The render target texture to render into
|
|
124
134
|
*/
|
|
125
|
-
public
|
|
135
|
+
public renderToTargetTexture(renderTargetTexture: ThinRenderTargetTexture): void {
|
|
136
|
+
const renderTargetWrapper = renderTargetTexture.renderTarget;
|
|
137
|
+
if (renderTargetWrapper) {
|
|
138
|
+
this._renderToTargetWrapper(renderTargetWrapper);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
private _renderToTargetWrapper(renderTargetWrapper: RenderTargetWrapper): void {
|
|
126
143
|
this._engine.bindFramebuffer(renderTargetWrapper);
|
|
127
144
|
this._draw(renderTargetWrapper.width, renderTargetWrapper.height);
|
|
128
145
|
this._engine.unBindFramebuffer(renderTargetWrapper);
|
|
@@ -65,7 +65,7 @@ export class InternalSmartFilterRuntime implements SmartFilterRuntime {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
|
-
*
|
|
68
|
+
* Register a resource to be disposed when the runtime is disposed.
|
|
69
69
|
* @param resource - defines the resource to dispose once the runtime is disposed
|
|
70
70
|
*/
|
|
71
71
|
public registerResource(resource: IDisposable): void {
|
package/src/smartFilter.ts
CHANGED
|
@@ -10,6 +10,9 @@ import { RenderTargetGenerator } from "./runtime/renderTargetGenerator.js";
|
|
|
10
10
|
import { AggregateBlock } from "./blocks/aggregateBlock.js";
|
|
11
11
|
import type { IEditorData } from "@babylonjs/shared-ui-components/nodeGraphSystem/interfaces/nodeLocationInfo";
|
|
12
12
|
import type { IDisposable } from "./IDisposable";
|
|
13
|
+
import { ShaderBlock } from "./blocks/shaderBlock.js";
|
|
14
|
+
import type { ThinRenderTargetTexture } from "@babylonjs/core/Materials/Textures/thinRenderTargetTexture";
|
|
15
|
+
import { getBlockOutputTextureSize } from "./utils/textureUtils.js";
|
|
13
16
|
|
|
14
17
|
/**
|
|
15
18
|
* How long to wait for shader compilation and texture loading to complete before erroring out.
|
|
@@ -203,6 +206,25 @@ export class SmartFilter {
|
|
|
203
206
|
return runtime;
|
|
204
207
|
}
|
|
205
208
|
|
|
209
|
+
/**
|
|
210
|
+
* Resizes any intermediate textures according to the new size of the render target
|
|
211
|
+
* @param engine - The engine used to render the smart filter
|
|
212
|
+
*/
|
|
213
|
+
public resize(engine: ThinEngine): void {
|
|
214
|
+
this._workWithAggregateFreeGraph(() => {
|
|
215
|
+
this.outputBlock.visit({}, (block: BaseBlock) => {
|
|
216
|
+
if (!(block instanceof ShaderBlock)) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if (block.output.runtimeData?.value) {
|
|
221
|
+
const size = getBlockOutputTextureSize(this, engine, block.outputTextureOptions);
|
|
222
|
+
(block.output.runtimeData.value as ThinRenderTargetTexture).resize(size);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
|
|
206
228
|
/**
|
|
207
229
|
* @internal
|
|
208
230
|
* Merges all aggregate blocks into the smart filter graph, executes the passed-in work, then restores the aggregate blocks.
|
|
@@ -146,8 +146,8 @@ export function parseFragmentShader(fragmentShader: string): FragmentShaderInfo
|
|
|
146
146
|
const mainInputs = [...fragmentShaderWithRenamedSymbols.matchAll(/\S*uniform.*\s(\w*);\s*\/\/\s*main/gm)].map(
|
|
147
147
|
(match) => match[1]
|
|
148
148
|
);
|
|
149
|
-
if (mainInputs.length
|
|
150
|
-
throw new Error("
|
|
149
|
+
if (mainInputs.length > 1) {
|
|
150
|
+
throw new Error("Shaders may have no more than 1 main input");
|
|
151
151
|
}
|
|
152
152
|
const mainInputTexture = mainInputs[0];
|
|
153
153
|
|
|
@@ -1,48 +1,28 @@
|
|
|
1
|
-
import type { RenderTargetWrapper } from "@babylonjs/core/Engines/renderTargetWrapper";
|
|
2
|
-
import type { Nullable } from "@babylonjs/core/types";
|
|
3
1
|
import { createCommand } from "../command/command.js";
|
|
4
2
|
import type { BaseBlock } from "../blocks/baseBlock";
|
|
5
3
|
import type { ShaderRuntime } from "../runtime/shaderRuntime";
|
|
6
4
|
import type { InternalSmartFilterRuntime } from "../runtime/smartFilterRuntime";
|
|
7
|
-
import type {
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Tries to get a renderTargetWrapper from a ThinRenderTargetTexture, and throws an error if it fails.
|
|
11
|
-
* @param renderTargetTexture - The ThinRenderTargetTexture to get the renderTarget from.
|
|
12
|
-
* @param callerName - The name of the component calling this one, used for a more descriptive error message.
|
|
13
|
-
* @returns - The renderTarget or it throws an Error if it fails.
|
|
14
|
-
*/
|
|
15
|
-
export function getRenderTargetWrapper(
|
|
16
|
-
renderTargetTexture: Nullable<ThinRenderTargetTexture>,
|
|
17
|
-
callerName: string
|
|
18
|
-
): RenderTargetWrapper {
|
|
19
|
-
const renderTarget = renderTargetTexture?.renderTarget;
|
|
20
|
-
if (!renderTarget) {
|
|
21
|
-
throw new Error(`${callerName} could not get a renderTarget it needed.`);
|
|
22
|
-
}
|
|
23
|
-
return renderTarget;
|
|
24
|
-
}
|
|
5
|
+
import type { OutputBlock } from "../blocks/outputBlock.js";
|
|
25
6
|
|
|
26
7
|
/**
|
|
27
8
|
* Registers the final command of the command queue - the one that draws to either the canvas or
|
|
28
9
|
* renderTargetTexture.
|
|
29
|
-
* @param
|
|
30
|
-
* render to the canvas.
|
|
10
|
+
* @param outputBlock - The output block.
|
|
31
11
|
* @param runtime - The smart filter runtime to use.
|
|
32
12
|
* @param commandOwner - The owner of the command.
|
|
33
13
|
* @param shaderBlockRuntime - The shader block runtime to use.
|
|
34
14
|
*/
|
|
35
15
|
export function registerFinalRenderCommand(
|
|
36
|
-
|
|
16
|
+
outputBlock: OutputBlock,
|
|
37
17
|
runtime: InternalSmartFilterRuntime,
|
|
38
18
|
commandOwner: BaseBlock,
|
|
39
19
|
shaderBlockRuntime: ShaderRuntime
|
|
40
20
|
): void {
|
|
41
21
|
const commandOwnerBlockType = commandOwner.blockType;
|
|
42
|
-
if (renderTargetWrapper) {
|
|
22
|
+
if (outputBlock.renderTargetWrapper) {
|
|
43
23
|
runtime.registerCommand(
|
|
44
24
|
createCommand(`${commandOwnerBlockType}.renderToFinalTexture`, commandOwner, () => {
|
|
45
|
-
shaderBlockRuntime.
|
|
25
|
+
shaderBlockRuntime.renderToTargetWrapper(outputBlock);
|
|
46
26
|
})
|
|
47
27
|
);
|
|
48
28
|
} else {
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { TextureSize } from "@babylonjs/core/Materials/Textures/textureCreationOptions";
|
|
2
|
+
import type { OutputTextureOptions } from "../blocks/textureOptions";
|
|
3
|
+
import type { SmartFilter } from "../smartFilter";
|
|
4
|
+
import type { ThinEngine } from "@babylonjs/core/Engines/thinEngine";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Determines the output texture size for a given shader block
|
|
8
|
+
* @param smartFilter - The smart filter to use
|
|
9
|
+
* @param engine - The engine to use
|
|
10
|
+
* @param textureOptions - The texture options to use
|
|
11
|
+
* @returns - The output texture size
|
|
12
|
+
*/
|
|
13
|
+
export function getBlockOutputTextureSize(
|
|
14
|
+
smartFilter: SmartFilter,
|
|
15
|
+
engine: ThinEngine,
|
|
16
|
+
textureOptions: OutputTextureOptions
|
|
17
|
+
): TextureSize {
|
|
18
|
+
let outputWidth: number;
|
|
19
|
+
let outputHeight: number;
|
|
20
|
+
const renderTargetWrapper = smartFilter.outputBlock.renderTargetWrapper;
|
|
21
|
+
if (renderTargetWrapper) {
|
|
22
|
+
outputWidth = renderTargetWrapper.width;
|
|
23
|
+
outputHeight = renderTargetWrapper.height;
|
|
24
|
+
} else {
|
|
25
|
+
outputWidth = engine.getRenderWidth(true);
|
|
26
|
+
outputHeight = engine.getRenderHeight(true);
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
width: Math.floor(outputWidth * textureOptions.ratio),
|
|
30
|
+
height: Math.floor(outputHeight * textureOptions.ratio),
|
|
31
|
+
};
|
|
32
|
+
}
|