@babylonjs/smart-filters 0.4.3-alpha → 0.6.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.
Files changed (139) hide show
  1. package/dist/blocks/baseBlock.d.ts +6 -0
  2. package/dist/blocks/baseBlock.d.ts.map +1 -1
  3. package/dist/blocks/baseBlock.js +8 -0
  4. package/dist/blocks/baseBlock.js.map +1 -1
  5. package/dist/blocks/customShaderBlock.d.ts +55 -0
  6. package/dist/blocks/customShaderBlock.d.ts.map +1 -0
  7. package/dist/blocks/customShaderBlock.js +139 -0
  8. package/dist/blocks/customShaderBlock.js.map +1 -0
  9. package/dist/blocks/inputBlock.deserializer.d.ts +1 -1
  10. package/dist/blocks/inputBlock.deserializer.d.ts.map +1 -1
  11. package/dist/blocks/inputBlock.serializer.d.ts +1 -1
  12. package/dist/blocks/inputBlock.serializer.d.ts.map +1 -1
  13. package/dist/blocks/inputBlock.serializer.js +3 -3
  14. package/dist/blocks/inputBlock.serializer.js.map +1 -1
  15. package/dist/blocks/shaderBlock.d.ts +3 -7
  16. package/dist/blocks/shaderBlock.d.ts.map +1 -1
  17. package/dist/blocks/shaderBlock.js +45 -15
  18. package/dist/blocks/shaderBlock.js.map +1 -1
  19. package/dist/blocks/textureOptions.d.ts +47 -0
  20. package/dist/blocks/textureOptions.d.ts.map +1 -0
  21. package/dist/blocks/textureOptions.js +37 -0
  22. package/dist/blocks/textureOptions.js.map +1 -0
  23. package/dist/command/command.d.ts +2 -3
  24. package/dist/command/command.d.ts.map +1 -1
  25. package/dist/command/command.js.map +1 -1
  26. package/dist/command/commandBufferDebugger.js +1 -1
  27. package/dist/command/commandBufferDebugger.js.map +1 -1
  28. package/dist/connection/connectionPointType.d.ts +4 -0
  29. package/dist/connection/connectionPointType.d.ts.map +1 -1
  30. package/dist/editorUtils/editableInPropertyPage.d.ts +4 -0
  31. package/dist/editorUtils/editableInPropertyPage.d.ts.map +1 -1
  32. package/dist/editorUtils/editableInPropertyPage.js +1 -0
  33. package/dist/editorUtils/editableInPropertyPage.js.map +1 -1
  34. package/dist/index.d.ts +2 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +2 -0
  37. package/dist/index.js.map +1 -1
  38. package/dist/optimization/smartFilterOptimizer.d.ts +1 -1
  39. package/dist/optimization/smartFilterOptimizer.d.ts.map +1 -1
  40. package/dist/optimization/smartFilterOptimizer.js +10 -9
  41. package/dist/optimization/smartFilterOptimizer.js.map +1 -1
  42. package/dist/runtime/renderTargetGenerator.d.ts +8 -1
  43. package/dist/runtime/renderTargetGenerator.d.ts.map +1 -1
  44. package/dist/runtime/renderTargetGenerator.js +37 -18
  45. package/dist/runtime/renderTargetGenerator.js.map +1 -1
  46. package/dist/serialization/importCustomShaderBlockDefinition.d.ts +11 -0
  47. package/dist/serialization/importCustomShaderBlockDefinition.d.ts.map +1 -0
  48. package/dist/serialization/importCustomShaderBlockDefinition.js +80 -0
  49. package/dist/serialization/importCustomShaderBlockDefinition.js.map +1 -0
  50. package/dist/serialization/index.d.ts +1 -0
  51. package/dist/serialization/index.d.ts.map +1 -1
  52. package/dist/serialization/index.js +1 -0
  53. package/dist/serialization/index.js.map +1 -1
  54. package/dist/serialization/serializedBlockDefinition.d.ts +7 -0
  55. package/dist/serialization/serializedBlockDefinition.d.ts.map +1 -0
  56. package/dist/serialization/serializedBlockDefinition.js +2 -0
  57. package/dist/serialization/serializedBlockDefinition.js.map +1 -0
  58. package/dist/serialization/serializedSmartFilter.d.ts +1 -1
  59. package/dist/serialization/serializedSmartFilter.d.ts.map +1 -1
  60. package/dist/serialization/smartFilterDeserializer.d.ts +12 -4
  61. package/dist/serialization/smartFilterDeserializer.d.ts.map +1 -1
  62. package/dist/serialization/smartFilterDeserializer.js +63 -34
  63. package/dist/serialization/smartFilterDeserializer.js.map +1 -1
  64. package/dist/serialization/smartFilterSerializer.d.ts +2 -2
  65. package/dist/serialization/smartFilterSerializer.d.ts.map +1 -1
  66. package/dist/serialization/smartFilterSerializer.js +9 -6
  67. package/dist/serialization/smartFilterSerializer.js.map +1 -1
  68. package/dist/serialization/v1/blockSerialization.types.d.ts +55 -0
  69. package/dist/serialization/v1/blockSerialization.types.d.ts.map +1 -0
  70. package/dist/serialization/v1/blockSerialization.types.js +7 -0
  71. package/dist/serialization/v1/blockSerialization.types.js.map +1 -0
  72. package/dist/serialization/v1/defaultBlockSerializer.d.ts +1 -1
  73. package/dist/serialization/v1/defaultBlockSerializer.d.ts.map +1 -1
  74. package/dist/serialization/v1/defaultBlockSerializer.js +1 -1
  75. package/dist/serialization/v1/defaultBlockSerializer.js.map +1 -1
  76. package/dist/serialization/v1/index.d.ts +1 -1
  77. package/dist/serialization/v1/index.d.ts.map +1 -1
  78. package/dist/serialization/v1/index.js +1 -1
  79. package/dist/serialization/v1/index.js.map +1 -1
  80. package/dist/serialization/v1/{serialization.types.d.ts → smartFilterSerialization.types.d.ts} +12 -11
  81. package/dist/serialization/v1/smartFilterSerialization.types.d.ts.map +1 -0
  82. package/dist/serialization/v1/smartFilterSerialization.types.js +2 -0
  83. package/dist/serialization/v1/smartFilterSerialization.types.js.map +1 -0
  84. package/dist/utils/buildTools/buildShaders.js +1 -1
  85. package/dist/utils/buildTools/buildShaders.js.map +1 -1
  86. package/dist/utils/buildTools/convertShaderForHardcodedBlock.d.ts +13 -0
  87. package/dist/utils/buildTools/convertShaderForHardcodedBlock.d.ts.map +1 -0
  88. package/dist/utils/buildTools/convertShaderForHardcodedBlock.js +116 -0
  89. package/dist/utils/buildTools/convertShaderForHardcodedBlock.js.map +1 -0
  90. package/dist/utils/buildTools/shaderCode.types.d.ts +43 -0
  91. package/dist/utils/buildTools/shaderCode.types.d.ts.map +1 -0
  92. package/dist/utils/buildTools/shaderCode.types.js +2 -0
  93. package/dist/utils/buildTools/shaderCode.types.js.map +1 -0
  94. package/dist/utils/buildTools/shaderConverter.d.ts +56 -8
  95. package/dist/utils/buildTools/shaderConverter.d.ts.map +1 -1
  96. package/dist/utils/buildTools/shaderConverter.js +87 -137
  97. package/dist/utils/buildTools/shaderConverter.js.map +1 -1
  98. package/dist/utils/buildTools/watchShaders.js +2 -2
  99. package/dist/utils/buildTools/watchShaders.js.map +1 -1
  100. package/dist/utils/renderTargetUtils.js +3 -3
  101. package/dist/utils/renderTargetUtils.js.map +1 -1
  102. package/dist/utils/shaderCodeUtils.d.ts +1 -42
  103. package/dist/utils/shaderCodeUtils.d.ts.map +1 -1
  104. package/dist/utils/shaderCodeUtils.js.map +1 -1
  105. package/package.json +1 -1
  106. package/readme.md +19 -15
  107. package/src/blocks/baseBlock.ts +9 -0
  108. package/src/blocks/customShaderBlock.ts +217 -0
  109. package/src/blocks/inputBlock.deserializer.ts +1 -1
  110. package/src/blocks/inputBlock.serializer.ts +4 -4
  111. package/src/blocks/shaderBlock.ts +36 -15
  112. package/src/blocks/textureOptions.ts +57 -0
  113. package/src/command/command.ts +2 -3
  114. package/src/command/commandBufferDebugger.ts +1 -1
  115. package/src/connection/connectionPointType.ts +11 -0
  116. package/src/editorUtils/editableInPropertyPage.ts +5 -0
  117. package/src/index.ts +2 -0
  118. package/src/optimization/smartFilterOptimizer.ts +11 -10
  119. package/src/runtime/renderTargetGenerator.ts +55 -20
  120. package/src/serialization/importCustomShaderBlockDefinition.ts +85 -0
  121. package/src/serialization/index.ts +1 -0
  122. package/src/serialization/serializedBlockDefinition.ts +7 -0
  123. package/src/serialization/serializedSmartFilter.ts +1 -1
  124. package/src/serialization/smartFilterDeserializer.ts +106 -52
  125. package/src/serialization/smartFilterSerializer.ts +11 -7
  126. package/src/serialization/v1/blockSerialization.types.ts +63 -0
  127. package/src/serialization/v1/defaultBlockSerializer.ts +2 -2
  128. package/src/serialization/v1/index.ts +1 -1
  129. package/src/serialization/v1/{serialization.types.ts → smartFilterSerialization.types.ts} +11 -10
  130. package/src/utils/buildTools/buildShaders.ts +1 -1
  131. package/src/utils/buildTools/convertShaderForHardcodedBlock.ts +149 -0
  132. package/src/utils/buildTools/shaderCode.types.ts +49 -0
  133. package/src/utils/buildTools/shaderConverter.ts +158 -178
  134. package/src/utils/buildTools/watchShaders.ts +2 -2
  135. package/src/utils/renderTargetUtils.ts +3 -3
  136. package/src/utils/shaderCodeUtils.ts +1 -50
  137. package/dist/serialization/v1/serialization.types.d.ts.map +0 -1
  138. package/dist/serialization/v1/serialization.types.js +0 -2
  139. package/dist/serialization/v1/serialization.types.js.map +0 -1
