@babylonjs/smart-filters 0.3.17-alpha → 0.4.0-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/disableableShaderBlock.d.ts +56 -0
- package/dist/blocks/disableableShaderBlock.d.ts.map +1 -0
- package/dist/blocks/disableableShaderBlock.js +68 -0
- package/dist/blocks/disableableShaderBlock.js.map +1 -0
- package/dist/blocks/inputBlock.d.ts +2 -2
- package/dist/blocks/inputBlock.d.ts.map +1 -1
- package/dist/blocks/inputBlock.js +1 -1
- package/dist/blocks/inputBlock.js.map +1 -1
- package/dist/blocks/outputBlock.js +2 -2
- package/dist/blocks/outputBlock.js.map +1 -1
- package/dist/blocks/outputBlock.shader.d.ts.map +1 -1
- package/dist/blocks/outputBlock.shader.js +2 -5
- package/dist/blocks/outputBlock.shader.js.map +1 -1
- package/dist/blocks/shaderBlock.d.ts +4 -4
- package/dist/blocks/shaderBlock.d.ts.map +1 -1
- package/dist/blocks/shaderBlock.js +2 -2
- package/dist/blocks/shaderBlock.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/optimization/optimizedShaderBlock.d.ts +5 -5
- package/dist/optimization/optimizedShaderBlock.d.ts.map +1 -1
- package/dist/optimization/optimizedShaderBlock.js +2 -2
- package/dist/optimization/optimizedShaderBlock.js.map +1 -1
- package/dist/optimization/smartFilterOptimizer.d.ts +10 -0
- package/dist/optimization/smartFilterOptimizer.d.ts.map +1 -1
- package/dist/optimization/smartFilterOptimizer.js +30 -3
- package/dist/optimization/smartFilterOptimizer.js.map +1 -1
- package/dist/runtime/shaderRuntime.d.ts +5 -4
- package/dist/runtime/shaderRuntime.d.ts.map +1 -1
- package/dist/runtime/shaderRuntime.js +4 -4
- package/dist/runtime/shaderRuntime.js.map +1 -1
- package/dist/utils/buildTools/shaderConverter.d.ts.map +1 -1
- package/dist/utils/buildTools/shaderConverter.js +7 -10
- package/dist/utils/buildTools/shaderConverter.js.map +1 -1
- package/dist/utils/shaderCodeUtils.d.ts +6 -5
- package/dist/utils/shaderCodeUtils.d.ts.map +1 -1
- package/dist/utils/shaderCodeUtils.js +19 -12
- package/dist/utils/shaderCodeUtils.js.map +1 -1
- package/package.json +1 -1
- package/src/blocks/disableableShaderBlock.ts +100 -0
- package/src/blocks/inputBlock.ts +3 -3
- package/src/blocks/outputBlock.shader.ts +2 -5
- package/src/blocks/outputBlock.ts +2 -2
- package/src/blocks/shaderBlock.ts +4 -4
- package/src/index.ts +4 -3
- package/src/optimization/optimizedShaderBlock.ts +7 -7
- package/src/optimization/smartFilterOptimizer.ts +43 -5
- package/src/runtime/shaderRuntime.ts +8 -7
- package/src/utils/buildTools/shaderConverter.ts +8 -14
- package/src/utils/shaderCodeUtils.ts +29 -16
- package/dist/blocks/disableableBlock.d.ts +0 -30
- package/dist/blocks/disableableBlock.d.ts.map +0 -1
- package/dist/blocks/disableableBlock.js +0 -22
- package/dist/blocks/disableableBlock.js.map +0 -1
- package/src/blocks/disableableBlock.ts +0 -40
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { SmartFilter } from "../smartFilter.js";
|
|
2
|
+
import type { ConnectionPoint } from "../connection/connectionPoint.js";
|
|
3
|
+
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
4
|
+
import { ShaderBlock } from "./shaderBlock.js";
|
|
5
|
+
/**
|
|
6
|
+
* The interface that describes the disableable block.
|
|
7
|
+
*/
|
|
8
|
+
export interface IDisableableBlock {
|
|
9
|
+
/**
|
|
10
|
+
* The disabled connection point of the block.
|
|
11
|
+
*/
|
|
12
|
+
disabled: ConnectionPoint<ConnectionPointType.Boolean>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The strategy to use for making a block disableable.
|
|
16
|
+
*/
|
|
17
|
+
export declare enum BlockDisableStrategy {
|
|
18
|
+
/**
|
|
19
|
+
* The shader code is responsible for defining and consulting a uniform named disabled
|
|
20
|
+
* and no-oping (returning texture2D(mainInputTexture, vUV)) if the value is true.
|
|
21
|
+
*/
|
|
22
|
+
Manual = 0,
|
|
23
|
+
/**
|
|
24
|
+
* The Smart Filter system will automatically add code to sample the mainInputTexture and return immediately if disabled,
|
|
25
|
+
* and otherwise use the value within the block's shader code. If you need to modify UVs before sampling the default input texture,
|
|
26
|
+
* you'll need to use the Manual strategy instead.
|
|
27
|
+
*/
|
|
28
|
+
AutoSample = 1
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A ShaderBlock that can be disabled. The optimizer can optionally remove disabled blocks from the graph,
|
|
32
|
+
* or they can be controlled by the disabled connection point at runtime. If disabled, they pass the
|
|
33
|
+
* mainInputTexture through to the output connection point.
|
|
34
|
+
*/
|
|
35
|
+
export declare abstract class DisableableShaderBlock extends ShaderBlock implements IDisableableBlock {
|
|
36
|
+
/**
|
|
37
|
+
* The disabled connection point of the block.
|
|
38
|
+
*/
|
|
39
|
+
readonly disabled: import("../connection/connectionPointWithDefault.js").ConnectionPointWithDefault<ConnectionPointType.Boolean>;
|
|
40
|
+
/**
|
|
41
|
+
* The strategy to use for making this block disableable.
|
|
42
|
+
*/
|
|
43
|
+
readonly blockDisableStrategy: BlockDisableStrategy;
|
|
44
|
+
private static _HasModifiedShaderCode;
|
|
45
|
+
private get _hasModifiedShaderCode();
|
|
46
|
+
private set _hasModifiedShaderCode(value);
|
|
47
|
+
/**
|
|
48
|
+
* Instantiates a new block.
|
|
49
|
+
* @param smartFilter - Defines the smart filter the block belongs to
|
|
50
|
+
* @param name - Defines the name of the block
|
|
51
|
+
* @param disableOptimization - Defines if the block should not be optimized (default: false)
|
|
52
|
+
* @param disableStrategy - Defines the strategy to use for making this block disableable (default: BlockDisableStrategy.AutoSample)
|
|
53
|
+
*/
|
|
54
|
+
constructor(smartFilter: SmartFilter, name: string, disableOptimization?: boolean, disableStrategy?: BlockDisableStrategy);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=disableableShaderBlock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disableableShaderBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/disableableShaderBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B;;OAEG;IACH,QAAQ,EAAE,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;CAC1D;AAED;;GAEG;AACH,oBAAY,oBAAoB;IAC5B;;;OAGG;IACH,MAAM,IAAI;IAEV;;;;OAIG;IACH,UAAU,IAAI;CACjB;AAED;;;;GAIG;AACH,8BAAsB,sBAAuB,SAAQ,WAAY,YAAW,iBAAiB;IACzF;;OAEG;IACH,SAAgB,QAAQ,gHAItB;IAEF;;OAEG;IACH,SAAgB,oBAAoB,EAAE,oBAAoB,CAAC;IAQ3D,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAS;IAC9C,OAAO,KAAK,sBAAsB,GAEjC;IACD,OAAO,KAAK,sBAAsB,QAEjC;IAED;;;;;;OAMG;gBAEC,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,EACZ,mBAAmB,UAAQ,EAC3B,eAAe,uBAAkC;CAkBxD"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
2
|
+
import { createStrongRef } from "../runtime/strongRef.js";
|
|
3
|
+
import { ShaderBlock } from "./shaderBlock.js";
|
|
4
|
+
import { injectAutoSampleDisableCode } from "../utils/shaderCodeUtils.js";
|
|
5
|
+
/**
|
|
6
|
+
* The strategy to use for making a block disableable.
|
|
7
|
+
*/
|
|
8
|
+
export var BlockDisableStrategy;
|
|
9
|
+
(function (BlockDisableStrategy) {
|
|
10
|
+
/**
|
|
11
|
+
* The shader code is responsible for defining and consulting a uniform named disabled
|
|
12
|
+
* and no-oping (returning texture2D(mainInputTexture, vUV)) if the value is true.
|
|
13
|
+
*/
|
|
14
|
+
BlockDisableStrategy[BlockDisableStrategy["Manual"] = 0] = "Manual";
|
|
15
|
+
/**
|
|
16
|
+
* The Smart Filter system will automatically add code to sample the mainInputTexture and return immediately if disabled,
|
|
17
|
+
* and otherwise use the value within the block's shader code. If you need to modify UVs before sampling the default input texture,
|
|
18
|
+
* you'll need to use the Manual strategy instead.
|
|
19
|
+
*/
|
|
20
|
+
BlockDisableStrategy[BlockDisableStrategy["AutoSample"] = 1] = "AutoSample";
|
|
21
|
+
})(BlockDisableStrategy || (BlockDisableStrategy = {}));
|
|
22
|
+
/**
|
|
23
|
+
* A ShaderBlock that can be disabled. The optimizer can optionally remove disabled blocks from the graph,
|
|
24
|
+
* or they can be controlled by the disabled connection point at runtime. If disabled, they pass the
|
|
25
|
+
* mainInputTexture through to the output connection point.
|
|
26
|
+
*/
|
|
27
|
+
export class DisableableShaderBlock extends ShaderBlock {
|
|
28
|
+
get _hasModifiedShaderCode() {
|
|
29
|
+
return this.constructor._HasModifiedShaderCode;
|
|
30
|
+
}
|
|
31
|
+
set _hasModifiedShaderCode(value) {
|
|
32
|
+
this.constructor._HasModifiedShaderCode = value;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Instantiates a new block.
|
|
36
|
+
* @param smartFilter - Defines the smart filter the block belongs to
|
|
37
|
+
* @param name - Defines the name of the block
|
|
38
|
+
* @param disableOptimization - Defines if the block should not be optimized (default: false)
|
|
39
|
+
* @param disableStrategy - Defines the strategy to use for making this block disableable (default: BlockDisableStrategy.AutoSample)
|
|
40
|
+
*/
|
|
41
|
+
constructor(smartFilter, name, disableOptimization = false, disableStrategy = BlockDisableStrategy.AutoSample) {
|
|
42
|
+
super(smartFilter, name, disableOptimization);
|
|
43
|
+
/**
|
|
44
|
+
* The disabled connection point of the block.
|
|
45
|
+
*/
|
|
46
|
+
this.disabled = this._registerOptionalInput("disabled", ConnectionPointType.Boolean, createStrongRef(false));
|
|
47
|
+
this.blockDisableStrategy = disableStrategy;
|
|
48
|
+
// If we haven't already modified the shader code for this block type, do so now
|
|
49
|
+
if (!this._hasModifiedShaderCode) {
|
|
50
|
+
this._hasModifiedShaderCode = true;
|
|
51
|
+
// Apply the disable strategy
|
|
52
|
+
const shaderProgram = this.getShaderProgram();
|
|
53
|
+
switch (this.blockDisableStrategy) {
|
|
54
|
+
case BlockDisableStrategy.AutoSample:
|
|
55
|
+
injectAutoSampleDisableCode(shaderProgram);
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// The shader code is a static per block type. When an instance of a block is created, we may need to alter
|
|
62
|
+
// that code based on the block's disable strategy. We only want to do this once per block type, or we could
|
|
63
|
+
// incorrectly modify the shader code multiple times (once per block instance). Here we use a static boolean
|
|
64
|
+
// which will be per block type to track if we've already modified the shader code for this block type.
|
|
65
|
+
// This is more memory efficient than the alternative of making a copy of the shader code for each block instance
|
|
66
|
+
// and modifying each copy.
|
|
67
|
+
DisableableShaderBlock._HasModifiedShaderCode = false;
|
|
68
|
+
//# sourceMappingURL=disableableShaderBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disableableShaderBlock.js","sourceRoot":"","sources":["../../src/blocks/disableableShaderBlock.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAY1E;;GAEG;AACH,MAAM,CAAN,IAAY,oBAaX;AAbD,WAAY,oBAAoB;IAC5B;;;OAGG;IACH,mEAAU,CAAA;IAEV;;;;OAIG;IACH,2EAAc,CAAA;AAClB,CAAC,EAbW,oBAAoB,KAApB,oBAAoB,QAa/B;AAED;;;;GAIG;AACH,MAAM,OAAgB,sBAAuB,SAAQ,WAAW;IAsB5D,IAAY,sBAAsB;QAC9B,OAAQ,IAAI,CAAC,WAA6C,CAAC,sBAAsB,CAAC;IACtF,CAAC;IACD,IAAY,sBAAsB,CAAC,KAAc;QAC5C,IAAI,CAAC,WAA6C,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACvF,CAAC;IAED;;;;;;OAMG;IACH,YACI,WAAwB,EACxB,IAAY,EACZ,mBAAmB,GAAG,KAAK,EAC3B,eAAe,GAAG,oBAAoB,CAAC,UAAU;QAEjD,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAzClD;;WAEG;QACa,aAAQ,GAAG,IAAI,CAAC,sBAAsB,CAClD,UAAU,EACV,mBAAmB,CAAC,OAAO,EAC3B,eAAe,CAAC,KAAK,CAAC,CACzB,CAAC;QAmCE,IAAI,CAAC,oBAAoB,GAAG,eAAe,CAAC;QAE5C,gFAAgF;QAChF,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC/B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YAEnC,6BAA6B;YAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9C,QAAQ,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAChC,KAAK,oBAAoB,CAAC,UAAU;oBAChC,2BAA2B,CAAC,aAAa,CAAC,CAAC;oBAC3C,MAAM;YACd,CAAC;QACL,CAAC;IACL,CAAC;;AA1CD,2GAA2G;AAC3G,4GAA4G;AAC5G,4GAA4G;AAC5G,uGAAuG;AACvG,iHAAiH;AACjH,2BAA2B;AACZ,6CAAsB,GAAG,KAAK,AAAR,CAAS"}
|
|
@@ -2,7 +2,7 @@ import type { SmartFilter } from "../smartFilter";
|
|
|
2
2
|
import type { ConnectionPointValue } from "../connection/connectionPointType";
|
|
3
3
|
import type { RuntimeData } from "../connection/connectionPoint";
|
|
4
4
|
import type { ConnectionPointWithDefault } from "../connection/connectionPointWithDefault";
|
|
5
|
-
import type {
|
|
5
|
+
import type { DisableableShaderBlock } from "./disableableShaderBlock";
|
|
6
6
|
import { BaseBlock } from "../blocks/baseBlock.js";
|
|
7
7
|
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
8
8
|
import type { Nullable } from "@babylonjs/core/types";
|
|
@@ -17,7 +17,7 @@ export declare function isTextureInputBlock(block: BaseBlock): block is InputBlo
|
|
|
17
17
|
* @param block - The block to check
|
|
18
18
|
* @returns true if the block is a disableable block, otherwise false
|
|
19
19
|
*/
|
|
20
|
-
export declare function
|
|
20
|
+
export declare function isDisableableShaderBlock(block: BaseBlock): block is DisableableShaderBlock;
|
|
21
21
|
/**
|
|
22
22
|
* This base class exists to provide a type that the serializer can use to represent
|
|
23
23
|
* any InputBlock without knowing the exact type it is.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/inputBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAC3F,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"inputBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/inputBlock.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ export function isTextureInputBlock(block) {
|
|
|
22
22
|
* @param block - The block to check
|
|
23
23
|
* @returns true if the block is a disableable block, otherwise false
|
|
24
24
|
*/
|
|
25
|
-
export function
|
|
25
|
+
export function isDisableableShaderBlock(block) {
|
|
26
26
|
return block.disabled !== undefined;
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputBlock.js","sourceRoot":"","sources":["../../src/blocks/inputBlock.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAG3E;;;;GAIG;AACH,SAAS,aAAa,CAClB,KAA+C;IAE/C,OAAO,KAAK,IAAK,KAA0C,CAAC,KAAK,KAAK,SAAS,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAgB;IAChD,OAAQ,KAAiD,CAAC,IAAI,KAAK,mBAAmB,CAAC,OAAO,CAAC;AACnG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"inputBlock.js","sourceRoot":"","sources":["../../src/blocks/inputBlock.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAG3E;;;;GAIG;AACH,SAAS,aAAa,CAClB,KAA+C;IAE/C,OAAO,KAAK,IAAK,KAA0C,CAAC,KAAK,KAAK,SAAS,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAgB;IAChD,OAAQ,KAAiD,CAAC,IAAI,KAAK,mBAAmB,CAAC,OAAO,CAAC;AACnG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAgB;IACrD,OAAQ,KAAgC,CAAC,QAAQ,KAAK,SAAS,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,MAAM,OAAgB,cAAe,SAAQ,SAAS;;AAClD;;GAEG;AACoB,wBAAS,GAAG,YAAY,CAAC;AA+DpD;;;;;;GAMG;AACH,MAAM,OAAO,UAA0C,SAAQ,cAAc;IAgBzE;;OAEG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,IAAW,YAAY,CAAC,KAAqB;QACzC,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;IACpC,CAAC;IAED;;;;;;;OAOG;IACH,YACI,WAAwB,EACxB,IAAY,EACZ,IAAO,EACP,YAAsD;QAEtD,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAjC7B;;WAEG;QACI,eAAU,GAAsC,IAAI,CAAC;QA+BxD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,sCAAsC;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,0BAA0B,CACzC,QAAQ,EACR,IAAI,EACJ,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAC7E,CAAC;QAEF,4FAA4F;QAC5F,IAAI,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACrC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
2
2
|
import { BaseBlock } from "./baseBlock.js";
|
|
3
|
-
import {
|
|
3
|
+
import { ShaderBinding, ShaderRuntime } from "../runtime/shaderRuntime.js";
|
|
4
4
|
import { registerFinalRenderCommand } from "../utils/renderTargetUtils.js";
|
|
5
5
|
import { shaderProgram, uniforms } from "./outputBlock.shader.js";
|
|
6
6
|
/**
|
|
@@ -73,7 +73,7 @@ OutputBlock.ClassName = "OutputBlock";
|
|
|
73
73
|
/**
|
|
74
74
|
* Shader binding to use when the OutputBlock is directly connected to a texture InputBlock.
|
|
75
75
|
*/
|
|
76
|
-
class OutputShaderBinding extends
|
|
76
|
+
class OutputShaderBinding extends ShaderBinding {
|
|
77
77
|
/**
|
|
78
78
|
* Creates a new shader binding instance.
|
|
79
79
|
* @param inputTexture - defines the input texture to copy
|
|
@@ -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,
|
|
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;IACP,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,CAAC,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;YAExF,KAAK,CAAC,qCAAqC,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QACjF,CAAC;IACL,CAAC;;AAzED;;GAEG;AACoB,qBAAS,GAAG,aAAa,AAAhB,CAAiB;AAyErD;;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":"outputBlock.shader.d.ts","sourceRoot":"","sources":["../../src/blocks/outputBlock.shader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"outputBlock.shader.d.ts","sourceRoot":"","sources":["../../src/blocks/outputBlock.shader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,aAmB3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ;;CAEpB,CAAC"}
|
|
@@ -5,17 +5,14 @@ export const shaderProgram = {
|
|
|
5
5
|
vertex: undefined,
|
|
6
6
|
fragment: {
|
|
7
7
|
uniform: `
|
|
8
|
-
uniform sampler2D _input_; // main
|
|
9
|
-
uniform bool _disabled_;`,
|
|
8
|
+
uniform sampler2D _input_; // main`,
|
|
10
9
|
mainInputTexture: "_input_",
|
|
11
10
|
mainFunctionName: "_copy_",
|
|
12
11
|
functions: [
|
|
13
12
|
{
|
|
14
13
|
name: "_copy_",
|
|
15
14
|
code: `
|
|
16
|
-
vec4 _copy_(vec2 vUV) {
|
|
17
|
-
if (_disabled_) return texture2D(_input_, vUV);
|
|
18
|
-
// main
|
|
15
|
+
vec4 _copy_(vec2 vUV) {
|
|
19
16
|
return texture2D(_input_, vUV);
|
|
20
17
|
}
|
|
21
18
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outputBlock.shader.js","sourceRoot":"","sources":["../../src/blocks/outputBlock.shader.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB;IACxC,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE;QACN,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"outputBlock.shader.js","sourceRoot":"","sources":["../../src/blocks/outputBlock.shader.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB;IACxC,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE;QACN,OAAO,EAAE;+CAC8B;QACvC,gBAAgB,EAAE,SAAS;QAC3B,gBAAgB,EAAE,QAAQ;QAC1B,SAAS,EAAE;YACP;gBACI,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE;;;;;qBAKD;aACR;SACJ;KACJ;CACJ,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACpB,KAAK,EAAE,OAAO;CACjB,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "@babylonjs/core/Engines/Extensions/engine.renderTarget.js";
|
|
2
2
|
import type { InitializationData, SmartFilter } from "../smartFilter";
|
|
3
3
|
import type { ShaderProgram } from "../utils/shaderCodeUtils";
|
|
4
|
-
import type {
|
|
4
|
+
import type { ShaderBinding } from "../runtime/shaderRuntime";
|
|
5
5
|
import type { ConnectionPoint } from "../connection/connectionPoint";
|
|
6
6
|
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
7
|
-
import {
|
|
7
|
+
import { BaseBlock } from "./baseBlock.js";
|
|
8
8
|
/**
|
|
9
9
|
* This is the base class for all shader blocks.
|
|
10
10
|
*
|
|
@@ -12,7 +12,7 @@ import { DisableableBlock } from "./disableableBlock.js";
|
|
|
12
12
|
*
|
|
13
13
|
* The only required function to implement is the bind function.
|
|
14
14
|
*/
|
|
15
|
-
export declare abstract class ShaderBlock extends
|
|
15
|
+
export declare abstract class ShaderBlock extends BaseBlock {
|
|
16
16
|
/**
|
|
17
17
|
* The class name of the block.
|
|
18
18
|
*/
|
|
@@ -22,7 +22,7 @@ export declare abstract class ShaderBlock extends DisableableBlock {
|
|
|
22
22
|
* It should throw an error if required inputs are missing.
|
|
23
23
|
* @returns The class instance that binds the data to the effect
|
|
24
24
|
*/
|
|
25
|
-
abstract getShaderBinding():
|
|
25
|
+
abstract getShaderBinding(): ShaderBinding;
|
|
26
26
|
/**
|
|
27
27
|
* The shader program (vertex and fragment code) to use to render the block
|
|
28
28
|
*/
|
|
@@ -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,
|
|
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;AAE3C;;;;;;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,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IAEpC;;OAEG;IACH,IAAW,YAAY,IAOQ,MAAM,CALpC;IAED;;OAEG;IACH,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAEpC;IAED;;;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;CAgCV"}
|
|
@@ -2,9 +2,9 @@ import "@babylonjs/core/Engines/Extensions/engine.renderTarget.js";
|
|
|
2
2
|
import { ShaderRuntime } from "../runtime/shaderRuntime.js";
|
|
3
3
|
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
4
4
|
import { createCommand } from "../command/command.js";
|
|
5
|
-
import { DisableableBlock } from "./disableableBlock.js";
|
|
6
5
|
import { undecorateSymbol } from "../utils/shaderCodeUtils.js";
|
|
7
6
|
import { getRenderTargetWrapper, registerFinalRenderCommand } from "../utils/renderTargetUtils.js";
|
|
7
|
+
import { BaseBlock } from "./baseBlock.js";
|
|
8
8
|
/**
|
|
9
9
|
* This is the base class for all shader blocks.
|
|
10
10
|
*
|
|
@@ -12,7 +12,7 @@ import { getRenderTargetWrapper, registerFinalRenderCommand } from "../utils/ren
|
|
|
12
12
|
*
|
|
13
13
|
* The only required function to implement is the bind function.
|
|
14
14
|
*/
|
|
15
|
-
export class ShaderBlock extends
|
|
15
|
+
export class ShaderBlock extends BaseBlock {
|
|
16
16
|
/**
|
|
17
17
|
* Gets the texture ratio of the output texture.
|
|
18
18
|
*/
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"shaderBlock.js","sourceRoot":"","sources":["../../src/blocks/shaderBlock.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,10 +14,11 @@ export { BaseBlock } from "./blocks/baseBlock.js";
|
|
|
14
14
|
export { InputBlock, type InputBlockEditorData } from "./blocks/inputBlock.js";
|
|
15
15
|
export { type AnyInputBlock } from "./blocks/inputBlock.js";
|
|
16
16
|
export { ShaderBlock } from "./blocks/shaderBlock.js";
|
|
17
|
+
export { DisableableShaderBlock, BlockDisableStrategy as DisableStrategy } from "./blocks/disableableShaderBlock.js";
|
|
17
18
|
export { AggregateBlock } from "./blocks/aggregateBlock.js";
|
|
18
|
-
export { ShaderBinding, ShaderRuntime } from "./runtime/shaderRuntime.js";
|
|
19
|
-
export { type ShaderProgram
|
|
20
|
-
export { type IDisableableBlock } from "./blocks/
|
|
19
|
+
export { DisableableShaderBinding, ShaderBinding, ShaderRuntime } from "./runtime/shaderRuntime.js";
|
|
20
|
+
export { type ShaderProgram } from "./utils/shaderCodeUtils.js";
|
|
21
|
+
export { type IDisableableBlock } from "./blocks/disableableShaderBlock.js";
|
|
21
22
|
export { type SmartFilterRuntime } from "./runtime/smartFilterRuntime.js";
|
|
22
23
|
export { InternalSmartFilterRuntime } from "./runtime/smartFilterRuntime.js";
|
|
23
24
|
export { RenderTargetGenerator } from "./runtime/renderTargetGenerator.js";
|
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,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EACH,iCAAiC,EACjC,4BAA4B,GAC/B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EACH,iCAAiC,EACjC,4BAA4B,GAC/B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,IAAI,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,10 +14,11 @@ export { BaseBlock } from "./blocks/baseBlock.js";
|
|
|
14
14
|
export { InputBlock } from "./blocks/inputBlock.js";
|
|
15
15
|
export {} from "./blocks/inputBlock.js";
|
|
16
16
|
export { ShaderBlock } from "./blocks/shaderBlock.js";
|
|
17
|
+
export { DisableableShaderBlock, BlockDisableStrategy as DisableStrategy } from "./blocks/disableableShaderBlock.js";
|
|
17
18
|
export { AggregateBlock } from "./blocks/aggregateBlock.js";
|
|
18
|
-
export { ShaderBinding, ShaderRuntime } from "./runtime/shaderRuntime.js";
|
|
19
|
-
export {
|
|
20
|
-
export {} from "./blocks/
|
|
19
|
+
export { DisableableShaderBinding, ShaderBinding, ShaderRuntime } from "./runtime/shaderRuntime.js";
|
|
20
|
+
export {} from "./utils/shaderCodeUtils.js";
|
|
21
|
+
export {} from "./blocks/disableableShaderBlock.js";
|
|
21
22
|
export {} from "./runtime/smartFilterRuntime.js";
|
|
22
23
|
export { InternalSmartFilterRuntime } from "./runtime/smartFilterRuntime.js";
|
|
23
24
|
export { RenderTargetGenerator } from "./runtime/renderTargetGenerator.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAkB,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAA6B,MAAM,qCAAqC,CAAC;AAChF,OAAO,EACH,iCAAiC,EACjC,4BAA4B,GAC/B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAoB,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAA6B,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAsB,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAkB,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAA6B,MAAM,qCAAqC,CAAC;AAChF,OAAO,EACH,iCAAiC,EACjC,4BAA4B,GAC/B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAoB,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAA6B,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAsB,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,IAAI,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAsB,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAA0B,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAA2B,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC"}
|
|
@@ -3,13 +3,13 @@ import type { SmartFilter } from "../smartFilter";
|
|
|
3
3
|
import type { ShaderProgram } from "../utils/shaderCodeUtils";
|
|
4
4
|
import type { RuntimeData } from "../connection/connectionPoint";
|
|
5
5
|
import { ShaderBlock } from "../blocks/shaderBlock.js";
|
|
6
|
-
import {
|
|
6
|
+
import { ShaderBinding } from "../runtime/shaderRuntime.js";
|
|
7
7
|
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
8
8
|
/**
|
|
9
9
|
* The shader bindings for the OptimizedShader block.
|
|
10
10
|
* @internal
|
|
11
11
|
*/
|
|
12
|
-
export declare class OptimizedShaderBinding extends
|
|
12
|
+
export declare class OptimizedShaderBinding extends ShaderBinding {
|
|
13
13
|
private _shaderBindings;
|
|
14
14
|
private _inputTextures;
|
|
15
15
|
/**
|
|
@@ -17,7 +17,7 @@ export declare class OptimizedShaderBinding extends Binding {
|
|
|
17
17
|
* @param shaderBindings - The list of shader bindings to process
|
|
18
18
|
* @param inputTextures - The list of input textures to bind
|
|
19
19
|
*/
|
|
20
|
-
constructor(shaderBindings:
|
|
20
|
+
constructor(shaderBindings: ShaderBinding[], inputTextures: {
|
|
21
21
|
[name: string]: RuntimeData<ConnectionPointType.Texture>;
|
|
22
22
|
});
|
|
23
23
|
/**
|
|
@@ -65,11 +65,11 @@ export declare class OptimizedShaderBlock extends ShaderBlock {
|
|
|
65
65
|
* Sets the list of shader bindings to use to render the block.
|
|
66
66
|
* @param shaderBindings - The list of shader bindings to use to render the block
|
|
67
67
|
*/
|
|
68
|
-
setShaderBindings(shaderBindings:
|
|
68
|
+
setShaderBindings(shaderBindings: ShaderBinding[]): void;
|
|
69
69
|
/**
|
|
70
70
|
* Get the class instance that binds all the required data to the shader (effect) when rendering.
|
|
71
71
|
* @returns The class instance that binds the data to the effect
|
|
72
72
|
*/
|
|
73
|
-
getShaderBinding():
|
|
73
|
+
getShaderBinding(): ShaderBinding;
|
|
74
74
|
}
|
|
75
75
|
//# sourceMappingURL=optimizedShaderBlock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimizedShaderBlock.d.ts","sourceRoot":"","sources":["../../src/optimization/optimizedShaderBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAG/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"optimizedShaderBlock.d.ts","sourceRoot":"","sources":["../../src/optimization/optimizedShaderBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAG/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACrD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,cAAc,CAA+D;IAErF;;;;OAIG;gBAEC,cAAc,EAAE,aAAa,EAAE,EAC/B,aAAa,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;KAAE;IAQ/E;;;;;OAKG;IACa,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAW5E;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;IACjD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,cAAc,CAAoE;IAC1F,OAAO,CAAC,cAAc,CAAgB;IAEtC;;OAEG;IACH,OAAuB,SAAS,SAA0B;IAE1D;;OAEG;IACH,IAAoB,OAAO,IAAI,OAAO,CAErC;IAED;;;;OAIG;gBACS,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IAOlD;;;OAGG;IACa,gBAAgB,IAAI,aAAa;IAIjD;;;OAGG;IACI,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAI3D;;;OAGG;IACI,iBAAiB,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,IAAI;IAI/D;;;OAGG;IACI,gBAAgB,IAAI,aAAa;CAmB3C"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ShaderBlock } from "../blocks/shaderBlock.js";
|
|
2
|
-
import {
|
|
2
|
+
import { ShaderBinding } from "../runtime/shaderRuntime.js";
|
|
3
3
|
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
4
4
|
/**
|
|
5
5
|
* The shader bindings for the OptimizedShader block.
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
|
-
export class OptimizedShaderBinding extends
|
|
8
|
+
export class OptimizedShaderBinding extends ShaderBinding {
|
|
9
9
|
/**
|
|
10
10
|
* Creates a new shader binding instance for the OptimizedShader block.
|
|
11
11
|
* @param shaderBindings - The list of shader bindings to process
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimizedShaderBlock.js","sourceRoot":"","sources":["../../src/optimization/optimizedShaderBlock.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"optimizedShaderBlock.js","sourceRoot":"","sources":["../../src/optimization/optimizedShaderBlock.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E;;;GAGG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IAIrD;;;;OAIG;IACH,YACI,cAA+B,EAC/B,aAA2E;QAE3E,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACa,IAAI,CAAC,MAAc,EAAE,KAAa,EAAE,MAAc;QAC9D,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/C,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC1C,wEAAwE;YACxE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAQ,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IAUjD;;OAEG;IACH,IAAoB,OAAO;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,YAAY,WAAwB,EAAE,IAAY;QAC9C,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QArB3B,mBAAc,GAAiE,EAAE,CAAC;QAuBtF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,SAAgB,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACa,gBAAgB;QAC5B,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACI,gBAAgB,CAAC,aAA4B;QAChD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACxC,CAAC;IAED;;;OAGG;IACI,iBAAiB,CAAC,cAA+B;QACpD,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACI,gBAAgB;QACnB,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAExB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,CAAC,OAAO,EAAE,CAAC;gBAC7C;;;mBAGG;gBACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,WAAuD,CAAC;YAC9F,CAAC;QACL,CAAC;QAED,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACjF,CAAC;;AAtED;;GAEG;AACoB,8BAAS,GAAG,sBAAsB,AAAzB,CAA0B"}
|
|
@@ -68,5 +68,15 @@ export declare class SmartFilterOptimizer {
|
|
|
68
68
|
private _saveBlockStackState;
|
|
69
69
|
private _restoreBlockStackState;
|
|
70
70
|
private _processBlock;
|
|
71
|
+
/**
|
|
72
|
+
* If this block used DisableStrategy.AutoSample, find all the sampleTexture calls which just pass the vUV,
|
|
73
|
+
* skip the first one, and for all others replace with the local variable created by the DisableStrategy.AutoSample
|
|
74
|
+
*
|
|
75
|
+
* @param code - The shader code to process
|
|
76
|
+
* @param sampler - The name of the sampler
|
|
77
|
+
*
|
|
78
|
+
* @returns The processed code
|
|
79
|
+
*/
|
|
80
|
+
private _applyAutoSampleStrategy;
|
|
71
81
|
}
|
|
72
82
|
//# sourceMappingURL=smartFilterOptimizer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartFilterOptimizer.d.ts","sourceRoot":"","sources":["../../src/optimization/smartFilterOptimizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAIrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"smartFilterOptimizer.d.ts","sourceRoot":"","sources":["../../src/optimization/smartFilterOptimizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAIrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAoDhD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACpB;;OAEG;IACH,iBAAiB,EAAE,eAAe,EAAE,CAAC;IAErC;;OAEG;IACH,qBAAqB,EAAE,eAAe,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC;;OAEG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,kBAAkB,CAAc;IACxC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,iBAAiB,CAAwC;IACjE,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,sBAAsB,CAAwC;IAEtE,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,wBAAwB,CAAqC;IACrE,OAAO,CAAC,uBAAuB,CAAkC;IACjE,OAAO,CAAC,gBAAgB,CAA0D;IAClF,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,iBAAiB,CAAkB;IAE3C;;;;OAIG;gBACS,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,4BAA4B;IAQ5E;;;OAGG;IACI,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC;IAqExC,OAAO,CAAC,yBAAyB;IAwBjC,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,uBAAuB;IAuD/B,OAAO,CAAC,iBAAiB;IAsEzB,OAAO,CAAC,qBAAqB;IAiD7B,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,cAAc;IA+JtB,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,aAAa;IA4GrB;;;;;;;;OAQG;IACH,OAAO,CAAC,wBAAwB;CAWnC"}
|
|
@@ -3,9 +3,9 @@ import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
|
3
3
|
import { ShaderBlock } from "../blocks/shaderBlock.js";
|
|
4
4
|
import { isTextureInputBlock } from "../blocks/inputBlock.js";
|
|
5
5
|
import { OptimizedShaderBlock } from "./optimizedShaderBlock.js";
|
|
6
|
-
import { decorateChar, decorateSymbol, getShaderFragmentCode, undecorateSymbol } from "../utils/shaderCodeUtils.js";
|
|
6
|
+
import { AutoDisableMainInputColorName, decorateChar, decorateSymbol, getShaderFragmentCode, undecorateSymbol, } from "../utils/shaderCodeUtils.js";
|
|
7
7
|
import { DependencyGraph } from "./dependencyGraph.js";
|
|
8
|
-
import {
|
|
8
|
+
import { DisableableShaderBlock, BlockDisableStrategy } from "../blocks/disableableShaderBlock.js";
|
|
9
9
|
const showDebugData = false;
|
|
10
10
|
/**
|
|
11
11
|
* Optimizes a smart filter by aggregating blocks whenever possible, to reduce the number of draw calls.
|
|
@@ -46,6 +46,8 @@ export class SmartFilterOptimizer {
|
|
|
46
46
|
!isTextureInputBlock(this._sourceSmartFilter.output.connectedTo.ownerBlock)) {
|
|
47
47
|
const connectionsToReconnect = [];
|
|
48
48
|
if (this._options.removeDisabledBlocks) {
|
|
49
|
+
// Need to propagate runtime data to ensure we can tell if a block is disabled
|
|
50
|
+
this._sourceSmartFilter.output.ownerBlock.propagateRuntimeData();
|
|
49
51
|
const alreadyVisitedBlocks = new Set();
|
|
50
52
|
this._disconnectDisabledBlocks(this._sourceSmartFilter.output.connectedTo.ownerBlock, alreadyVisitedBlocks, connectionsToReconnect);
|
|
51
53
|
}
|
|
@@ -96,7 +98,7 @@ export class SmartFilterOptimizer {
|
|
|
96
98
|
}
|
|
97
99
|
this._disconnectDisabledBlocks(input.connectedTo.ownerBlock, alreadyVisitedBlocks, inputsToReconnect);
|
|
98
100
|
}
|
|
99
|
-
if (block instanceof
|
|
101
|
+
if (block instanceof DisableableShaderBlock && block.disabled.runtimeData.value) {
|
|
100
102
|
block.disconnectFromGraph(inputsToReconnect);
|
|
101
103
|
}
|
|
102
104
|
}
|
|
@@ -314,6 +316,11 @@ export class SmartFilterOptimizer {
|
|
|
314
316
|
if (!input.connectedTo) {
|
|
315
317
|
throw `The connection point corresponding to the input named "${samplerName}" in block named "${block.name}" is not connected!`;
|
|
316
318
|
}
|
|
319
|
+
// If we are using the AutoSample strategy, we must preprocess the code that samples the texture
|
|
320
|
+
if (block instanceof DisableableShaderBlock &&
|
|
321
|
+
block.blockDisableStrategy === BlockDisableStrategy.AutoSample) {
|
|
322
|
+
code = this._applyAutoSampleStrategy(code, sampler);
|
|
323
|
+
}
|
|
317
324
|
const parentBlock = input.connectedTo.ownerBlock;
|
|
318
325
|
if (isTextureInputBlock(parentBlock)) {
|
|
319
326
|
// input is connected to an InputBlock of type "Texture": we must directly sample a texture
|
|
@@ -478,5 +485,25 @@ export class SmartFilterOptimizer {
|
|
|
478
485
|
optimizedBlock.setShaderBindings(Array.from(blockOwnerToShaderBinding.values()));
|
|
479
486
|
return optimizedBlock;
|
|
480
487
|
}
|
|
488
|
+
/**
|
|
489
|
+
* If this block used DisableStrategy.AutoSample, find all the sampleTexture calls which just pass the vUV,
|
|
490
|
+
* skip the first one, and for all others replace with the local variable created by the DisableStrategy.AutoSample
|
|
491
|
+
*
|
|
492
|
+
* @param code - The shader code to process
|
|
493
|
+
* @param sampler - The name of the sampler
|
|
494
|
+
*
|
|
495
|
+
* @returns The processed code
|
|
496
|
+
*/
|
|
497
|
+
_applyAutoSampleStrategy(code, sampler) {
|
|
498
|
+
let isFirstMatch = true;
|
|
499
|
+
const rx = new RegExp(`sampleTexture\\s*\\(\\s*${sampler}\\s*,\\s*vUV\\s*\\)`, "g");
|
|
500
|
+
return code.replace(rx, (match) => {
|
|
501
|
+
if (isFirstMatch) {
|
|
502
|
+
isFirstMatch = false;
|
|
503
|
+
return match;
|
|
504
|
+
}
|
|
505
|
+
return decorateSymbol(AutoDisableMainInputColorName);
|
|
506
|
+
});
|
|
507
|
+
}
|
|
481
508
|
}
|
|
482
509
|
//# sourceMappingURL=smartFilterOptimizer.js.map
|