@babylonjs/smart-filters 0.3.3-alpha → 0.3.5-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/inputBlock.d.ts +19 -0
- package/dist/blocks/inputBlock.d.ts.map +1 -1
- package/dist/blocks/inputBlock.deserializer.d.ts +1 -3
- package/dist/blocks/inputBlock.deserializer.d.ts.map +1 -1
- package/dist/blocks/inputBlock.deserializer.js +14 -13
- package/dist/blocks/inputBlock.deserializer.js.map +1 -1
- package/dist/blocks/inputBlock.js.map +1 -1
- package/dist/blocks/inputBlock.serialization.types.d.ts +13 -0
- package/dist/blocks/inputBlock.serialization.types.d.ts.map +1 -1
- package/dist/blocks/inputBlock.serializer.d.ts.map +1 -1
- package/dist/blocks/inputBlock.serializer.js +12 -4
- package/dist/blocks/inputBlock.serializer.js.map +1 -1
- package/dist/blocks/outputBlock.d.ts +7 -0
- package/dist/blocks/outputBlock.d.ts.map +1 -1
- package/dist/blocks/outputBlock.js +27 -12
- package/dist/blocks/outputBlock.js.map +1 -1
- package/dist/blocks/shaderBlock.d.ts.map +1 -1
- package/dist/blocks/shaderBlock.js +5 -8
- package/dist/blocks/shaderBlock.js.map +1 -1
- package/dist/runtime/renderTargetGenerator.d.ts +3 -2
- package/dist/runtime/renderTargetGenerator.d.ts.map +1 -1
- package/dist/runtime/renderTargetGenerator.js +25 -14
- package/dist/runtime/renderTargetGenerator.js.map +1 -1
- package/dist/serialization/smartFilterDeserializer.d.ts.map +1 -1
- package/dist/serialization/smartFilterDeserializer.js +12 -5
- package/dist/serialization/smartFilterDeserializer.js.map +1 -1
- package/dist/serialization/smartFilterSerializer.js +4 -4
- package/dist/serialization/smartFilterSerializer.js.map +1 -1
- package/dist/serialization/v1/serialization.types.d.ts +4 -4
- package/dist/serialization/v1/serialization.types.d.ts.map +1 -1
- package/dist/smartFilter.d.ts +4 -1
- package/dist/smartFilter.d.ts.map +1 -1
- package/dist/smartFilter.js +9 -21
- 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 +24 -0
- package/dist/utils/renderTargetUtils.d.ts.map +1 -0
- package/dist/utils/renderTargetUtils.js +38 -0
- package/dist/utils/renderTargetUtils.js.map +1 -0
- package/package.json +1 -1
- package/src/blocks/inputBlock.deserializer.ts +20 -21
- package/src/blocks/inputBlock.serialization.types.ts +16 -0
- package/src/blocks/inputBlock.serializer.ts +10 -1
- package/src/blocks/inputBlock.ts +25 -1
- package/src/blocks/outputBlock.ts +32 -18
- package/src/blocks/shaderBlock.ts +11 -10
- package/src/runtime/renderTargetGenerator.ts +31 -14
- package/src/serialization/smartFilterDeserializer.ts +17 -6
- package/src/serialization/smartFilterSerializer.ts +4 -4
- package/src/serialization/v1/serialization.types.ts +4 -4
- package/src/smartFilter.ts +12 -22
- package/src/utils/buildTools/shaderConverter.ts +2 -2
- package/src/utils/renderTargetUtils.ts +56 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartFilterDeserializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAOrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAGhC;;;OAGG;IACH,YAAmB,kBAAmD;QANrD,0BAAqB,GAAoC,IAAI,GAAG,EAAE,CAAC;QAOhF,IAAI,CAAC,qBAAqB,GAAG,kBAAkB,CAAC;QAEhD,4GAA4G;QAC5G,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC1B,UAAU,CAAC,SAAS,EACpB,CAAC,WAAwB,EAAE,eAAmC,EAAE,
|
|
1
|
+
{"version":3,"file":"smartFilterDeserializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,9 +52,9 @@ export class SmartFilterSerializer {
|
|
|
52
52
|
const connectedTo = input.connectedTo;
|
|
53
53
|
if (connectedTo) {
|
|
54
54
|
const newConnection = {
|
|
55
|
-
inputBlock: block.
|
|
55
|
+
inputBlock: block.uniqueId,
|
|
56
56
|
inputConnectionPoint: input.name,
|
|
57
|
-
outputBlock: connectedTo.ownerBlock.
|
|
57
|
+
outputBlock: connectedTo.ownerBlock.uniqueId,
|
|
58
58
|
outputConnectionPoint: connectedTo.name,
|
|
59
59
|
};
|
|
60
60
|
if (!connections.find((other) => serializedConnectionPointsEqual(newConnection, other))) {
|
|
@@ -66,9 +66,9 @@ export class SmartFilterSerializer {
|
|
|
66
66
|
block.outputs.forEach((output) => {
|
|
67
67
|
output.endpoints.forEach((input) => {
|
|
68
68
|
const newConnection = {
|
|
69
|
-
inputBlock: input.ownerBlock.
|
|
69
|
+
inputBlock: input.ownerBlock.uniqueId,
|
|
70
70
|
inputConnectionPoint: input.name,
|
|
71
|
-
outputBlock: block.
|
|
71
|
+
outputBlock: block.uniqueId,
|
|
72
72
|
outputConnectionPoint: output.name,
|
|
73
73
|
};
|
|
74
74
|
if (!connections.find((other) => serializedConnectionPointsEqual(newConnection, other))) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartFilterSerializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterSerializer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AASvD;;;;;GAKG;AACH,SAAS,+BAA+B,CAAC,CAA0B,EAAE,CAA0B;IAC3F,OAAO,CACH,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;QAC7B,CAAC,CAAC,oBAAoB,KAAK,CAAC,CAAC,oBAAoB;QACjD,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;QAC/B,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,qBAAqB,CACtD,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IAG9B;;;;OAIG;IACH,YAAmB,+BAAyC,EAAE,0BAAgD;QAP7F,sBAAiB,GAAkC,IAAI,GAAG,EAAE,CAAC;QAQ1E,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,oBAAoB,CAAC,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC3F,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;QAC1E,+BAA+B,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QACH,0BAA0B,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAC9C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CACzE,CAAC;IACN,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,WAAwB;QACrC,MAAM,WAAW,GAA8B,EAAE,CAAC;QAElD,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAgB,EAAE,EAAE;YAC/D,6BAA6B;YAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,kDAAkD,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC9F,CAAC;YACD,MAAM,eAAe,GAAuB,WAAW,CAAC,KAAK,CAAC,CAAC;YAE/D,0CAA0C;YAC1C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAsB,EAAE,EAAE;gBAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBACtC,IAAI,WAAW,EAAE,CAAC;oBACd,MAAM,aAAa,GAA4B;wBAC3C,UAAU,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"smartFilterSerializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterSerializer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AASvD;;;;;GAKG;AACH,SAAS,+BAA+B,CAAC,CAA0B,EAAE,CAA0B;IAC3F,OAAO,CACH,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;QAC7B,CAAC,CAAC,oBAAoB,KAAK,CAAC,CAAC,oBAAoB;QACjD,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;QAC/B,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,qBAAqB,CACtD,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IAG9B;;;;OAIG;IACH,YAAmB,+BAAyC,EAAE,0BAAgD;QAP7F,sBAAiB,GAAkC,IAAI,GAAG,EAAE,CAAC;QAQ1E,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,oBAAoB,CAAC,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC3F,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;QAC1E,+BAA+B,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QACH,0BAA0B,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAC9C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CACzE,CAAC;IACN,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,WAAwB;QACrC,MAAM,WAAW,GAA8B,EAAE,CAAC;QAElD,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAgB,EAAE,EAAE;YAC/D,6BAA6B;YAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,kDAAkD,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC9F,CAAC;YACD,MAAM,eAAe,GAAuB,WAAW,CAAC,KAAK,CAAC,CAAC;YAE/D,0CAA0C;YAC1C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAsB,EAAE,EAAE;gBAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBACtC,IAAI,WAAW,EAAE,CAAC;oBACd,MAAM,aAAa,GAA4B;wBAC3C,UAAU,EAAE,KAAK,CAAC,QAAQ;wBAC1B,oBAAoB,EAAE,KAAK,CAAC,IAAI;wBAChC,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,QAAQ;wBAC5C,qBAAqB,EAAE,WAAW,CAAC,IAAI;qBAC1C,CAAC;oBACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,+BAA+B,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;wBACtF,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACpC,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,2CAA2C;YAC3C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAuB,EAAE,EAAE;gBAC9C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAsB,EAAE,EAAE;oBAChD,MAAM,aAAa,GAA4B;wBAC3C,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;wBACrC,oBAAoB,EAAE,KAAK,CAAC,IAAI;wBAChC,WAAW,EAAE,KAAK,CAAC,QAAQ;wBAC3B,qBAAqB,EAAE,MAAM,CAAC,IAAI;qBACrC,CAAC;oBACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,+BAA+B,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;wBACtF,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACpC,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,OAAO,eAAe,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,MAAM;YACN,WAAW;SACd,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -44,12 +44,12 @@ export interface ISerializedBlockV1 {
|
|
|
44
44
|
* V1 Serialized Connection
|
|
45
45
|
*/
|
|
46
46
|
export interface ISerializedConnectionV1 {
|
|
47
|
-
/** The
|
|
48
|
-
outputBlock:
|
|
47
|
+
/** The uniqueId of the block that the connection is to */
|
|
48
|
+
outputBlock: number;
|
|
49
49
|
/** The name of the connectionPoint on the outputBlock */
|
|
50
50
|
outputConnectionPoint: string;
|
|
51
|
-
/** The
|
|
52
|
-
inputBlock:
|
|
51
|
+
/** The uniqueId of the block that the connection is from */
|
|
52
|
+
inputBlock: number;
|
|
53
53
|
/** The name of the connectionPoint on the inputBlock */
|
|
54
54
|
inputConnectionPoint: string;
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/serialization.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gFAAgF,CAAC;AAElH;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,yCAAyC;IACzC,OAAO,EAAE,CAAC,CAAC;IAEX,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,+BAA+B;IAC/B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,0CAA0C;IAC1C,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElC,4BAA4B;IAC5B,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAE7B,iCAAiC;IACjC,WAAW,EAAE,uBAAuB,EAAE,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,qGAAqG;IACrG,QAAQ,EAAE,MAAM,CAAC;IAEjB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,qCAAqC;IACrC,IAAI,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,
|
|
1
|
+
{"version":3,"file":"serialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/serialization.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gFAAgF,CAAC;AAElH;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,yCAAyC;IACzC,OAAO,EAAE,CAAC,CAAC;IAEX,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,+BAA+B;IAC/B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,0CAA0C;IAC1C,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElC,4BAA4B;IAC5B,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAE7B,iCAAiC;IACjC,WAAW,EAAE,uBAAuB,EAAE,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,qGAAqG;IACrG,QAAQ,EAAE,MAAM,CAAC;IAEjB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,qCAAqC;IACrC,IAAI,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,qBAAqB,EAAE,MAAM,CAAC;IAE9B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,oBAAoB,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,kBAAkB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAElB,6CAA6C;IAC7C,SAAS,EAAE,gBAAgB,CAAC;CAC/B;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC7B,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,UAAU,KACjB,OAAO,CAAC,SAAS,CAAC,CAAC"}
|
package/dist/smartFilter.d.ts
CHANGED
|
@@ -45,6 +45,10 @@ export declare class SmartFilter {
|
|
|
45
45
|
* This is where the smart filter final block should be connected to in order to be visible on screen.
|
|
46
46
|
*/
|
|
47
47
|
readonly output: ConnectionPoint<ConnectionPointType.Texture>;
|
|
48
|
+
/**
|
|
49
|
+
* The output block of the smart filter.
|
|
50
|
+
*/
|
|
51
|
+
readonly outputBlock: OutputBlock;
|
|
48
52
|
/**
|
|
49
53
|
* User defined comments to describe the current smart filter.
|
|
50
54
|
*/
|
|
@@ -54,7 +58,6 @@ export declare class SmartFilter {
|
|
|
54
58
|
*/
|
|
55
59
|
editorData: Nullable<IEditorData>;
|
|
56
60
|
private readonly _attachedBlocks;
|
|
57
|
-
private readonly _outputBlock;
|
|
58
61
|
/**
|
|
59
62
|
* Creates a new instance of a @see SmartFilter.
|
|
60
63
|
* @param name - The friendly name of the smart filter
|
|
@@ -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;AAO/G;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;CACpD,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;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
|
|
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;AAO/G;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;CACpD,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;IAiC9B;;;;OAIG;IACI,2BAA2B,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;CAoB7D"}
|
package/dist/smartFilter.js
CHANGED
|
@@ -29,8 +29,8 @@ export class SmartFilter {
|
|
|
29
29
|
this.editorData = null;
|
|
30
30
|
this.name = name;
|
|
31
31
|
this._attachedBlocks = new Array();
|
|
32
|
-
this.
|
|
33
|
-
this.output = this.
|
|
32
|
+
this.outputBlock = new OutputBlock(this);
|
|
33
|
+
this.output = this.outputBlock.input;
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* @returns the list of blocks attached to the smart filter.
|
|
@@ -80,22 +80,10 @@ export class SmartFilter {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
_generateCommandsAndGatherInitPromises(initializationData) {
|
|
83
|
-
const outputBlock = this.
|
|
83
|
+
const outputBlock = this.outputBlock;
|
|
84
84
|
outputBlock.visit(initializationData, (block, initializationData) => {
|
|
85
|
-
var _a
|
|
86
|
-
|
|
87
|
-
if (block === outputBlock) {
|
|
88
|
-
// We only need to do something if the connected block is an input block.
|
|
89
|
-
// Indeed, any other block linked to the output block would directly render to the canvas
|
|
90
|
-
// as an optimization.
|
|
91
|
-
// In case the output block is not linked to an input block, we do not need extra commands
|
|
92
|
-
// or resources to create a render pass.
|
|
93
|
-
if ((_a = outputBlock.input.connectedTo) === null || _a === void 0 ? void 0 : _a.ownerBlock.isInput) {
|
|
94
|
-
block.generateCommandsAndGatherInitPromises(initializationData, true);
|
|
95
|
-
}
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
block.generateCommandsAndGatherInitPromises(initializationData, ((_b = outputBlock.input.connectedTo) === null || _b === void 0 ? void 0 : _b.ownerBlock) === block);
|
|
85
|
+
var _a;
|
|
86
|
+
block.generateCommandsAndGatherInitPromises(initializationData, ((_a = outputBlock.input.connectedTo) === null || _a === void 0 ? void 0 : _a.ownerBlock) === block);
|
|
99
87
|
});
|
|
100
88
|
}
|
|
101
89
|
/**
|
|
@@ -108,14 +96,14 @@ export class SmartFilter {
|
|
|
108
96
|
const runtime = new InternalSmartFilterRuntime(engine);
|
|
109
97
|
const initializationData = {
|
|
110
98
|
runtime,
|
|
111
|
-
outputBlock: this.
|
|
99
|
+
outputBlock: this.outputBlock,
|
|
112
100
|
initializationPromises: [],
|
|
113
101
|
};
|
|
114
102
|
this._workWithAggregateFreeGraph(() => {
|
|
115
|
-
this.
|
|
103
|
+
this.outputBlock.prepareForRuntime();
|
|
116
104
|
renderTargetGenerator = renderTargetGenerator !== null && renderTargetGenerator !== void 0 ? renderTargetGenerator : new RenderTargetGenerator(false);
|
|
117
105
|
renderTargetGenerator.setOutputTextures(this, initializationData);
|
|
118
|
-
this.
|
|
106
|
+
this.outputBlock.propagateRuntimeData();
|
|
119
107
|
this._generateCommandsAndGatherInitPromises(initializationData);
|
|
120
108
|
});
|
|
121
109
|
// Wait for all the blocks to be initialized
|
|
@@ -137,7 +125,7 @@ export class SmartFilter {
|
|
|
137
125
|
_workWithAggregateFreeGraph(work) {
|
|
138
126
|
const mergedAggregateBlocks = [];
|
|
139
127
|
// Merge all aggregate blocks
|
|
140
|
-
this.
|
|
128
|
+
this.outputBlock.visit({}, (block, _extraData) => {
|
|
141
129
|
if (block instanceof AggregateBlock) {
|
|
142
130
|
block._mergeIntoSmartFilter(mergedAggregateBlocks);
|
|
143
131
|
}
|
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;AAG5D;;GAEG;AACH,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAsBpC;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;
|
|
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;AAG5D;;GAEG;AACH,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAsBpC;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IA6BpB;;;OAGG;IACH,YAAY,IAAY;QAfxB;;WAEG;QACI,aAAQ,GAAqB,IAAI,CAAC;QAEzC;;WAEG;QACI,eAAU,GAA0B,IAAI,CAAC;QAQ5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,eAAe,GAAG,IAAI,KAAK,EAAa,CAAC;QAC9C,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,YAAY;QACf,OAAO,aAAa,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACI,aAAa,CAAC,KAAgB;QACjC,yDAAyD;QACzD,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QAED,0CAA0C;QAC1C,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC7C,OAAO;QACX,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,KAAgB;QAC/B,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE/D,8DAA8D;QAC9D,4CAA4C;QAC5C,IAAI,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7C,+CAA+C;YAC/C,KAAK,CAAC,UAAU,EAAE,CAAC;YAEnB,qDAAqD;YACrD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;IACL,CAAC;IAEO,sCAAsC,CAAC,kBAAsC;QACjF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAErC,WAAW,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,KAAgB,EAAE,kBAAsC,EAAE,EAAE;;YAC/F,KAAK,CAAC,qCAAqC,CACvC,kBAAkB,EAClB,CAAA,MAAA,WAAW,CAAC,KAAK,CAAC,WAAW,0CAAE,UAAU,MAAK,KAAK,CACtD,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,kBAAkB,CAC3B,MAAkB,EAClB,qBAA6C;QAE7C,MAAM,OAAO,GAAG,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAEvD,MAAM,kBAAkB,GAAuB;YAC3C,OAAO;YACP,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,sBAAsB,EAAE,EAAE;SAC7B,CAAC;QAEF,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;YAErC,qBAAqB,GAAG,qBAAqB,aAArB,qBAAqB,cAArB,qBAAqB,GAAI,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAClF,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;YAElE,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;YAExC,IAAI,CAAC,sCAAsC,CAAC,kBAAkB,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC5C,IAAI,kBAAkB,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC;YAClG,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YACxG,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC,CAAC;YAC9E,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACI,2BAA2B,CAAC,IAAgB;QAC/C,MAAM,qBAAqB,GAAqB,EAAE,CAAC;QAEnD,6BAA6B;QAC7B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAgB,EAAE,UAAkB,EAAE,EAAE;YAChE,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBAClC,KAAK,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;YACvD,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACD,wBAAwB;YACxB,IAAI,EAAE,CAAC;QACX,CAAC;gBAAS,CAAC;YACP,oDAAoD;YACpD,KAAK,MAAM,KAAK,IAAI,qBAAqB,EAAE,CAAC;gBACxC,KAAK,CAAC,uBAAuB,EAAE,CAAC;YACpC,CAAC;QACL,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -119,8 +119,8 @@ function processFragmentShaderV1(fragmentShader) {
|
|
|
119
119
|
const symbolsToDecorate = [...uniforms, ...consts, ...functionNames];
|
|
120
120
|
let fragmentShaderWithRenamedSymbols = fragmentShader;
|
|
121
121
|
for (const symbol of symbolsToDecorate) {
|
|
122
|
-
const regex = new RegExp(`(
|
|
123
|
-
fragmentShaderWithRenamedSymbols = fragmentShaderWithRenamedSymbols.replace(regex,
|
|
122
|
+
const regex = new RegExp(`(?<=\\W+)${symbol}(?=\\W+)`, "gs");
|
|
123
|
+
fragmentShaderWithRenamedSymbols = fragmentShaderWithRenamedSymbols.replace(regex, `_${symbol}_`);
|
|
124
124
|
}
|
|
125
125
|
console.log(`${symbolsToDecorate.length} symbol(s) renamed`);
|
|
126
126
|
const uniformNames = uniforms.map((uniform) => `${uniform}: "${uniform}",`);
|
|
@@ -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":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { RenderTargetWrapper } from "@babylonjs/core/Engines/renderTargetWrapper";
|
|
2
|
+
import type { ThinRenderTargetTexture } from "@babylonjs/core/Materials/Textures/thinRenderTargetTexture";
|
|
3
|
+
import type { Nullable } from "@babylonjs/core/types";
|
|
4
|
+
import type { BaseBlock } from "../blocks/baseBlock";
|
|
5
|
+
import type { ShaderRuntime } from "../runtime/shaderRuntime";
|
|
6
|
+
import type { InternalSmartFilterRuntime } from "../runtime/smartFilterRuntime";
|
|
7
|
+
/**
|
|
8
|
+
* Tries to get a renderTarget from a renderTargetTexture, throws an error if it fails.
|
|
9
|
+
* @param renderTargetTexture - The renderTargetTexture 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 throws an Error if it fails.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getRenderTarget(renderTargetTexture: Nullable<ThinRenderTargetTexture>, callerName: string): RenderTargetWrapper;
|
|
14
|
+
/**
|
|
15
|
+
* Registers the final command of the command queue - the one that draws to either the canvas or
|
|
16
|
+
* renderTargetTexture.
|
|
17
|
+
* @param renderTargetTexture - If non-null, the render target texture to render to, otherwise the command will
|
|
18
|
+
* render to the canvas.
|
|
19
|
+
* @param runtime - The smart filter runtime to use.
|
|
20
|
+
* @param commandOwner - The owner of the command.
|
|
21
|
+
* @param shaderBlockRuntime - The shader block runtime to use.
|
|
22
|
+
*/
|
|
23
|
+
export declare function registerFinalRenderCommand(renderTargetTexture: Nullable<ThinRenderTargetTexture>, runtime: InternalSmartFilterRuntime, commandOwner: BaseBlock, shaderBlockRuntime: ShaderRuntime): void;
|
|
24
|
+
//# sourceMappingURL=renderTargetUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderTargetUtils.d.ts","sourceRoot":"","sources":["../../src/utils/renderTargetUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4DAA4D,CAAC;AAC1G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,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;AAEhF;;;;;GAKG;AACH,wBAAgB,eAAe,CAC3B,mBAAmB,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EACtD,UAAU,EAAE,MAAM,GACnB,mBAAmB,CAMrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACtC,mBAAmB,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EACtD,OAAO,EAAE,0BAA0B,EACnC,YAAY,EAAE,SAAS,EACvB,kBAAkB,EAAE,aAAa,GAClC,IAAI,CAgBN"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { createCommand } from "../command/command.js";
|
|
2
|
+
/**
|
|
3
|
+
* Tries to get a renderTarget from a renderTargetTexture, throws an error if it fails.
|
|
4
|
+
* @param renderTargetTexture - The renderTargetTexture 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 throws an Error if it fails.
|
|
7
|
+
*/
|
|
8
|
+
export function getRenderTarget(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
|
+
/**
|
|
16
|
+
* Registers the final command of the command queue - the one that draws to either the canvas or
|
|
17
|
+
* renderTargetTexture.
|
|
18
|
+
* @param renderTargetTexture - If non-null, the render target texture to render to, otherwise the command will
|
|
19
|
+
* render to the canvas.
|
|
20
|
+
* @param runtime - The smart filter runtime to use.
|
|
21
|
+
* @param commandOwner - The owner of the command.
|
|
22
|
+
* @param shaderBlockRuntime - The shader block runtime to use.
|
|
23
|
+
*/
|
|
24
|
+
export function registerFinalRenderCommand(renderTargetTexture, runtime, commandOwner, shaderBlockRuntime) {
|
|
25
|
+
const commandOwnerClassName = commandOwner.getClassName();
|
|
26
|
+
if (renderTargetTexture) {
|
|
27
|
+
const renderTarget = getRenderTarget(renderTargetTexture, commandOwnerClassName);
|
|
28
|
+
runtime.registerCommand(createCommand(`${commandOwnerClassName}.renderToFinalTexture`, commandOwner, () => {
|
|
29
|
+
shaderBlockRuntime.renderToTexture(renderTarget);
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
runtime.registerCommand(createCommand(`${commandOwnerClassName}.renderToCanvas`, commandOwner, () => {
|
|
34
|
+
shaderBlockRuntime.renderToCanvas();
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=renderTargetUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderTargetUtils.js","sourceRoot":"","sources":["../../src/utils/renderTargetUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKtD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC3B,mBAAsD,EACtD,UAAkB;IAElB,MAAM,YAAY,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,YAAY,CAAC;IACvD,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,0CAA0C,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B,CACtC,mBAAsD,EACtD,OAAmC,EACnC,YAAuB,EACvB,kBAAiC;IAEjC,MAAM,qBAAqB,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;IAC1D,IAAI,mBAAmB,EAAE,CAAC;QACtB,MAAM,YAAY,GAAG,eAAe,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;QACjF,OAAO,CAAC,eAAe,CACnB,aAAa,CAAC,GAAG,qBAAqB,uBAAuB,EAAE,YAAY,EAAE,GAAG,EAAE;YAC9E,kBAAkB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACrD,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"}
|
package/package.json
CHANGED
|
@@ -3,47 +3,46 @@ import type { SerializedInputBlockData } from "./inputBlock.serialization.types.
|
|
|
3
3
|
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
4
4
|
import type { SmartFilter } from "../smartFilter.js";
|
|
5
5
|
import type { ISerializedBlockV1 } from "../serialization/v1/serialization.types.js";
|
|
6
|
-
|
|
7
|
-
import type { ThinEngine } from "@babylonjs/core/Engines/thinEngine.js";
|
|
8
|
-
import type { Nullable } from "@babylonjs/core/types.js";
|
|
9
|
-
import type { ThinTexture } from "@babylonjs/core/Materials/Textures/thinTexture.js";
|
|
6
|
+
|
|
10
7
|
/**
|
|
11
8
|
* V1 Input Block Deserializer
|
|
12
9
|
* @param smartFilter - The SmartFilter to deserialize the block into
|
|
13
10
|
* @param serializedBlock - The serialized block data
|
|
14
|
-
* @param engine - The ThinEngine to use for loading textures
|
|
15
11
|
* @returns A deserialized InputBlock
|
|
16
12
|
*/
|
|
17
|
-
export function inputBlockDeserializer(
|
|
18
|
-
smartFilter: SmartFilter,
|
|
19
|
-
serializedBlock: ISerializedBlockV1,
|
|
20
|
-
engine: ThinEngine
|
|
21
|
-
) {
|
|
13
|
+
export function inputBlockDeserializer(smartFilter: SmartFilter, serializedBlock: ISerializedBlockV1) {
|
|
22
14
|
const blockData = serializedBlock.data as SerializedInputBlockData;
|
|
23
15
|
|
|
24
16
|
switch (blockData.inputType) {
|
|
25
17
|
case ConnectionPointType.Boolean:
|
|
26
18
|
return new InputBlock(smartFilter, serializedBlock.name, ConnectionPointType.Boolean, blockData.value);
|
|
27
|
-
case ConnectionPointType.Float:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (
|
|
35
|
-
|
|
19
|
+
case ConnectionPointType.Float: {
|
|
20
|
+
const inputBlock = new InputBlock(
|
|
21
|
+
smartFilter,
|
|
22
|
+
serializedBlock.name,
|
|
23
|
+
ConnectionPointType.Float,
|
|
24
|
+
blockData.value
|
|
25
|
+
);
|
|
26
|
+
if (blockData.animationType) {
|
|
27
|
+
inputBlock.editorData = {
|
|
28
|
+
animationType: blockData.animationType,
|
|
29
|
+
valueDeltaPerMs: blockData.valueDeltaPerMs,
|
|
30
|
+
};
|
|
36
31
|
}
|
|
37
|
-
|
|
32
|
+
return inputBlock;
|
|
33
|
+
}
|
|
34
|
+
case ConnectionPointType.Texture: {
|
|
38
35
|
// Create the input block
|
|
39
|
-
const inputBlock = new InputBlock(smartFilter, serializedBlock.name, ConnectionPointType.Texture,
|
|
36
|
+
const inputBlock = new InputBlock(smartFilter, serializedBlock.name, ConnectionPointType.Texture, null);
|
|
40
37
|
|
|
41
38
|
// If editor data was serialized, set it on the deserialized block
|
|
42
39
|
inputBlock.editorData = {
|
|
43
40
|
url: blockData.url,
|
|
41
|
+
urlTypeHint: blockData.urlTypeHint,
|
|
44
42
|
anisotropicFilteringLevel: blockData.anisotropicFilteringLevel,
|
|
45
43
|
flipY: blockData.flipY,
|
|
46
44
|
forcedExtension: blockData.forcedExtension,
|
|
45
|
+
dispose: null,
|
|
47
46
|
};
|
|
48
47
|
|
|
49
48
|
return inputBlock;
|
|
@@ -12,6 +12,12 @@ export type TextureInputBlockData = {
|
|
|
12
12
|
/** The URL, if available, of the texture */
|
|
13
13
|
url: Nullable<string>;
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* If supplied, gives a hint as to which type of texture the URL points to.
|
|
17
|
+
* Default is assumed to be "image"
|
|
18
|
+
*/
|
|
19
|
+
urlTypeHint: Nullable<"image" | "video">;
|
|
20
|
+
|
|
15
21
|
/**
|
|
16
22
|
* Defines the anisotropic level to use, or default if null
|
|
17
23
|
*/
|
|
@@ -48,6 +54,16 @@ export type FloatInputBlockData = {
|
|
|
48
54
|
|
|
49
55
|
/** The value of the input block */
|
|
50
56
|
value: number;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* If supplied, how this should be animated by the editor. Will not affect runtime behavior.
|
|
60
|
+
*/
|
|
61
|
+
animationType: Nullable<"time">;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* If supplied, the amount to change the value per millisecond when animating.
|
|
65
|
+
*/
|
|
66
|
+
valueDeltaPerMs: Nullable<number>;
|
|
51
67
|
};
|
|
52
68
|
|
|
53
69
|
/**
|
|
@@ -43,9 +43,16 @@ function serializeInputBlockData(inputBlock: InputBlockBase): SerializedInputBlo
|
|
|
43
43
|
function serializeTextureInputBlock(inputBlock: InputBlock<ConnectionPointType.Texture>): TextureInputBlockData {
|
|
44
44
|
const internalTexture = inputBlock.runtimeValue.value?.getInternalTexture();
|
|
45
45
|
const forcedExtension = internalTexture?._extension ?? null;
|
|
46
|
+
|
|
47
|
+
let url = internalTexture?.url ?? null;
|
|
48
|
+
if (url === "" || !url) {
|
|
49
|
+
url = inputBlock.editorData?.url ?? null;
|
|
50
|
+
}
|
|
51
|
+
|
|
46
52
|
return {
|
|
47
53
|
inputType: ConnectionPointType.Texture,
|
|
48
|
-
url
|
|
54
|
+
url,
|
|
55
|
+
urlTypeHint: inputBlock.editorData?.urlTypeHint ?? null,
|
|
49
56
|
flipY: internalTexture?.invertY ?? null,
|
|
50
57
|
anisotropicFilteringLevel: internalTexture?.anisotropicFilteringLevel ?? null,
|
|
51
58
|
forcedExtension: forcedExtension !== "" ? forcedExtension : null,
|
|
@@ -73,6 +80,8 @@ function serializeFloatInputBlock(inputBlock: InputBlock<ConnectionPointType.Flo
|
|
|
73
80
|
return {
|
|
74
81
|
inputType: ConnectionPointType.Float,
|
|
75
82
|
value: inputBlock.runtimeValue.value,
|
|
83
|
+
animationType: inputBlock.editorData?.animationType ?? null,
|
|
84
|
+
valueDeltaPerMs: inputBlock.editorData?.valueDeltaPerMs ?? null,
|
|
76
85
|
};
|
|
77
86
|
}
|
|
78
87
|
|
package/src/blocks/inputBlock.ts
CHANGED
|
@@ -63,6 +63,12 @@ export type InputBlockEditorData<T extends ConnectionPointType> = T extends Conn
|
|
|
63
63
|
*/
|
|
64
64
|
url: Nullable<string>;
|
|
65
65
|
|
|
66
|
+
/**
|
|
67
|
+
* If supplied, gives a hint as to which type of texture the URL points to.
|
|
68
|
+
* Default is assumed to be "image"
|
|
69
|
+
*/
|
|
70
|
+
urlTypeHint: Nullable<"image" | "video">;
|
|
71
|
+
|
|
66
72
|
/**
|
|
67
73
|
* The anisotropic filtering level of the texture, or default if null.
|
|
68
74
|
*/
|
|
@@ -77,8 +83,26 @@ export type InputBlockEditorData<T extends ConnectionPointType> = T extends Conn
|
|
|
77
83
|
* The file extension to use, or default if null.
|
|
78
84
|
*/
|
|
79
85
|
forcedExtension: Nullable<string>;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Method to call to dispose of the texture - used in Editor scenarios when changing the texture.
|
|
89
|
+
* Not to be represented in serialized smart filters.
|
|
90
|
+
*/
|
|
91
|
+
dispose: Nullable<() => void>;
|
|
80
92
|
}
|
|
81
|
-
:
|
|
93
|
+
: T extends ConnectionPointType.Float
|
|
94
|
+
? {
|
|
95
|
+
/**
|
|
96
|
+
* If supplied, how this should be animated by the editor. Will not affect runtime behavior.
|
|
97
|
+
*/
|
|
98
|
+
animationType: Nullable<"time">;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* If supplied, the amount to change the value per millisecond when animating.
|
|
102
|
+
*/
|
|
103
|
+
valueDeltaPerMs: Nullable<number>;
|
|
104
|
+
}
|
|
105
|
+
: {};
|
|
82
106
|
|
|
83
107
|
/**
|
|
84
108
|
* This represents any inputs used in the graph.
|
|
@@ -3,7 +3,9 @@ import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
|
3
3
|
import { BaseBlock } from "./baseBlock.js";
|
|
4
4
|
import { CopyBlock } from "./copyBlock.js";
|
|
5
5
|
import { ShaderRuntime } from "../runtime/shaderRuntime.js";
|
|
6
|
-
import {
|
|
6
|
+
import type { Nullable } from "@babylonjs/core/types";
|
|
7
|
+
import type { ThinRenderTargetTexture } from "@babylonjs/core/Materials/Textures/thinRenderTargetTexture";
|
|
8
|
+
import { registerFinalRenderCommand } from "../utils/renderTargetUtils.js";
|
|
7
9
|
|
|
8
10
|
/**
|
|
9
11
|
* The output block of a smart filter.
|
|
@@ -23,6 +25,12 @@ export class OutputBlock extends BaseBlock {
|
|
|
23
25
|
*/
|
|
24
26
|
public readonly input = this._registerInput("input", ConnectionPointType.Texture);
|
|
25
27
|
|
|
28
|
+
/**
|
|
29
|
+
* If supplied, the Smart Filter will render into this texture. Otherwise, it renders
|
|
30
|
+
* into the the canvas or WebGL context the ThinEngine is using for rendering.
|
|
31
|
+
*/
|
|
32
|
+
public renderTargetTexture: Nullable<ThinRenderTargetTexture> = null;
|
|
33
|
+
|
|
26
34
|
private _copyBlock: CopyBlock | null;
|
|
27
35
|
|
|
28
36
|
/**
|
|
@@ -37,9 +45,9 @@ export class OutputBlock extends BaseBlock {
|
|
|
37
45
|
|
|
38
46
|
private _getCopyBlock(): CopyBlock {
|
|
39
47
|
if (!this._copyBlock) {
|
|
40
|
-
this._copyBlock = new CopyBlock(this.smartFilter, "
|
|
41
|
-
this._copyBlock.input.runtimeData = this.input.runtimeData;
|
|
48
|
+
this._copyBlock = new CopyBlock(this.smartFilter, "CopyToOutputBlock");
|
|
42
49
|
}
|
|
50
|
+
this._copyBlock.input.runtimeData = this.input.runtimeData;
|
|
43
51
|
|
|
44
52
|
return this._copyBlock;
|
|
45
53
|
}
|
|
@@ -75,23 +83,29 @@ export class OutputBlock extends BaseBlock {
|
|
|
75
83
|
initializationData: InitializationData,
|
|
76
84
|
finalOutput: boolean
|
|
77
85
|
): void {
|
|
78
|
-
|
|
79
|
-
|
|
86
|
+
// In the case that this OutputBlock is directly connected to a texture InputBlock, we must
|
|
87
|
+
// insert a CopyBlock to copy the texture to the render target texture.
|
|
88
|
+
if (this.input.connectedTo?.ownerBlock.isInput) {
|
|
89
|
+
const copyBlock = this._getCopyBlock();
|
|
90
|
+
const runtime = initializationData.runtime;
|
|
80
91
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
92
|
+
const shaderBlockRuntime = new ShaderRuntime(
|
|
93
|
+
runtime.effectRenderer,
|
|
94
|
+
copyBlock.getShaderProgram(),
|
|
95
|
+
copyBlock.getShaderBinding()
|
|
96
|
+
);
|
|
97
|
+
initializationData.initializationPromises.push(shaderBlockRuntime.onReadyAsync);
|
|
98
|
+
runtime.registerResource(shaderBlockRuntime);
|
|
88
99
|
|
|
89
|
-
|
|
90
|
-
createCommand(`${this.getClassName()}.renderToCanvas`, this, () => {
|
|
91
|
-
shaderBlockRuntime.renderToCanvas();
|
|
92
|
-
})
|
|
93
|
-
);
|
|
100
|
+
registerFinalRenderCommand(this.renderTargetTexture, runtime, this, shaderBlockRuntime);
|
|
94
101
|
|
|
95
|
-
|
|
102
|
+
super.generateCommandsAndGatherInitPromises(initializationData, finalOutput);
|
|
103
|
+
} else {
|
|
104
|
+
// We aren't connected to an input block, remove our copy block if we have one.
|
|
105
|
+
if (this._copyBlock) {
|
|
106
|
+
this.smartFilter.removeBlock(this._copyBlock);
|
|
107
|
+
this._copyBlock = null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
96
110
|
}
|
|
97
111
|
}
|
|
@@ -10,6 +10,7 @@ import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
|
10
10
|
import { createCommand } from "../command/command.js";
|
|
11
11
|
import { DisableableBlock } from "./disableableBlock.js";
|
|
12
12
|
import { undecorateSymbol } from "../utils/shaderCodeUtils.js";
|
|
13
|
+
import { getRenderTarget, registerFinalRenderCommand } from "../utils/renderTargetUtils.js";
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* This is the base class for all shader blocks.
|
|
@@ -121,21 +122,21 @@ export abstract class ShaderBlock extends DisableableBlock {
|
|
|
121
122
|
runtime.registerResource(shaderBlockRuntime);
|
|
122
123
|
|
|
123
124
|
if (finalOutput) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
registerFinalRenderCommand(
|
|
126
|
+
initializationData.outputBlock.renderTargetTexture,
|
|
127
|
+
runtime,
|
|
128
|
+
this,
|
|
129
|
+
shaderBlockRuntime
|
|
128
130
|
);
|
|
129
131
|
} else {
|
|
130
|
-
const
|
|
131
|
-
this.output.runtimeData
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
132
|
+
const renderTarget = getRenderTarget(
|
|
133
|
+
this.output.runtimeData?.value as ThinRenderTargetTexture,
|
|
134
|
+
this.getClassName()
|
|
135
|
+
);
|
|
135
136
|
|
|
136
137
|
runtime.registerCommand(
|
|
137
138
|
createCommand(`${this.getClassName()}.render`, this, () => {
|
|
138
|
-
shaderBlockRuntime.renderToTexture(
|
|
139
|
+
shaderBlockRuntime.renderToTexture(renderTarget);
|
|
139
140
|
})
|
|
140
141
|
);
|
|
141
142
|
}
|