@@ -0,0 +1,116 @@
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+ import { parseFragmentShader } from "./shaderConverter.js";
4
+ const TYPE_IMPORT_PATH = "@TYPE_IMPORT_PATH@";
5
+ const VERTEX_SHADER = "@VERTEX_SHADER@";
6
+ const UNIFORMS = "@UNIFORMS@";
7
+ const CONSTS_VALUE = "@CONSTS@";
8
+ const CONSTS_PROPERTY = "@CONSTS_PROPERTY@";
9
+ const MAIN_INPUT_NAME = "@MAIN_INPUT_NAME@";
10
+ const MAIN_FUNCTION_NAME = "@MAIN_FUNCTION_NAME@";
11
+ const FUNCTIONS = "@FUNCTIONS@";
12
+ const FUNCTION_NAME = "@FUNCTION_NAME@";
13
+ const FUNCTION_CODE = "@FUNCTION_CODE@";
14
+ const UNIFORM_NAMES = "@UNIFORM_NAMES@";
15
+ const ConstsTemplate = `
16
+ const: \`${CONSTS_VALUE}\`,`;
17
+ const FunctionTemplate = `
18
+ {
19
+ name: "${FUNCTION_NAME}",
20
+ code: \`
21
+ ${FUNCTION_CODE}
22
+ \`,
23
+ },`;
24
+ const CodeLinePrefix = " ";
25
+ const UniformLinePrefix = " ";
26
+ const ConstLinePrefix = " ";
27
+ const ShaderTemplate = `import type { ShaderProgram } from "${TYPE_IMPORT_PATH}";
28
+
29
+ /**
30
+ * The shader program for the block.
31
+ */
32
+ export const shaderProgram: ShaderProgram = {
33
+ vertex: ${VERTEX_SHADER},
34
+ fragment: {
35
+ uniform: \`${UNIFORMS}\`,${CONSTS_PROPERTY}
36
+ mainInputTexture: "${MAIN_INPUT_NAME}",
37
+ mainFunctionName: "${MAIN_FUNCTION_NAME}",
38
+ functions: [${FUNCTIONS}
39
+ ],
40
+ },
41
+ };
42
+
43
+ /**
44
+ * The uniform names for this shader, to be used in the shader binding so
45
+ * that the names are always in sync.
46
+ */
47
+ export const uniforms = {
48
+ ${UNIFORM_NAMES}
49
+ };
50
+ `;
51
+ const UniformNameLinePrefix = " ";
52
+ /**
53
+ * Converts a single shader to a .ts file which can be imported by a hardcoded block
54
+ * @param fragmentShaderPath - The path to the fragment file for the shader
55
+ * @param importPath - The path to import the ShaderProgram type from
56
+ */
57
+ export function convertShaderForHardcodedBlock(fragmentShaderPath, importPath) {
58
+ console.log(`Processing fragment shader: ${fragmentShaderPath}`);
59
+ // See if there is a corresponding vertex shader
60
+ let vertexShader = undefined;
61
+ const vertexShaderPath = fragmentShaderPath.replace(".fragment.glsl", ".vertex.glsl");
62
+ if (fs.existsSync(vertexShaderPath)) {
63
+ vertexShader = fs.readFileSync(vertexShaderPath, "utf8");
64
+ }
65
+ if (vertexShader) {
66
+ console.log("Found vertex shader");
67
+ }
68
+ // Read the fragment shader
69
+ const fragmentShader = fs.readFileSync(fragmentShaderPath, "utf8");
70
+ const fragmentShaderInfo = parseFragmentShader(fragmentShader);
71
+ // Write the shader TS file
72
+ const shaderFile = fragmentShaderPath.replace(".fragment.glsl", ".shader.ts");
73
+ const functionsSection = [];
74
+ for (const shaderFunction of fragmentShaderInfo.shaderCode.functions) {
75
+ functionsSection.push(FunctionTemplate.replace(FUNCTION_NAME, shaderFunction.name).replace(FUNCTION_CODE, addLinePrefixes(shaderFunction.code, CodeLinePrefix)));
76
+ }
77
+ const finalContents = ShaderTemplate.replace(VERTEX_SHADER, vertexShader ? `\`${vertexShader}\`` : "undefined")
78
+ .replace(TYPE_IMPORT_PATH, importPath)
79
+ .replace(UNIFORMS, "\n" + addLinePrefixes(fragmentShaderInfo.shaderCode.uniform || "", UniformLinePrefix))
80
+ .replace(MAIN_FUNCTION_NAME, fragmentShaderInfo.shaderCode.mainFunctionName)
81
+ .replace(MAIN_INPUT_NAME, fragmentShaderInfo.shaderCode.mainInputTexture || '""')
82
+ .replace(CONSTS_PROPERTY, fragmentShaderInfo.shaderCode.const
83
+ ? ConstsTemplate.replace(CONSTS_VALUE, addLinePrefixes(fragmentShaderInfo.shaderCode.const, ConstLinePrefix))
84
+ : "")
85
+ .replace(FUNCTIONS, functionsSection.join(""))
86
+ .replace(UNIFORM_NAMES, addLinePrefixes(fragmentShaderInfo.uniforms.map((u) => `${u.name}: "${u.name}",`).join("\n"), UniformNameLinePrefix));
87
+ fs.writeFileSync(shaderFile, finalContents);
88
+ }
89
+ /**
90
+ * Converts .fragment.glsl and vertex.glsl file pairs into .shader.ts files which export a ShaderProgram object.
91
+ * @param shaderPath - The path to the .glsl files to convert.
92
+ * @param importPath - The path to import the ShaderProgram type from.
93
+ */
94
+ export function convertShaders(shaderPath, importPath) {
95
+ // Get all files in the path
96
+ const allFiles = fs.readdirSync(shaderPath, { withFileTypes: true, recursive: true });
97
+ // Find all fragment shaders (excluding the template)
98
+ const fragmentShaderFiles = allFiles.filter((file) => file.isFile() && file.name.endsWith(".fragment.glsl") && !file.name.endsWith("template.fragment.glsl"));
99
+ // Convert all shaders
100
+ for (const fragmentShaderFile of fragmentShaderFiles) {
101
+ convertShaderForHardcodedBlock(path.join(fragmentShaderFile.path, fragmentShaderFile.name), importPath);
102
+ }
103
+ }
104
+ /**
105
+ * Prefixes each line in the input
106
+ * @param input - The input string
107
+ * @param prefix - The prefix to add to each line
108
+ * @returns The input with each line prefixed
109
+ */
110
+ function addLinePrefixes(input, prefix) {
111
+ return input
112
+ .split("\n")
113
+ .map((line) => prefix + line)
114
+ .join("\n");
115
+ }
116
+ //# sourceMappingURL=convertShaderForHardcodedBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertShaderForHardcodedBlock.js","sourceRoot":"","sources":["../../../src/utils/buildTools/convertShaderForHardcodedBlock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Describes a shader function.
3
+ */
4
+ export type ShaderFunction = {
5
+ /**
6
+ * The name of the function.
7
+ */
8
+ name: string;
9
+ /**
10
+ * The code of the function.
11
+ */
12
+ code: string;
13
+ };
14
+ /**
15
+ * Describes a shader code.
16
+ */
17
+ export type ShaderCode = {
18
+ /**
19
+ * The declaration of the const variables.
20
+ */
21
+ const?: string;
22
+ /**
23
+ * The declaration of the uniform variables.
24
+ */
25
+ uniform?: string;
26
+ /**
27
+ * The declaration of the uniform variables that should be common for all ShaderBlock instances using this shader code.
28
+ */
29
+ uniformSingle?: string;
30
+ /**
31
+ * The name of the main function.
32
+ */
33
+ mainFunctionName: string;
34
+ /**
35
+ * The name of the input texture which is passed through if the block is disabled.
36
+ */
37
+ mainInputTexture?: string;
38
+ /**
39
+ * The list of functions used in the shader.
40
+ */
41
+ functions: ShaderFunction[];
42
+ };
43
+ //# sourceMappingURL=shaderCode.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaderCode.types.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderCode.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,SAAS,EAAE,cAAc,EAAE,CAAC;CAC/B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=shaderCode.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaderCode.types.js","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderCode.types.ts"],"names":[],"mappings":""}
@@ -1,13 +1,61 @@
1
+ import type { ShaderCode } from "./shaderCode.types";
1
2
  /**
2
- * Converts a single shader
3
- * @param fragmentShaderPath - The path to the fragment file for the shader
4
- * @param importPath - The path to import the ShaderProgram type from
3
+ * Describes the supported metadata properties for a uniform
5
4
  */
