@babylonjs/smart-filters 1.0.13 → 8.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +9 -0
- package/dist/blockFoundation/customShaderBlock.d.ts.map +1 -1
- package/dist/blockFoundation/customShaderBlock.js +47 -7
- 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 +9 -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 +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 +2 -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 +13 -8
- 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 +362 -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 -220
- package/src/serialization/smartFilterSerializer.ts +110 -121
- package/src/serialization/v1/defaultBlockSerializer.ts +21 -21
- 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 -133
- 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 +24 -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,86 +1,86 @@
|
|
|
1
|
-
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
2
|
-
import {
|
|
3
|
-
import type { SerializedBlockDefinition } from "./serializedBlockDefinition.js";
|
|
4
|
-
import type { SerializedShaderBlockDefinition } from "./serializedShaderBlockDefinition.js";
|
|
5
|
-
import type { InputAutoBindV1, SerializedInputConnectionPointV1 } from "./v1/shaderBlockSerialization.types.js";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Imports a serialized custom block definition. Supports either serialized CustomShaderBlock definitions or
|
|
9
|
-
* CustomAggregateBlock definitions. Can throw an exception if the serialized data is invalid.
|
|
10
|
-
*
|
|
11
|
-
* CustomShaderBlock definitions can be supplied either as serialized SerializedBlockDefinition object
|
|
12
|
-
* or a glsl shader with the required annotations (see readme.md for details).
|
|
13
|
-
*
|
|
14
|
-
* CustomAggregateBlock definitions must be supplied as serialized SerializedBlockDefinition object.
|
|
15
|
-
*
|
|
16
|
-
* @param serializedData - The serialized data
|
|
17
|
-
* @returns The serialized block definition
|
|
18
|
-
*/
|
|
19
|
-
export function
|
|
20
|
-
if (
|
|
21
|
-
return
|
|
22
|
-
} else {
|
|
23
|
-
// Assume this is a serialized JSON object
|
|
24
|
-
const blockDefinition = JSON.parse(serializedData);
|
|
25
|
-
|
|
26
|
-
// Some old SmartFilters didn't have a format property - default to smartFilter if missing
|
|
27
|
-
if (blockDefinition.format === undefined) {
|
|
28
|
-
blockDefinition.format = "smartFilter";
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// SmartFilters can be serialized without a blockType
|
|
32
|
-
// By convention, we use the SmartFilter name as the blockType when importing them as SerializedBlockDefinitions
|
|
33
|
-
if (blockDefinition.format === "smartFilter" && blockDefinition.name && !blockDefinition.blockType) {
|
|
34
|
-
blockDefinition.blockType = blockDefinition.name;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Validation
|
|
38
|
-
if (!blockDefinition.blockType) {
|
|
39
|
-
throw new Error("Could not find a blockType");
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return blockDefinition;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Converts a fragment shader .glsl file to an SerializedBlockDefinition instance for use
|
|
48
|
-
* as a CustomShaderBlock. The .glsl file must contain certain annotations to be imported.
|
|
49
|
-
* See readme.md for more information.
|
|
50
|
-
* @param fragmentShader - The contents of the .glsl fragment shader file
|
|
51
|
-
* @returns The serialized block definition
|
|
52
|
-
*/
|
|
53
|
-
function
|
|
54
|
-
const fragmentShaderInfo =
|
|
55
|
-
|
|
56
|
-
if (!fragmentShaderInfo.blockType) {
|
|
57
|
-
throw new Error("blockType must be defined");
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Calculate the input connection points
|
|
61
|
-
const inputConnectionPoints: SerializedInputConnectionPointV1[] = [];
|
|
62
|
-
for (const uniform of fragmentShaderInfo.uniforms) {
|
|
63
|
-
// Add to input connection point list
|
|
64
|
-
const inputConnectionPoint: SerializedInputConnectionPointV1 = {
|
|
65
|
-
name: uniform.name,
|
|
66
|
-
type: uniform.type,
|
|
67
|
-
autoBind: uniform.properties?.autoBind as InputAutoBindV1,
|
|
68
|
-
};
|
|
69
|
-
if (inputConnectionPoint.type !== ConnectionPointType.Texture && uniform.properties?.default !== undefined) {
|
|
70
|
-
inputConnectionPoint.defaultValue = uniform.properties.default;
|
|
71
|
-
}
|
|
72
|
-
inputConnectionPoints.push(inputConnectionPoint);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return {
|
|
76
|
-
format: "shaderBlockDefinition",
|
|
77
|
-
formatVersion: 1,
|
|
78
|
-
blockType: fragmentShaderInfo.blockType,
|
|
79
|
-
namespace: fragmentShaderInfo.namespace,
|
|
80
|
-
shaderProgram: {
|
|
81
|
-
fragment: fragmentShaderInfo.shaderCode,
|
|
82
|
-
},
|
|
83
|
-
inputConnectionPoints,
|
|
84
|
-
disableOptimization: !!fragmentShaderInfo.disableOptimization,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
1
|
+
import { ConnectionPointType } from "../connection/connectionPointType.js";
|
|
2
|
+
import { HasGlslHeader, ParseFragmentShader } from "../utils/buildTools/shaderConverter.js";
|
|
3
|
+
import type { SerializedBlockDefinition } from "./serializedBlockDefinition.js";
|
|
4
|
+
import type { SerializedShaderBlockDefinition } from "./serializedShaderBlockDefinition.js";
|
|
5
|
+
import type { InputAutoBindV1, SerializedInputConnectionPointV1 } from "./v1/shaderBlockSerialization.types.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Imports a serialized custom block definition. Supports either serialized CustomShaderBlock definitions or
|
|
9
|
+
* CustomAggregateBlock definitions. Can throw an exception if the serialized data is invalid.
|
|
10
|
+
*
|
|
11
|
+
* CustomShaderBlock definitions can be supplied either as serialized SerializedBlockDefinition object
|
|
12
|
+
* or a glsl shader with the required annotations (see readme.md for details).
|
|
13
|
+
*
|
|
14
|
+
* CustomAggregateBlock definitions must be supplied as serialized SerializedBlockDefinition object.
|
|
15
|
+
*
|
|
16
|
+
* @param serializedData - The serialized data
|
|
17
|
+
* @returns The serialized block definition
|
|
18
|
+
*/
|
|
19
|
+
export function ImportCustomBlockDefinition(serializedData: string): SerializedBlockDefinition {
|
|
20
|
+
if (HasGlslHeader(serializedData)) {
|
|
21
|
+
return ImportAnnotatedGlsl(serializedData);
|
|
22
|
+
} else {
|
|
23
|
+
// Assume this is a serialized JSON object
|
|
24
|
+
const blockDefinition = JSON.parse(serializedData);
|
|
25
|
+
|
|
26
|
+
// Some old SmartFilters didn't have a format property - default to smartFilter if missing
|
|
27
|
+
if (blockDefinition.format === undefined) {
|
|
28
|
+
blockDefinition.format = "smartFilter";
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// SmartFilters can be serialized without a blockType
|
|
32
|
+
// By convention, we use the SmartFilter name as the blockType when importing them as SerializedBlockDefinitions
|
|
33
|
+
if (blockDefinition.format === "smartFilter" && blockDefinition.name && !blockDefinition.blockType) {
|
|
34
|
+
blockDefinition.blockType = blockDefinition.name;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Validation
|
|
38
|
+
if (!blockDefinition.blockType) {
|
|
39
|
+
throw new Error("Could not find a blockType");
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return blockDefinition;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Converts a fragment shader .glsl file to an SerializedBlockDefinition instance for use
|
|
48
|
+
* as a CustomShaderBlock. The .glsl file must contain certain annotations to be imported.
|
|
49
|
+
* See readme.md for more information.
|
|
50
|
+
* @param fragmentShader - The contents of the .glsl fragment shader file
|
|
51
|
+
* @returns The serialized block definition
|
|
52
|
+
*/
|
|
53
|
+
function ImportAnnotatedGlsl(fragmentShader: string): SerializedShaderBlockDefinition {
|
|
54
|
+
const fragmentShaderInfo = ParseFragmentShader(fragmentShader);
|
|
55
|
+
|
|
56
|
+
if (!fragmentShaderInfo.blockType) {
|
|
57
|
+
throw new Error("blockType must be defined");
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Calculate the input connection points
|
|
61
|
+
const inputConnectionPoints: SerializedInputConnectionPointV1[] = [];
|
|
62
|
+
for (const uniform of fragmentShaderInfo.uniforms) {
|
|
63
|
+
// Add to input connection point list
|
|
64
|
+
const inputConnectionPoint: SerializedInputConnectionPointV1 = {
|
|
65
|
+
name: uniform.name,
|
|
66
|
+
type: uniform.type,
|
|
67
|
+
autoBind: uniform.properties?.autoBind as InputAutoBindV1,
|
|
68
|
+
};
|
|
69
|
+
if (inputConnectionPoint.type !== ConnectionPointType.Texture && uniform.properties?.default !== undefined) {
|
|
70
|
+
inputConnectionPoint.defaultValue = uniform.properties.default;
|
|
71
|
+
}
|
|
72
|
+
inputConnectionPoints.push(inputConnectionPoint);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return {
|
|
76
|
+
format: "shaderBlockDefinition",
|
|
77
|
+
formatVersion: 1,
|
|
78
|
+
blockType: fragmentShaderInfo.blockType,
|
|
79
|
+
namespace: fragmentShaderInfo.namespace,
|
|
80
|
+
shaderProgram: {
|
|
81
|
+
fragment: fragmentShaderInfo.shaderCode,
|
|
82
|
+
},
|
|
83
|
+
inputConnectionPoints,
|
|
84
|
+
disableOptimization: !!fragmentShaderInfo.disableOptimization,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
export * from "./
|
|
3
|
-
export * from "./
|
|
4
|
-
export * from "./
|
|
5
|
-
export * from "./
|
|
6
|
-
export * from "./
|
|
7
|
-
export * from "./
|
|
1
|
+
/* eslint-disable import/no-internal-modules */
|
|
2
|
+
export * from "./v1/index.js";
|
|
3
|
+
export * from "./serializedSmartFilter.js";
|
|
4
|
+
export * from "./smartFilterDeserializer.js";
|
|
5
|
+
export * from "./smartFilterSerializer.js";
|
|
6
|
+
export * from "./serializedShaderBlockDefinition.js";
|
|
7
|
+
export * from "./serializedBlockDefinition.js";
|
|
8
|
+
export * from "./importCustomBlockDefinition.js";
|
|
9
|
+
// Back compat for when camelCase was used
|
|
10
|
+
export { ImportCustomBlockDefinition as importCustomBlockDefinition } from "./importCustomBlockDefinition.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type { SerializedShaderBlockDefinition } from "./serializedShaderBlockDefinition";
|
|
2
|
-
import type { SerializedSmartFilter } from "./serializedSmartFilter";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Type that represents any type of serialized block definition - shader or aggregate.
|
|
6
|
-
*/
|
|
7
|
-
export type SerializedBlockDefinition = (SerializedShaderBlockDefinition | SerializedSmartFilter) & {
|
|
8
|
-
/**
|
|
9
|
-
* The type of block this is.
|
|
10
|
-
*/
|
|
11
|
-
blockType: string;
|
|
12
|
-
};
|
|
1
|
+
import type { SerializedShaderBlockDefinition } from "./serializedShaderBlockDefinition.js";
|
|
2
|
+
import type { SerializedSmartFilter } from "./serializedSmartFilter.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Type that represents any type of serialized block definition - shader or aggregate.
|
|
6
|
+
*/
|
|
7
|
+
export type SerializedBlockDefinition = (SerializedShaderBlockDefinition | SerializedSmartFilter) & {
|
|
8
|
+
/**
|
|
9
|
+
* The type of block this is.
|
|
10
|
+
*/
|
|
11
|
+
blockType: string;
|
|
12
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { SerializedShaderBlockDefinitionV1 } from "./v1/shaderBlockSerialization.types";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Type union of all versions of serialized SmartFilter block definitions
|
|
5
|
-
* A block definition is an object which is used to create a CustomShaderBlock instance.
|
|
6
|
-
*/
|
|
7
|
-
export type SerializedShaderBlockDefinition = SerializedShaderBlockDefinitionV1;
|
|
1
|
+
import type { SerializedShaderBlockDefinitionV1 } from "./v1/shaderBlockSerialization.types.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Type union of all versions of serialized SmartFilter block definitions
|
|
5
|
+
* A block definition is an object which is used to create a CustomShaderBlock instance.
|
|
6
|
+
*/
|
|
7
|
+
export type SerializedShaderBlockDefinition = SerializedShaderBlockDefinitionV1;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { SerializedSmartFilterV1 } from "./v1/smartFilterSerialization.types";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Type union of all versions of serialized SmartFilters
|
|
5
|
-
*/
|
|
6
|
-
export type SerializedSmartFilter = SerializedSmartFilterV1;
|
|
1
|
+
import type { SerializedSmartFilterV1 } from "./v1/smartFilterSerialization.types.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Type union of all versions of serialized SmartFilters
|
|
5
|
+
*/
|
|
6
|
+
export type SerializedSmartFilter = SerializedSmartFilterV1;
|