@babylonjs/smart-filters 0.7.15-alpha → 0.8.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.
@@ -4,7 +4,7 @@ export { type AnyInputBlock } from "./inputBlock.js";
4
4
  export { ShaderBlock } from "./shaderBlock.js";
5
5
  export { CustomShaderBlock } from "./customShaderBlock.js";
6
6
  export { CustomAggregateBlock } from "./customAggregateBlock.js";
7
- export { DisableableShaderBlock, BlockDisableStrategy as DisableStrategy } from "./disableableShaderBlock.js";
7
+ export { DisableableShaderBlock, BlockDisableStrategy } from "./disableableShaderBlock.js";
8
8
  export { AggregateBlock } from "./aggregateBlock.js";
9
9
  export { type IDisableableBlock } from "./disableableShaderBlock.js";
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blockFoundation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9G,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blockFoundation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -4,7 +4,7 @@ export {} from "./inputBlock.js";
4
4
  export { ShaderBlock } from "./shaderBlock.js";
5
5
  export { CustomShaderBlock } from "./customShaderBlock.js";
6
6
  export { CustomAggregateBlock } from "./customAggregateBlock.js";
7
- export { DisableableShaderBlock, BlockDisableStrategy as DisableStrategy } from "./disableableShaderBlock.js";
7
+ export { DisableableShaderBlock, BlockDisableStrategy } from "./disableableShaderBlock.js";
8
8
  export { AggregateBlock } from "./aggregateBlock.js";
9
9
  export {} from "./disableableShaderBlock.js";
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/blockFoundation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAA6B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAsB,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9G,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAA0B,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/blockFoundation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAA6B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAsB,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAA0B,MAAM,6BAA6B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"convertGlslIntoBlock.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/convertGlslIntoBlock.ts"],"names":[],"mappings":"AAwHA;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAiFzF"}
1
+ {"version":3,"file":"convertGlslIntoBlock.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/convertGlslIntoBlock.ts"],"names":[],"mappings":"AA0IA;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAsIzF"}
@@ -1,17 +1,25 @@
1
1
  import * as fs from "fs";
2
2
  import { extractShaderProgramFromGlsl } from "./convertGlslIntoShaderProgram.js";
3
3
  import { ConnectionPointType } from "../../connection/connectionPointType.js";
4
+ import { BlockDisableStrategy } from "../../blockFoundation/disableableShaderBlock.js";
5
+ const EXTRA_IMPORTS = "@EXTRA_IMPORTS@";
4
6
  const SHADER_PROGRAM = "@SHADER_PROGRAM@";
5
7
  const BLOCK_NAME = "@BLOCK_NAME@";
6
8
  const NAMESPACE = "@NAMESPACE@";
7
9
  const SHADER_BINDING_PRIVATE_VARIABLES = "@SHADER_BINDING_PRIVATE_VARIABLES@";
8
10
  const CAMEL_CASE_UNIFORM = "@CAMEL_CASE_UNIFORM@";
9
11
  const CONNECTION_POINT_TYPE = "@CONNECTION_POINT_TYPE@";
12
+ const CONNECTION_POINT_DEFAULT_VALUE = "@CONNECTION_POINT_DEFAULT_VALUE@";
13
+ const SHADER_BINDING_EXTENDS = "@SHADER_BINDING_EXTENDS@";
10
14
  const SHADER_BINDING_CTOR_DOCSTRING_PARAMS = "@SHADER_BINDING_CTOR_DOCSTRING_PARAMS@";
11
15
  const SHADER_BINDING_CTOR_PARAMS = "@SHADER_CTOR_PARAMS@";
16
+ const SHADER_BINDING_SUPER_PARAMS = "@SHADER_BINDING_SUPER_PARAMS@";
12
17
  const SHADER_BINDING_CTOR = "@SHADER_BINDING_CTOR@";
13
18
  const SHADER_BINDING_BIND = "@SHADER_BINDING_BIND@";
19
+ const SHADER_BLOCK_EXTENDS = "@SHADER_BLOCK_EXTENDS@";
14
20
  const BLOCK_INPUT_PROPERTIES = "@BLOCK_INPUT_PROPERTIES@";
21
+ const BLOCK_DISABLE_OPTIMIZATION = "@BLOCK_DISABLE_OPTIMIZATION@";
22
+ const BLOCK_DISABLE_STRATEGY = "@BLOCK_DISABLE_STRATEGY@";
15
23
  const BLOCK_GET_SHADER_BINDING_VARS = "@BLOCK_SHADER_BINDING_BIND_VARS@";
16
24
  const BLOCK_GET_SHADER_PARAM_LIST = "@BLOCK_GET_SHADER_PARAM_LIST@";
17
25
  const EFFECT_SETTER = "@EFFECT_SETTER@";
@@ -20,11 +28,21 @@ const ShaderBindingCtorDocstringParams = ` * @param ${CAMEL_CASE_UNIFORM} -
20
28
  const ShaderBindingCtorParams = ` ${CAMEL_CASE_UNIFORM}: RuntimeData<ConnectionPointType.${CONNECTION_POINT_TYPE}>`;
21
29
  const ShaderBindingCtor = ` this._${CAMEL_CASE_UNIFORM} = ${CAMEL_CASE_UNIFORM};`;
22
30
  const ShaderBindingBind = ` effect.${EFFECT_SETTER}(this.getRemappedName(uniforms.${CAMEL_CASE_UNIFORM}), this._${CAMEL_CASE_UNIFORM}.value);`;
23
- const BlockInputProperties = ` /**
31
+ const BlockInputProperty = ` /**
24
32
  * The ${CAMEL_CASE_UNIFORM} connection point.
25
33
  */
