@babylonjs/smart-filters 1.0.13 → 8.19.0

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.
Files changed (259) hide show
  1. package/dist/blockFoundation/aggregateBlock.d.ts +3 -3
  2. package/dist/blockFoundation/aggregateBlock.d.ts.map +1 -1
  3. package/dist/blockFoundation/aggregateBlock.js +1 -2
  4. package/dist/blockFoundation/aggregateBlock.js.map +1 -1
  5. package/dist/blockFoundation/baseBlock.d.ts +2 -2
  6. package/dist/blockFoundation/baseBlock.d.ts.map +1 -1
  7. package/dist/blockFoundation/baseBlock.js +5 -6
  8. package/dist/blockFoundation/baseBlock.js.map +1 -1
  9. package/dist/blockFoundation/customAggregateBlock.d.ts.map +1 -1
  10. package/dist/blockFoundation/customAggregateBlock.js +2 -2
  11. package/dist/blockFoundation/customAggregateBlock.js.map +1 -1
  12. package/dist/blockFoundation/customShaderBlock.d.ts +9 -0
  13. package/dist/blockFoundation/customShaderBlock.d.ts.map +1 -1
  14. package/dist/blockFoundation/customShaderBlock.js +47 -7
  15. package/dist/blockFoundation/customShaderBlock.js.map +1 -1
  16. package/dist/blockFoundation/disableableShaderBlock.d.ts.map +1 -1
  17. package/dist/blockFoundation/disableableShaderBlock.js +4 -4
  18. package/dist/blockFoundation/disableableShaderBlock.js.map +1 -1
  19. package/dist/blockFoundation/index.js +0 -2
  20. package/dist/blockFoundation/index.js.map +1 -1
  21. package/dist/blockFoundation/inputBlock.d.ts +8 -8
  22. package/dist/blockFoundation/inputBlock.d.ts.map +1 -1
  23. package/dist/blockFoundation/inputBlock.deserializer.d.ts +1 -1
  24. package/dist/blockFoundation/inputBlock.deserializer.d.ts.map +1 -1
  25. package/dist/blockFoundation/inputBlock.deserializer.js +1 -1
  26. package/dist/blockFoundation/inputBlock.deserializer.js.map +1 -1
  27. package/dist/blockFoundation/inputBlock.js +7 -7
  28. package/dist/blockFoundation/inputBlock.js.map +1 -1
  29. package/dist/blockFoundation/inputBlock.serialization.types.d.ts.map +1 -1
  30. package/dist/blockFoundation/inputBlock.serializer.d.ts +1 -1
  31. package/dist/blockFoundation/inputBlock.serializer.js +26 -28
  32. package/dist/blockFoundation/inputBlock.serializer.js.map +1 -1
  33. package/dist/blockFoundation/outputBlock.d.ts +4 -9
  34. package/dist/blockFoundation/outputBlock.d.ts.map +1 -1
  35. package/dist/blockFoundation/outputBlock.js +13 -14
  36. package/dist/blockFoundation/outputBlock.js.map +1 -1
  37. package/dist/blockFoundation/shaderBlock.d.ts +4 -4
  38. package/dist/blockFoundation/shaderBlock.d.ts.map +1 -1
  39. package/dist/blockFoundation/shaderBlock.js +13 -19
  40. package/dist/blockFoundation/shaderBlock.js.map +1 -1
  41. package/dist/blockFoundation/textureOptions.d.ts +1 -1
  42. package/dist/blockFoundation/textureOptions.js +1 -1
  43. package/dist/command/command.d.ts +1 -1
  44. package/dist/command/command.js +1 -1
  45. package/dist/command/commandBuffer.d.ts +1 -1
  46. package/dist/command/commandBuffer.d.ts.map +1 -1
  47. package/dist/command/commandBuffer.js +2 -2
  48. package/dist/command/commandBufferDebugger.d.ts +2 -2
  49. package/dist/command/commandBufferDebugger.d.ts.map +1 -1
  50. package/dist/command/commandBufferDebugger.js +1 -1
  51. package/dist/command/commandBufferDebugger.js.map +1 -1
  52. package/dist/command/index.d.ts +3 -1
  53. package/dist/command/index.d.ts.map +1 -1
  54. package/dist/command/index.js +5 -1
  55. package/dist/command/index.js.map +1 -1
  56. package/dist/connection/connectionPoint.d.ts +3 -3
  57. package/dist/connection/connectionPoint.d.ts.map +1 -1
  58. package/dist/connection/connectionPoint.js +2 -2
  59. package/dist/connection/connectionPoint.js.map +1 -1
  60. package/dist/connection/connectionPointCompatibilityState.d.ts +1 -1
  61. package/dist/connection/connectionPointCompatibilityState.js +1 -1
  62. package/dist/connection/connectionPointType.d.ts +3 -3
  63. package/dist/connection/connectionPointType.d.ts.map +1 -1
  64. package/dist/connection/connectionPointWithDefault.d.ts +3 -3
  65. package/dist/connection/connectionPointWithDefault.d.ts.map +1 -1
  66. package/dist/connection/connectionPointWithDefault.js.map +1 -1
  67. package/dist/connection/index.d.ts +2 -1
  68. package/dist/connection/index.d.ts.map +1 -1
  69. package/dist/connection/index.js +3 -3
  70. package/dist/connection/index.js.map +1 -1
  71. package/dist/editorUtils/editableInPropertyPage.d.ts +2 -2
  72. package/dist/editorUtils/editableInPropertyPage.d.ts.map +1 -1
  73. package/dist/editorUtils/editableInPropertyPage.js +2 -2
  74. package/dist/editorUtils/editableInPropertyPage.js.map +1 -1
  75. package/dist/editorUtils/index.d.ts +1 -0
  76. package/dist/editorUtils/index.d.ts.map +1 -1
  77. package/dist/editorUtils/index.js +2 -0
  78. package/dist/editorUtils/index.js.map +1 -1
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +1 -1
  81. package/dist/index.js.map +1 -1
  82. package/dist/optimization/dependencyGraph.js.map +1 -1
  83. package/dist/optimization/optimizedShaderBlock.d.ts +4 -4
  84. package/dist/optimization/optimizedShaderBlock.d.ts.map +1 -1
  85. package/dist/optimization/optimizedShaderBlock.js.map +1 -1
  86. package/dist/optimization/smartFilterOptimizer.d.ts +2 -2
  87. package/dist/optimization/smartFilterOptimizer.d.ts.map +1 -1
  88. package/dist/optimization/smartFilterOptimizer.js +34 -57
  89. package/dist/optimization/smartFilterOptimizer.js.map +1 -1
  90. package/dist/runtime/index.d.ts +2 -1
  91. package/dist/runtime/index.d.ts.map +1 -1
  92. package/dist/runtime/index.js +3 -3
  93. package/dist/runtime/index.js.map +1 -1
  94. package/dist/runtime/renderTargetGenerator.d.ts +1 -1
  95. package/dist/runtime/renderTargetGenerator.d.ts.map +1 -1
  96. package/dist/runtime/renderTargetGenerator.js +5 -7
  97. package/dist/runtime/renderTargetGenerator.js.map +1 -1
  98. package/dist/runtime/shaderRuntime.d.ts +7 -7
  99. package/dist/runtime/shaderRuntime.d.ts.map +1 -1
  100. package/dist/runtime/shaderRuntime.js +7 -8
  101. package/dist/runtime/shaderRuntime.js.map +1 -1
  102. package/dist/runtime/smartFilterRuntime.d.ts +3 -3
  103. package/dist/runtime/smartFilterRuntime.d.ts.map +1 -1
  104. package/dist/runtime/smartFilterRuntime.js.map +1 -1
  105. package/dist/runtime/strongRef.d.ts +1 -1
  106. package/dist/runtime/strongRef.js +1 -1
  107. package/dist/serialization/importCustomBlockDefinition.d.ts +1 -1
  108. package/dist/serialization/importCustomBlockDefinition.js +8 -9
  109. package/dist/serialization/importCustomBlockDefinition.js.map +1 -1
  110. package/dist/serialization/index.d.ts +1 -0
  111. package/dist/serialization/index.d.ts.map +1 -1
  112. package/dist/serialization/index.js +3 -0
  113. package/dist/serialization/index.js.map +1 -1
  114. package/dist/serialization/serializedBlockDefinition.d.ts +2 -2
  115. package/dist/serialization/serializedBlockDefinition.d.ts.map +1 -1
  116. package/dist/serialization/serializedShaderBlockDefinition.d.ts +1 -1
  117. package/dist/serialization/serializedShaderBlockDefinition.d.ts.map +1 -1
  118. package/dist/serialization/serializedSmartFilter.d.ts +1 -1
  119. package/dist/serialization/serializedSmartFilter.d.ts.map +1 -1
  120. package/dist/serialization/smartFilterDeserializer.d.ts +6 -6
  121. package/dist/serialization/smartFilterDeserializer.d.ts.map +1 -1
  122. package/dist/serialization/smartFilterDeserializer.js +9 -12
  123. package/dist/serialization/smartFilterDeserializer.js.map +1 -1
  124. package/dist/serialization/smartFilterSerializer.d.ts +2 -2
  125. package/dist/serialization/smartFilterSerializer.d.ts.map +1 -1
  126. package/dist/serialization/smartFilterSerializer.js +10 -13
  127. package/dist/serialization/smartFilterSerializer.js.map +1 -1
  128. package/dist/serialization/v1/defaultBlockSerializer.d.ts +2 -2
  129. package/dist/serialization/v1/defaultBlockSerializer.d.ts.map +1 -1
  130. package/dist/serialization/v1/defaultBlockSerializer.js +1 -1
  131. package/dist/serialization/v1/index.d.ts +1 -0
  132. package/dist/serialization/v1/index.d.ts.map +1 -1
  133. package/dist/serialization/v1/index.js +2 -0
  134. package/dist/serialization/v1/index.js.map +1 -1
  135. package/dist/serialization/v1/shaderBlockSerialization.types.d.ts +3 -3
  136. package/dist/serialization/v1/shaderBlockSerialization.types.d.ts.map +1 -1
  137. package/dist/serialization/v1/smartFilterSerialization.types.d.ts +2 -2
  138. package/dist/serialization/v1/smartFilterSerialization.types.d.ts.map +1 -1
  139. package/dist/smartFilter.d.ts +8 -8
  140. package/dist/smartFilter.d.ts.map +1 -1
  141. package/dist/smartFilter.js +6 -7
  142. package/dist/smartFilter.js.map +1 -1
  143. package/dist/utils/buildTools/buildShaders.d.ts +3 -2
  144. package/dist/utils/buildTools/buildShaders.d.ts.map +1 -1
  145. package/dist/utils/buildTools/buildShaders.js +7 -6
  146. package/dist/utils/buildTools/buildShaders.js.map +1 -1
  147. package/dist/utils/buildTools/convertGlslIntoBlock.d.ts +4 -2
  148. package/dist/utils/buildTools/convertGlslIntoBlock.d.ts.map +1 -1
  149. package/dist/utils/buildTools/convertGlslIntoBlock.js +136 -141
  150. package/dist/utils/buildTools/convertGlslIntoBlock.js.map +1 -1
  151. package/dist/utils/buildTools/convertGlslIntoShaderProgram.d.ts +4 -4
  152. package/dist/utils/buildTools/convertGlslIntoShaderProgram.d.ts.map +1 -1
  153. package/dist/utils/buildTools/convertGlslIntoShaderProgram.js +55 -48
  154. package/dist/utils/buildTools/convertGlslIntoShaderProgram.js.map +1 -1
  155. package/dist/utils/buildTools/convertShaders.d.ts +8 -5
  156. package/dist/utils/buildTools/convertShaders.d.ts.map +1 -1
  157. package/dist/utils/buildTools/convertShaders.js +38 -14
  158. package/dist/utils/buildTools/convertShaders.js.map +1 -1
  159. package/dist/utils/buildTools/shaderConverter.d.ts +4 -4
  160. package/dist/utils/buildTools/shaderConverter.d.ts.map +1 -1
  161. package/dist/utils/buildTools/shaderConverter.js +17 -21
  162. package/dist/utils/buildTools/shaderConverter.js.map +1 -1
  163. package/dist/utils/buildTools/watchShaders.d.ts +3 -2
  164. package/dist/utils/buildTools/watchShaders.d.ts.map +1 -1
  165. package/dist/utils/buildTools/watchShaders.js +10 -8
  166. package/dist/utils/buildTools/watchShaders.js.map +1 -1
  167. package/dist/utils/index.d.ts +1 -0
  168. package/dist/utils/index.d.ts.map +1 -1
  169. package/dist/utils/index.js +2 -1
  170. package/dist/utils/index.js.map +1 -1
  171. package/dist/utils/renderTargetUtils.d.ts +3 -3
  172. package/dist/utils/renderTargetUtils.d.ts.map +1 -1
  173. package/dist/utils/renderTargetUtils.js +4 -4
  174. package/dist/utils/renderTargetUtils.js.map +1 -1
  175. package/dist/utils/shaderCodeUtils.d.ts +8 -8
  176. package/dist/utils/shaderCodeUtils.d.ts.map +1 -1
  177. package/dist/utils/shaderCodeUtils.js +16 -28
  178. package/dist/utils/shaderCodeUtils.js.map +1 -1
  179. package/dist/utils/textureLoaders.d.ts +2 -2
  180. package/dist/utils/textureLoaders.d.ts.map +1 -1
  181. package/dist/utils/textureLoaders.js +2 -3
  182. package/dist/utils/textureLoaders.js.map +1 -1
  183. package/dist/utils/textureUtils.d.ts +5 -5
  184. package/dist/utils/textureUtils.d.ts.map +1 -1
  185. package/dist/utils/textureUtils.js +1 -1
  186. package/dist/utils/textureUtils.js.map +1 -1
  187. package/dist/version.d.ts +2 -2
  188. package/dist/version.js +2 -2
  189. package/license.md +21 -21
  190. package/package.json +13 -8
  191. package/src/blockFoundation/aggregateBlock.ts +148 -151
  192. package/src/blockFoundation/baseBlock.ts +339 -364
  193. package/src/blockFoundation/customAggregateBlock.ts +88 -104
  194. package/src/blockFoundation/customShaderBlock.ts +362 -326
  195. package/src/blockFoundation/disableableShaderBlock.ts +91 -100
  196. package/src/blockFoundation/index.ts +9 -9
  197. package/src/blockFoundation/inputBlock.deserializer.ts +72 -97
  198. package/src/blockFoundation/inputBlock.serialization.types.ts +126 -132
  199. package/src/blockFoundation/inputBlock.serializer.ts +150 -150
  200. package/src/blockFoundation/inputBlock.ts +181 -192
  201. package/src/blockFoundation/outputBlock.ts +144 -151
  202. package/src/blockFoundation/shaderBlock.ts +156 -163
  203. package/src/blockFoundation/textureOptions.ts +57 -57
  204. package/src/command/command.ts +59 -59
  205. package/src/command/commandBuffer.ts +71 -71
  206. package/src/command/commandBufferDebugger.ts +14 -14
  207. package/src/command/index.ts +7 -3
  208. package/src/connection/connectionPoint.ts +205 -214
  209. package/src/connection/connectionPointCompatibilityState.ts +31 -31
  210. package/src/connection/connectionPointType.ts +45 -45
  211. package/src/connection/connectionPointWithDefault.ts +27 -35
  212. package/src/connection/index.ts +8 -9
  213. package/src/editorUtils/editableInPropertyPage.ts +106 -106
  214. package/src/editorUtils/index.ts +3 -1
  215. package/src/index.ts +16 -15
  216. package/src/optimization/dependencyGraph.ts +96 -96
  217. package/src/optimization/index.ts +1 -1
  218. package/src/optimization/optimizedShaderBlock.ts +131 -134
  219. package/src/optimization/smartFilterOptimizer.ts +757 -825
  220. package/src/runtime/index.ts +8 -6
  221. package/src/runtime/renderTargetGenerator.ts +222 -248
  222. package/src/runtime/shaderRuntime.ts +174 -173
  223. package/src/runtime/smartFilterRuntime.ts +112 -112
  224. package/src/runtime/strongRef.ts +18 -18
  225. package/src/serialization/importCustomBlockDefinition.ts +86 -86
  226. package/src/serialization/index.ts +10 -7
  227. package/src/serialization/serializedBlockDefinition.ts +12 -12
  228. package/src/serialization/serializedShaderBlockDefinition.ts +7 -7
  229. package/src/serialization/serializedSmartFilter.ts +6 -6
  230. package/src/serialization/smartFilterDeserializer.ts +190 -220
  231. package/src/serialization/smartFilterSerializer.ts +110 -121
  232. package/src/serialization/v1/defaultBlockSerializer.ts +21 -21
  233. package/src/serialization/v1/index.ts +4 -2
  234. package/src/serialization/v1/shaderBlockSerialization.types.ts +85 -85
  235. package/src/serialization/v1/smartFilterSerialization.types.ts +129 -133
  236. package/src/smartFilter.ts +255 -260
  237. package/src/utils/buildTools/buildShaders.ts +14 -13
  238. package/src/utils/buildTools/convertGlslIntoBlock.ts +370 -385
  239. package/src/utils/buildTools/convertGlslIntoShaderProgram.ts +173 -172
  240. package/src/utils/buildTools/convertShaders.ts +65 -43
  241. package/src/utils/buildTools/recordVersionNumber.js +24 -0
  242. package/src/utils/buildTools/shaderConverter.ts +466 -478
  243. package/src/utils/buildTools/watchShaders.ts +44 -42
  244. package/src/utils/index.ts +4 -2
  245. package/src/utils/renderTargetUtils.ts +30 -35
  246. package/src/utils/shaderCodeUtils.ts +192 -207
  247. package/src/utils/textureLoaders.ts +31 -43
  248. package/src/utils/textureUtils.ts +28 -32
  249. package/src/version.ts +2 -2
  250. package/dist/utils/buildTools/determineVersion.d.ts +0 -36
  251. package/dist/utils/buildTools/determineVersion.d.ts.map +0 -1
  252. package/dist/utils/buildTools/determineVersion.js +0 -109
  253. package/dist/utils/buildTools/determineVersion.js.map +0 -1
  254. package/dist/utils/buildTools/versionUp.d.ts +0 -2
  255. package/dist/utils/buildTools/versionUp.d.ts.map +0 -1
  256. package/dist/utils/buildTools/versionUp.js +0 -53
  257. package/dist/utils/buildTools/versionUp.js.map +0 -1
  258. package/src/utils/buildTools/determineVersion.ts +0 -128
  259. package/src/utils/buildTools/versionUp.ts +0 -61
