@babylonjs/smart-filters 1.0.12 → 8.18.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.
- package/dist/blockFoundation/aggregateBlock.d.ts +3 -3
- package/dist/blockFoundation/aggregateBlock.d.ts.map +1 -1
- package/dist/blockFoundation/aggregateBlock.js +1 -2
- package/dist/blockFoundation/aggregateBlock.js.map +1 -1
- package/dist/blockFoundation/baseBlock.d.ts +2 -2
- package/dist/blockFoundation/baseBlock.d.ts.map +1 -1
- package/dist/blockFoundation/baseBlock.js +5 -6
- package/dist/blockFoundation/baseBlock.js.map +1 -1
- package/dist/blockFoundation/customAggregateBlock.d.ts.map +1 -1
- package/dist/blockFoundation/customAggregateBlock.js +2 -2
- package/dist/blockFoundation/customAggregateBlock.js.map +1 -1
- package/dist/blockFoundation/customShaderBlock.d.ts.map +1 -1
- package/dist/blockFoundation/customShaderBlock.js +4 -6
- package/dist/blockFoundation/customShaderBlock.js.map +1 -1
- package/dist/blockFoundation/disableableShaderBlock.d.ts.map +1 -1
- package/dist/blockFoundation/disableableShaderBlock.js +4 -4
- package/dist/blockFoundation/disableableShaderBlock.js.map +1 -1
- package/dist/blockFoundation/index.js +0 -2
- package/dist/blockFoundation/index.js.map +1 -1
- package/dist/blockFoundation/inputBlock.d.ts +8 -8
- package/dist/blockFoundation/inputBlock.d.ts.map +1 -1
- package/dist/blockFoundation/inputBlock.deserializer.d.ts +1 -1
- package/dist/blockFoundation/inputBlock.deserializer.d.ts.map +1 -1
- package/dist/blockFoundation/inputBlock.deserializer.js +1 -1
- package/dist/blockFoundation/inputBlock.deserializer.js.map +1 -1
- package/dist/blockFoundation/inputBlock.js +7 -7
- package/dist/blockFoundation/inputBlock.js.map +1 -1
- package/dist/blockFoundation/inputBlock.serialization.types.d.ts.map +1 -1
- package/dist/blockFoundation/inputBlock.serializer.d.ts +1 -1
- package/dist/blockFoundation/inputBlock.serializer.js +26 -28
- package/dist/blockFoundation/inputBlock.serializer.js.map +1 -1
- package/dist/blockFoundation/outputBlock.d.ts +4 -9
- package/dist/blockFoundation/outputBlock.d.ts.map +1 -1
- package/dist/blockFoundation/outputBlock.js +13 -14
- package/dist/blockFoundation/outputBlock.js.map +1 -1
- package/dist/blockFoundation/shaderBlock.d.ts +4 -4
- package/dist/blockFoundation/shaderBlock.d.ts.map +1 -1
- package/dist/blockFoundation/shaderBlock.js +13 -19
- package/dist/blockFoundation/shaderBlock.js.map +1 -1
- package/dist/blockFoundation/textureOptions.d.ts +1 -1
- package/dist/blockFoundation/textureOptions.js +1 -1
- package/dist/command/command.d.ts +1 -1
- package/dist/command/command.js +1 -1
- package/dist/command/commandBuffer.d.ts +1 -1
- package/dist/command/commandBuffer.d.ts.map +1 -1
- package/dist/command/commandBuffer.js +2 -2
- package/dist/command/commandBufferDebugger.d.ts +2 -2
- package/dist/command/commandBufferDebugger.d.ts.map +1 -1
- package/dist/command/commandBufferDebugger.js +1 -1
- package/dist/command/commandBufferDebugger.js.map +1 -1
- package/dist/command/index.d.ts +3 -1
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +5 -1
- package/dist/command/index.js.map +1 -1
- package/dist/connection/connectionPoint.d.ts +3 -3
- package/dist/connection/connectionPoint.d.ts.map +1 -1
- package/dist/connection/connectionPoint.js +2 -2
- package/dist/connection/connectionPoint.js.map +1 -1
- package/dist/connection/connectionPointCompatibilityState.d.ts +1 -1
- package/dist/connection/connectionPointCompatibilityState.js +1 -1
- package/dist/connection/connectionPointType.d.ts +3 -3
- package/dist/connection/connectionPointType.d.ts.map +1 -1
- package/dist/connection/connectionPointWithDefault.d.ts +3 -3
- package/dist/connection/connectionPointWithDefault.d.ts.map +1 -1
- package/dist/connection/connectionPointWithDefault.js.map +1 -1
- package/dist/connection/index.d.ts +2 -1
- package/dist/connection/index.d.ts.map +1 -1
- package/dist/connection/index.js +3 -3
- package/dist/connection/index.js.map +1 -1
- package/dist/editorUtils/editableInPropertyPage.d.ts +2 -2
- package/dist/editorUtils/editableInPropertyPage.d.ts.map +1 -1
- package/dist/editorUtils/editableInPropertyPage.js +2 -2
- package/dist/editorUtils/editableInPropertyPage.js.map +1 -1
- package/dist/editorUtils/index.d.ts +1 -0
- package/dist/editorUtils/index.d.ts.map +1 -1
- package/dist/editorUtils/index.js +2 -0
- package/dist/editorUtils/index.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/optimization/dependencyGraph.js.map +1 -1
- package/dist/optimization/optimizedShaderBlock.d.ts +4 -4
- package/dist/optimization/optimizedShaderBlock.d.ts.map +1 -1
- package/dist/optimization/optimizedShaderBlock.js.map +1 -1
- package/dist/optimization/smartFilterOptimizer.d.ts +2 -2
- package/dist/optimization/smartFilterOptimizer.d.ts.map +1 -1
- package/dist/optimization/smartFilterOptimizer.js +34 -57
- package/dist/optimization/smartFilterOptimizer.js.map +1 -1
- package/dist/runtime/index.d.ts +2 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +3 -3
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/renderTargetGenerator.d.ts +1 -1
- package/dist/runtime/renderTargetGenerator.d.ts.map +1 -1
- package/dist/runtime/renderTargetGenerator.js +5 -7
- package/dist/runtime/renderTargetGenerator.js.map +1 -1
- package/dist/runtime/shaderRuntime.d.ts +7 -7
- package/dist/runtime/shaderRuntime.d.ts.map +1 -1
- package/dist/runtime/shaderRuntime.js +7 -8
- package/dist/runtime/shaderRuntime.js.map +1 -1
- package/dist/runtime/smartFilterRuntime.d.ts +3 -3
- package/dist/runtime/smartFilterRuntime.d.ts.map +1 -1
- package/dist/runtime/smartFilterRuntime.js.map +1 -1
- package/dist/runtime/strongRef.d.ts +1 -1
- package/dist/runtime/strongRef.js +1 -1
- package/dist/serialization/importCustomBlockDefinition.d.ts +1 -1
- package/dist/serialization/importCustomBlockDefinition.js +8 -9
- package/dist/serialization/importCustomBlockDefinition.js.map +1 -1
- package/dist/serialization/index.d.ts +1 -0
- package/dist/serialization/index.d.ts.map +1 -1
- package/dist/serialization/index.js +3 -0
- package/dist/serialization/index.js.map +1 -1
- package/dist/serialization/serializedBlockDefinition.d.ts +2 -2
- package/dist/serialization/serializedBlockDefinition.d.ts.map +1 -1
- package/dist/serialization/serializedShaderBlockDefinition.d.ts +1 -1
- package/dist/serialization/serializedShaderBlockDefinition.d.ts.map +1 -1
- package/dist/serialization/serializedSmartFilter.d.ts +1 -1
- package/dist/serialization/serializedSmartFilter.d.ts.map +1 -1
- package/dist/serialization/smartFilterDeserializer.d.ts +6 -6
- package/dist/serialization/smartFilterDeserializer.d.ts.map +1 -1
- package/dist/serialization/smartFilterDeserializer.js +14 -12
- package/dist/serialization/smartFilterDeserializer.js.map +1 -1
- package/dist/serialization/smartFilterSerializer.d.ts +2 -2
- package/dist/serialization/smartFilterSerializer.d.ts.map +1 -1
- package/dist/serialization/smartFilterSerializer.js +10 -13
- package/dist/serialization/smartFilterSerializer.js.map +1 -1
- package/dist/serialization/v1/defaultBlockSerializer.d.ts +2 -2
- package/dist/serialization/v1/defaultBlockSerializer.d.ts.map +1 -1
- package/dist/serialization/v1/defaultBlockSerializer.js +3 -1
- package/dist/serialization/v1/defaultBlockSerializer.js.map +1 -1
- package/dist/serialization/v1/index.d.ts +1 -0
- package/dist/serialization/v1/index.d.ts.map +1 -1
- package/dist/serialization/v1/index.js +2 -0
- package/dist/serialization/v1/index.js.map +1 -1
- package/dist/serialization/v1/shaderBlockSerialization.types.d.ts +3 -3
- package/dist/serialization/v1/shaderBlockSerialization.types.d.ts.map +1 -1
- package/dist/serialization/v1/smartFilterSerialization.types.d.ts +5 -2
- package/dist/serialization/v1/smartFilterSerialization.types.d.ts.map +1 -1
- package/dist/smartFilter.d.ts +8 -8
- package/dist/smartFilter.d.ts.map +1 -1
- package/dist/smartFilter.js +6 -7
- package/dist/smartFilter.js.map +1 -1
- package/dist/utils/buildTools/buildShaders.d.ts +3 -2
- package/dist/utils/buildTools/buildShaders.d.ts.map +1 -1
- package/dist/utils/buildTools/buildShaders.js +7 -6
- package/dist/utils/buildTools/buildShaders.js.map +1 -1
- package/dist/utils/buildTools/convertGlslIntoBlock.d.ts +4 -2
- package/dist/utils/buildTools/convertGlslIntoBlock.d.ts.map +1 -1
- package/dist/utils/buildTools/convertGlslIntoBlock.js +136 -141
- package/dist/utils/buildTools/convertGlslIntoBlock.js.map +1 -1
- package/dist/utils/buildTools/convertGlslIntoShaderProgram.d.ts +4 -4
- package/dist/utils/buildTools/convertGlslIntoShaderProgram.d.ts.map +1 -1
- package/dist/utils/buildTools/convertGlslIntoShaderProgram.js +55 -48
- package/dist/utils/buildTools/convertGlslIntoShaderProgram.js.map +1 -1
- package/dist/utils/buildTools/convertShaders.d.ts +8 -5
- package/dist/utils/buildTools/convertShaders.d.ts.map +1 -1
- package/dist/utils/buildTools/convertShaders.js +38 -14
- package/dist/utils/buildTools/convertShaders.js.map +1 -1
- package/dist/utils/buildTools/shaderConverter.d.ts +4 -4
- package/dist/utils/buildTools/shaderConverter.d.ts.map +1 -1
- package/dist/utils/buildTools/shaderConverter.js +17 -21
- package/dist/utils/buildTools/shaderConverter.js.map +1 -1
- package/dist/utils/buildTools/watchShaders.d.ts +3 -2
- package/dist/utils/buildTools/watchShaders.d.ts.map +1 -1
- package/dist/utils/buildTools/watchShaders.js +10 -8
- package/dist/utils/buildTools/watchShaders.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/renderTargetUtils.d.ts +3 -3
- package/dist/utils/renderTargetUtils.d.ts.map +1 -1
- package/dist/utils/renderTargetUtils.js +4 -4
- package/dist/utils/renderTargetUtils.js.map +1 -1
- package/dist/utils/shaderCodeUtils.d.ts +8 -8
- package/dist/utils/shaderCodeUtils.d.ts.map +1 -1
- package/dist/utils/shaderCodeUtils.js +16 -28
- package/dist/utils/shaderCodeUtils.js.map +1 -1
- package/dist/utils/textureLoaders.d.ts +2 -2
- package/dist/utils/textureLoaders.d.ts.map +1 -1
- package/dist/utils/textureLoaders.js +2 -3
- package/dist/utils/textureLoaders.js.map +1 -1
- package/dist/utils/textureUtils.d.ts +5 -5
- package/dist/utils/textureUtils.d.ts.map +1 -1
- package/dist/utils/textureUtils.js +1 -1
- package/dist/utils/textureUtils.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +2 -2
- package/license.md +21 -21
- package/package.json +14 -9
- package/src/blockFoundation/aggregateBlock.ts +148 -151
- package/src/blockFoundation/baseBlock.ts +339 -364
- package/src/blockFoundation/customAggregateBlock.ts +88 -104
- package/src/blockFoundation/customShaderBlock.ts +312 -326
- package/src/blockFoundation/disableableShaderBlock.ts +91 -100
- package/src/blockFoundation/index.ts +9 -9
- package/src/blockFoundation/inputBlock.deserializer.ts +72 -97
- package/src/blockFoundation/inputBlock.serialization.types.ts +126 -132
- package/src/blockFoundation/inputBlock.serializer.ts +150 -150
- package/src/blockFoundation/inputBlock.ts +181 -192
- package/src/blockFoundation/outputBlock.ts +144 -151
- package/src/blockFoundation/shaderBlock.ts +156 -163
- package/src/blockFoundation/textureOptions.ts +57 -57
- package/src/command/command.ts +59 -59
- package/src/command/commandBuffer.ts +71 -71
- package/src/command/commandBufferDebugger.ts +14 -14
- package/src/command/index.ts +7 -3
- package/src/connection/connectionPoint.ts +205 -214
- package/src/connection/connectionPointCompatibilityState.ts +31 -31
- package/src/connection/connectionPointType.ts +45 -45
- package/src/connection/connectionPointWithDefault.ts +27 -35
- package/src/connection/index.ts +8 -9
- package/src/editorUtils/editableInPropertyPage.ts +106 -106
- package/src/editorUtils/index.ts +3 -1
- package/src/index.ts +16 -15
- package/src/optimization/dependencyGraph.ts +96 -96
- package/src/optimization/index.ts +1 -1
- package/src/optimization/optimizedShaderBlock.ts +131 -134
- package/src/optimization/smartFilterOptimizer.ts +757 -825
- package/src/runtime/index.ts +8 -6
- package/src/runtime/renderTargetGenerator.ts +222 -248
- package/src/runtime/shaderRuntime.ts +174 -173
- package/src/runtime/smartFilterRuntime.ts +112 -112
- package/src/runtime/strongRef.ts +18 -18
- package/src/serialization/importCustomBlockDefinition.ts +86 -86
- package/src/serialization/index.ts +10 -7
- package/src/serialization/serializedBlockDefinition.ts +12 -12
- package/src/serialization/serializedShaderBlockDefinition.ts +7 -7
- package/src/serialization/serializedSmartFilter.ts +6 -6
- package/src/serialization/smartFilterDeserializer.ts +190 -214
- package/src/serialization/smartFilterSerializer.ts +110 -121
- package/src/serialization/v1/defaultBlockSerializer.ts +21 -19
- package/src/serialization/v1/index.ts +4 -2
- package/src/serialization/v1/shaderBlockSerialization.types.ts +85 -85
- package/src/serialization/v1/smartFilterSerialization.types.ts +129 -129
- package/src/smartFilter.ts +255 -260
- package/src/utils/buildTools/buildShaders.ts +14 -13
- package/src/utils/buildTools/convertGlslIntoBlock.ts +370 -385
- package/src/utils/buildTools/convertGlslIntoShaderProgram.ts +173 -172
- package/src/utils/buildTools/convertShaders.ts +65 -43
- package/src/utils/buildTools/recordVersionNumber.js +17 -0
- package/src/utils/buildTools/shaderConverter.ts +466 -478
- package/src/utils/buildTools/watchShaders.ts +44 -42
- package/src/utils/index.ts +4 -2
- package/src/utils/renderTargetUtils.ts +30 -35
- package/src/utils/shaderCodeUtils.ts +192 -207
- package/src/utils/textureLoaders.ts +31 -43
- package/src/utils/textureUtils.ts +28 -32
- package/src/version.ts +2 -2
- package/dist/utils/buildTools/determineVersion.d.ts +0 -36
- package/dist/utils/buildTools/determineVersion.d.ts.map +0 -1
- package/dist/utils/buildTools/determineVersion.js +0 -109
- package/dist/utils/buildTools/determineVersion.js.map +0 -1
- package/dist/utils/buildTools/versionUp.d.ts +0 -2
- package/dist/utils/buildTools/versionUp.d.ts.map +0 -1
- package/dist/utils/buildTools/versionUp.js +0 -53
- package/dist/utils/buildTools/versionUp.js.map +0 -1
- package/src/utils/buildTools/determineVersion.ts +0 -128
- package/src/utils/buildTools/versionUp.ts +0 -61
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import * as fs from "fs";
|
|
2
2
|
import { Logger } from "@babylonjs/core/Misc/logger.js";
|
|
3
|
-
import {
|
|
3
|
+
import { ParseFragmentShader } from "./shaderConverter.js";
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
4
5
|
const TYPE_IMPORT_PATH = "@TYPE_IMPORT_PATH@";
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
5
7
|
const VERTEX_SHADER = "@VERTEX_SHADER@";
|
|
6
8
|
const UNIFORMS = "@UNIFORMS@";
|
|
7
9
|
const CONSTS_VALUE = "@CONSTS@";
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
8
11
|
const CONSTS_PROPERTY = "@CONSTS_PROPERTY@";
|
|
9
12
|
const MAIN_INPUT_NAME = "@MAIN_INPUT_NAME@";
|
|
10
13
|
const MAIN_FUNCTION_NAME = "@MAIN_FUNCTION_NAME@";
|
|
@@ -15,64 +18,65 @@ const FUNCTION_CODE = "@FUNCTION_CODE@";
|
|
|
15
18
|
const UNIFORM_NAMES = "@UNIFORM_NAMES@";
|
|
16
19
|
const EXPORT = "@EXPORT_SHADER_PROGRAM@";
|
|
17
20
|
const IMPORTS = "@IMPORT@";
|
|
18
|
-
const ConstsTemplate = `
|
|
21
|
+
const ConstsTemplate = `
|
|
19
22
|
const: \`${CONSTS_VALUE}\`,`;
|
|
20
|
-
const FunctionTemplate = `
|
|
21
|
-
{
|
|
22
|
-
name: "${FUNCTION_NAME}",
|
|
23
|
-
code: \`
|
|
24
|
-
${FUNCTION_CODE}
|
|
25
|
-
\`,
|
|
26
|
-
params: "${FUNCTION_PARAMS}",
|
|
23
|
+
const FunctionTemplate = `
|
|
24
|
+
{
|
|
25
|
+
name: "${FUNCTION_NAME}",
|
|
26
|
+
code: \`
|
|
27
|
+
${FUNCTION_CODE}
|
|
28
|
+
\`,
|
|
29
|
+
params: "${FUNCTION_PARAMS}",
|
|
27
30
|
},`;
|
|
28
31
|
const CodeLinePrefix = " ";
|
|
29
32
|
const UniformLinePrefix = " ";
|
|
30
33
|
const ConstLinePrefix = " ";
|
|
31
34
|
const ImportTemplate = `import type { ShaderProgram } from "${TYPE_IMPORT_PATH}";`;
|
|
32
|
-
const ShaderTemplate = `${IMPORTS}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* The shader program for the block.
|
|
36
|
-
*/
|
|
37
|
-
|
|
38
|
-
vertex: ${VERTEX_SHADER},
|
|
39
|
-
fragment: {
|
|
40
|
-
uniform: \`${UNIFORMS}\`,${CONSTS_PROPERTY}
|
|
41
|
-
mainInputTexture: "${MAIN_INPUT_NAME}",
|
|
42
|
-
mainFunctionName: "${MAIN_FUNCTION_NAME}",
|
|
43
|
-
functions: [${FUNCTIONS}
|
|
44
|
-
],
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* The uniform names for this shader, to be used in the shader binding so
|
|
50
|
-
* that the names are always in sync.
|
|
51
|
-
*/
|
|
52
|
-
|
|
53
|
-
${UNIFORM_NAMES}
|
|
54
|
-
};
|
|
55
|
-
|
|
35
|
+
const ShaderTemplate = `${IMPORTS}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The shader program for the block.
|
|
39
|
+
*/
|
|
40
|
+
const BlockShaderProgram: ShaderProgram = {
|
|
41
|
+
vertex: ${VERTEX_SHADER},
|
|
42
|
+
fragment: {
|
|
43
|
+
uniform: \`${UNIFORMS}\`,${CONSTS_PROPERTY}
|
|
44
|
+
mainInputTexture: "${MAIN_INPUT_NAME}",
|
|
45
|
+
mainFunctionName: "${MAIN_FUNCTION_NAME}",
|
|
46
|
+
functions: [${FUNCTIONS}
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* The uniform names for this shader, to be used in the shader binding so
|
|
53
|
+
* that the names are always in sync.
|
|
54
|
+
*/
|
|
55
|
+
const Uniforms = {
|
|
56
|
+
${UNIFORM_NAMES}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
${EXPORT}`;
|
|
56
60
|
const UniformNameLinePrefix = " ";
|
|
57
61
|
/**
|
|
58
62
|
* Converts a single shader to a .ts file which exports a ShaderProgram which can be imported by a hardcoded block
|
|
59
63
|
* @param fragmentShaderPath - The path to the fragment file for the shader
|
|
60
|
-
* @param importPath - The path to import the
|
|
64
|
+
* @param importPath - The path to import the Smart Filters core from
|
|
61
65
|
*/
|
|
62
|
-
export function
|
|
63
|
-
const { shaderProgramCode } =
|
|
66
|
+
export function ConvertGlslIntoShaderProgram(fragmentShaderPath, importPath) {
|
|
67
|
+
const { shaderProgramCode } = ExtractShaderProgramFromGlsl(fragmentShaderPath, importPath, true, true);
|
|
64
68
|
const shaderFile = fragmentShaderPath.replace(".glsl", ".ts");
|
|
65
69
|
fs.writeFileSync(shaderFile, shaderProgramCode);
|
|
66
70
|
}
|
|
67
71
|
/**
|
|
68
72
|
* Extracts the shader program from a glsl file(s) and returns it as a string which can be written to a .ts file
|
|
69
73
|
* @param fragmentShaderPath - The path to the fragment file for the shader
|
|
70
|
-
* @param
|
|
74
|
+
* @param smartFiltersCorePath - The path to import the Smart Filters core from
|
|
71
75
|
* @param exportObjects - Whether to export the shaderProgram and uniforms objects
|
|
72
76
|
* @param includeImports - Whether to include the imports in the output
|
|
73
77
|
* @returns The string to write to the .ts file
|
|
74
78
|
*/
|
|
75
|
-
export function
|
|
79
|
+
export function ExtractShaderProgramFromGlsl(fragmentShaderPath, smartFiltersCorePath, exportObjects, includeImports) {
|
|
76
80
|
// See if there is a corresponding vertex shader
|
|
77
81
|
let vertexShader = undefined;
|
|
78
82
|
let extensionToFind;
|
|
@@ -94,26 +98,29 @@ export function extractShaderProgramFromGlsl(fragmentShaderPath, importPath, exp
|
|
|
94
98
|
}
|
|
95
99
|
// Read the fragment shader
|
|
96
100
|
const fragmentShader = fs.readFileSync(fragmentShaderPath, "utf8");
|
|
97
|
-
const fragmentShaderInfo =
|
|
101
|
+
const fragmentShaderInfo = ParseFragmentShader(fragmentShader);
|
|
98
102
|
// Generate the shader program code
|
|
99
103
|
const functionsSection = [];
|
|
100
104
|
for (const shaderFunction of fragmentShaderInfo.shaderCode.functions) {
|
|
101
105
|
functionsSection.push(FunctionTemplate.replace(FUNCTION_NAME, shaderFunction.name)
|
|
102
106
|
.replace(FUNCTION_PARAMS, shaderFunction.params || "")
|
|
103
|
-
.replace(FUNCTION_CODE,
|
|
107
|
+
.replace(FUNCTION_CODE, AddLinePrefixes(shaderFunction.code, CodeLinePrefix)));
|
|
104
108
|
}
|
|
105
|
-
const imports = includeImports ? ImportTemplate.replace(TYPE_IMPORT_PATH,
|
|
109
|
+
const imports = includeImports ? ImportTemplate.replace(TYPE_IMPORT_PATH, smartFiltersCorePath) : "";
|
|
106
110
|
const finalContents = ShaderTemplate.replace(VERTEX_SHADER, vertexShader ? `\`${vertexShader}\`` : "undefined")
|
|
107
111
|
.replace(IMPORTS, imports)
|
|
108
|
-
.replace(UNIFORMS, "\n" +
|
|
112
|
+
.replace(UNIFORMS, "\n" + AddLinePrefixes(fragmentShaderInfo.shaderCode.uniform || "", UniformLinePrefix))
|
|
109
113
|
.replace(MAIN_FUNCTION_NAME, fragmentShaderInfo.shaderCode.mainFunctionName)
|
|
110
114
|
.replace(MAIN_INPUT_NAME, fragmentShaderInfo.shaderCode.mainInputTexture || "")
|
|
111
|
-
.replace(CONSTS_PROPERTY, fragmentShaderInfo.shaderCode.const
|
|
112
|
-
? ConstsTemplate.replace(CONSTS_VALUE, addLinePrefixes(fragmentShaderInfo.shaderCode.const, ConstLinePrefix))
|
|
113
|
-
: "")
|
|
115
|
+
.replace(CONSTS_PROPERTY, fragmentShaderInfo.shaderCode.const ? ConstsTemplate.replace(CONSTS_VALUE, AddLinePrefixes(fragmentShaderInfo.shaderCode.const, ConstLinePrefix)) : "")
|
|
114
116
|
.replace(FUNCTIONS, functionsSection.join(""))
|
|
115
|
-
.replace(UNIFORM_NAMES,
|
|
116
|
-
.replace(new RegExp(EXPORT, "g"), exportObjects
|
|
117
|
+
.replace(UNIFORM_NAMES, AddLinePrefixes(fragmentShaderInfo.uniforms.map((u) => `${u.name}: "${u.name}",`).join("\n"), UniformNameLinePrefix))
|
|
118
|
+
.replace(new RegExp(EXPORT, "g"), exportObjects
|
|
119
|
+
? `export { BlockShaderProgram, Uniforms };
|
|
120
|
+
// Back compat for when camelCase was used
|
|
121
|
+
export { BlockShaderProgram as shaderProgram, Uniforms as uniforms };
|
|
122
|
+
`
|
|
123
|
+
: "");
|
|
117
124
|
return {
|
|
118
125
|
shaderProgramCode: finalContents,
|
|
119
126
|
fragmentShaderInfo,
|
|
@@ -125,7 +132,7 @@ export function extractShaderProgramFromGlsl(fragmentShaderPath, importPath, exp
|
|
|
125
132
|
* @param prefix - The prefix to add to each line
|
|
126
133
|
* @returns The input with each line prefixed
|
|
127
134
|
*/
|
|
128
|
-
function
|
|
135
|
+
function AddLinePrefixes(input, prefix) {
|
|
129
136
|
return input
|
|
130
137
|
.split("\n")
|
|
131
138
|
.map((line) => prefix + line)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertGlslIntoShaderProgram.js","sourceRoot":"","sources":["../../../src/utils/buildTools/convertGlslIntoShaderProgram.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"convertGlslIntoShaderProgram.js","sourceRoot":"","sources":["../../../src/utils/buildTools/convertGlslIntoShaderProgram.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Converts all GLSL files in a path into blocks for use in the build system.
|
|
3
|
-
* @param shaderPath - The path to the .glsl files to convert.
|
|
4
|
-
* @param
|
|
3
|
+
* @param shaderPath - The path to the .glsl files to convert, or a single .glsl file.
|
|
4
|
+
* @param smartFiltersCorePath - The path to import the Smart Filters core from.
|
|
5
|
+
* @param babylonCorePath - The path to import the Babylon core from (optional).
|
|
6
|
+
|
|
5
7
|
*/
|
|
6
|
-
export declare function
|
|
8
|
+
export declare function ConvertShaders(shaderPath: string, smartFiltersCorePath: string, babylonCorePath?: string): void;
|
|
7
9
|
/**
|
|
8
10
|
* Converts a single GLSL file into a block class or a ShaderProgram for use in the build system.
|
|
9
11
|
* @param fullPathAndFileName - The full path and file name of the .glsl file to convert.
|
|
10
|
-
* @param
|
|
12
|
+
* @param smartFiltersCorePath - The path to import the Smart Filters core from.
|
|
13
|
+
* @param babylonCorePath - The path to import the Babylon core from (optional).
|
|
11
14
|
*/
|
|
12
|
-
export declare function
|
|
15
|
+
export declare function ConvertShader(fullPathAndFileName: string, smartFiltersCorePath: string, babylonCorePath?: string): void;
|
|
13
16
|
//# sourceMappingURL=convertShaders.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertShaders.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/convertShaders.ts"],"names":[],"mappings":"AAMA
|
|
1
|
+
{"version":3,"file":"convertShaders.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/convertShaders.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,QAiCxG;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,mBAAmB,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAUvH"}
|
|
@@ -1,38 +1,62 @@
|
|
|
1
1
|
import * as fs from "fs";
|
|
2
2
|
import * as path from "path";
|
|
3
3
|
import { Logger } from "@babylonjs/core/Misc/logger.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { ConvertGlslIntoShaderProgram } from "./convertGlslIntoShaderProgram.js";
|
|
5
|
+
import { ConvertGlslIntoBlock } from "./convertGlslIntoBlock.js";
|
|
6
6
|
/**
|
|
7
7
|
* Converts all GLSL files in a path into blocks for use in the build system.
|
|
8
|
-
* @param shaderPath - The path to the .glsl files to convert.
|
|
9
|
-
* @param
|
|
8
|
+
* @param shaderPath - The path to the .glsl files to convert, or a single .glsl file.
|
|
9
|
+
* @param smartFiltersCorePath - The path to import the Smart Filters core from.
|
|
10
|
+
* @param babylonCorePath - The path to import the Babylon core from (optional).
|
|
11
|
+
|
|
10
12
|
*/
|
|
11
|
-
export function
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
export function ConvertShaders(shaderPath, smartFiltersCorePath, babylonCorePath) {
|
|
14
|
+
const stats = fs.statSync(shaderPath);
|
|
15
|
+
let shaderFiles;
|
|
16
|
+
if (stats.isFile()) {
|
|
17
|
+
// If it's a file, create a Dirent-like object for consistency
|
|
18
|
+
const fileName = path.basename(shaderPath);
|
|
19
|
+
const dirPath = path.dirname(shaderPath);
|
|
20
|
+
shaderFiles = [
|
|
21
|
+
{
|
|
22
|
+
name: fileName,
|
|
23
|
+
path: dirPath,
|
|
24
|
+
isFile: () => true,
|
|
25
|
+
isDirectory: () => false,
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
}
|
|
29
|
+
else if (stats.isDirectory()) {
|
|
30
|
+
// Get all files in the directory
|
|
31
|
+
const allFiles = fs.readdirSync(shaderPath, { withFileTypes: true, recursive: true });
|
|
32
|
+
// Find all shaders (files with .fragment.glsl or .block.glsl extensions)
|
|
33
|
+
shaderFiles = allFiles.filter((file) => file.isFile() && (file.name.endsWith(".fragment.glsl") || file.name.endsWith(".block.glsl")));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
Logger.Log(`Error: ${shaderPath} is neither a file nor a directory.`);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
16
39
|
// Convert all shaders
|
|
17
40
|
for (const shaderFile of shaderFiles) {
|
|
18
41
|
const fullPathAndFileName = path.join(shaderFile.path, shaderFile.name);
|
|
19
|
-
|
|
42
|
+
ConvertShader(fullPathAndFileName, smartFiltersCorePath, babylonCorePath);
|
|
20
43
|
}
|
|
21
44
|
}
|
|
22
45
|
/**
|
|
23
46
|
* Converts a single GLSL file into a block class or a ShaderProgram for use in the build system.
|
|
24
47
|
* @param fullPathAndFileName - The full path and file name of the .glsl file to convert.
|
|
25
|
-
* @param
|
|
48
|
+
* @param smartFiltersCorePath - The path to import the Smart Filters core from.
|
|
49
|
+
* @param babylonCorePath - The path to import the Babylon core from (optional).
|
|
26
50
|
*/
|
|
27
|
-
export function
|
|
51
|
+
export function ConvertShader(fullPathAndFileName, smartFiltersCorePath, babylonCorePath) {
|
|
28
52
|
Logger.Log(`\nProcessing shader: ${fullPathAndFileName}`);
|
|
29
53
|
if (fullPathAndFileName.endsWith(".fragment.glsl")) {
|
|
30
54
|
Logger.Log("Generating a .ts file that exports a ShaderProgram.");
|
|
31
|
-
|
|
55
|
+
ConvertGlslIntoShaderProgram(fullPathAndFileName, smartFiltersCorePath);
|
|
32
56
|
}
|
|
33
57
|
else if (fullPathAndFileName.endsWith(".block.glsl")) {
|
|
34
58
|
Logger.Log("Generating a .ts file that exports the block as a class.");
|
|
35
|
-
|
|
59
|
+
ConvertGlslIntoBlock(fullPathAndFileName, smartFiltersCorePath, babylonCorePath);
|
|
36
60
|
}
|
|
37
61
|
}
|
|
38
62
|
//# sourceMappingURL=convertShaders.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertShaders.js","sourceRoot":"","sources":["../../../src/utils/buildTools/convertShaders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"convertShaders.js","sourceRoot":"","sources":["../../../src/utils/buildTools/convertShaders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,uCAA4B;AAC7C,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,oBAA4B,EAAE,eAAwB;IACrG,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEtC,IAAI,WAAwB,CAAC;IAE7B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QACjB,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,WAAW,GAAG;YACV;gBACI,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;gBAClB,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;aACd;SACjB,CAAC;IACN,CAAC;SAAM,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7B,iCAAiC;QACjC,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtF,yEAAyE;QACzE,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1I,CAAC;SAAM,CAAC;QACJ,MAAM,CAAC,GAAG,CAAC,UAAU,UAAU,qCAAqC,CAAC,CAAC;QACtE,OAAO;IACX,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACnC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QACxE,aAAa,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;IAC9E,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,mBAA2B,EAAE,oBAA4B,EAAE,eAAwB;IAC7G,MAAM,CAAC,GAAG,CAAC,wBAAwB,mBAAmB,EAAE,CAAC,CAAC;IAE1D,IAAI,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QAClE,4BAA4B,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;IAC5E,CAAC;SAAM,IAAI,mBAAmB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACvE,oBAAoB,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;IACrF,CAAC;AACL,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Nullable } from "@babylonjs/core/types";
|
|
2
|
-
import type { ShaderCode } from "./shaderCode.types";
|
|
1
|
+
import type { Nullable } from "@babylonjs/core/types.js";
|
|
2
|
+
import type { ShaderCode } from "./shaderCode.types.js";
|
|
3
3
|
import { ConnectionPointType } from "../../connection/connectionPointType.js";
|
|
4
4
|
import { BlockDisableStrategy } from "../../blockFoundation/disableableShaderBlock.js";
|
|
5
5
|
/**
|
|
@@ -67,11 +67,11 @@ export type FragmentShaderInfo = {
|
|
|
67
67
|
* @param fragmentShader - The fragment shader to process
|
|
68
68
|
* @returns The processed fragment shader
|
|
69
69
|
*/
|
|
70
|
-
export declare function
|
|
70
|
+
export declare function ParseFragmentShader(fragmentShader: string): FragmentShaderInfo;
|
|
71
71
|
/**
|
|
72
72
|
* Determines if a fragment shader has the GLSL header required for parsing
|
|
73
73
|
* @param fragmentShader - The fragment shader to check
|
|
74
74
|
* @returns True if the fragment shader has the GLSL header
|
|
75
75
|
*/
|
|
76
|
-
export declare function
|
|
76
|
+
export declare function HasGlslHeader(fragmentShader: string): boolean;
|
|
77
77
|
//# sourceMappingURL=shaderConverter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaderConverter.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"shaderConverter.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,iCAAsB;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAiBvF;;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,CAwI9E;AAiOD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|
|
@@ -17,11 +17,11 @@ const ReservedSymbols = ["main"];
|
|
|
17
17
|
* @param fragmentShader - The fragment shader to process
|
|
18
18
|
* @returns The processed fragment shader
|
|
19
19
|
*/
|
|
20
|
-
export function
|
|
21
|
-
const { header, fragmentShaderWithoutHeader } =
|
|
20
|
+
export function ParseFragmentShader(fragmentShader) {
|
|
21
|
+
const { header, fragmentShaderWithoutHeader } = ReadHeader(fragmentShader);
|
|
22
22
|
fragmentShader = fragmentShaderWithoutHeader;
|
|
23
|
-
const blockType =
|
|
24
|
-
const namespace =
|
|
23
|
+
const blockType = header?.[SmartFilterBlockTypeKey] || undefined;
|
|
24
|
+
const namespace = header?.namespace || null;
|
|
25
25
|
// Read the uniforms
|
|
26
26
|
const uniforms = [];
|
|
27
27
|
const uniformRegExp = new RegExp(/(\/\/\s*\{.*\}\s*(?:\r\n|\r|\n)+)?(uniform .*)/gm);
|
|
@@ -78,7 +78,7 @@ export function parseFragmentShader(fragmentShader) {
|
|
|
78
78
|
fragmentShader = fragmentShader.replace(annotationJSON, "");
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
-
const fragmentShaderWithNoFunctionBodies =
|
|
81
|
+
const fragmentShaderWithNoFunctionBodies = RemoveFunctionBodies(fragmentShader);
|
|
82
82
|
// Collect uniform, const, and function names which need to be decorated
|
|
83
83
|
// eslint-disable-next-line prettier/prettier
|
|
84
84
|
const uniformNames = uniforms.map((uniform) => uniform.name);
|
|
@@ -87,9 +87,7 @@ export function parseFragmentShader(fragmentShader) {
|
|
|
87
87
|
Logger.Log(`Consts found: ${JSON.stringify(consts)}`);
|
|
88
88
|
const defineNames = [...fragmentShader.matchAll(new RegExp(GetDefineRegExString, GetDefineRegExOptions))].map((match) => match[1]);
|
|
89
89
|
Logger.Log(`Defines found: ${JSON.stringify(defineNames)}`);
|
|
90
|
-
const functionNames = [
|
|
91
|
-
...fragmentShaderWithNoFunctionBodies.matchAll(new RegExp(GetFunctionHeaderRegExString, GetFunctionHeaderRegExOptions)),
|
|
92
|
-
].map((match) => match[1]);
|
|
90
|
+
const functionNames = [...fragmentShaderWithNoFunctionBodies.matchAll(new RegExp(GetFunctionHeaderRegExString, GetFunctionHeaderRegExOptions))].map((match) => match[1]);
|
|
93
91
|
Logger.Log(`Functions found: ${JSON.stringify(functionNames)}`);
|
|
94
92
|
// Decorate the uniforms, consts, defines, and functions
|
|
95
93
|
const symbolsToDecorate = [...uniformNames, ...consts, ...defineNames, ...functionNames];
|
|
@@ -110,9 +108,7 @@ export function parseFragmentShader(fragmentShader) {
|
|
|
110
108
|
// Extract all the consts
|
|
111
109
|
const finalConsts = [...fragmentShaderWithRenamedSymbols.matchAll(/^\s*(const\s.*)/gm)].map((match) => match[1]);
|
|
112
110
|
// Extract all the defines
|
|
113
|
-
const finalDefines = [
|
|
114
|
-
...fragmentShaderWithRenamedSymbols.matchAll(new RegExp(GetDefineRegExString, GetDefineRegExOptions)),
|
|
115
|
-
].map((match) => match[0]);
|
|
111
|
+
const finalDefines = [...fragmentShaderWithRenamedSymbols.matchAll(new RegExp(GetDefineRegExString, GetDefineRegExOptions))].map((match) => match[0]);
|
|
116
112
|
// Find the main input
|
|
117
113
|
const mainInputs = [...fragmentShaderWithRenamedSymbols.matchAll(/\S*uniform.*\s(\w*);\s*\/\/\s*main/gm)].map((match) => match[1]);
|
|
118
114
|
if (mainInputs.length > 1) {
|
|
@@ -120,7 +116,7 @@ export function parseFragmentShader(fragmentShader) {
|
|
|
120
116
|
}
|
|
121
117
|
const mainInputTexture = mainInputs[0];
|
|
122
118
|
// Extract all the functions
|
|
123
|
-
const { extractedFunctions, mainFunctionName } =
|
|
119
|
+
const { extractedFunctions, mainFunctionName } = ExtractFunctions(fragmentShaderWithRenamedSymbols);
|
|
124
120
|
const shaderCode = {
|
|
125
121
|
uniform: finalUniforms.join("\n"),
|
|
126
122
|
mainFunctionName,
|
|
@@ -136,8 +132,8 @@ export function parseFragmentShader(fragmentShader) {
|
|
|
136
132
|
namespace,
|
|
137
133
|
shaderCode,
|
|
138
134
|
uniforms,
|
|
139
|
-
disableOptimization: !!
|
|
140
|
-
blockDisableStrategy: header
|
|
135
|
+
disableOptimization: !!header?.disableOptimization,
|
|
136
|
+
blockDisableStrategy: header?.blockDisableStrategy,
|
|
141
137
|
};
|
|
142
138
|
}
|
|
143
139
|
/**
|
|
@@ -145,7 +141,7 @@ export function parseFragmentShader(fragmentShader) {
|
|
|
145
141
|
* @param fragment - The shader code to process
|
|
146
142
|
* @returns A list of functions
|
|
147
143
|
*/
|
|
148
|
-
function
|
|
144
|
+
function ExtractFunctions(fragment) {
|
|
149
145
|
const extractedFunctions = [];
|
|
150
146
|
let mainFunctionName;
|
|
151
147
|
let pos = 0;
|
|
@@ -206,7 +202,7 @@ function extractFunctions(fragment) {
|
|
|
206
202
|
* @param input - The shader code to process
|
|
207
203
|
* @returns The shader code with all function bodies removed
|
|
208
204
|
*/
|
|
209
|
-
function
|
|
205
|
+
function RemoveFunctionBodies(input) {
|
|
210
206
|
let output = "";
|
|
211
207
|
let depth = 0;
|
|
212
208
|
for (let pos = 0; pos < input.length; pos++) {
|
|
@@ -239,18 +235,18 @@ const SmartFilterBlockTypeKey = "smartFilterBlockType";
|
|
|
239
235
|
* @param fragmentShader - The shader code to read
|
|
240
236
|
* @returns - The GlslHeader if found, otherwise null
|
|
241
237
|
*/
|
|
242
|
-
function
|
|
238
|
+
function ReadHeader(fragmentShader) {
|
|
243
239
|
const singleLineHeaderMatch = new RegExp(/^\n*\s*\/\/\s*(\{.*\})/g).exec(fragmentShader);
|
|
244
240
|
if (singleLineHeaderMatch && singleLineHeaderMatch[1]) {
|
|
245
241
|
return {
|
|
246
|
-
header:
|
|
242
|
+
header: ParseHeader(singleLineHeaderMatch[1].trim()),
|
|
247
243
|
fragmentShaderWithoutHeader: fragmentShader.replace(singleLineHeaderMatch[0], ""),
|
|
248
244
|
};
|
|
249
245
|
}
|
|
250
246
|
const multiLineHeaderMatch = new RegExp(/^\n*\s*\/\*\s*(\{.*\})\s*\*\//gs).exec(fragmentShader);
|
|
251
247
|
if (multiLineHeaderMatch && multiLineHeaderMatch[1]) {
|
|
252
248
|
return {
|
|
253
|
-
header:
|
|
249
|
+
header: ParseHeader(multiLineHeaderMatch[1].trim()),
|
|
254
250
|
fragmentShaderWithoutHeader: fragmentShader.replace(multiLineHeaderMatch[0], ""),
|
|
255
251
|
};
|
|
256
252
|
}
|
|
@@ -264,7 +260,7 @@ function readHeader(fragmentShader) {
|
|
|
264
260
|
* @param header - The header string to parse
|
|
265
261
|
* @returns - The GlslHeader if the header is valid, otherwise null
|
|
266
262
|
*/
|
|
267
|
-
function
|
|
263
|
+
function ParseHeader(header) {
|
|
268
264
|
const parsedObject = JSON.parse(header);
|
|
269
265
|
if (!parsedObject || typeof parsedObject !== "object") {
|
|
270
266
|
return null;
|
|
@@ -295,7 +291,7 @@ function parseHeader(header) {
|
|
|
295
291
|
* @param fragmentShader - The fragment shader to check
|
|
296
292
|
* @returns True if the fragment shader has the GLSL header
|
|
297
293
|
*/
|
|
298
|
-
export function
|
|
294
|
+
export function HasGlslHeader(fragmentShader) {
|
|
299
295
|
return fragmentShader.indexOf(SmartFilterBlockTypeKey) !== -1;
|
|
300
296
|
}
|
|
301
297
|
//# sourceMappingURL=shaderConverter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaderConverter.js","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"shaderConverter.js","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Watches all .glsl files under <shaderPath> and rebuilds them when changed.
|
|
3
3
|
* @param shaderPath - The path to the shaders to watch
|
|
4
|
-
* @param
|
|
5
|
-
* @
|
|
4
|
+
* @param smartFiltersCorePath - The path to import the Smart Filters core from
|
|
5
|
+
* @param babylonCorePath - The path to import the Babylon core from (optional)
|
|
6
|
+
* @example node watchShaders.js <shaderPath> @babylonjs/smart-filters
|
|
6
7
|
*/
|
|
7
8
|
export {};
|
|
8
9
|
//# sourceMappingURL=watchShaders.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watchShaders.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/watchShaders.ts"],"names":[],"mappings":"AACA
|
|
1
|
+
{"version":3,"file":"watchShaders.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/watchShaders.ts"],"names":[],"mappings":"AACA;;;;;;GAMG"}
|
|
@@ -2,16 +2,18 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Watches all .glsl files under <shaderPath> and rebuilds them when changed.
|
|
4
4
|
* @param shaderPath - The path to the shaders to watch
|
|
5
|
-
* @param
|
|
6
|
-
* @
|
|
5
|
+
* @param smartFiltersCorePath - The path to import the Smart Filters core from
|
|
6
|
+
* @param babylonCorePath - The path to import the Babylon core from (optional)
|
|
7
|
+
* @example node watchShaders.js <shaderPath> @babylonjs/smart-filters
|
|
7
8
|
*/
|
|
8
9
|
import { watch } from "chokidar";
|
|
9
10
|
import { extname } from "path";
|
|
10
|
-
import {
|
|
11
|
-
const
|
|
12
|
-
if (
|
|
13
|
-
const shaderPath =
|
|
14
|
-
const
|
|
11
|
+
import { ConvertShader } from "./convertShaders.js";
|
|
12
|
+
const ExternalArguments = process.argv.slice(2);
|
|
13
|
+
if (ExternalArguments.length >= 2 && ExternalArguments[0] && ExternalArguments[1]) {
|
|
14
|
+
const shaderPath = ExternalArguments[0];
|
|
15
|
+
const smartFiltersCorePath = ExternalArguments[1];
|
|
16
|
+
const babylonCorePath = ExternalArguments[2];
|
|
15
17
|
watch(shaderPath).on("all", (event, file) => {
|
|
16
18
|
// Only process file changes and added files
|
|
17
19
|
if (event !== "change" && event !== "add") {
|
|
@@ -25,7 +27,7 @@ if (externalArguments.length >= 2 && externalArguments[0] && externalArguments[1
|
|
|
25
27
|
// Wrap in try-catch to prevent the watcher from crashing
|
|
26
28
|
// if the new shader changes are invalid
|
|
27
29
|
try {
|
|
28
|
-
|
|
30
|
+
ConvertShader(file, smartFiltersCorePath, babylonCorePath);
|
|
29
31
|
console.log(`Successfully updated shader ${file}`);
|
|
30
32
|
}
|
|
31
33
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watchShaders.js","sourceRoot":"","sources":["../../../src/utils/buildTools/watchShaders.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B
|
|
1
|
+
{"version":3,"file":"watchShaders.js","sourceRoot":"","sources":["../../../src/utils/buildTools/watchShaders.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,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,oBAAoB,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAE7C,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,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAEvD,yDAAyD;QACzD,wCAAwC;QACxC,IAAI,CAAC;YACD,aAAa,CAAC,IAAI,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;YAC3D,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;QAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AAEpC,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/utils/index.js
CHANGED
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,0CAA0C;AAC1C,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { BaseBlock } from "../blockFoundation/baseBlock.js";
|
|
2
|
-
import type { ShaderRuntime } from "../runtime/shaderRuntime";
|
|
3
|
-
import type { InternalSmartFilterRuntime } from "../runtime/smartFilterRuntime";
|
|
2
|
+
import type { ShaderRuntime } from "../runtime/shaderRuntime.js";
|
|
3
|
+
import type { InternalSmartFilterRuntime } from "../runtime/smartFilterRuntime.js";
|
|
4
4
|
import type { OutputBlock } from "../blockFoundation/outputBlock.js";
|
|
5
5
|
/**
|
|
6
6
|
* Registers the final command of the command queue - the one that draws to either the canvas or
|
|
@@ -10,5 +10,5 @@ import type { OutputBlock } from "../blockFoundation/outputBlock.js";
|
|
|
10
10
|
* @param commandOwner - The owner of the command.
|
|
11
11
|
* @param shaderBlockRuntime - The shader block runtime to use.
|
|
12
12
|
*/
|
|
13
|
-
export declare function
|
|
13
|
+
export declare function RegisterFinalRenderCommand(outputBlock: OutputBlock, runtime: InternalSmartFilterRuntime, commandOwner: BaseBlock, shaderBlockRuntime: ShaderRuntime): void;
|
|
14
14
|
//# sourceMappingURL=renderTargetUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTargetUtils.d.ts","sourceRoot":"","sources":["../../src/utils/renderTargetUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"renderTargetUtils.d.ts","sourceRoot":"","sources":["../../src/utils/renderTargetUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAErE;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,aAAa,GAAG,IAAI,CAe1K"}
|