26
34
  public readonly ${CAMEL_CASE_UNIFORM} = this._registerInput(uniforms.${CAMEL_CASE_UNIFORM}, ConnectionPointType.${CONNECTION_POINT_TYPE});
27
35
  `;
36
+ const BlockInputOptionalProperty = ` /**
37
+ /**
38
+ * The ${CAMEL_CASE_UNIFORM} connection point.
39
+ */
40
+ public readonly ${CAMEL_CASE_UNIFORM} = this._registerOptionalInput(
41
+ "${CAMEL_CASE_UNIFORM}",
42
+ ConnectionPointType.${CONNECTION_POINT_TYPE},
43
+ createStrongRef(${CONNECTION_POINT_DEFAULT_VALUE})
44
+ );
45
+ `;
28
46
  const BlockGetShaderBindingVars = ` const ${CAMEL_CASE_UNIFORM} = this._confirmRuntimeDataSupplied(this.${CAMEL_CASE_UNIFORM});`;
29
47
  const FileTemplate = `/* eslint-disable prettier/prettier */
30
48
  // ************************************************************
@@ -39,17 +57,17 @@ const FileTemplate = `/* eslint-disable prettier/prettier */
39
57
  import type { Effect } from "@babylonjs/core/Materials/effect";
40
58
 
41
59
  import {
42
- ShaderBinding,
60
+ ${SHADER_BINDING_EXTENDS},
43
61
  type RuntimeData,
44
62
  ConnectionPointType,
45
63
  type SmartFilter,
46
- ShaderBlock,
64
+ ${SHADER_BLOCK_EXTENDS},
47
65
  type ShaderProgram,
48
- } from "@babylonjs/smart-filters";${SHADER_PROGRAM}
66
+ ${EXTRA_IMPORTS}} from "@babylonjs/smart-filters";${SHADER_PROGRAM}
49
67
  /**
50
68
  * The shader binding for the ${BLOCK_NAME}, used by the runtime
51
69
  */
52
- class ${BLOCK_NAME}ShaderBinding extends ShaderBinding {
70
+ class ${BLOCK_NAME}ShaderBinding extends ${SHADER_BINDING_EXTENDS} {
53
71
  ${SHADER_BINDING_PRIVATE_VARIABLES}
54
72
 
55
73
  /**
@@ -59,7 +77,7 @@ ${SHADER_BINDING_CTOR_DOCSTRING_PARAMS}
59
77
  constructor(
60
78
  ${SHADER_BINDING_CTOR_PARAMS}
61
79
  ) {
62
- super();
80
+ super(${SHADER_BINDING_SUPER_PARAMS});
63
81
  ${SHADER_BINDING_CTOR}
64
82
  }
65
83
 
@@ -75,7 +93,7 @@ ${SHADER_BINDING_BIND}
75
93
  /**
76
94
  * The implementation of the ${BLOCK_NAME}
77
95
  */
78
- export class ${BLOCK_NAME} extends ShaderBlock {
96
+ export class ${BLOCK_NAME} extends ${SHADER_BLOCK_EXTENDS} {
79
97
  /**
80
98
  * The class name of the block.
81
99
  */
@@ -98,14 +116,14 @@ ${BLOCK_INPUT_PROPERTIES}
98
116
  * @param name - The friendly name of the block
99
117
  */
100
118
  constructor(smartFilter: SmartFilter, name: string) {
101
- super(smartFilter, name);
119
+ super(smartFilter, name, ${BLOCK_DISABLE_OPTIMIZATION}${BLOCK_DISABLE_STRATEGY});
102
120
  }
103
121
 
104
122
  /**
105
123
  * Get the class instance that binds all the required data to the shader (effect) when rendering.
106
124
  * @returns The class instance that binds the data to the effect
107
125
  */
108
- public getShaderBinding(): ShaderBinding {
126
+ public getShaderBinding(): ${SHADER_BINDING_EXTENDS} {
109
127
  ${BLOCK_GET_SHADER_BINDING_VARS}
110
128
 
111
129
  return new ${BLOCK_NAME}ShaderBinding(${BLOCK_GET_SHADER_PARAM_LIST});
@@ -119,6 +137,7 @@ ${BLOCK_GET_SHADER_BINDING_VARS}
119
137
  * @param importPath - The path to import the ShaderProgram type from
120
138
  */
121
139
  export function convertGlslIntoBlock(fragmentShaderPath, importPath) {
140
+ const extraImports = [];
122
141
  const { shaderProgramCode, fragmentShaderInfo } = extractShaderProgramFromGlsl(fragmentShaderPath, importPath, false, false);
123
142
  // Validation
124
143
  if (!fragmentShaderInfo.blockType) {
@@ -146,26 +165,69 @@ export function convertGlslIntoBlock(fragmentShaderPath, importPath) {
146
165
  });
147
166
  // Generate the block input properties
148
167
  const blockInputProperties = fragmentShaderInfo.uniforms.map((uniform) => {
149
- return BlockInputProperties.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name).replace(CONNECTION_POINT_TYPE, getConnectionPointTypeString(uniform.type));
168
+ var _a;
169
+ if (((_a = uniform.properties) === null || _a === void 0 ? void 0 : _a.default) !== undefined) {
170
+ if (extraImports.indexOf(" createStrongRef") === -1) {
171
+ extraImports.push(" createStrongRef");
172
+ }
173
+ return BlockInputOptionalProperty.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name)
174
+ .replace(CONNECTION_POINT_TYPE, getConnectionPointTypeString(uniform.type))
175
+ .replace(CONNECTION_POINT_DEFAULT_VALUE, uniform.properties.default);
176
+ }
177
+ else {
178
+ return BlockInputProperty.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name).replace(CONNECTION_POINT_TYPE, getConnectionPointTypeString(uniform.type));
179
+ }
150
180
  });
151
181
  // Generate the block get shader binding vars
152
182
  const blockGetShaderBindingVars = fragmentShaderInfo.uniforms.map((uniform) => {
153
183
  return BlockGetShaderBindingVars.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name);
154
184
  });
185
+ // Handle the disable optimization flag
186
+ const disableOptimization = fragmentShaderInfo.disableOptimization === true ? "true" : "false";
155
187
  // Generate the block get shader param list
156
188
  const blockGetShaderParamList = fragmentShaderInfo.uniforms.map((uniform) => {
157
189
  return uniform.name;
158
190
  });
191
+ // Decide if this is a disableable block or not
192
+ let shaderBlockExtends = "ShaderBlock";
193
+ let shaderBindingExtends = "ShaderBinding";
194
+ let blockDisableStrategy = "";
195
+ let shaderBindingSuperParams = "";
196
+ if (fragmentShaderInfo.blockDisableStrategy) {
197
+ shaderBlockExtends = "DisableableShaderBlock";
198
+ shaderBindingExtends = "DisableableShaderBinding";
199
+ blockDisableStrategy = `, BlockDisableStrategy.${BlockDisableStrategy[fragmentShaderInfo.blockDisableStrategy]}`;
200
+ shaderBindingSuperParams = "parentBlock";
201
+ shaderBindingCtorDocstringParams.unshift(" * @param parentBlock - IDisableableBlock");
202
+ shaderBindingCtorParams.unshift(" parentBlock: IDisableableBlock");
203
+ blockGetShaderParamList.unshift("this");
204
+ extraImports.push(" type IDisableableBlock");
205
+ extraImports.push(" BlockDisableStrategy");
206
+ shaderBindingBind.unshift(" super.bind(effect);");
207
+ }
208
+ // Additional validation
209
+ if (fragmentShaderInfo.blockDisableStrategy !== undefined &&
210
+ fragmentShaderInfo.blockDisableStrategy !== BlockDisableStrategy.Manual) {
211
+ if (fragmentShaderInfo.uniforms.findIndex((uniform) => uniform.name === "disabled") !== -1) {
212
+ throw new Error("A block that uses a BlockDisableStrategy other than Manual should not declare its own 'disabled' uniform");
213
+ }
214
+ }
159
215
  // Generate final contents
160
216
  const finalContents = FileTemplate.replace(SHADER_PROGRAM, shaderProgramCode)
217
+ .replace(EXTRA_IMPORTS, extraImports.join(",\n"))
161
218
  .replace(new RegExp(BLOCK_NAME, "g"), fragmentShaderInfo.blockType)
162
219
  .replace(NAMESPACE, fragmentShaderInfo.namespace || "Other")
220
+ .replace(new RegExp(SHADER_BINDING_EXTENDS, "g"), shaderBindingExtends)
163
221
  .replace(SHADER_BINDING_PRIVATE_VARIABLES, shaderBindingPrivateVariables.join("\n"))
164
222
  .replace(SHADER_BINDING_CTOR_DOCSTRING_PARAMS, shaderBindingCtorDocstringParams.join("\n"))
165
223
  .replace(SHADER_BINDING_CTOR_PARAMS, shaderBindingCtorParams.join(",\n"))
166
224
  .replace(SHADER_BINDING_CTOR, shaderBindingCtor.join("\n"))
225
+ .replace(SHADER_BINDING_SUPER_PARAMS, shaderBindingSuperParams)
167
226
  .replace(SHADER_BINDING_BIND, shaderBindingBind.join("\n"))
227
+ .replace(new RegExp(SHADER_BLOCK_EXTENDS, "g"), shaderBlockExtends)
168
228
  .replace(BLOCK_INPUT_PROPERTIES, blockInputProperties.join("\n"))
229
+ .replace(BLOCK_DISABLE_OPTIMIZATION, disableOptimization)
230
+ .replace(BLOCK_DISABLE_STRATEGY, blockDisableStrategy)
169
231
  .replace(BLOCK_GET_SHADER_BINDING_VARS, blockGetShaderBindingVars.join("\n"))
170
232
  .replace(BLOCK_GET_SHADER_PARAM_LIST, blockGetShaderParamList.join(","));
171
233
  // Write the block class TS file
@@ -1 +1 @@
1
- {"version":3,"file":"convertGlslIntoBlock.js","sourceRoot":"","sources":["../../../src/utils/buildTools/convertGlslIntoBlock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convertGlslIntoBlock.js","sourceRoot":"","sources":["../../../src/utils/buildTools/convertGlslIntoBlock.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { Nullable } from "@babylonjs/core/types";
2
2
  import type { ShaderCode } from "./shaderCode.types";
3
3
  import { ConnectionPointType } from "../../connection/connectionPointType.js";
4
+ import { BlockDisableStrategy } from "../../blockFoundation/disableableShaderBlock.js";
4
5
  /**
5
6
  * Describes the supported metadata properties for a uniform
6
7
  */
@@ -48,6 +49,10 @@ export type FragmentShaderInfo = {
48
49
  * If true, optimization should be disabled for this shader
49
50
  */
50
51
  disableOptimization?: boolean;
52
+ /**
53
+ * If supplied, the strategy to use for making this block disableable
54
+ */
55
+ blockDisableStrategy?: BlockDisableStrategy;
51
56
  /**
52
57
  * The shader code
53
58
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shaderConverter.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAI9E;;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,mBAAmB,CAAC;IAE1B;;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,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE5B;;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,CAiI9E;AAsMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAE7D"}
1
+ {"version":3,"file":"shaderConverter.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAIvF;;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,mBAAmB,CAAC;IAE1B;;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,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE5B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAE5C;;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,CAkI9E;AAiPD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAE7D"}
@@ -1,5 +1,6 @@
1
1
  import { Logger } from "@babylonjs/core/Misc/logger.js";
2
2
  import { ConnectionPointType } from "../../connection/connectionPointType.js";
3
+ import { BlockDisableStrategy } from "../../blockFoundation/disableableShaderBlock.js";
3
4
  const GetFunctionNamesRegEx = /\S*\w+\s+(\w+)\s*\(/g;
4
5
  /**
5
6
  * Parses a fragment shader
@@ -110,7 +111,8 @@ export function parseFragmentShader(fragmentShader) {
110
111
  namespace,
111
112
  shaderCode,
112
113
  uniforms,
113
- disableOptimization: !!(header === null || header === void 0 ? void 0 : header.disableOptimizer),
114
+ disableOptimization: !!(header === null || header === void 0 ? void 0 : header.disableOptimization),
115
+ blockDisableStrategy: header === null || header === void 0 ? void 0 : header.blockDisableStrategy,
114
116
  };
115
117
  }
116
118
  /**
@@ -218,17 +220,17 @@ const SmartFilterBlockTypeKey = "smartFilterBlockType";
218
220
  * @returns - The GlslHeader if found, otherwise null
219
221
  */
220
222
  function readHeader(fragmentShader) {
221
- const singleLineHeaderMatch = new RegExp(/^\/\/\s*(\{.*\})/gm).exec(fragmentShader);
223
+ const singleLineHeaderMatch = new RegExp(/^\n*\s*\/\/\s*(\{.*\})/g).exec(fragmentShader);
222
224
  if (singleLineHeaderMatch && singleLineHeaderMatch[1]) {
223
225
  return {
224
- header: JSON.parse(singleLineHeaderMatch[1].trim()),
226
+ header: parseHeader(singleLineHeaderMatch[1].trim()),
225
227
  fragmentShaderWithoutHeader: fragmentShader.replace(singleLineHeaderMatch[0], ""),
226
228
  };
227
229
  }
228
- const multiLineHeaderMatch = new RegExp("^\\/\\*(.*)\\*\\/", "gs").exec(fragmentShader);
230
+ const multiLineHeaderMatch = new RegExp(/^\n*\s*\/\*\s*(\{.*\})\s*\*\//gs).exec(fragmentShader);
229
231
  if (multiLineHeaderMatch && multiLineHeaderMatch[1]) {
230
232
  return {
231
- header: JSON.parse(multiLineHeaderMatch[1].trim()),
233
+ header: parseHeader(multiLineHeaderMatch[1].trim()),
232
234
  fragmentShaderWithoutHeader: fragmentShader.replace(multiLineHeaderMatch[0], ""),
233
235
  };
234
236
  }
@@ -237,6 +239,37 @@ function readHeader(fragmentShader) {
237
239
  fragmentShaderWithoutHeader: fragmentShader,
238
240
  };
239
241
  }
242
+ /**
243
+ * Parses the header from a string into a GlslHeader object
244
+ * @param header - The header string to parse
245
+ * @returns - The GlslHeader if the header is valid, otherwise null
246
+ */
247
+ function parseHeader(header) {
248
+ const parsedObject = JSON.parse(header);
249
+ if (!parsedObject || typeof parsedObject !== "object") {
250
+ return null;
251
+ }
252
+ // Check for required properties
253
+ if (!parsedObject[SmartFilterBlockTypeKey]) {
254
+ throw new Error("Missing required property: " + SmartFilterBlockTypeKey);
255
+ }
256
+ const glslHeader = parsedObject;
257
+ // Fix up the disableStrategy to be a BlockDisableStrategy
258
+ if (glslHeader.blockDisableStrategy) {
259
+ const rawStrategyValue = glslHeader.blockDisableStrategy;
260
+ switch (rawStrategyValue) {
261
+ case "Manual":
262
+ glslHeader.blockDisableStrategy = BlockDisableStrategy.Manual;
263
+ break;
264
+ case "AutoSample":
265
+ glslHeader.blockDisableStrategy = BlockDisableStrategy.AutoSample;
266
+ break;
267
+ default:
268
+ throw new Error(`Invalid disableStrategy: ${rawStrategyValue}`);
269
+ }
270
+ }
271
+ return glslHeader;
272
+ }
240
273
  /**
241
274
  * Determines if a fragment shader has the GLSL header required for parsing
242
275
  * @param fragmentShader - The fragment shader to check
@@ -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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"}
package/dist/version.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * The version of the SmartFilter core. During publish, this file is overwritten by versionUp.ts with the same version that is used for the NPM publish.
3
3
  */
4
- export declare const SmartFilterCoreVersion = "0.7.15-alpha";
4
+ export declare const SmartFilterCoreVersion = "0.8.0-alpha";
5
5
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,sBAAsB,iBAAiB,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,sBAAsB,gBAAgB,CAAC"}
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * The version of the SmartFilter core. During publish, this file is overwritten by versionUp.ts with the same version that is used for the NPM publish.
3
3
  */
4
- export const SmartFilterCoreVersion = "0.7.15-alpha";
4
+ export const SmartFilterCoreVersion = "0.8.0-alpha";
5
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,cAAc,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@babylonjs/smart-filters",
3
- "version": "0.7.15-alpha",
3
+ "version": "0.8.0-alpha",
4
4
  "description": "Babylon.js Smart Filter core",
5
5
  "keywords": [
6
6
  "video",
@@ -4,6 +4,6 @@ export { type AnyInputBlock } from "./inputBlock.js";
4
4
  export { ShaderBlock } from "./shaderBlock.js";
5
5
  export { CustomShaderBlock } from "./customShaderBlock.js";
6
6
  export { CustomAggregateBlock } from "./customAggregateBlock.js";
7
- export { DisableableShaderBlock, BlockDisableStrategy as DisableStrategy } from "./disableableShaderBlock.js";
7
+ export { DisableableShaderBlock, BlockDisableStrategy } from "./disableableShaderBlock.js";
8
8
  export { AggregateBlock } from "./aggregateBlock.js";
9
9
  export { type IDisableableBlock } from "./disableableShaderBlock.js";
@@ -1,18 +1,26 @@
1
1
  import * as fs from "fs";
2
2
  import { extractShaderProgramFromGlsl } from "./convertGlslIntoShaderProgram.js";
3
3
  import { ConnectionPointType } from "../../connection/connectionPointType.js";
4
+ import { BlockDisableStrategy } from "../../blockFoundation/disableableShaderBlock.js";
4
5
 
6
+ const EXTRA_IMPORTS = "@EXTRA_IMPORTS@";
5
7
  const SHADER_PROGRAM = "@SHADER_PROGRAM@";
6
8
  const BLOCK_NAME = "@BLOCK_NAME@";
7
9
  const NAMESPACE = "@NAMESPACE@";
8
10
  const SHADER_BINDING_PRIVATE_VARIABLES = "@SHADER_BINDING_PRIVATE_VARIABLES@";
9
11
  const CAMEL_CASE_UNIFORM = "@CAMEL_CASE_UNIFORM@";
10
12
  const CONNECTION_POINT_TYPE = "@CONNECTION_POINT_TYPE@";
13
+ const CONNECTION_POINT_DEFAULT_VALUE = "@CONNECTION_POINT_DEFAULT_VALUE@";
14
+ const SHADER_BINDING_EXTENDS = "@SHADER_BINDING_EXTENDS@";
11
15
  const SHADER_BINDING_CTOR_DOCSTRING_PARAMS = "@SHADER_BINDING_CTOR_DOCSTRING_PARAMS@";
12
16
  const SHADER_BINDING_CTOR_PARAMS = "@SHADER_CTOR_PARAMS@";
17
+ const SHADER_BINDING_SUPER_PARAMS = "@SHADER_BINDING_SUPER_PARAMS@";
13
18
  const SHADER_BINDING_CTOR = "@SHADER_BINDING_CTOR@";
14
19
  const SHADER_BINDING_BIND = "@SHADER_BINDING_BIND@";
20
+ const SHADER_BLOCK_EXTENDS = "@SHADER_BLOCK_EXTENDS@";
15
21
  const BLOCK_INPUT_PROPERTIES = "@BLOCK_INPUT_PROPERTIES@";
22
+ const BLOCK_DISABLE_OPTIMIZATION = "@BLOCK_DISABLE_OPTIMIZATION@";
23
+ const BLOCK_DISABLE_STRATEGY = "@BLOCK_DISABLE_STRATEGY@";
16
24
  const BLOCK_GET_SHADER_BINDING_VARS = "@BLOCK_SHADER_BINDING_BIND_VARS@";
17
25
  const BLOCK_GET_SHADER_PARAM_LIST = "@BLOCK_GET_SHADER_PARAM_LIST@";
18
26
  const EFFECT_SETTER = "@EFFECT_SETTER@";
@@ -23,11 +31,21 @@ const ShaderBindingCtorParams = ` ${CAMEL_CASE_UNIFORM}: RuntimeData<Conn
23
31
  const ShaderBindingCtor = ` this._${CAMEL_CASE_UNIFORM} = ${CAMEL_CASE_UNIFORM};`;
