@babylonjs/smart-filters 0.6.2-alpha → 0.6.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/customShaderBlock.d.ts +1 -0
- package/dist/blocks/customShaderBlock.d.ts.map +1 -1
- package/dist/blocks/customShaderBlock.js +46 -10
- package/dist/blocks/customShaderBlock.js.map +1 -1
- package/dist/serialization/importCustomShaderBlockDefinition.js +3 -2
- package/dist/serialization/importCustomShaderBlockDefinition.js.map +1 -1
- package/dist/serialization/v1/blockSerialization.types.d.ts +8 -0
- package/dist/serialization/v1/blockSerialization.types.d.ts.map +1 -1
- package/dist/utils/buildTools/shaderConverter.d.ts +5 -0
- package/dist/utils/buildTools/shaderConverter.d.ts.map +1 -1
- package/dist/utils/buildTools/shaderConverter.js.map +1 -1
- package/package.json +1 -1
- package/src/blocks/customShaderBlock.ts +81 -16
- package/src/serialization/importCustomShaderBlockDefinition.ts +2 -1
- package/src/serialization/v1/blockSerialization.types.ts +10 -0
- package/src/utils/buildTools/shaderConverter.ts +6 -0
|
@@ -21,6 +21,7 @@ export declare class CustomShaderBlock extends ShaderBlock {
|
|
|
21
21
|
static ClassName: string;
|
|
22
22
|
private readonly _shaderProgram;
|
|
23
23
|
private readonly _blockType;
|
|
24
|
+
private _autoBoundInputs;
|
|
24
25
|
/**
|
|
25
26
|
* The type of the block - used when serializing / deserializing the block, and in the editor.
|
|
26
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customShaderBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/customShaderBlock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAE5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"customShaderBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/customShaderBlock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAE5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAwE/C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAC9C;;;;;;OAMG;WACW,MAAM,CAChB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,yBAAyB,GAC3C,iBAAiB;IAapB;;OAEG;IACH,OAAuB,SAAS,SAAuB;IAEvD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,gBAAgB,CAAsD;IAE9E;;OAEG;IACH,IAAoB,SAAS,IAAI,MAAM,CAEtC;IAED;;;;;;;;OAQG;IACH,OAAO;IAkBP;;;OAGG;IACa,gBAAgB;IAIhC;;;;OAIG;IACH,OAAO,CAAC,yCAAyC;IAuBjD;;;OAGG;IACa,gBAAgB,IAAI,aAAa;CAiCpD"}
|
|
@@ -41,9 +41,16 @@ class CustomShaderBlockBinding extends ShaderBinding {
|
|
|
41
41
|
});
|
|
42
42
|
break;
|
|
43
43
|
case ConnectionPointType.Vector2:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
if (input.autoBind === "outputResolution") {
|
|
45
|
+
this._bindSteps.push((effect, width, height) => {
|
|
46
|
+
effect.setFloat2(this.getRemappedName(input.name), width, height);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this._bindSteps.push((effect) => {
|
|
51
|
+
effect.setVector2(this.getRemappedName(input.name), input.runtimeData.value);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
47
54
|
break;
|
|
48
55
|
}
|
|
49
56
|
}
|
|
@@ -51,10 +58,12 @@ class CustomShaderBlockBinding extends ShaderBinding {
|
|
|
51
58
|
/**
|
|
52
59
|
* Binds all the required data to the shader when rendering.
|
|
53
60
|
* @param effect - The effect to bind the data to
|
|
61
|
+
* @param width - defines the width of the output
|
|
62
|
+
* @param height - defines the height of the output
|
|
54
63
|
*/
|
|
55
|
-
bind(effect) {
|
|
64
|
+
bind(effect, width, height) {
|
|
56
65
|
for (let i = 0; i < this._bindSteps.length; i++) {
|
|
57
|
-
this._bindSteps[i](effect);
|
|
66
|
+
this._bindSteps[i](effect, width, height);
|
|
58
67
|
}
|
|
59
68
|
}
|
|
60
69
|
}
|
|
@@ -90,6 +99,7 @@ export class CustomShaderBlock extends ShaderBlock {
|
|
|
90
99
|
*/
|
|
91
100
|
constructor(smartFilter, name, disableOptimization, blockType, inputConnectionPoints, shaderProgram) {
|
|
92
101
|
super(smartFilter, name, disableOptimization);
|
|
102
|
+
this._autoBoundInputs = null;
|
|
93
103
|
this._blockType = blockType;
|
|
94
104
|
for (const input of inputConnectionPoints) {
|
|
95
105
|
this._registerSerializedInputConnectionPointV1(input);
|
|
@@ -109,11 +119,21 @@ export class CustomShaderBlock extends ShaderBlock {
|
|
|
109
119
|
* @param connectionPoint - The input connection point to register
|
|
110
120
|
*/
|
|
111
121
|
_registerSerializedInputConnectionPointV1(connectionPoint) {
|
|
112
|
-
if (connectionPoint.
|
|
113
|
-
|
|
122
|
+
if (connectionPoint.autoBind) {
|
|
123
|
+
// Auto bound inputs are not registered as input connection points
|
|
124
|
+
if (this._autoBoundInputs === null) {
|
|
125
|
+
this._autoBoundInputs = [];
|
|
126
|
+
}
|
|
127
|
+
this._autoBoundInputs.push(connectionPoint);
|
|
114
128
|
}
|
|
115
129
|
else {
|
|
116
|
-
|
|
130
|
+
// If not auto bound, register as an input connection point
|
|
131
|
+
if (connectionPoint.defaultValue !== undefined) {
|
|
132
|
+
this._registerOptionalInput(connectionPoint.name, connectionPoint.type, createStrongRef(connectionPoint.defaultValue));
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
this._registerInput(connectionPoint.name, connectionPoint.type);
|
|
136
|
+
}
|
|
117
137
|
}
|
|
118
138
|
}
|
|
119
139
|
/**
|
|
@@ -122,14 +142,30 @@ export class CustomShaderBlock extends ShaderBlock {
|
|
|
122
142
|
*/
|
|
123
143
|
getShaderBinding() {
|
|
124
144
|
const inputs = this.inputs;
|
|
125
|
-
const
|
|
145
|
+
const inputsToBind = inputs.map((input) => {
|
|
126
146
|
return {
|
|
127
147
|
name: input.name,
|
|
128
148
|
type: input.type,
|
|
129
149
|
runtimeData: this._confirmRuntimeDataSupplied(input),
|
|
150
|
+
autoBind: undefined,
|
|
130
151
|
};
|
|
131
152
|
});
|
|
132
|
-
|
|
153
|
+
if (this._autoBoundInputs) {
|
|
154
|
+
for (const autoBoundInput of this._autoBoundInputs) {
|
|
155
|
+
if (autoBoundInput.autoBind === "outputResolution" &&
|
|
156
|
+
autoBoundInput.type == ConnectionPointType.Vector2) {
|
|
157
|
+
inputsToBind.push({
|
|
158
|
+
name: autoBoundInput.name,
|
|
159
|
+
type: autoBoundInput.type,
|
|
160
|
+
autoBind: autoBoundInput.autoBind,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
throw new Error(`Auto bound input ${autoBoundInput.name} has an unsupported type or auto bind value`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return new CustomShaderBlockBinding(inputsToBind);
|
|
133
169
|
}
|
|
134
170
|
}
|
|
135
171
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customShaderBlock.js","sourceRoot":"","sources":["../../src/blocks/customShaderBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"customShaderBlock.js","sourceRoot":"","sources":["../../src/blocks/customShaderBlock.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ export function importCustomShaderBlockDefinition(serializedBlockDefinition) {
|
|
|
25
25
|
* @returns The serialized block definition
|
|
26
26
|
*/
|
|
27
27
|
function importAnnotatedGlsl(fragmentShader) {
|
|
28
|
-
var _a;
|
|
28
|
+
var _a, _b;
|
|
29
29
|
const fragmentShaderInfo = parseFragmentShader(fragmentShader);
|
|
30
30
|
if (!fragmentShaderInfo.blockType) {
|
|
31
31
|
throw new Error("blockType must be defined");
|
|
@@ -61,8 +61,9 @@ function importAnnotatedGlsl(fragmentShader) {
|
|
|
61
61
|
const inputConnectionPoint = {
|
|
62
62
|
name: uniform.name,
|
|
63
63
|
type,
|
|
64
|
+
autoBind: (_a = uniform.properties) === null || _a === void 0 ? void 0 : _a.autoBind,
|
|
64
65
|
};
|
|
65
|
-
if (inputConnectionPoint.type !== ConnectionPointType.Texture && ((
|
|
66
|
+
if (inputConnectionPoint.type !== ConnectionPointType.Texture && ((_b = uniform.properties) === null || _b === void 0 ? void 0 : _b.default) !== undefined) {
|
|
66
67
|
inputConnectionPoint.defaultValue = uniform.properties.default;
|
|
67
68
|
}
|
|
68
69
|
inputConnectionPoints.push(inputConnectionPoint);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importCustomShaderBlockDefinition.js","sourceRoot":"","sources":["../../src/serialization/importCustomShaderBlockDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAI5F;;;;;;;GAOG;AACH,MAAM,UAAU,iCAAiC,CAAC,yBAAiC;IAC/E,IAAI,aAAa,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC3C,OAAO,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACJ,+DAA+D;QAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACjD,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,cAAsB;;IAC/C,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAE/D,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC;IAED,wCAAwC;IACxC,MAAM,qBAAqB,GAAuC,EAAE,CAAC;IACrE,KAAK,MAAM,OAAO,IAAI,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QAChD,iCAAiC;QACjC,IAAI,IAAyB,CAAC;QAC9B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,OAAO;gBACR,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC;gBACjC,MAAM;YACV,KAAK,WAAW;gBACZ,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC;gBAClC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC;gBAClC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QACvE,CAAC;QAED,qCAAqC;QACrC,MAAM,oBAAoB,GAAqC;YAC3D,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI;
|
|
1
|
+
{"version":3,"file":"importCustomShaderBlockDefinition.js","sourceRoot":"","sources":["../../src/serialization/importCustomShaderBlockDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAI5F;;;;;;;GAOG;AACH,MAAM,UAAU,iCAAiC,CAAC,yBAAiC;IAC/E,IAAI,aAAa,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC3C,OAAO,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACJ,+DAA+D;QAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACjD,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,cAAsB;;IAC/C,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAE/D,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC;IAED,wCAAwC;IACxC,MAAM,qBAAqB,GAAuC,EAAE,CAAC;IACrE,KAAK,MAAM,OAAO,IAAI,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QAChD,iCAAiC;QACjC,IAAI,IAAyB,CAAC;QAC9B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,OAAO;gBACR,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC;gBACjC,MAAM;YACV,KAAK,WAAW;gBACZ,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC;gBAClC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC;gBAClC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QACvE,CAAC;QAED,qCAAqC;QACrC,MAAM,oBAAoB,GAAqC;YAC3D,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI;YACJ,QAAQ,EAAE,MAAA,OAAO,CAAC,UAAU,0CAAE,QAA2B;SAC5D,CAAC;QACF,IAAI,oBAAoB,CAAC,IAAI,KAAK,mBAAmB,CAAC,OAAO,IAAI,CAAA,MAAA,OAAO,CAAC,UAAU,0CAAE,OAAO,MAAK,SAAS,EAAE,CAAC;YACzG,oBAAoB,CAAC,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QACnE,CAAC;QACD,qBAAqB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACH,aAAa,EAAE,CAAC;QAChB,SAAS,EAAE,kBAAkB,CAAC,SAAS;QACvC,aAAa,EAAE;YACX,QAAQ,EAAE,kBAAkB,CAAC,UAAU;SAC1C;QACD,qBAAqB;QACrB,mBAAmB,EAAE,CAAC,CAAC,kBAAkB,CAAC,mBAAmB;KAChE,CAAC;AACN,CAAC"}
|
|
@@ -35,6 +35,10 @@ export type SerializedBlockDefinitionV1 = {
|
|
|
35
35
|
*/
|
|
36
36
|
disableOptimization: boolean;
|
|
37
37
|
};
|
|
38
|
+
/**
|
|
39
|
+
* Possible V1 auto bind values for input connection points.
|
|
40
|
+
*/
|
|
41
|
+
export type InputAutoBindV1 = "outputResolution";
|
|
38
42
|
/**
|
|
39
43
|
* A V1 input connection point of a serialized block definition.
|
|
40
44
|
*/
|
|
@@ -51,5 +55,9 @@ export type SerializedInputConnectionPointV1<U extends AllConnectionPointTypes =
|
|
|
51
55
|
* The optional default value of the connection point.
|
|
52
56
|
*/
|
|
53
57
|
defaultValue?: ConnectionPointValue<U>;
|
|
58
|
+
/**
|
|
59
|
+
* If supplied, the input will be automatically bound to this value, instead of creating an input connection point.
|
|
60
|
+
*/
|
|
61
|
+
autoBind?: InputAutoBindV1;
|
|
54
62
|
};
|
|
55
63
|
//# sourceMappingURL=blockSerialization.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockSerialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/blockSerialization.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACtC;;OAEG;IACH,aAAa,EAAE,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,qBAAqB,EAAE,gCAAgC,EAAE,CAAC;IAE1D;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,IAAI;IACxG;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IAER;;OAEG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"blockSerialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/blockSerialization.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACtC;;OAEG;IACH,aAAa,EAAE,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,qBAAqB,EAAE,gCAAgC,EAAE,CAAC;IAE1D;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,gCAAgC,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,IAAI;IACxG;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IAER;;OAEG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC9B,CAAC"}
|
|
@@ -7,6 +7,11 @@ export type UniformMetadataProperties = {
|
|
|
7
7
|
* If supplied, the default value to use for the corresponding input connection point
|
|
8
8
|
*/
|
|
9
9
|
default?: any;
|
|
10
|
+
/**
|
|
11
|
+
* If supplied, the input will be automatically bound to this value, instead of creating an input connection point
|
|
12
|
+
* @see InputAutoBindV1 for possible values.
|
|
13
|
+
*/
|
|
14
|
+
autoBind?: string;
|
|
10
15
|
};
|
|
11
16
|
/**
|
|
12
17
|
* Describes a uniform in a shader
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaderConverter.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AAIrE;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"shaderConverter.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AAIrE;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,CAAC,EAAE,yBAAyB,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC/B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,kBAAkB,CAsG9E;AAiMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaderConverter.js","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AAGA,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"shaderConverter.js","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -8,12 +8,13 @@ import type { SmartFilter } from "../smartFilter";
|
|
|
8
8
|
import type { ShaderProgram } from "../utils/shaderCodeUtils";
|
|
9
9
|
import { ShaderBlock } from "./shaderBlock.js";
|
|
10
10
|
import type { RuntimeData } from "../connection/connectionPoint";
|
|
11
|
+
import type { Nullable } from "@babylonjs/core/types.js";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* The binding for a CustomShaderBlock
|
|
14
15
|
*/
|
|
15
16
|
class CustomShaderBlockBinding extends ShaderBinding {
|
|
16
|
-
private readonly _bindSteps: ((effect: Effect) => void)[] = [];
|
|
17
|
+
private readonly _bindSteps: ((effect: Effect, width: number, height: number) => void)[] = [];
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* Creates a new shader binding instance for the CustomShaderBlock block.
|
|
@@ -50,9 +51,15 @@ class CustomShaderBlockBinding extends ShaderBinding {
|
|
|
50
51
|
});
|
|
51
52
|
break;
|
|
52
53
|
case ConnectionPointType.Vector2:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
if (input.autoBind === "outputResolution") {
|
|
55
|
+
this._bindSteps.push((effect, width, height) => {
|
|
56
|
+
effect.setFloat2(this.getRemappedName(input.name), width, height);
|
|
57
|
+
});
|
|
58
|
+
} else {
|
|
59
|
+
this._bindSteps.push((effect) => {
|
|
60
|
+
effect.setVector2(this.getRemappedName(input.name), input.runtimeData.value);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
56
63
|
break;
|
|
57
64
|
}
|
|
58
65
|
}
|
|
@@ -61,10 +68,12 @@ class CustomShaderBlockBinding extends ShaderBinding {
|
|
|
61
68
|
/**
|
|
62
69
|
* Binds all the required data to the shader when rendering.
|
|
63
70
|
* @param effect - The effect to bind the data to
|
|
71
|
+
* @param width - defines the width of the output
|
|
72
|
+
* @param height - defines the height of the output
|
|
64
73
|
*/
|
|
65
|
-
public override bind(effect: Effect): void {
|
|
74
|
+
public override bind(effect: Effect, width: number, height: number): void {
|
|
66
75
|
for (let i = 0; i < this._bindSteps.length; i++) {
|
|
67
|
-
this._bindSteps[i]!(effect);
|
|
76
|
+
this._bindSteps[i]!(effect, width, height);
|
|
68
77
|
}
|
|
69
78
|
}
|
|
70
79
|
}
|
|
@@ -104,6 +113,7 @@ export class CustomShaderBlock extends ShaderBlock {
|
|
|
104
113
|
|
|
105
114
|
private readonly _shaderProgram: ShaderProgram;
|
|
106
115
|
private readonly _blockType: string;
|
|
116
|
+
private _autoBoundInputs: Nullable<SerializedInputConnectionPointV1[]> = null;
|
|
107
117
|
|
|
108
118
|
/**
|
|
109
119
|
* The type of the block - used when serializing / deserializing the block, and in the editor.
|
|
@@ -155,14 +165,23 @@ export class CustomShaderBlock extends ShaderBlock {
|
|
|
155
165
|
private _registerSerializedInputConnectionPointV1<U extends ConnectionPointType>(
|
|
156
166
|
connectionPoint: SerializedInputConnectionPointV1<U>
|
|
157
167
|
): void {
|
|
158
|
-
if (connectionPoint.
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
);
|
|
168
|
+
if (connectionPoint.autoBind) {
|
|
169
|
+
// Auto bound inputs are not registered as input connection points
|
|
170
|
+
if (this._autoBoundInputs === null) {
|
|
171
|
+
this._autoBoundInputs = [];
|
|
172
|
+
}
|
|
173
|
+
this._autoBoundInputs.push(connectionPoint);
|
|
164
174
|
} else {
|
|
165
|
-
|
|
175
|
+
// If not auto bound, register as an input connection point
|
|
176
|
+
if (connectionPoint.defaultValue !== undefined) {
|
|
177
|
+
this._registerOptionalInput(
|
|
178
|
+
connectionPoint.name,
|
|
179
|
+
connectionPoint.type,
|
|
180
|
+
createStrongRef(connectionPoint.defaultValue)
|
|
181
|
+
);
|
|
182
|
+
} else {
|
|
183
|
+
this._registerInput(connectionPoint.name, connectionPoint.type);
|
|
184
|
+
}
|
|
166
185
|
}
|
|
167
186
|
}
|
|
168
187
|
|
|
@@ -173,15 +192,35 @@ export class CustomShaderBlock extends ShaderBlock {
|
|
|
173
192
|
public override getShaderBinding(): ShaderBinding {
|
|
174
193
|
const inputs = this.inputs;
|
|
175
194
|
|
|
176
|
-
const
|
|
195
|
+
const inputsToBind: AnyInputWithRuntimeData[] = inputs.map((input) => {
|
|
177
196
|
return {
|
|
178
197
|
name: input.name,
|
|
179
198
|
type: input.type,
|
|
180
199
|
runtimeData: this._confirmRuntimeDataSupplied(input),
|
|
200
|
+
autoBind: undefined,
|
|
181
201
|
};
|
|
182
202
|
});
|
|
183
203
|
|
|
184
|
-
|
|
204
|
+
if (this._autoBoundInputs) {
|
|
205
|
+
for (const autoBoundInput of this._autoBoundInputs) {
|
|
206
|
+
if (
|
|
207
|
+
autoBoundInput.autoBind === "outputResolution" &&
|
|
208
|
+
autoBoundInput.type == ConnectionPointType.Vector2
|
|
209
|
+
) {
|
|
210
|
+
inputsToBind.push({
|
|
211
|
+
name: autoBoundInput.name,
|
|
212
|
+
type: autoBoundInput.type,
|
|
213
|
+
autoBind: autoBoundInput.autoBind,
|
|
214
|
+
});
|
|
215
|
+
} else {
|
|
216
|
+
throw new Error(
|
|
217
|
+
`Auto bound input ${autoBoundInput.name} has an unsupported type or auto bind value`
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return new CustomShaderBlockBinding(inputsToBind);
|
|
185
224
|
}
|
|
186
225
|
}
|
|
187
226
|
|
|
@@ -203,6 +242,31 @@ type InputWithRuntimeData<U extends ConnectionPointType> = {
|
|
|
203
242
|
* The runtime data for the input connection point
|
|
204
243
|
*/
|
|
205
244
|
runtimeData: RuntimeData<U>;
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Since this is an input connection point, it will not be auto bound
|
|
248
|
+
*/
|
|
249
|
+
autoBind: undefined;
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Represents an input which is auto-bound to the output resolution instead of an input connection point
|
|
254
|
+
*/
|
|
255
|
+
type AutoBindOutputResolution = {
|
|
256
|
+
/**
|
|
257
|
+
* The name of the input
|
|
258
|
+
*/
|
|
259
|
+
name: string;
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* The type of the input
|
|
263
|
+
*/
|
|
264
|
+
type: ConnectionPointType.Vector2;
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* The auto bind value for the input connection point
|
|
268
|
+
*/
|
|
269
|
+
autoBind: "outputResolution";
|
|
206
270
|
};
|
|
207
271
|
|
|
208
272
|
/**
|
|
@@ -214,4 +278,5 @@ type AnyInputWithRuntimeData =
|
|
|
214
278
|
| InputWithRuntimeData<ConnectionPointType.Color4>
|
|
215
279
|
| InputWithRuntimeData<ConnectionPointType.Float>
|
|
216
280
|
| InputWithRuntimeData<ConnectionPointType.Texture>
|
|
217
|
-
| InputWithRuntimeData<ConnectionPointType.Vector2
|
|
281
|
+
| InputWithRuntimeData<ConnectionPointType.Vector2>
|
|
282
|
+
| AutoBindOutputResolution;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
2
2
|
import { hasGlslHeader, parseFragmentShader } from "../utils/buildTools/shaderConverter.js";
|
|
3
3
|
import type { SerializedBlockDefinition } from "./serializedBlockDefinition.js";
|
|
4
|
-
import type { SerializedInputConnectionPointV1 } from "./v1/blockSerialization.types.js";
|
|
4
|
+
import type { InputAutoBindV1, SerializedInputConnectionPointV1 } from "./v1/blockSerialization.types.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Imports a serialized custom shader block definition. Supports importing a JSON string
|
|
@@ -66,6 +66,7 @@ function importAnnotatedGlsl(fragmentShader: string): SerializedBlockDefinition
|
|
|
66
66
|
const inputConnectionPoint: SerializedInputConnectionPointV1 = {
|
|
67
67
|
name: uniform.name,
|
|
68
68
|
type,
|
|
69
|
+
autoBind: uniform.properties?.autoBind as InputAutoBindV1,
|
|
69
70
|
};
|
|
70
71
|
if (inputConnectionPoint.type !== ConnectionPointType.Texture && uniform.properties?.default !== undefined) {
|
|
71
72
|
inputConnectionPoint.defaultValue = uniform.properties.default;
|
|
@@ -42,6 +42,11 @@ export type SerializedBlockDefinitionV1 = {
|
|
|
42
42
|
disableOptimization: boolean;
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Possible V1 auto bind values for input connection points.
|
|
47
|
+
*/
|
|
48
|
+
export type InputAutoBindV1 = "outputResolution";
|
|
49
|
+
|
|
45
50
|
/**
|
|
46
51
|
* A V1 input connection point of a serialized block definition.
|
|
47
52
|
*/
|
|
@@ -60,4 +65,9 @@ export type SerializedInputConnectionPointV1<U extends AllConnectionPointTypes =
|
|
|
60
65
|
* The optional default value of the connection point.
|
|
61
66
|
*/
|
|
62
67
|
defaultValue?: ConnectionPointValue<U>;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* If supplied, the input will be automatically bound to this value, instead of creating an input connection point.
|
|
71
|
+
*/
|
|
72
|
+
autoBind?: InputAutoBindV1;
|
|
63
73
|
};
|
|
@@ -11,6 +11,12 @@ export type UniformMetadataProperties = {
|
|
|
11
11
|
* If supplied, the default value to use for the corresponding input connection point
|
|
12
12
|
*/
|
|
13
13
|
default?: any;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* If supplied, the input will be automatically bound to this value, instead of creating an input connection point
|
|
17
|
+
* @see InputAutoBindV1 for possible values.
|
|
18
|
+
*/
|
|
19
|
+
autoBind?: string;
|
|
14
20
|
};
|
|
15
21
|
|
|
16
22
|
/**
|