@@ -1,86 +1,86 @@
1
- import { ConnectionPointType } from "../connection/connectionPointType.js";
2
- import { hasGlslHeader, parseFragmentShader } from "../utils/buildTools/shaderConverter.js";
3
- import type { SerializedBlockDefinition } from "./serializedBlockDefinition.js";
4
- import type { SerializedShaderBlockDefinition } from "./serializedShaderBlockDefinition.js";
5
- import type { InputAutoBindV1, SerializedInputConnectionPointV1 } from "./v1/shaderBlockSerialization.types.js";
6
-
7
- /**
8
- * Imports a serialized custom block definition. Supports either serialized CustomShaderBlock definitions or
9
- * CustomAggregateBlock definitions. Can throw an exception if the serialized data is invalid.
10
- *
11
- * CustomShaderBlock definitions can be supplied either as serialized SerializedBlockDefinition object
12
- * or a glsl shader with the required annotations (see readme.md for details).
13
- *
14
- * CustomAggregateBlock definitions must be supplied as serialized SerializedBlockDefinition object.
15
- *
16
- * @param serializedData - The serialized data
17
- * @returns The serialized block definition
18
- */
19
- export function importCustomBlockDefinition(serializedData: string): SerializedBlockDefinition {
20
- if (hasGlslHeader(serializedData)) {
21
- return importAnnotatedGlsl(serializedData);
22
- } else {
23
- // Assume this is a serialized JSON object
24
- const blockDefinition = JSON.parse(serializedData);
25
-
26
- // Some old SmartFilters didn't have a format property - default to smartFilter if missing
27
- if (blockDefinition.format === undefined) {
28
- blockDefinition.format = "smartFilter";
29
- }
30
-
31
- // SmartFilters can be serialized without a blockType
32
- // By convention, we use the SmartFilter name as the blockType when importing them as SerializedBlockDefinitions
33
- if (blockDefinition.format === "smartFilter" && blockDefinition.name && !blockDefinition.blockType) {
34
- blockDefinition.blockType = blockDefinition.name;
35
- }
36
-
37
- // Validation
38
- if (!blockDefinition.blockType) {
39
- throw new Error("Could not find a blockType");
40
- }
41
-
42
- return blockDefinition;
43
- }
44
- }
45
-
46
- /**
47
- * Converts a fragment shader .glsl file to an SerializedBlockDefinition instance for use
48
- * as a CustomShaderBlock. The .glsl file must contain certain annotations to be imported.
49
- * See readme.md for more information.
50
- * @param fragmentShader - The contents of the .glsl fragment shader file
51
- * @returns The serialized block definition
52
- */
53
- function importAnnotatedGlsl(fragmentShader: string): SerializedShaderBlockDefinition {
54
- const fragmentShaderInfo = parseFragmentShader(fragmentShader);
55
-
56
- if (!fragmentShaderInfo.blockType) {
57
- throw new Error("blockType must be defined");
58
- }
59
-
60
- // Calculate the input connection points
61
- const inputConnectionPoints: SerializedInputConnectionPointV1[] = [];
62
- for (const uniform of fragmentShaderInfo.uniforms) {
63
- // Add to input connection point list
64
- const inputConnectionPoint: SerializedInputConnectionPointV1 = {
65
- name: uniform.name,
66
- type: uniform.type,
67
- autoBind: uniform.properties?.autoBind as InputAutoBindV1,
68
- };
69
- if (inputConnectionPoint.type !== ConnectionPointType.Texture && uniform.properties?.default !== undefined) {
70
- inputConnectionPoint.defaultValue = uniform.properties.default;
71
- }
72
- inputConnectionPoints.push(inputConnectionPoint);
73
- }
74
-
75
- return {
76
- format: "shaderBlockDefinition",
77
- formatVersion: 1,
78
- blockType: fragmentShaderInfo.blockType,
79
- namespace: fragmentShaderInfo.namespace,
80
- shaderProgram: {
81
- fragment: fragmentShaderInfo.shaderCode,
82
- },
83
- inputConnectionPoints,
84
- disableOptimization: !!fragmentShaderInfo.disableOptimization,
85
- };
86
- }
1
+ import { ConnectionPointType } from "../connection/connectionPointType.js";
2
+ import { HasGlslHeader, ParseFragmentShader } from "../utils/buildTools/shaderConverter.js";
3
+ import type { SerializedBlockDefinition } from "./serializedBlockDefinition.js";
4
+ import type { SerializedShaderBlockDefinition } from "./serializedShaderBlockDefinition.js";
5
+ import type { InputAutoBindV1, SerializedInputConnectionPointV1 } from "./v1/shaderBlockSerialization.types.js";
6
+
7
+ /**
8
+ * Imports a serialized custom block definition. Supports either serialized CustomShaderBlock definitions or
9
+ * CustomAggregateBlock definitions. Can throw an exception if the serialized data is invalid.
10
+ *
11
+ * CustomShaderBlock definitions can be supplied either as serialized SerializedBlockDefinition object
12
+ * or a glsl shader with the required annotations (see readme.md for details).
13
+ *
14
+ * CustomAggregateBlock definitions must be supplied as serialized SerializedBlockDefinition object.
15
+ *
16
+ * @param serializedData - The serialized data
17
+ * @returns The serialized block definition
18
+ */
19
+ export function ImportCustomBlockDefinition(serializedData: string): SerializedBlockDefinition {
20
+ if (HasGlslHeader(serializedData)) {
21
+ return ImportAnnotatedGlsl(serializedData);
22
+ } else {
23
+ // Assume this is a serialized JSON object
24
+ const blockDefinition = JSON.parse(serializedData);
25
+
26
+ // Some old SmartFilters didn't have a format property - default to smartFilter if missing
27
+ if (blockDefinition.format === undefined) {
28
+ blockDefinition.format = "smartFilter";
29
+ }
30
+
31
+ // SmartFilters can be serialized without a blockType
32
+ // By convention, we use the SmartFilter name as the blockType when importing them as SerializedBlockDefinitions
33
+ if (blockDefinition.format === "smartFilter" && blockDefinition.name && !blockDefinition.blockType) {
34
+ blockDefinition.blockType = blockDefinition.name;
35
+ }
36
+
37
+ // Validation
38
+ if (!blockDefinition.blockType) {
39
+ throw new Error("Could not find a blockType");
40
+ }
41
+
42
+ return blockDefinition;
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Converts a fragment shader .glsl file to an SerializedBlockDefinition instance for use
48
+ * as a CustomShaderBlock. The .glsl file must contain certain annotations to be imported.
49
+ * See readme.md for more information.
50
+ * @param fragmentShader - The contents of the .glsl fragment shader file
51
+ * @returns The serialized block definition
52
+ */
53
+ function ImportAnnotatedGlsl(fragmentShader: string): SerializedShaderBlockDefinition {
54
+ const fragmentShaderInfo = ParseFragmentShader(fragmentShader);
55
+
56
+ if (!fragmentShaderInfo.blockType) {
57
+ throw new Error("blockType must be defined");
58
+ }
59
+
60
+ // Calculate the input connection points
61
+ const inputConnectionPoints: SerializedInputConnectionPointV1[] = [];
62
+ for (const uniform of fragmentShaderInfo.uniforms) {
63
+ // Add to input connection point list
64
+ const inputConnectionPoint: SerializedInputConnectionPointV1 = {
65
+ name: uniform.name,
66
+ type: uniform.type,
67
+ autoBind: uniform.properties?.autoBind as InputAutoBindV1,
68
+ };
69
+ if (inputConnectionPoint.type !== ConnectionPointType.Texture && uniform.properties?.default !== undefined) {
70
+ inputConnectionPoint.defaultValue = uniform.properties.default;
71
+ }
72
+ inputConnectionPoints.push(inputConnectionPoint);
73
+ }
74
+
75
+ return {
76
+ format: "shaderBlockDefinition",
77
+ formatVersion: 1,
78
+ blockType: fragmentShaderInfo.blockType,
79
+ namespace: fragmentShaderInfo.namespace,
80
+ shaderProgram: {
81
+ fragment: fragmentShaderInfo.shaderCode,
82
+ },
83
+ inputConnectionPoints,
84
+ disableOptimization: !!fragmentShaderInfo.disableOptimization,
85
+ };
86
+ }
@@ -1,7 +1,10 @@
1
- export * from "./v1/index.js";
2
- export * from "./serializedSmartFilter.js";
3
- export * from "./smartFilterDeserializer.js";
4
- export * from "./smartFilterSerializer.js";
5
- export * from "./serializedShaderBlockDefinition.js";
6
- export * from "./serializedBlockDefinition.js";
7
- export * from "./importCustomBlockDefinition.js";
1
+ /* eslint-disable import/no-internal-modules */
2
+ export * from "./v1/index.js";
3
+ export * from "./serializedSmartFilter.js";
4
+ export * from "./smartFilterDeserializer.js";
5
+ export * from "./smartFilterSerializer.js";
6
+ export * from "./serializedShaderBlockDefinition.js";
7
+ export * from "./serializedBlockDefinition.js";
8
+ export * from "./importCustomBlockDefinition.js";
9
+ // Back compat for when camelCase was used
10
+ export { ImportCustomBlockDefinition as importCustomBlockDefinition } from "./importCustomBlockDefinition.js";
@@ -1,12 +1,12 @@
1
- import type { SerializedShaderBlockDefinition } from "./serializedShaderBlockDefinition";
2
- import type { SerializedSmartFilter } from "./serializedSmartFilter";
3
-
4
- /**
5
- * Type that represents any type of serialized block definition - shader or aggregate.
6
- */
7
- export type SerializedBlockDefinition = (SerializedShaderBlockDefinition | SerializedSmartFilter) & {
8
- /**
9
- * The type of block this is.
10
- */
11
- blockType: string;
12
- };
1
+ import type { SerializedShaderBlockDefinition } from "./serializedShaderBlockDefinition.js";
2
+ import type { SerializedSmartFilter } from "./serializedSmartFilter.js";
3
+
4
+ /**
5
+ * Type that represents any type of serialized block definition - shader or aggregate.
6
+ */
7
+ export type SerializedBlockDefinition = (SerializedShaderBlockDefinition | SerializedSmartFilter) & {
8
+ /**
9
+ * The type of block this is.
10
+ */
11
+ blockType: string;
12
+ };
@@ -1,7 +1,7 @@
1
- import type { SerializedShaderBlockDefinitionV1 } from "./v1/shaderBlockSerialization.types";
2
-
3
- /**
4
- * Type union of all versions of serialized SmartFilter block definitions
5
- * A block definition is an object which is used to create a CustomShaderBlock instance.
6
- */
7
- export type SerializedShaderBlockDefinition = SerializedShaderBlockDefinitionV1;
1
+ import type { SerializedShaderBlockDefinitionV1 } from "./v1/shaderBlockSerialization.types.js";
2
+
3
+ /**
4
+ * Type union of all versions of serialized SmartFilter block definitions
5
+ * A block definition is an object which is used to create a CustomShaderBlock instance.
6
+ */
7
+ export type SerializedShaderBlockDefinition = SerializedShaderBlockDefinitionV1;
@@ -1,6 +1,6 @@
1
- import type { SerializedSmartFilterV1 } from "./v1/smartFilterSerialization.types";
2
-
3
- /**
4
- * Type union of all versions of serialized SmartFilters
5
- */
6
- export type SerializedSmartFilter = SerializedSmartFilterV1;
1
+ import type { SerializedSmartFilterV1 } from "./v1/smartFilterSerialization.types.js";
2
+
3
+ /**
4
+ * Type union of all versions of serialized SmartFilters
5
+ */
6
+ export type SerializedSmartFilter = SerializedSmartFilterV1;