24
32
  const ShaderBindingBind = ` effect.${EFFECT_SETTER}(this.getRemappedName(uniforms.${CAMEL_CASE_UNIFORM}), this._${CAMEL_CASE_UNIFORM}.value);`;
25
33
 
26
- const BlockInputProperties = ` /**
34
+ const BlockInputProperty = ` /**
27
35
  * The ${CAMEL_CASE_UNIFORM} connection point.
28
36
  */
29
37
  public readonly ${CAMEL_CASE_UNIFORM} = this._registerInput(uniforms.${CAMEL_CASE_UNIFORM}, ConnectionPointType.${CONNECTION_POINT_TYPE});
30
38
  `;
39
+ const BlockInputOptionalProperty = ` /**
40
+ /**
41
+ * The ${CAMEL_CASE_UNIFORM} connection point.
42
+ */
43
+ public readonly ${CAMEL_CASE_UNIFORM} = this._registerOptionalInput(
44
+ "${CAMEL_CASE_UNIFORM}",
45
+ ConnectionPointType.${CONNECTION_POINT_TYPE},
46
+ createStrongRef(${CONNECTION_POINT_DEFAULT_VALUE})
47
+ );
48
+ `;
31
49
  const BlockGetShaderBindingVars = ` const ${CAMEL_CASE_UNIFORM} = this._confirmRuntimeDataSupplied(this.${CAMEL_CASE_UNIFORM});`;
32
50
 
33
51
  const FileTemplate = `/* eslint-disable prettier/prettier */
