@babylonjs/smart-filters 0.7.11-alpha → 0.7.13-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blockFoundation/outputBlock.d.ts +5 -0
- package/dist/blockFoundation/outputBlock.d.ts.map +1 -1
- package/dist/blockFoundation/outputBlock.js +30 -1
- package/dist/blockFoundation/outputBlock.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/serialization/importCustomBlockDefinition.js +1 -25
- package/dist/serialization/importCustomBlockDefinition.js.map +1 -1
- package/dist/utils/buildTools/buildShaders.js +1 -1
- package/dist/utils/buildTools/buildShaders.js.map +1 -1
- package/dist/utils/buildTools/convertGlslIntoBlock.d.ts +7 -0
- package/dist/utils/buildTools/convertGlslIntoBlock.d.ts.map +1 -0
- package/dist/utils/buildTools/convertGlslIntoBlock.js +217 -0
- package/dist/utils/buildTools/convertGlslIntoBlock.js.map +1 -0
- package/dist/utils/buildTools/convertGlslIntoShaderProgram.d.ts +26 -0
- package/dist/utils/buildTools/convertGlslIntoShaderProgram.d.ts.map +1 -0
- package/dist/utils/buildTools/{convertShaderForHardcodedBlock.js → convertGlslIntoShaderProgram.js} +43 -30
- package/dist/utils/buildTools/convertGlslIntoShaderProgram.js.map +1 -0
- package/dist/utils/buildTools/convertShaders.d.ts +13 -0
- package/dist/utils/buildTools/convertShaders.d.ts.map +1 -0
- package/dist/utils/buildTools/convertShaders.js +37 -0
- package/dist/utils/buildTools/convertShaders.js.map +1 -0
- package/dist/utils/buildTools/shaderConverter.d.ts +2 -1
- package/dist/utils/buildTools/shaderConverter.d.ts.map +1 -1
- package/dist/utils/buildTools/shaderConverter.js +26 -1
- package/dist/utils/buildTools/shaderConverter.js.map +1 -1
- package/dist/utils/buildTools/watchShaders.js +2 -2
- package/dist/utils/buildTools/watchShaders.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -10
- package/readme.md +2 -0
- package/src/blockFoundation/outputBlock.ts +33 -1
- package/src/index.ts +0 -2
- package/src/serialization/importCustomBlockDefinition.ts +1 -26
- package/src/utils/buildTools/buildShaders.ts +1 -1
- package/src/utils/buildTools/convertGlslIntoBlock.ts +251 -0
- package/src/utils/buildTools/{convertShaderForHardcodedBlock.ts → convertGlslIntoShaderProgram.ts} +56 -35
- package/src/utils/buildTools/convertShaders.ts +42 -0
- package/src/utils/buildTools/shaderConverter.ts +28 -2
- package/src/utils/buildTools/watchShaders.ts +2 -2
- package/src/version.ts +1 -1
- package/dist/blockFoundation/outputBlock.shader.d.ts +0 -13
- package/dist/blockFoundation/outputBlock.shader.d.ts.map +0 -1
- package/dist/blockFoundation/outputBlock.shader.js +0 -31
- package/dist/blockFoundation/outputBlock.shader.js.map +0 -1
- package/dist/blockRegistration/IBlockRegistration.d.ts +0 -36
- package/dist/blockRegistration/IBlockRegistration.d.ts.map +0 -1
- package/dist/blockRegistration/IBlockRegistration.js +0 -2
- package/dist/blockRegistration/IBlockRegistration.js.map +0 -1
- package/dist/blockRegistration/blockSerializers.d.ts +0 -13
- package/dist/blockRegistration/blockSerializers.d.ts.map +0 -1
- package/dist/blockRegistration/blockSerializers.js +0 -35
- package/dist/blockRegistration/blockSerializers.js.map +0 -1
- package/dist/blockRegistration/builtInBlockRegistrations.d.ts +0 -13
- package/dist/blockRegistration/builtInBlockRegistrations.d.ts.map +0 -1
- package/dist/blockRegistration/builtInBlockRegistrations.js +0 -266
- package/dist/blockRegistration/builtInBlockRegistrations.js.map +0 -1
- package/dist/blockRegistration/index.d.ts +0 -3
- package/dist/blockRegistration/index.d.ts.map +0 -1
- package/dist/blockRegistration/index.js +0 -3
- package/dist/blockRegistration/index.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.d.ts +0 -56
- package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.js +0 -66
- package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.shader.d.ts +0 -13
- package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.shader.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.shader.js +0 -36
- package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.shader.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/blurBlock.d.ts +0 -56
- package/dist/blocks/babylon/demo/effects/blurBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/blurBlock.deserializer.d.ts +0 -29
- package/dist/blocks/babylon/demo/effects/blurBlock.deserializer.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/blurBlock.deserializer.js +0 -16
- package/dist/blocks/babylon/demo/effects/blurBlock.deserializer.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/blurBlock.js +0 -100
- package/dist/blocks/babylon/demo/effects/blurBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/blurBlock.serializer.d.ts +0 -8
- package/dist/blocks/babylon/demo/effects/blurBlock.serializer.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/blurBlock.serializer.js +0 -28
- package/dist/blocks/babylon/demo/effects/blurBlock.serializer.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/compositionBlock.d.ts +0 -118
- package/dist/blocks/babylon/demo/effects/compositionBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/compositionBlock.deserializer.d.ts +0 -25
- package/dist/blocks/babylon/demo/effects/compositionBlock.deserializer.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/compositionBlock.deserializer.js +0 -15
- package/dist/blocks/babylon/demo/effects/compositionBlock.deserializer.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/compositionBlock.js +0 -219
- package/dist/blocks/babylon/demo/effects/compositionBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/compositionBlock.serializer.d.ts +0 -6
- package/dist/blocks/babylon/demo/effects/compositionBlock.serializer.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/compositionBlock.serializer.js +0 -25
- package/dist/blocks/babylon/demo/effects/compositionBlock.serializer.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/contrastBlock.d.ts +0 -63
- package/dist/blocks/babylon/demo/effects/contrastBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/contrastBlock.js +0 -122
- package/dist/blocks/babylon/demo/effects/contrastBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/desaturateBlock.d.ts +0 -63
- package/dist/blocks/babylon/demo/effects/desaturateBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/desaturateBlock.js +0 -107
- package/dist/blocks/babylon/demo/effects/desaturateBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.d.ts +0 -79
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.d.ts +0 -33
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.js +0 -17
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.js +0 -171
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.serializer.d.ts +0 -6
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.serializer.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.serializer.js +0 -27
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.serializer.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/exposureBlock.d.ts +0 -63
- package/dist/blocks/babylon/demo/effects/exposureBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/exposureBlock.js +0 -95
- package/dist/blocks/babylon/demo/effects/exposureBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/greenScreenBlock.d.ts +0 -75
- package/dist/blocks/babylon/demo/effects/greenScreenBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/greenScreenBlock.js +0 -121
- package/dist/blocks/babylon/demo/effects/greenScreenBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/index.d.ts +0 -15
- package/dist/blocks/babylon/demo/effects/index.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/index.js +0 -15
- package/dist/blocks/babylon/demo/effects/index.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/kaleidoscopeBlock.d.ts +0 -63
- package/dist/blocks/babylon/demo/effects/kaleidoscopeBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/kaleidoscopeBlock.js +0 -159
- package/dist/blocks/babylon/demo/effects/kaleidoscopeBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/maskBlock.d.ts +0 -62
- package/dist/blocks/babylon/demo/effects/maskBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/maskBlock.js +0 -75
- package/dist/blocks/babylon/demo/effects/maskBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/maskBlock.shader.d.ts +0 -14
- package/dist/blocks/babylon/demo/effects/maskBlock.shader.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/maskBlock.shader.js +0 -37
- package/dist/blocks/babylon/demo/effects/maskBlock.shader.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/pixelateBlock.d.ts +0 -62
- package/dist/blocks/babylon/demo/effects/pixelateBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/pixelateBlock.js +0 -77
- package/dist/blocks/babylon/demo/effects/pixelateBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/pixelateBlock.shader.d.ts +0 -15
- package/dist/blocks/babylon/demo/effects/pixelateBlock.shader.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/pixelateBlock.shader.js +0 -44
- package/dist/blocks/babylon/demo/effects/pixelateBlock.shader.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/posterizeBlock.d.ts +0 -63
- package/dist/blocks/babylon/demo/effects/posterizeBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/posterizeBlock.js +0 -108
- package/dist/blocks/babylon/demo/effects/posterizeBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.d.ts +0 -81
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.js +0 -103
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.shader.d.ts +0 -18
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.shader.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.shader.js +0 -57
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.shader.js.map +0 -1
- package/dist/blocks/babylon/demo/effects/tintBlock.d.ts +0 -7
- package/dist/blocks/babylon/demo/effects/tintBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/effects/tintBlock.js +0 -51
- package/dist/blocks/babylon/demo/effects/tintBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/transitions/index.d.ts +0 -2
- package/dist/blocks/babylon/demo/transitions/index.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/transitions/index.js +0 -2
- package/dist/blocks/babylon/demo/transitions/index.js.map +0 -1
- package/dist/blocks/babylon/demo/transitions/wipeBlock.d.ts +0 -69
- package/dist/blocks/babylon/demo/transitions/wipeBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/transitions/wipeBlock.js +0 -110
- package/dist/blocks/babylon/demo/transitions/wipeBlock.js.map +0 -1
- package/dist/blocks/babylon/demo/utilities/index.d.ts +0 -2
- package/dist/blocks/babylon/demo/utilities/index.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/utilities/index.js +0 -2
- package/dist/blocks/babylon/demo/utilities/index.js.map +0 -1
- package/dist/blocks/babylon/demo/utilities/premultiplyAlphaBlock.d.ts +0 -58
- package/dist/blocks/babylon/demo/utilities/premultiplyAlphaBlock.d.ts.map +0 -1
- package/dist/blocks/babylon/demo/utilities/premultiplyAlphaBlock.js +0 -87
- package/dist/blocks/babylon/demo/utilities/premultiplyAlphaBlock.js.map +0 -1
- package/dist/blocks/blockNamespaces.d.ts +0 -5
- package/dist/blocks/blockNamespaces.d.ts.map +0 -1
- package/dist/blocks/blockNamespaces.js +0 -5
- package/dist/blocks/blockNamespaces.js.map +0 -1
- package/dist/blocks/blockTypes.d.ts +0 -22
- package/dist/blocks/blockTypes.d.ts.map +0 -1
- package/dist/blocks/blockTypes.js +0 -22
- package/dist/blocks/blockTypes.js.map +0 -1
- package/dist/blocks/index.d.ts +0 -6
- package/dist/blocks/index.d.ts.map +0 -1
- package/dist/blocks/index.js +0 -6
- package/dist/blocks/index.js.map +0 -1
- package/dist/utils/buildTools/convertShaderForHardcodedBlock.d.ts +0 -13
- package/dist/utils/buildTools/convertShaderForHardcodedBlock.d.ts.map +0 -1
- package/dist/utils/buildTools/convertShaderForHardcodedBlock.js.map +0 -1
- package/src/blockFoundation/outputBlock.fragment.glsl +0 -5
- package/src/blockFoundation/outputBlock.shader.ts +0 -33
- package/src/blockRegistration/IBlockRegistration.ts +0 -45
- package/src/blockRegistration/blockSerializers.ts +0 -52
- package/src/blockRegistration/builtInBlockRegistrations.ts +0 -390
- package/src/blockRegistration/index.ts +0 -2
- package/src/blocks/babylon/demo/effects/blackAndWhiteBlock.fragment.glsl +0 -10
- package/src/blocks/babylon/demo/effects/blackAndWhiteBlock.shader.ts +0 -38
- package/src/blocks/babylon/demo/effects/blackAndWhiteBlock.ts +0 -80
- package/src/blocks/babylon/demo/effects/blurBlock.deserializer.ts +0 -38
- package/src/blocks/babylon/demo/effects/blurBlock.serializer.ts +0 -32
- package/src/blocks/babylon/demo/effects/blurBlock.ts +0 -119
- package/src/blocks/babylon/demo/effects/compositionBlock.deserializer.ts +0 -32
- package/src/blocks/babylon/demo/effects/compositionBlock.serializer.ts +0 -29
- package/src/blocks/babylon/demo/effects/compositionBlock.ts +0 -293
- package/src/blocks/babylon/demo/effects/contrastBlock.ts +0 -152
- package/src/blocks/babylon/demo/effects/desaturateBlock.ts +0 -137
- package/src/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.ts +0 -47
- package/src/blocks/babylon/demo/effects/directionalBlurBlock.serializer.ts +0 -31
- package/src/blocks/babylon/demo/effects/directionalBlurBlock.ts +0 -193
- package/src/blocks/babylon/demo/effects/exposureBlock.ts +0 -120
- package/src/blocks/babylon/demo/effects/greenScreenBlock.ts +0 -152
- package/src/blocks/babylon/demo/effects/index.ts +0 -14
- package/src/blocks/babylon/demo/effects/kaleidoscopeBlock.ts +0 -186
- package/src/blocks/babylon/demo/effects/maskBlock.fragment.glsl +0 -10
- package/src/blocks/babylon/demo/effects/maskBlock.shader.ts +0 -39
- package/src/blocks/babylon/demo/effects/maskBlock.ts +0 -94
- package/src/blocks/babylon/demo/effects/pixelateBlock.fragment.glsl +0 -18
- package/src/blocks/babylon/demo/effects/pixelateBlock.shader.ts +0 -46
- package/src/blocks/babylon/demo/effects/pixelateBlock.ts +0 -101
- package/src/blocks/babylon/demo/effects/posterizeBlock.ts +0 -139
- package/src/blocks/babylon/demo/effects/spritesheetBlock.fragment.glsl +0 -26
- package/src/blocks/babylon/demo/effects/spritesheetBlock.shader.ts +0 -59
- package/src/blocks/babylon/demo/effects/spritesheetBlock.ts +0 -135
- package/src/blocks/babylon/demo/effects/tintBlock.ts +0 -52
- package/src/blocks/babylon/demo/transitions/index.ts +0 -1
- package/src/blocks/babylon/demo/transitions/wipeBlock.ts +0 -138
- package/src/blocks/babylon/demo/utilities/index.ts +0 -1
- package/src/blocks/babylon/demo/utilities/premultiplyAlphaBlock.ts +0 -106
- package/src/blocks/blockNamespaces.ts +0 -4
- package/src/blocks/blockTypes.ts +0 -21
- package/src/blocks/index.ts +0 -5
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import { convertGlslIntoShaderProgram } from "./convertGlslIntoShaderProgram.js";
|
|
4
|
+
import { convertGlslIntoBlock } from "./convertGlslIntoBlock.js";
|
|
5
|
+
/**
|
|
6
|
+
* Converts all GLSL files in a path into blocks for use in the build system.
|
|
7
|
+
* @param shaderPath - The path to the .glsl files to convert.
|
|
8
|
+
* @param importPath - The path to import the ShaderProgram type from.
|
|
9
|
+
*/
|
|
10
|
+
export function convertShaders(shaderPath, importPath) {
|
|
11
|
+
// Get all files in the path
|
|
12
|
+
const allFiles = fs.readdirSync(shaderPath, { withFileTypes: true, recursive: true });
|
|
13
|
+
// Find all shaders (files with .fragment.glsl or .block.glsl extensions)
|
|
14
|
+
const shaderFiles = allFiles.filter((file) => file.isFile() && (file.name.endsWith(".fragment.glsl") || file.name.endsWith(".block.glsl")));
|
|
15
|
+
// Convert all shaders
|
|
16
|
+
for (const shaderFile of shaderFiles) {
|
|
17
|
+
const fullPathAndFileName = path.join(shaderFile.path, shaderFile.name);
|
|
18
|
+
convertShader(fullPathAndFileName, importPath);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Converts a single GLSL file into a block class or a ShaderProgram for use in the build system.
|
|
23
|
+
* @param fullPathAndFileName - The full path and file name of the .glsl file to convert.
|
|
24
|
+
* @param importPath - The path to import the ShaderProgram type from.
|
|
25
|
+
*/
|
|
26
|
+
export function convertShader(fullPathAndFileName, importPath) {
|
|
27
|
+
console.log(`\nProcessing shader: ${fullPathAndFileName}`);
|
|
28
|
+
if (fullPathAndFileName.endsWith(".fragment.glsl")) {
|
|
29
|
+
console.log("Generating a .ts file that exports a ShaderProgram.");
|
|
30
|
+
convertGlslIntoShaderProgram(fullPathAndFileName, importPath);
|
|
31
|
+
}
|
|
32
|
+
else if (fullPathAndFileName.endsWith(".block.glsl")) {
|
|
33
|
+
console.log("Generating a .ts file that exports the block as a class.");
|
|
34
|
+
convertGlslIntoBlock(fullPathAndFileName, importPath);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=convertShaders.js.map
|
|
@@ -0,0 +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,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,UAAkB;IACjE,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtF,yEAAyE;IACzE,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAC/B,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,CACzG,CAAC;IAEF,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,UAAU,CAAC,CAAC;IACnD,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,mBAA2B,EAAE,UAAkB;IACzE,OAAO,CAAC,GAAG,CAAC,wBAAwB,mBAAmB,EAAE,CAAC,CAAC;IAE3D,IAAI,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,4BAA4B,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,mBAAmB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACxE,oBAAoB,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;AACL,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Nullable } from "@babylonjs/core/types";
|
|
2
2
|
import type { ShaderCode } from "./shaderCode.types";
|
|
3
|
+
import { ConnectionPointType } from "../../connection/connectionPointType.js";
|
|
3
4
|
/**
|
|
4
5
|
* Describes the supported metadata properties for a uniform
|
|
5
6
|
*/
|
|
@@ -25,7 +26,7 @@ export type UniformMetadata = {
|
|
|
25
26
|
/**
|
|
26
27
|
* The type string of the uniform
|
|
27
28
|
*/
|
|
28
|
-
type:
|
|
29
|
+
type: ConnectionPointType;
|
|
29
30
|
/**
|
|
30
31
|
* Optional properties of the uniform
|
|
31
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaderConverter.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"shaderConverter.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAI9E;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,mBAAmB,CAAC;IAE1B;;OAEG;IACH,UAAU,CAAC,EAAE,yBAAyB,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE5B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC/B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,kBAAkB,CAiI9E;AAsMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ConnectionPointType } from "../../connection/connectionPointType.js";
|
|
1
2
|
const GetFunctionNamesRegEx = /\S*\w+\s+(\w+)\s*\(/g;
|
|
2
3
|
/**
|
|
3
4
|
* Parses a fragment shader
|
|
@@ -31,9 +32,33 @@ export function parseFragmentShader(fragmentShader) {
|
|
|
31
32
|
if (!uniformName) {
|
|
32
33
|
throw new Error(`Uniforms must have a name: '${uniformLine}'`);
|
|
33
34
|
}
|
|
35
|
+
// Convert to ConnectionPointType
|
|
36
|
+
let type;
|
|
37
|
+
switch (uniformTypeString) {
|
|
38
|
+
case "float":
|
|
39
|
+
type = ConnectionPointType.Float;
|
|
40
|
+
break;
|
|
41
|
+
case "sampler2D":
|
|
42
|
+
type = ConnectionPointType.Texture;
|
|
43
|
+
break;
|
|
44
|
+
case "vec3":
|
|
45
|
+
type = ConnectionPointType.Color3;
|
|
46
|
+
break;
|
|
47
|
+
case "vec4":
|
|
48
|
+
type = ConnectionPointType.Color4;
|
|
49
|
+
break;
|
|
50
|
+
case "bool":
|
|
51
|
+
type = ConnectionPointType.Boolean;
|
|
52
|
+
break;
|
|
53
|
+
case "vec2":
|
|
54
|
+
type = ConnectionPointType.Vector2;
|
|
55
|
+
break;
|
|
56
|
+
default:
|
|
57
|
+
throw new Error(`Unsupported uniform type: '${uniformTypeString}'`);
|
|
58
|
+
}
|
|
34
59
|
uniforms.push({
|
|
35
60
|
name: uniformName,
|
|
36
|
-
type
|
|
61
|
+
type,
|
|
37
62
|
properties: annotationJSON ? JSON.parse(annotationJSON.replace("//", "").trim()) : undefined,
|
|
38
63
|
});
|
|
39
64
|
if (annotationJSON) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaderConverter.js","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shaderConverter.js","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* @param importPath - The path to import the converted shaders
|
|
6
6
|
* @example node watchShaders.js <shaderPath> <importPath>
|
|
7
7
|
*/
|
|
8
|
-
import { convertShaderForHardcodedBlock } from "./convertShaderForHardcodedBlock.js";
|
|
9
8
|
import { watch } from "chokidar";
|
|
10
9
|
import { extname } from "path";
|
|
10
|
+
import { convertShader } from "./convertShaders.js";
|
|
11
11
|
const externalArguments = process.argv.slice(2);
|
|
12
12
|
if (externalArguments.length >= 2 && externalArguments[0] && externalArguments[1]) {
|
|
13
13
|
const shaderPath = externalArguments[0];
|
|
@@ -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
|
-
|
|
27
|
+
convertShader(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,
|
|
1
|
+
{"version":3,"file":"watchShaders.js","sourceRoot":"","sources":["../../../src/utils/buildTools/watchShaders.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B;;;;;GAKG;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,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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The version of the SmartFilter core. During publish, this file is overwritten by versionUp.ts with the same version that is used for the NPM publish.
|
|
3
3
|
*/
|
|
4
|
-
export declare const SmartFilterCoreVersion = "0.7.
|
|
4
|
+
export declare const SmartFilterCoreVersion = "0.7.13-alpha";
|
|
5
5
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The version of the SmartFilter core. During publish, this file is overwritten by versionUp.ts with the same version that is used for the NPM publish.
|
|
3
3
|
*/
|
|
4
|
-
export const SmartFilterCoreVersion = "0.7.
|
|
4
|
+
export const SmartFilterCoreVersion = "0.7.13-alpha";
|
|
5
5
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@babylonjs/smart-filters",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.13-alpha",
|
|
4
4
|
"description": "Babylon.js Smart Filter core",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"video",
|
|
@@ -35,15 +35,10 @@
|
|
|
35
35
|
"readme.md"
|
|
36
36
|
],
|
|
37
37
|
"scripts": {
|
|
38
|
-
"clean": "rimraf dist && rimraf
|
|
39
|
-
"preparePublish": "node buildTools/versionUp.js --alpha",
|
|
40
|
-
"build": "
|
|
41
|
-
"
|
|
42
|
-
"build:buildTools": "tsc -p ./tsconfig.buildTools.build.json",
|
|
43
|
-
"build:runTools": "node buildTools/buildShaders.js ./src/blockFoundation ../utils/shaderCodeUtils && node buildTools/buildShaders.js ./src/blocks ../../../../utils/shaderCodeUtils",
|
|
44
|
-
"watch": "concurrently \"npm run watch:core\" \"npm run watch:shaders\"",
|
|
45
|
-
"watch:core": "tsc -p ./tsconfig.build.json --watch",
|
|
46
|
-
"watch:shaders": "node buildTools/watchShaders.js ./src/blocks ../../../../utils/shaderCodeUtils",
|
|
38
|
+
"clean": "rimraf dist && rimraf tsconfig.build.tsbuildinfo",
|
|
39
|
+
"preparePublish": "node dist/utils/buildTools/versionUp.js --alpha",
|
|
40
|
+
"build": "tsc -p ./tsconfig.build.json",
|
|
41
|
+
"watch": "tsc -p ./tsconfig.build.json --watch",
|
|
47
42
|
"test": "echo \"Error: run test from the root of the monorepo\" && exit 1"
|
|
48
43
|
},
|
|
49
44
|
"peerDependencies": {
|
package/readme.md
CHANGED
|
@@ -10,6 +10,8 @@ A Smart Filter is a node based description of effects to apply on various inputs
|
|
|
10
10
|
|
|
11
11
|
The main usage is for video processing and composition but it could be easily reused for picture edition or procedural creation.
|
|
12
12
|
|
|
13
|
+
See the full documentation at [doc.babylonjs.com](https://doc.babylonjs.com/features/featuresDeepDive/smartFilters/)
|
|
14
|
+
|
|
13
15
|
## How to install
|
|
14
16
|
|
|
15
17
|
This can be installed with `npm install @babylonjs/smart-filters`.
|
|
@@ -7,7 +7,39 @@ import type { RenderTargetWrapper } from "@babylonjs/core/Engines/renderTargetWr
|
|
|
7
7
|
import { registerFinalRenderCommand } from "../utils/renderTargetUtils.js";
|
|
8
8
|
import type { RuntimeData } from "../connection/connectionPoint";
|
|
9
9
|
import type { Effect } from "@babylonjs/core/Materials/effect";
|
|
10
|
-
import {
|
|
10
|
+
import type { ShaderProgram } from "../utils/shaderCodeUtils";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The shader program for the block.
|
|
14
|
+
*/
|
|
15
|
+
export const shaderProgram: ShaderProgram = {
|
|
16
|
+
vertex: undefined,
|
|
17
|
+
fragment: {
|
|
18
|
+
uniform: `
|
|
19
|
+
uniform sampler2D _input_; // main`,
|
|
20
|
+
mainInputTexture: "_input_",
|
|
21
|
+
mainFunctionName: "_copy_",
|
|
22
|
+
functions: [
|
|
23
|
+
{
|
|
24
|
+
name: "_copy_",
|
|
25
|
+
code: `
|
|
26
|
+
vec4 _copy_(vec2 vUV) {
|
|
27
|
+
return texture2D(_input_, vUV);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
`,
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The uniform names for this shader, to be used in the shader binding so
|
|
38
|
+
* that the names are always in sync.
|
|
39
|
+
*/
|
|
40
|
+
const uniforms = {
|
|
41
|
+
input: "input",
|
|
42
|
+
};
|
|
11
43
|
|
|
12
44
|
/**
|
|
13
45
|
* The output block of a smart filter.
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
export * from "./command/index.js";
|
|
2
2
|
export * from "./connection/index.js";
|
|
3
3
|
export * from "./blockFoundation/index.js";
|
|
4
|
-
export * from "./blockRegistration/index.js";
|
|
5
|
-
export * from "./blocks/index.js";
|
|
6
4
|
export * from "./editorUtils/index.js";
|
|
7
5
|
export * from "./optimization/index.js";
|
|
8
6
|
export * from "./runtime/index.js";
|
|
@@ -54,35 +54,10 @@ function importAnnotatedGlsl(fragmentShader: string): SerializedShaderBlockDefin
|
|
|
54
54
|
// Calculate the input connection points
|
|
55
55
|
const inputConnectionPoints: SerializedInputConnectionPointV1[] = [];
|
|
56
56
|
for (const uniform of fragmentShaderInfo.uniforms) {
|
|
57
|
-
// Convert to ConnectionPointType
|
|
58
|
-
let type: ConnectionPointType;
|
|
59
|
-
switch (uniform.type) {
|
|
60
|
-
case "float":
|
|
61
|
-
type = ConnectionPointType.Float;
|
|
62
|
-
break;
|
|
63
|
-
case "sampler2D":
|
|
64
|
-
type = ConnectionPointType.Texture;
|
|
65
|
-
break;
|
|
66
|
-
case "vec3":
|
|
67
|
-
type = ConnectionPointType.Color3;
|
|
68
|
-
break;
|
|
69
|
-
case "vec4":
|
|
70
|
-
type = ConnectionPointType.Color4;
|
|
71
|
-
break;
|
|
72
|
-
case "bool":
|
|
73
|
-
type = ConnectionPointType.Boolean;
|
|
74
|
-
break;
|
|
75
|
-
case "vec2":
|
|
76
|
-
type = ConnectionPointType.Vector2;
|
|
77
|
-
break;
|
|
78
|
-
default:
|
|
79
|
-
throw new Error(`Unsupported uniform type: '${uniform.type}'`);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
57
|
// Add to input connection point list
|
|
83
58
|
const inputConnectionPoint: SerializedInputConnectionPointV1 = {
|
|
84
59
|
name: uniform.name,
|
|
85
|
-
type,
|
|
60
|
+
type: uniform.type,
|
|
86
61
|
autoBind: uniform.properties?.autoBind as InputAutoBindV1,
|
|
87
62
|
};
|
|
88
63
|
if (inputConnectionPoint.type !== ConnectionPointType.Texture && uniform.properties?.default !== undefined) {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @example node buildShaders.js <shaderPath> <importPath>
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { convertShaders } from "./
|
|
8
|
+
import { convertShaders } from "./convertShaders.js";
|
|
9
9
|
|
|
10
10
|
const externalArguments = process.argv.slice(2);
|
|
11
11
|
if (externalArguments.length >= 2 && externalArguments[0] && externalArguments[1]) {
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import { extractShaderProgramFromGlsl } from "./convertGlslIntoShaderProgram.js";
|
|
3
|
+
import { ConnectionPointType } from "../../connection/connectionPointType.js";
|
|
4
|
+
|
|
5
|
+
const SHADER_PROGRAM = "@SHADER_PROGRAM@";
|
|
6
|
+
const BLOCK_NAME = "@BLOCK_NAME@";
|
|
7
|
+
const NAMESPACE = "@NAMESPACE@";
|
|
8
|
+
const SHADER_BINDING_PRIVATE_VARIABLES = "@SHADER_BINDING_PRIVATE_VARIABLES@";
|
|
9
|
+
const CAMEL_CASE_UNIFORM = "@CAMEL_CASE_UNIFORM@";
|
|
10
|
+
const CONNECTION_POINT_TYPE = "@CONNECTION_POINT_TYPE@";
|
|
11
|
+
const SHADER_BINDING_CTOR_DOCSTRING_PARAMS = "@SHADER_BINDING_CTOR_DOCSTRING_PARAMS@";
|
|
12
|
+
const SHADER_BINDING_CTOR_PARAMS = "@SHADER_CTOR_PARAMS@";
|
|
13
|
+
const SHADER_BINDING_CTOR = "@SHADER_BINDING_CTOR@";
|
|
14
|
+
const SHADER_BINDING_BIND = "@SHADER_BINDING_BIND@";
|
|
15
|
+
const BLOCK_INPUT_PROPERTIES = "@BLOCK_INPUT_PROPERTIES@";
|
|
16
|
+
const BLOCK_GET_SHADER_BINDING_VARS = "@BLOCK_SHADER_BINDING_BIND_VARS@";
|
|
17
|
+
const BLOCK_GET_SHADER_PARAM_LIST = "@BLOCK_GET_SHADER_PARAM_LIST@";
|
|
18
|
+
const EFFECT_SETTER = "@EFFECT_SETTER@";
|
|
19
|
+
|
|
20
|
+
const ShaderBindingPrivateVariablesTemplate = ` private readonly _${CAMEL_CASE_UNIFORM}: RuntimeData<ConnectionPointType.${CONNECTION_POINT_TYPE}>;`;
|
|
21
|
+
const ShaderBindingCtorDocstringParams = ` * @param ${CAMEL_CASE_UNIFORM} - The ${CAMEL_CASE_UNIFORM} runtime value`;
|
|
22
|
+
const ShaderBindingCtorParams = ` ${CAMEL_CASE_UNIFORM}: RuntimeData<ConnectionPointType.${CONNECTION_POINT_TYPE}>`;
|
|
23
|
+
const ShaderBindingCtor = ` this._${CAMEL_CASE_UNIFORM} = ${CAMEL_CASE_UNIFORM};`;
|
|
24
|
+
const ShaderBindingBind = ` effect.${EFFECT_SETTER}(this.getRemappedName(uniforms.${CAMEL_CASE_UNIFORM}), this._${CAMEL_CASE_UNIFORM}.value);`;
|
|
25
|
+
|
|
26
|
+
const BlockInputProperties = ` /**
|
|
27
|
+
* The ${CAMEL_CASE_UNIFORM} connection point.
|
|
28
|
+
*/
|
|
29
|
+
public readonly ${CAMEL_CASE_UNIFORM} = this._registerInput(uniforms.${CAMEL_CASE_UNIFORM}, ConnectionPointType.${CONNECTION_POINT_TYPE});
|
|
30
|
+
`;
|
|
31
|
+
const BlockGetShaderBindingVars = ` const ${CAMEL_CASE_UNIFORM} = this._confirmRuntimeDataSupplied(this.${CAMEL_CASE_UNIFORM});`;
|
|
32
|
+
|
|
33
|
+
const FileTemplate = `/* eslint-disable prettier/prettier */
|
|
34
|
+
// ************************************************************
|
|
35
|
+
// Note: this file is auto-generated, do not modify it directly
|
|
36
|
+
// ************************************************************
|
|
37
|
+
|
|
38
|
+
// It was generated by convertGlslIntoBlock() from
|
|
39
|
+
// an annotated .glsl file. Modify the .glsl file to make changes
|
|
40
|
+
// to the block. This file will get overwritten when the build
|
|
41
|
+
// is run or during a watch when the .glsl file is updated.
|
|
42
|
+
|
|
43
|
+
import type { Effect } from "@babylonjs/core/Materials/effect";
|
|
44
|
+
|
|
45
|
+
import {
|
|
46
|
+
ShaderBinding,
|
|
47
|
+
type RuntimeData,
|
|
48
|
+
ConnectionPointType,
|
|
49
|
+
type SmartFilter,
|
|
50
|
+
ShaderBlock,
|
|
51
|
+
type ShaderProgram,
|
|
52
|
+
} from "@babylonjs/smart-filters";${SHADER_PROGRAM}
|
|
53
|
+
/**
|
|
54
|
+
* The shader binding for the ${BLOCK_NAME}, used by the runtime
|
|
55
|
+
*/
|
|
56
|
+
class ${BLOCK_NAME}ShaderBinding extends ShaderBinding {
|
|
57
|
+
${SHADER_BINDING_PRIVATE_VARIABLES}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Creates a new shader binding instance for the block.
|
|
61
|
+
${SHADER_BINDING_CTOR_DOCSTRING_PARAMS}
|
|
62
|
+
*/
|
|
63
|
+
constructor(
|
|
64
|
+
${SHADER_BINDING_CTOR_PARAMS}
|
|
65
|
+
) {
|
|
66
|
+
super();
|
|
67
|
+
${SHADER_BINDING_CTOR}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Binds all the required data to the shader when rendering.
|
|
72
|
+
* @param effect - defines the effect to bind the data to
|
|
73
|
+
*/
|
|
74
|
+
public override bind(effect: Effect): void {
|
|
75
|
+
${SHADER_BINDING_BIND}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* The implementation of the ${BLOCK_NAME}
|
|
81
|
+
*/
|
|
82
|
+
export class ${BLOCK_NAME} extends ShaderBlock {
|
|
83
|
+
/**
|
|
84
|
+
* The class name of the block.
|
|
85
|
+
*/
|
|
86
|
+
public static override ClassName = "${BLOCK_NAME}";
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* The namespace of the block.
|
|
90
|
+
*/
|
|
91
|
+
public static override Namespace = "${NAMESPACE}";
|
|
92
|
+
|
|
93
|
+
${BLOCK_INPUT_PROPERTIES}
|
|
94
|
+
/**
|
|
95
|
+
* The shader program (vertex and fragment code) to use to render the block
|
|
96
|
+
*/
|
|
97
|
+
public static override ShaderCode = shaderProgram;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Instantiates a new ${BLOCK_NAME}.
|
|
101
|
+
* @param smartFilter - The smart filter this block belongs to
|
|
102
|
+
* @param name - The friendly name of the block
|
|
103
|
+
*/
|
|
104
|
+
constructor(smartFilter: SmartFilter, name: string) {
|
|
105
|
+
super(smartFilter, name);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Get the class instance that binds all the required data to the shader (effect) when rendering.
|
|
110
|
+
* @returns The class instance that binds the data to the effect
|
|
111
|
+
*/
|
|
112
|
+
public getShaderBinding(): ShaderBinding {
|
|
113
|
+
${BLOCK_GET_SHADER_BINDING_VARS}
|
|
114
|
+
|
|
115
|
+
return new ${BLOCK_NAME}ShaderBinding(${BLOCK_GET_SHADER_PARAM_LIST});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
`;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Converts a single shader to a .ts file which exports a Smart Filter block
|
|
123
|
+
* @param fragmentShaderPath - The path to the fragment file for the shader
|
|
124
|
+
* @param importPath - The path to import the ShaderProgram type from
|
|
125
|
+
*/
|
|
126
|
+
export function convertGlslIntoBlock(fragmentShaderPath: string, importPath: string): void {
|
|
127
|
+
const { shaderProgramCode, fragmentShaderInfo } = extractShaderProgramFromGlsl(
|
|
128
|
+
fragmentShaderPath,
|
|
129
|
+
importPath,
|
|
130
|
+
false,
|
|
131
|
+
false
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
// Validation
|
|
135
|
+
if (!fragmentShaderInfo.blockType) {
|
|
136
|
+
throw new Error("The glsl file must contain a header comment with a smartFilterBlockType value");
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Generate shader binding private variables
|
|
140
|
+
const shaderBindingPrivateVariables = fragmentShaderInfo.uniforms.map((uniform) => {
|
|
141
|
+
return ShaderBindingPrivateVariablesTemplate.replace(CAMEL_CASE_UNIFORM, uniform.name).replace(
|
|
142
|
+
CONNECTION_POINT_TYPE,
|
|
143
|
+
getConnectionPointTypeString(uniform.type)
|
|
144
|
+
);
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
// Generate the shader binding constructor docstring params
|
|
148
|
+
const shaderBindingCtorDocstringParams = fragmentShaderInfo.uniforms.map((uniform) => {
|
|
149
|
+
return ShaderBindingCtorDocstringParams.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name);
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
// Generate the shader binding constructor params
|
|
153
|
+
const shaderBindingCtorParams = fragmentShaderInfo.uniforms.map((uniform) => {
|
|
154
|
+
return ShaderBindingCtorParams.replace(CAMEL_CASE_UNIFORM, uniform.name).replace(
|
|
155
|
+
CONNECTION_POINT_TYPE,
|
|
156
|
+
getConnectionPointTypeString(uniform.type)
|
|
157
|
+
);
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
// Generate the shader binding constructor
|
|
161
|
+
const shaderBindingCtor = fragmentShaderInfo.uniforms.map((uniform) => {
|
|
162
|
+
return ShaderBindingCtor.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name);
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
// Generate the shader binding bind
|
|
166
|
+
const shaderBindingBind = fragmentShaderInfo.uniforms.map((uniform) => {
|
|
167
|
+
return ShaderBindingBind.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name).replace(
|
|
168
|
+
EFFECT_SETTER,
|
|
169
|
+
getEffectSetter(uniform.type)
|
|
170
|
+
);
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
// Generate the block input properties
|
|
174
|
+
const blockInputProperties = fragmentShaderInfo.uniforms.map((uniform) => {
|
|
175
|
+
return BlockInputProperties.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name).replace(
|
|
176
|
+
CONNECTION_POINT_TYPE,
|
|
177
|
+
getConnectionPointTypeString(uniform.type)
|
|
178
|
+
);
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// Generate the block get shader binding vars
|
|
182
|
+
const blockGetShaderBindingVars = fragmentShaderInfo.uniforms.map((uniform) => {
|
|
183
|
+
return BlockGetShaderBindingVars.replace(new RegExp(CAMEL_CASE_UNIFORM, "g"), uniform.name);
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
// Generate the block get shader param list
|
|
187
|
+
const blockGetShaderParamList = fragmentShaderInfo.uniforms.map((uniform) => {
|
|
188
|
+
return uniform.name;
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
// Generate final contents
|
|
192
|
+
const finalContents = FileTemplate.replace(SHADER_PROGRAM, shaderProgramCode)
|
|
193
|
+
.replace(new RegExp(BLOCK_NAME, "g"), fragmentShaderInfo.blockType)
|
|
194
|
+
.replace(NAMESPACE, fragmentShaderInfo.namespace || "Other")
|
|
195
|
+
.replace(SHADER_BINDING_PRIVATE_VARIABLES, shaderBindingPrivateVariables.join("\n"))
|
|
196
|
+
.replace(SHADER_BINDING_CTOR_DOCSTRING_PARAMS, shaderBindingCtorDocstringParams.join("\n"))
|
|
197
|
+
.replace(SHADER_BINDING_CTOR_PARAMS, shaderBindingCtorParams.join(",\n"))
|
|
198
|
+
.replace(SHADER_BINDING_CTOR, shaderBindingCtor.join("\n"))
|
|
199
|
+
.replace(SHADER_BINDING_BIND, shaderBindingBind.join("\n"))
|
|
200
|
+
.replace(BLOCK_INPUT_PROPERTIES, blockInputProperties.join("\n"))
|
|
201
|
+
.replace(BLOCK_GET_SHADER_BINDING_VARS, blockGetShaderBindingVars.join("\n"))
|
|
202
|
+
.replace(BLOCK_GET_SHADER_PARAM_LIST, blockGetShaderParamList.join(","));
|
|
203
|
+
|
|
204
|
+
// Write the block class TS file
|
|
205
|
+
const outputFullPathAndFileName = fragmentShaderPath.replace(".glsl", ".ts");
|
|
206
|
+
fs.writeFileSync(outputFullPathAndFileName, finalContents);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Get the string representation of a connection point type
|
|
211
|
+
* @param type - The connection point type
|
|
212
|
+
* @returns - The string representation of the connection point type
|
|
213
|
+
*/
|
|
214
|
+
function getConnectionPointTypeString(type: ConnectionPointType): string {
|
|
215
|
+
switch (type) {
|
|
216
|
+
case ConnectionPointType.Float:
|
|
217
|
+
return "Float";
|
|
218
|
+
case ConnectionPointType.Texture:
|
|
219
|
+
return "Texture";
|
|
220
|
+
case ConnectionPointType.Color3:
|
|
221
|
+
return "Color3";
|
|
222
|
+
case ConnectionPointType.Color4:
|
|
223
|
+
return "Color4";
|
|
224
|
+
case ConnectionPointType.Vector2:
|
|
225
|
+
return "Vector2";
|
|
226
|
+
case ConnectionPointType.Boolean:
|
|
227
|
+
return "Boolean";
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Get the effect setter for a connection point type
|
|
233
|
+
* @param type - The connection point type
|
|
234
|
+
* @returns - The effect setter for the connection point type
|
|
235
|
+
*/
|
|
236
|
+
function getEffectSetter(type: ConnectionPointType): string {
|
|
237
|
+
switch (type) {
|
|
238
|
+
case ConnectionPointType.Float:
|
|
239
|
+
return "setFloat";
|
|
240
|
+
case ConnectionPointType.Texture:
|
|
241
|
+
return "setTexture";
|
|
242
|
+
case ConnectionPointType.Color3:
|
|
243
|
+
return "setColor3";
|
|
244
|
+
case ConnectionPointType.Color4:
|
|
245
|
+
return "setDirectColor4";
|
|
246
|
+
case ConnectionPointType.Vector2:
|
|
247
|
+
return "setVector2";
|
|
248
|
+
case ConnectionPointType.Boolean:
|
|
249
|
+
return "setBool";
|
|
250
|
+
}
|
|
251
|
+
}
|