6
- export declare function convertShader(fragmentShaderPath: string, importPath: string): void;
5
+ export type UniformMetadataProperties = {
6
+ /**
7
+ * If supplied, the default value to use for the corresponding input connection point
8
+ */
9
+ default?: any;
10
+ };
7
11
  /**
8
- * Converts .fragment.glsl and vertex.glsl file pairs into .shader.ts files which export a ShaderProgram object.
9
- * @param shaderPath - The path to the .glsl files to convert.
10
- * @param importPath - The path to import the ShaderProgram type from.
12
+ * Describes a uniform in a shader
11
13
  */
12
- export declare function convertShaders(shaderPath: string, importPath: string): void;
14
+ export type UniformMetadata = {
15
+ /**
16
+ * The original name of the uniform (not renamed)
17
+ */
18
+ name: string;
19
+ /**
20
+ * The type string of the uniform
21
+ */
22
+ type: string;
23
+ /**
24
+ * Optional properties of the uniform
25
+ */
26
+ properties?: UniformMetadataProperties;
27
+ };
28
+ /**
29
+ * Information about a fragment shader
30
+ */
31
+ export type FragmentShaderInfo = {
32
+ /**
33
+ * If supplied, the blockType to use for the block
34
+ */
35
+ blockType?: string;
36
+ /**
37
+ * If true, optimization should be disabled for this shader
38
+ */
39
+ disableOptimization?: boolean;
40
+ /**
41
+ * The shader code
42
+ */
43
+ shaderCode: ShaderCode;
44
+ /**
45
+ * The set of uniforms
46
+ */
47
+ uniforms: UniformMetadata[];
48
+ };
49
+ /**
50
+ * Parses a fragment shader
51
+ * @param fragmentShader - The fragment shader to process
52
+ * @returns The processed fragment shader
53
+ */
54
+ export declare function parseFragmentShader(fragmentShader: string): FragmentShaderInfo;
55
+ /**
56
+ * Determines if a fragment shader has the GLSL header required for parsing
57
+ * @param fragmentShader - The fragment shader to check
58
+ * @returns True if the fragment shader has the GLSL header
59
+ */
60
+ export declare function hasGlslHeader(fragmentShader: string): boolean;
13
61
  //# sourceMappingURL=shaderConverter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shaderConverter.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AA2DA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CA2DlF;AAoPD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAapE"}
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;CACjB,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,128 +1,62 @@
1
- import * as fs from "fs";
2
- import * as path from "path";
3
- const TYPE_IMPORT_PATH = "@TYPE_IMPORT_PATH@";
4
- const VERTEX_SHADER = "@VERTEX_SHADER@";
5
- const UNIFORMS = "@UNIFORMS@";
6
- const CONSTS_VALUE = "@CONSTS@";
7
- const CONSTS_PROPERTY = "@CONSTS_PROPERTY@";
8
- const MAIN_INPUT_NAME = "@MAIN_INPUT_NAME@";
9
- const MAIN_FUNCTION_NAME = "@MAIN_FUNCTION_NAME@";
10
- const FUNCTIONS = "@FUNCTIONS@";
11
- const FUNCTION_NAME = "@FUNCTION_NAME@";
12
- const FUNCTION_CODE = "@FUNCTION_CODE@";
13
- const UNIFORM_NAMES = "@UNIFORM_NAMES@";
14
- const ConstsTemplate = `
15
- const: \`${CONSTS_VALUE}\`,`;
16
- const FunctionTemplate = `
17
- {
18
- name: "${FUNCTION_NAME}",
19
- code: \`
20
- ${FUNCTION_CODE}
21
- \`,
22
- },`;
23
- const CodeLinePrefix = " ";
24
- const UniformLinePrefix = " ";
25
- const ConstLinePrefix = " ";
26
- const ShaderTemplate = `import type { ShaderProgram } from "${TYPE_IMPORT_PATH}";
27
-
28
- /**
29
- * The shader program for the block.
30
- */
31
- export const shaderProgram: ShaderProgram = {
32
- vertex: ${VERTEX_SHADER},
33
- fragment: {
34
- uniform: \`${UNIFORMS}\`,${CONSTS_PROPERTY}
35
- mainInputTexture: "${MAIN_INPUT_NAME}",
36
- mainFunctionName: "${MAIN_FUNCTION_NAME}",
37
- functions: [${FUNCTIONS}
38
- ],
39
- },
40
- };
41
-
42
- /**
43
- * The uniform names for this shader, to be used in the shader binding so
44
- * that the names are always in sync.
45
- */
46
- export const uniforms = {
47
- ${UNIFORM_NAMES}
48
- };
49
- `;
50
- const UniformNameLinePrefix = " ";
51
1
  const GetFunctionNamesRegEx = /\S*\w+\s+(\w+)\s*\(/g;
52
2
  /**
53
- * Converts a single shader
54
- * @param fragmentShaderPath - The path to the fragment file for the shader
55
- * @param importPath - The path to import the ShaderProgram type from
56
- */
57
- export function convertShader(fragmentShaderPath, importPath) {
58
- console.log(`Processing fragment shader: ${fragmentShaderPath}`);
59
- // See if there is a corresponding vertex shader
60
- let vertexShader = undefined;
61
- const vertexShaderPath = fragmentShaderPath.replace(".fragment.glsl", ".vertex.glsl");
62
- if (fs.existsSync(vertexShaderPath)) {
63
- vertexShader = fs.readFileSync(vertexShaderPath, "utf8");
64
- }
65
- if (vertexShader) {
66
- console.log("Found vertex shader");
67
- }
68
- // Read the fragment shader
69
- const fragmentShader = fs.readFileSync(fragmentShaderPath, "utf8");
70
- // Version check
71
- const versionsFound = [...fragmentShader.matchAll(/\/\/\s+\[Smart Filter Shader Version\]\s*=\s*(\d+)/g)].map((match) => match[1]);
72
- let version = 1;
73
- if (versionsFound.length === 1 && versionsFound[0]) {
74
- version = parseInt(versionsFound[0]);
75
- }
76
- console.log(`Shader version: ${version}`);
77
- let fragmentShaderInfo;
78
- switch (version) {
79
- case 1:
80
- {
81
- fragmentShaderInfo = processFragmentShaderV1(fragmentShader);
82
- }
83
- break;
84
- default: {
85
- throw new Error(`Unsupported shader version: ${version}`);
86
- }
87
- }
88
- // Write the shader TS file
89
- const shaderFile = fragmentShaderPath.replace(".fragment.glsl", ".shader.ts");
90
- const finalContents = ShaderTemplate.replace(VERTEX_SHADER, vertexShader ? `\`${vertexShader}\`` : "undefined")
91
- .replace(TYPE_IMPORT_PATH, importPath)
92
- .replace(UNIFORMS, "\n" + addLinePrefixes(fragmentShaderInfo.finalUniforms.join("\n"), UniformLinePrefix))
93
- .replace(MAIN_FUNCTION_NAME, fragmentShaderInfo.mainFunctionName)
94
- .replace(MAIN_INPUT_NAME, fragmentShaderInfo.mainInputName)
95
- .replace(CONSTS_PROPERTY, fragmentShaderInfo.finalConsts.length > 0
96
- ? ConstsTemplate.replace(CONSTS_VALUE, addLinePrefixes(fragmentShaderInfo.finalConsts.join("\n"), ConstLinePrefix))
97
- : "")
98
- .replace(FUNCTIONS, fragmentShaderInfo.extractedFunctions.join(""))
99
- .replace(UNIFORM_NAMES, addLinePrefixes(fragmentShaderInfo.uniformNames.join("\n"), UniformNameLinePrefix));
100
- fs.writeFileSync(shaderFile, finalContents);
101
- }
102
- /**
103
- * Processes a fragment shader
3
+ * Parses a fragment shader
104
4
  * @param fragmentShader - The fragment shader to process
105
5
  * @returns The processed fragment shader
106
6
  */
107
- function processFragmentShaderV1(fragmentShader) {
7
+ export function parseFragmentShader(fragmentShader) {
8
+ const { header, fragmentShaderWithoutHeader } = readHeader(fragmentShader);
9
+ fragmentShader = fragmentShaderWithoutHeader;
10
+ const blockType = (header === null || header === void 0 ? void 0 : header[SmartFilterBlockTypeKey]) || undefined;
11
+ // Read the uniforms
12
+ const uniforms = [];
13
+ const uniformRegExp = new RegExp(/(\/\/\s*\{.*\}\n)?(uniform .*)/gm);
14
+ const uniformGroups = fragmentShader.matchAll(uniformRegExp);
15
+ for (const matches of uniformGroups) {
16
+ const annotationJSON = matches[1];
17
+ const uniformLine = matches[2];
18
+ if (!uniformLine) {
19
+ throw new Error("Uniform line not found");
20
+ }
21
+ const uniformLineMatches = new RegExp(/^uniform\s+(\w+)\s+(\w+)\s*;?/gm).exec(uniformLine);
22
+ if (!uniformLineMatches || uniformLineMatches.length < 3) {
23
+ throw new Error(`Uniforms must have a type and a name: '${uniformLine}'`);
24
+ }
25
+ const uniformTypeString = uniformLineMatches[1];
26
+ const uniformName = uniformLineMatches[2];
27
+ if (!uniformTypeString) {
28
+ throw new Error(`Uniforms must have a type: '${uniformLine}'`);
29
+ }
30
+ if (!uniformName) {
31
+ throw new Error(`Uniforms must have a name: '${uniformLine}'`);
32
+ }
33
+ uniforms.push({
34
+ name: uniformName,
35
+ type: uniformTypeString,
36
+ properties: annotationJSON ? JSON.parse(annotationJSON.replace("//", "").trim()) : undefined,
37
+ });
38
+ if (annotationJSON) {
39
+ // Strip out any annotation so it isn't mistaken for function bodies
40
+ fragmentShader = fragmentShader.replace(annotationJSON, "");
41
+ }
42
+ }
108
43
  const fragmentShaderWithNoFunctionBodies = removeFunctionBodies(fragmentShader);
109
44
  // Collect uniform, const, and function names which need to be decorated
110
45
  // eslint-disable-next-line prettier/prettier
111
- const uniforms = [...fragmentShader.matchAll(/\S*uniform.*\s(\w*);/g)].map((match) => match[1]);
46
+ const uniformNames = uniforms.map((uniform) => uniform.name);
112
47
  console.log(`Uniforms found: ${JSON.stringify(uniforms)}`);
113
48
  const consts = [...fragmentShader.matchAll(/\S*const\s+\w*\s+(\w*)\s*=.*;/g)].map((match) => match[1]);
114
49
  console.log(`Consts found: ${JSON.stringify(consts)}`);
115
50
  const functionNames = [...fragmentShaderWithNoFunctionBodies.matchAll(GetFunctionNamesRegEx)].map((match) => match[1]);
116
51
  console.log(`Functions found: ${JSON.stringify(functionNames)}`);
117
52
  // Decorate the uniforms, consts, and functions
118
- const symbolsToDecorate = [...uniforms, ...consts, ...functionNames];
53
+ const symbolsToDecorate = [...uniformNames, ...consts, ...functionNames];
119
54
  let fragmentShaderWithRenamedSymbols = fragmentShader;
120
55
  for (const symbol of symbolsToDecorate) {
121
56
  const regex = new RegExp(`(?<=\\W+)${symbol}(?=\\W+)`, "gs");
122
57
  fragmentShaderWithRenamedSymbols = fragmentShaderWithRenamedSymbols.replace(regex, `_${symbol}_`);
123
58
  }
124
59
  console.log(`${symbolsToDecorate.length} symbol(s) renamed`);
125
- const uniformNames = uniforms.map((uniform) => `${uniform}: "${uniform}",`);
126
60
  // Extract all the uniforms
127
61
  const finalUniforms = [...fragmentShaderWithRenamedSymbols.matchAll(/^\s*(uniform\s.*)/gm)].map((match) => match[1]);
128
62
  // Extract all the consts
@@ -132,29 +66,24 @@ function processFragmentShaderV1(fragmentShader) {
132
66
  if (mainInputs.length !== 1 || !mainInputs[0]) {
133
67
  throw new Error("Exactly one main input must be defined in the shader");
134
68
  }
135
- const mainInputName = mainInputs[0];
69
+ const mainInputTexture = mainInputs[0];
136
70
  // Extract all the functions
137
71
  const { extractedFunctions, mainFunctionName } = extractFunctions(fragmentShaderWithRenamedSymbols);
138
- return {
139
- finalUniforms,
72
+ const shaderCode = {
73
+ uniform: finalUniforms.join("\n"),
140
74
  mainFunctionName,
141
- mainInputName,
142
- finalConsts,
143
- extractedFunctions,
144
- uniformNames,
75
+ mainInputTexture,
76
+ functions: extractedFunctions,
77
+ };
78
+ if (finalConsts.length > 0) {
79
+ shaderCode.const = finalConsts.join("\n");
80
+ }
81
+ return {
82
+ blockType,
83
+ shaderCode,
84
+ uniforms,
85
+ disableOptimization: !!(header === null || header === void 0 ? void 0 : header.disableOptimizer),
145
86
  };
146
- }
147
- /**
148
- * Prefixes each line in the input
149
- * @param input - The input string
150
- * @param prefix - The prefix to add to each line
151
- * @returns The input with each line prefixed
152
- */
153
- function addLinePrefixes(input, prefix) {
154
- return input
155
- .split("\n")
156
- .map((line) => prefix + line)
157
- .join("\n");
158
87
  }
159
88
  /**
160
89
  * Extracts all the functions from the shader
@@ -186,7 +115,10 @@ function extractFunctions(fragment) {
186
115
  if (inFunction && depth === 0) {
187
116
  inFunction = false;
188
117
  const { functionBody, functionName, isMainFunction } = processFunctionBody(currentFunction);
189
- extractedFunctions.push(FunctionTemplate.replace(FUNCTION_NAME, functionName).replace(FUNCTION_CODE, addLinePrefixes(functionBody, CodeLinePrefix)));
118
+ extractedFunctions.push({
119
+ name: functionName,
120
+ code: functionBody,
121
+ });
190
122
  if (isMainFunction) {
191
123
  if (mainFunctionName) {
192
124
  throw new Error("Multiple main functions found in shader code");
@@ -251,20 +183,38 @@ function removeFunctionBodies(input) {
251
183
  }
252
184
  return output;
253
185
  }
186
+ const SmartFilterBlockTypeKey = "smartFilterBlockType";
254
187
  /**
255
- * Converts .fragment.glsl and vertex.glsl file pairs into .shader.ts files which export a ShaderProgram object.
256
- * @param shaderPath - The path to the .glsl files to convert.
257
- * @param importPath - The path to import the ShaderProgram type from.
188
+ * Reads the GlslHeader from the shader code
189
+ * @param fragmentShader - The shader code to read
190
+ * @returns - The GlslHeader if found, otherwise null
258
191
  */
259
- export function convertShaders(shaderPath, importPath) {
260
- // Get all files in the path
261
- const allFiles = fs.readdirSync(shaderPath, { withFileTypes: true, recursive: true });
262
- // Find all fragment shaders (excluding the template)
263
- const fragmentShaderFiles = allFiles.filter((file) => file.isFile() && file.name.endsWith(".fragment.glsl") && !file.name.endsWith("template.fragment.glsl"));
264
- // Convert all shaders
265
- for (const fragmentShaderFile of fragmentShaderFiles) {
266
- convertShader(path.join(fragmentShaderFile.path, fragmentShaderFile.name), importPath);
192
+ function readHeader(fragmentShader) {
193
+ const singleLineHeaderMatch = new RegExp(/^\/\/\s*(\{.*\})/gm).exec(fragmentShader);
194
+ if (singleLineHeaderMatch && singleLineHeaderMatch[1]) {
195
+ return {
196
+ header: JSON.parse(singleLineHeaderMatch[1].trim()),
197
+ fragmentShaderWithoutHeader: fragmentShader.replace(singleLineHeaderMatch[0], ""),
198
+ };
267
199
  }
200
+ const multiLineHeaderMatch = new RegExp("^\\/\\*(.*)\\*\\/", "gs").exec(fragmentShader);
201
+ if (multiLineHeaderMatch && multiLineHeaderMatch[1]) {
202
+ return {
203
+ header: JSON.parse(multiLineHeaderMatch[1].trim()),
204
+ fragmentShaderWithoutHeader: fragmentShader.replace(multiLineHeaderMatch[0], ""),
205
+ };
206
+ }
207
+ return {
208
+ header: null,
209
+ fragmentShaderWithoutHeader: fragmentShader,
210
+ };
211
+ }
212
+ /**
213
+ * Determines if a fragment shader has the GLSL header required for parsing
214
+ * @param fragmentShader - The fragment shader to check
215
+ * @returns True if the fragment shader has the GLSL header
216
+ */
217
+ export function hasGlslHeader(fragmentShader) {
218
+ return fragmentShader.indexOf(SmartFilterBlockTypeKey) !== -1;
268
219
  }
269
- // TODO: simple copy from shader file to .ts, get it to build (including import trick)
270
220
  //# sourceMappingURL=shaderConverter.js.map
@@ -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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"}
@@ -5,7 +5,7 @@
5
5
  * @param importPath - The path to import the converted shaders
6
6
  * @example node watchShaders.js <shaderPath> <importPath>
7
7
  */
8
- import { convertShader } from "./shaderConverter.js";
8
+ import { convertShaderForHardcodedBlock } from "./convertShaderForHardcodedBlock.js";
9
9
  import { watch } from "chokidar";
10
10
  import { extname } from "path";
11
11
  const externalArguments = process.argv.slice(2);
@@ -24,7 +24,7 @@ if (externalArguments.length >= 2 && externalArguments[0] && externalArguments[1
24
24
  // Wrap in try-catch to prevent the watcher from crashing
25
25
  // if the new shader changes are invalid
26
26
  try {
27
- convertShader(file, importPath);
27
+ convertShaderForHardcodedBlock(file, importPath);
28
28
  console.log(`Successfully updated shader ${file}`);
29
29
  }
30
30
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"watchShaders.js","sourceRoot":"","sources":["../../../src/utils/buildTools/watchShaders.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,IAAI,iBAAiB,CAAC,MAAM,IAAI,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAExC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACxC,4CAA4C;QAC5C,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACxC,OAAO;QACX,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,yDAAyD;QACzD,wCAAwC;QACxC,IAAI,CAAC;YACD,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"watchShaders.js","sourceRoot":"","sources":["../../../src/utils/buildTools/watchShaders.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B;;;;;GAKG;AAEH,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,IAAI,iBAAiB,CAAC,MAAM,IAAI,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAExC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACxC,4CAA4C;QAC5C,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACxC,OAAO;QACX,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,yDAAyD;QACzD,wCAAwC;QACxC,IAAI,CAAC;YACD,8BAA8B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;AAChE,CAAC"}
@@ -22,14 +22,14 @@ export function getRenderTargetWrapper(renderTargetTexture, callerName) {
22
22
  * @param shaderBlockRuntime - The shader block runtime to use.
23
23
  */
24
24
  export function registerFinalRenderCommand(renderTargetWrapper, runtime, commandOwner, shaderBlockRuntime) {
25
- const commandOwnerClassName = commandOwner.getClassName();
25
+ const commandOwnerBlockType = commandOwner.blockType;
26
26
  if (renderTargetWrapper) {
27
- runtime.registerCommand(createCommand(`${commandOwnerClassName}.renderToFinalTexture`, commandOwner, () => {
27
+ runtime.registerCommand(createCommand(`${commandOwnerBlockType}.renderToFinalTexture`, commandOwner, () => {
28
28
  shaderBlockRuntime.renderToTexture(renderTargetWrapper);
29
29
  }));
30
30
  }
31
31
  else {
32
- runtime.registerCommand(createCommand(`${commandOwnerClassName}.renderToCanvas`, commandOwner, () => {
32
+ runtime.registerCommand(createCommand(`${commandOwnerBlockType}.renderToCanvas`, commandOwner, () => {
33
33
  shaderBlockRuntime.renderToCanvas();
34
34
  }));
35
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"renderTargetUtils.js","sourceRoot":"","sources":["../../src/utils/renderTargetUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMtD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAClC,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,mBAAkD,EAClD,OAAmC,EACnC,YAAuB,EACvB,kBAAiC;IAEjC,MAAM,qBAAqB,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;IAC1D,IAAI,mBAAmB,EAAE,CAAC;QACtB,OAAO,CAAC,eAAe,CACnB,aAAa,CAAC,GAAG,qBAAqB,uBAAuB,EAAE,YAAY,EAAE,GAAG,EAAE;YAC9E,kBAAkB,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QAC5D,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"}
1
+ {"version":3,"file":"renderTargetUtils.js","sourceRoot":"","sources":["../../src/utils/renderTargetUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMtD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAClC,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,mBAAkD,EAClD,OAAmC,EACnC,YAAuB,EACvB,kBAAiC;IAEjC,MAAM,qBAAqB,GAAG,YAAY,CAAC,SAAS,CAAC;IACrD,IAAI,mBAAmB,EAAE,CAAC;QACtB,OAAO,CAAC,eAAe,CACnB,aAAa,CAAC,GAAG,qBAAqB,uBAAuB,EAAE,YAAY,EAAE,GAAG,EAAE;YAC9E,kBAAkB,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QAC5D,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"}