@@ -43,17 +61,17 @@ const FileTemplate = `/* eslint-disable prettier/prettier */
43
61
  import type { Effect } from "@babylonjs/core/Materials/effect";
44
62
 
45
63
  import {
46
- ShaderBinding,
64
+ ${SHADER_BINDING_EXTENDS},
47
65
  type RuntimeData,
48
66
  ConnectionPointType,
49
67
  type SmartFilter,
50
- ShaderBlock,
68
+ ${SHADER_BLOCK_EXTENDS},
51
69
  type ShaderProgram,
52
- } from "@babylonjs/smart-filters";${SHADER_PROGRAM}
70
+ ${EXTRA_IMPORTS}} from "@babylonjs/smart-filters";${SHADER_PROGRAM}
53
71
  /**
54
72
  * The shader binding for the ${BLOCK_NAME}, used by the runtime
55
73
  */
56
- class ${BLOCK_NAME}ShaderBinding extends ShaderBinding {
74
+ class ${BLOCK_NAME}ShaderBinding extends ${SHADER_BINDING_EXTENDS} {
57
75
  ${SHADER_BINDING_PRIVATE_VARIABLES}
58
76
 
59
77
  /**
@@ -63,7 +81,7 @@ ${SHADER_BINDING_CTOR_DOCSTRING_PARAMS}
63
81
  constructor(
64
82
  ${SHADER_BINDING_CTOR_PARAMS}
65
83
  ) {
66
- super();
84
+ super(${SHADER_BINDING_SUPER_PARAMS});
67
85
  ${SHADER_BINDING_CTOR}
68
86
  }
69
87
 
@@ -79,7 +97,7 @@ ${SHADER_BINDING_BIND}
79
97
  /**
80
98
  * The implementation of the ${BLOCK_NAME}
81
99
  */
82
- export class ${BLOCK_NAME} extends ShaderBlock {
100
+ export class ${BLOCK_NAME} extends ${SHADER_BLOCK_EXTENDS} {
83
101
  /**
84
102
  * The class name of the block.
85
103
  */
@@ -102,14 +120,14 @@ ${BLOCK_INPUT_PROPERTIES}
102
120
  * @param name - The friendly name of the block
103
121
  */
104
122
  constructor(smartFilter: SmartFilter, name: string) {
105
- super(smartFilter, name);
123
+ super(smartFilter, name, ${BLOCK_DISABLE_OPTIMIZATION}${BLOCK_DISABLE_STRATEGY});
106
124
  }
107
125
 
108
126
  /**
109
127
  * Get the class instance that binds all the required data to the shader (effect) when rendering.
110
128
  * @returns The class instance that binds the data to the effect
111
129
  */
112
- public getShaderBinding(): ShaderBinding {
130
+ public getShaderBinding(): ${SHADER_BINDING_EXTENDS} {
113
131
  ${BLOCK_GET_SHADER_BINDING_VARS}
114
132
 
115
133
  return new ${BLOCK_NAME}ShaderBinding(${BLOCK_GET_SHADER_PARAM_LIST});
@@ -124,6 +142,8 @@ ${BLOCK_GET_SHADER_BINDING_VARS}
124
142
  * @param importPath - The path to import the ShaderProgram type from
125
143
  */
126
144
  export function convertGlslIntoBlock(fragmentShaderPath: string, importPath: string): void {
145
+ const extraImports: string[] = [];
146
+
127
147
  const { shaderProgramCode, fragmentShaderInfo } = extractShaderProgramFromGlsl(
128
148
  fragmentShaderPath,
129
149
  importPath,
@@ -172,10 +192,19 @@ export function convertGlslIntoBlock(fragmentShaderPath: string, importPath: str
172
192
 
173
193
  // Generate the block input properties
174
194
  const blockInputProperties = fragmentShaderInfo.uniforms.map((uniform) => {
175
- return BlockInputProperties.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name).replace(
176
- CONNECTION_POINT_TYPE,
177
- getConnectionPointTypeString(uniform.type)
178
- );
195
+ if (uniform.properties?.default !== undefined) {
196
+ if (extraImports.indexOf(" createStrongRef") === -1) {
197
+ extraImports.push(" createStrongRef");
198
+ }
199
+ return BlockInputOptionalProperty.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name)
200
+ .replace(CONNECTION_POINT_TYPE, getConnectionPointTypeString(uniform.type))
201
+ .replace(CONNECTION_POINT_DEFAULT_VALUE, uniform.properties.default);
202
+ } else {
203
+ return BlockInputProperty.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name).replace(
204
+ CONNECTION_POINT_TYPE,
205
+ getConnectionPointTypeString(uniform.type)
206
+ );
207
+ }
179
208
  });
180
209
 
181
210
  // Generate the block get shader binding vars
@@ -183,21 +212,63 @@ export function convertGlslIntoBlock(fragmentShaderPath: string, importPath: str
183
212
  return BlockGetShaderBindingVars.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name);
184
213
  });
185
214
 
215
+ // Handle the disable optimization flag
216
+ const disableOptimization = fragmentShaderInfo.disableOptimization === true ? "true" : "false";
217
+
186
218
  // Generate the block get shader param list
187
219
  const blockGetShaderParamList = fragmentShaderInfo.uniforms.map((uniform) => {
188
220
  return uniform.name;
189
221
  });
190
222
 
223
+ // Decide if this is a disableable block or not
224
+ let shaderBlockExtends = "ShaderBlock";
225
+ let shaderBindingExtends = "ShaderBinding";
226
+ let blockDisableStrategy = "";
227
+ let shaderBindingSuperParams = "";
228
+ if (fragmentShaderInfo.blockDisableStrategy) {
229
+ shaderBlockExtends = "DisableableShaderBlock";
230
+ shaderBindingExtends = "DisableableShaderBinding";
231
+ blockDisableStrategy = `, BlockDisableStrategy.${BlockDisableStrategy[fragmentShaderInfo.blockDisableStrategy]}`;
232
+ shaderBindingSuperParams = "parentBlock";
233
+
234
+ shaderBindingCtorDocstringParams.unshift(" * @param parentBlock - IDisableableBlock");
235
+ shaderBindingCtorParams.unshift(" parentBlock: IDisableableBlock");
236
+ blockGetShaderParamList.unshift("this");
237
+
238
+ extraImports.push(" type IDisableableBlock");
239
+ extraImports.push(" BlockDisableStrategy");
240
+
241
+ shaderBindingBind.unshift(" super.bind(effect);");
242
+ }
243
+
244
+ // Additional validation
245
+ if (
246
+ fragmentShaderInfo.blockDisableStrategy !== undefined &&
247
+ fragmentShaderInfo.blockDisableStrategy !== BlockDisableStrategy.Manual
248
+ ) {
249
+ if (fragmentShaderInfo.uniforms.findIndex((uniform) => uniform.name === "disabled") !== -1) {
250
+ throw new Error(
251
+ "A block that uses a BlockDisableStrategy other than Manual should not declare its own 'disabled' uniform"
252
+ );
253
+ }
254
+ }
255
+
191
256
  // Generate final contents
192
257
  const finalContents = FileTemplate.replace(SHADER_PROGRAM, shaderProgramCode)
258
+ .replace(EXTRA_IMPORTS, extraImports.join(",\n"))
193
259
  .replace(new RegExp(BLOCK_NAME, "g"), fragmentShaderInfo.blockType)
194
260
  .replace(NAMESPACE, fragmentShaderInfo.namespace || "Other")
261
+ .replace(new RegExp(SHADER_BINDING_EXTENDS, "g"), shaderBindingExtends)
195
262
  .replace(SHADER_BINDING_PRIVATE_VARIABLES, shaderBindingPrivateVariables.join("\n"))
196
263
  .replace(SHADER_BINDING_CTOR_DOCSTRING_PARAMS, shaderBindingCtorDocstringParams.join("\n"))
197
264
  .replace(SHADER_BINDING_CTOR_PARAMS, shaderBindingCtorParams.join(",\n"))
198
265
  .replace(SHADER_BINDING_CTOR, shaderBindingCtor.join("\n"))
266
+ .replace(SHADER_BINDING_SUPER_PARAMS, shaderBindingSuperParams)
199
267
  .replace(SHADER_BINDING_BIND, shaderBindingBind.join("\n"))
268
+ .replace(new RegExp(SHADER_BLOCK_EXTENDS, "g"), shaderBlockExtends)
200
269
  .replace(BLOCK_INPUT_PROPERTIES, blockInputProperties.join("\n"))
270
+ .replace(BLOCK_DISABLE_OPTIMIZATION, disableOptimization)
271
+ .replace(BLOCK_DISABLE_STRATEGY, blockDisableStrategy)
201
272
  .replace(BLOCK_GET_SHADER_BINDING_VARS, blockGetShaderBindingVars.join("\n"))
202
273
  .replace(BLOCK_GET_SHADER_PARAM_LIST, blockGetShaderParamList.join(","));
203
274
 
@@ -2,6 +2,7 @@ import type { Nullable } from "@babylonjs/core/types";
2
2
  import { Logger } from "@babylonjs/core/Misc/logger.js";
3
3
  import type { ShaderCode, ShaderFunction } from "./shaderCode.types";
4
4
  import { ConnectionPointType } from "../../connection/connectionPointType.js";
5
+ import { BlockDisableStrategy } from "../../blockFoundation/disableableShaderBlock.js";
5
6
 
6
7
  const GetFunctionNamesRegEx = /\S*\w+\s+(\w+)\s*\(/g;
7
8
 
@@ -60,6 +61,11 @@ export type FragmentShaderInfo = {
60
61
  */
61
62
  disableOptimization?: boolean;
62
63
 
64
+ /**
65
+ * If supplied, the strategy to use for making this block disableable
66
+ */
67
+ blockDisableStrategy?: BlockDisableStrategy;
68
+
63
69
  /**
64
70
  * The shader code
65
71
  */
@@ -203,7 +209,8 @@ export function parseFragmentShader(fragmentShader: string): FragmentShaderInfo
203
209
  namespace,
204
210
  shaderCode,
205
211
  uniforms,
206
- disableOptimization: !!header?.disableOptimizer,
212
+ disableOptimization: !!header?.disableOptimization,
213
+ blockDisableStrategy: header?.blockDisableStrategy,
207
214
  };
208
215
  }
209
216
 
@@ -362,7 +369,13 @@ type GlslHeader = {
362
369
  /**
363
370
  * If true, optimization should be disabled for this shader
364
371
  */
365
- disableOptimizer?: boolean;
372
+ disableOptimization?: boolean;
373
+
374
+ /**
375
+ * If supplied, this will be an instance of DisableableShaderBlock, with this BlockDisableStrategy
376
+ * In the GLSL file, use the string key of the BlockDisableStrategy (e.g. "AutoSample").
377
+ */
378
+ blockDisableStrategy?: BlockDisableStrategy;
366
379
  };
367
380
 
368
381
  /**
@@ -381,18 +394,18 @@ function readHeader(fragmentShader: string): {
381
394
  */
382
395
  fragmentShaderWithoutHeader: string;
383
396
  } {
384
- const singleLineHeaderMatch = new RegExp(/^\/\/\s*(\{.*\})/gm).exec(fragmentShader);
397
+ const singleLineHeaderMatch = new RegExp(/^\n*\s*\/\/\s*(\{.*\})/g).exec(fragmentShader);
385
398
  if (singleLineHeaderMatch && singleLineHeaderMatch[1]) {
386
399
  return {
387
- header: JSON.parse(singleLineHeaderMatch[1].trim()),
400
+ header: parseHeader(singleLineHeaderMatch[1].trim()),
388
401
  fragmentShaderWithoutHeader: fragmentShader.replace(singleLineHeaderMatch[0], ""),
389
402
  };
390
403
  }
391
404
 
392
- const multiLineHeaderMatch = new RegExp("^\\/\\*(.*)\\*\\/", "gs").exec(fragmentShader);
405
+ const multiLineHeaderMatch = new RegExp(/^\n*\s*\/\*\s*(\{.*\})\s*\*\//gs).exec(fragmentShader);
393
406
  if (multiLineHeaderMatch && multiLineHeaderMatch[1]) {
394
407
  return {
395
- header: JSON.parse(multiLineHeaderMatch[1].trim()),
408
+ header: parseHeader(multiLineHeaderMatch[1].trim()),
396
409
  fragmentShaderWithoutHeader: fragmentShader.replace(multiLineHeaderMatch[0], ""),
397
410
  };
398
411
  }
@@ -403,6 +416,43 @@ function readHeader(fragmentShader: string): {
403
416
  };
404
417
  }
405
418
 
419
+ /**
420
+ * Parses the header from a string into a GlslHeader object
421
+ * @param header - The header string to parse
422
+ * @returns - The GlslHeader if the header is valid, otherwise null
423
+ */
424
+ function parseHeader(header: string): Nullable<GlslHeader> {
425
+ const parsedObject = JSON.parse(header);
426
+
427
+ if (!parsedObject || typeof parsedObject !== "object") {
428
+ return null;
429
+ }
430
+
431
+ // Check for required properties
432
+ if (!parsedObject[SmartFilterBlockTypeKey]) {
433
+ throw new Error("Missing required property: " + SmartFilterBlockTypeKey);
434
+ }
435
+
436
+ const glslHeader = parsedObject as GlslHeader;
437
+
438
+ // Fix up the disableStrategy to be a BlockDisableStrategy
439
+ if (glslHeader.blockDisableStrategy) {
440
+ const rawStrategyValue = glslHeader.blockDisableStrategy;
441
+ switch (rawStrategyValue as unknown as string) {
442
+ case "Manual":
443
+ glslHeader.blockDisableStrategy = BlockDisableStrategy.Manual;
444
+ break;
445
+ case "AutoSample":
446
+ glslHeader.blockDisableStrategy = BlockDisableStrategy.AutoSample;
447
+ break;
448
+ default:
449
+ throw new Error(`Invalid disableStrategy: ${rawStrategyValue}`);
450
+ }
451
+ }
452
+
453
+ return glslHeader;
454
+ }
455
+
406
456
  /**
407
457
  * Determines if a fragment shader has the GLSL header required for parsing
408
458
  * @param fragmentShader - The fragment shader to check
package/src/version.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * The version of the SmartFilter core. During publish, this file is overwritten by versionUp.ts with the same version that is used for the NPM publish.
3
3
  */
4
- export const SmartFilterCoreVersion = "0.7.15-alpha";
4
+ export const SmartFilterCoreVersion = "0.8.0-alpha";