@babylonjs/smart-filters-blocks 0.8.1
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/blocks/babylon/demo/effects/blackAndWhiteBlock.block.d.ts +34 -0
- package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.block.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.block.js +101 -0
- package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.block.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/blurBlock.d.ts +53 -0
- package/dist/blocks/babylon/demo/effects/blurBlock.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/blurBlock.deserializer.d.ts +28 -0
- package/dist/blocks/babylon/demo/effects/blurBlock.deserializer.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/blurBlock.deserializer.js +17 -0
- package/dist/blocks/babylon/demo/effects/blurBlock.deserializer.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/blurBlock.js +98 -0
- package/dist/blocks/babylon/demo/effects/blurBlock.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/blurBlock.serializer.d.ts +8 -0
- package/dist/blocks/babylon/demo/effects/blurBlock.serializer.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/blurBlock.serializer.js +28 -0
- package/dist/blocks/babylon/demo/effects/blurBlock.serializer.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.d.ts +116 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.deserializer.d.ts +24 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.deserializer.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.deserializer.js +15 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.deserializer.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.fragment.d.ts +18 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.fragment.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.fragment.js +69 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.fragment.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.js +167 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.serializer.d.ts +6 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.serializer.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.serializer.js +25 -0
- package/dist/blocks/babylon/demo/effects/compositionBlock.serializer.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/contrastBlock.block.d.ts +39 -0
- package/dist/blocks/babylon/demo/effects/contrastBlock.block.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/contrastBlock.block.js +140 -0
- package/dist/blocks/babylon/demo/effects/contrastBlock.block.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/desaturateBlock.block.d.ts +39 -0
- package/dist/blocks/babylon/demo/effects/desaturateBlock.block.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/desaturateBlock.block.js +115 -0
- package/dist/blocks/babylon/demo/effects/desaturateBlock.block.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.d.ts +74 -0
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.d.ts +32 -0
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.js +17 -0
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.js +167 -0
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.serializer.d.ts +6 -0
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.serializer.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.serializer.js +27 -0
- package/dist/blocks/babylon/demo/effects/directionalBlurBlock.serializer.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/exposureBlock.block.d.ts +38 -0
- package/dist/blocks/babylon/demo/effects/exposureBlock.block.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/exposureBlock.block.js +107 -0
- package/dist/blocks/babylon/demo/effects/exposureBlock.block.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/greenScreenBlock.block.d.ts +46 -0
- package/dist/blocks/babylon/demo/effects/greenScreenBlock.block.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/greenScreenBlock.block.js +133 -0
- package/dist/blocks/babylon/demo/effects/greenScreenBlock.block.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/index.d.ts +15 -0
- package/dist/blocks/babylon/demo/effects/index.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/index.js +15 -0
- package/dist/blocks/babylon/demo/effects/index.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/kaleidoscopeBlock.d.ts +58 -0
- package/dist/blocks/babylon/demo/effects/kaleidoscopeBlock.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/kaleidoscopeBlock.js +158 -0
- package/dist/blocks/babylon/demo/effects/kaleidoscopeBlock.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/maskBlock.block.d.ts +38 -0
- package/dist/blocks/babylon/demo/effects/maskBlock.block.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/maskBlock.block.js +110 -0
- package/dist/blocks/babylon/demo/effects/maskBlock.block.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/pixelateBlock.block.d.ts +44 -0
- package/dist/blocks/babylon/demo/effects/pixelateBlock.block.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/pixelateBlock.block.js +125 -0
- package/dist/blocks/babylon/demo/effects/pixelateBlock.block.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/posterizeBlock.block.d.ts +39 -0
- package/dist/blocks/babylon/demo/effects/posterizeBlock.block.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/posterizeBlock.block.js +116 -0
- package/dist/blocks/babylon/demo/effects/posterizeBlock.block.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.d.ts +77 -0
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.fragment.d.ts +18 -0
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.fragment.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.fragment.js +58 -0
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.fragment.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.js +98 -0
- package/dist/blocks/babylon/demo/effects/spritesheetBlock.js.map +1 -0
- package/dist/blocks/babylon/demo/effects/tintBlock.d.ts +7 -0
- package/dist/blocks/babylon/demo/effects/tintBlock.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/effects/tintBlock.js +51 -0
- package/dist/blocks/babylon/demo/effects/tintBlock.js.map +1 -0
- package/dist/blocks/babylon/demo/transitions/index.d.ts +2 -0
- package/dist/blocks/babylon/demo/transitions/index.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/transitions/index.js +2 -0
- package/dist/blocks/babylon/demo/transitions/index.js.map +1 -0
- package/dist/blocks/babylon/demo/transitions/wipeBlock.block.d.ts +42 -0
- package/dist/blocks/babylon/demo/transitions/wipeBlock.block.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/transitions/wipeBlock.block.js +116 -0
- package/dist/blocks/babylon/demo/transitions/wipeBlock.block.js.map +1 -0
- package/dist/blocks/babylon/demo/utilities/index.d.ts +2 -0
- package/dist/blocks/babylon/demo/utilities/index.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/utilities/index.js +2 -0
- package/dist/blocks/babylon/demo/utilities/index.js.map +1 -0
- package/dist/blocks/babylon/demo/utilities/premultiplyAlphaBlock.block.d.ts +34 -0
- package/dist/blocks/babylon/demo/utilities/premultiplyAlphaBlock.block.d.ts.map +1 -0
- package/dist/blocks/babylon/demo/utilities/premultiplyAlphaBlock.block.js +97 -0
- package/dist/blocks/babylon/demo/utilities/premultiplyAlphaBlock.block.js.map +1 -0
- package/dist/blocks/blockNamespaces.d.ts +5 -0
- package/dist/blocks/blockNamespaces.d.ts.map +1 -0
- package/dist/blocks/blockNamespaces.js +5 -0
- package/dist/blocks/blockNamespaces.js.map +1 -0
- package/dist/blocks/blockTypes.d.ts +22 -0
- package/dist/blocks/blockTypes.d.ts.map +1 -0
- package/dist/blocks/blockTypes.js +22 -0
- package/dist/blocks/blockTypes.js.map +1 -0
- package/dist/blocks/index.d.ts +6 -0
- package/dist/blocks/index.d.ts.map +1 -0
- package/dist/blocks/index.js +6 -0
- package/dist/blocks/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/registration/IBlockRegistration.d.ts +34 -0
- package/dist/registration/IBlockRegistration.d.ts.map +1 -0
- package/dist/registration/IBlockRegistration.js +2 -0
- package/dist/registration/IBlockRegistration.js.map +1 -0
- package/dist/registration/blockSerializers.d.ts +13 -0
- package/dist/registration/blockSerializers.d.ts.map +1 -0
- package/dist/registration/blockSerializers.js +35 -0
- package/dist/registration/blockSerializers.js.map +1 -0
- package/dist/registration/builtInBlockRegistrations.d.ts +13 -0
- package/dist/registration/builtInBlockRegistrations.d.ts.map +1 -0
- package/dist/registration/builtInBlockRegistrations.js +269 -0
- package/dist/registration/builtInBlockRegistrations.js.map +1 -0
- package/dist/registration/index.d.ts +3 -0
- package/dist/registration/index.d.ts.map +1 -0
- package/dist/registration/index.js +3 -0
- package/dist/registration/index.js.map +1 -0
- package/license.md +21 -0
- package/package.json +52 -0
- package/readme.md +7 -0
- package/src/blocks/babylon/demo/effects/blackAndWhiteBlock.block.glsl +18 -0
- package/src/blocks/babylon/demo/effects/blackAndWhiteBlock.block.ts +133 -0
- package/src/blocks/babylon/demo/effects/blurBlock.deserializer.ts +37 -0
- package/src/blocks/babylon/demo/effects/blurBlock.serializer.ts +31 -0
- package/src/blocks/babylon/demo/effects/blurBlock.ts +122 -0
- package/src/blocks/babylon/demo/effects/compositionBlock.deserializer.ts +31 -0
- package/src/blocks/babylon/demo/effects/compositionBlock.fragment.glsl +38 -0
- package/src/blocks/babylon/demo/effects/compositionBlock.fragment.ts +71 -0
- package/src/blocks/babylon/demo/effects/compositionBlock.serializer.ts +28 -0
- package/src/blocks/babylon/demo/effects/compositionBlock.ts +243 -0
- package/src/blocks/babylon/demo/effects/contrastBlock.block.glsl +36 -0
- package/src/blocks/babylon/demo/effects/contrastBlock.block.ts +180 -0
- package/src/blocks/babylon/demo/effects/desaturateBlock.block.glsl +24 -0
- package/src/blocks/babylon/demo/effects/desaturateBlock.block.ts +155 -0
- package/src/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.ts +46 -0
- package/src/blocks/babylon/demo/effects/directionalBlurBlock.serializer.ts +30 -0
- package/src/blocks/babylon/demo/effects/directionalBlurBlock.ts +196 -0
- package/src/blocks/babylon/demo/effects/exposureBlock.block.glsl +15 -0
- package/src/blocks/babylon/demo/effects/exposureBlock.block.ts +142 -0
- package/src/blocks/babylon/demo/effects/greenScreenBlock.block.glsl +23 -0
- package/src/blocks/babylon/demo/effects/greenScreenBlock.block.ts +174 -0
- package/src/blocks/babylon/demo/effects/index.ts +14 -0
- package/src/blocks/babylon/demo/effects/kaleidoscopeBlock.ts +192 -0
- package/src/blocks/babylon/demo/effects/maskBlock.block.glsl +18 -0
- package/src/blocks/babylon/demo/effects/maskBlock.block.ts +145 -0
- package/src/blocks/babylon/demo/effects/pixelateBlock.block.glsl +28 -0
- package/src/blocks/babylon/demo/effects/pixelateBlock.block.ts +169 -0
- package/src/blocks/babylon/demo/effects/posterizeBlock.block.glsl +25 -0
- package/src/blocks/babylon/demo/effects/posterizeBlock.block.ts +156 -0
- package/src/blocks/babylon/demo/effects/spritesheetBlock.fragment.glsl +26 -0
- package/src/blocks/babylon/demo/effects/spritesheetBlock.fragment.ts +60 -0
- package/src/blocks/babylon/demo/effects/spritesheetBlock.ts +138 -0
- package/src/blocks/babylon/demo/effects/tintBlock.ts +51 -0
- package/src/blocks/babylon/demo/transitions/index.ts +1 -0
- package/src/blocks/babylon/demo/transitions/wipeBlock.block.glsl +11 -0
- package/src/blocks/babylon/demo/transitions/wipeBlock.block.ts +152 -0
- package/src/blocks/babylon/demo/utilities/index.ts +1 -0
- package/src/blocks/babylon/demo/utilities/premultiplyAlphaBlock.block.glsl +14 -0
- package/src/blocks/babylon/demo/utilities/premultiplyAlphaBlock.block.ts +129 -0
- package/src/blocks/blockNamespaces.ts +4 -0
- package/src/blocks/blockTypes.ts +21 -0
- package/src/blocks/index.ts +5 -0
- package/src/index.ts +2 -0
- package/src/registration/IBlockRegistration.ts +43 -0
- package/src/registration/blockSerializers.ts +52 -0
- package/src/registration/builtInBlockRegistrations.ts +397 -0
- package/src/registration/index.ts +2 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { InputBlock, ConnectionPointType, CustomShaderBlock, } from "@babylonjs/smart-filters";
|
|
2
|
+
import { babylonDemoEffectsNamespace, babylonDemoTransitionsNamespace, babylonDemoUtilitiesNamespace, inputsNamespace, } from "../blocks/blockNamespaces.js";
|
|
3
|
+
import { blackAndWhiteBlockType, kaleidoscopeBlockType, posterizeBlockType, desaturateBlockType, contrastBlockType, greenScreenBlockType, pixelateBlockType, exposureBlockType, maskBlockType, spritesheetBlockType, premultiplyAlphaBlockType, wipeBlockType, blurBlockType, compositionBlockType, tintBlockType, } from "../blocks/blockTypes.js";
|
|
4
|
+
/**
|
|
5
|
+
* The list of block registrations.
|
|
6
|
+
*
|
|
7
|
+
* Important notes:
|
|
8
|
+
* 1. Do not import the block code directly in this file. Instead, use dynamic imports to ensure that the block code
|
|
9
|
+
* is only loaded when needed.
|
|
10
|
+
* 2. If the deserializer is trivial (doesn't require consulting the serializedBlock.data), it can be implemented here
|
|
11
|
+
* 3. If the deserializer is non-trivial (needs serializedBlock.data), implement it in a separate file alongside the block
|
|
12
|
+
* in the form blockClassName.deserializer.ts
|
|
13
|
+
*/
|
|
14
|
+
export const builtInBlockRegistrations = [
|
|
15
|
+
// Blocks with trivial deserializers
|
|
16
|
+
// Note that some choose to predefine corresponding input blocks if not being deserialized
|
|
17
|
+
// ---------------------------------------------------------------------------------------
|
|
18
|
+
{
|
|
19
|
+
blockType: blackAndWhiteBlockType,
|
|
20
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
21
|
+
const module = await import(
|
|
22
|
+
/* webpackChunkName: "blackAndWhiteBlock" */ "../blocks/babylon/demo/effects/blackAndWhiteBlock.block.js");
|
|
23
|
+
return new module.BlackAndWhiteBlock(smartFilter, (serializedBlock === null || serializedBlock === void 0 ? void 0 : serializedBlock.name) || "BlackAndWhite");
|
|
24
|
+
},
|
|
25
|
+
namespace: babylonDemoEffectsNamespace,
|
|
26
|
+
tooltip: "Transform the input texture to black and white",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
blockType: kaleidoscopeBlockType,
|
|
30
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
31
|
+
const module = await import(
|
|
32
|
+
/* webpackChunkName: "kaleidoscopeBlock" */ "../blocks/babylon/demo/effects/kaleidoscopeBlock.js");
|
|
33
|
+
const block = new module.KaleidoscopeBlock(smartFilter, (serializedBlock === null || serializedBlock === void 0 ? void 0 : serializedBlock.name) || "Kaleidoscope");
|
|
34
|
+
if (!serializedBlock) {
|
|
35
|
+
const input = new InputBlock(smartFilter, "Angle", ConnectionPointType.Float, 0);
|
|
36
|
+
input.output.connectTo(block.time);
|
|
37
|
+
}
|
|
38
|
+
return block;
|
|
39
|
+
},
|
|
40
|
+
namespace: babylonDemoEffectsNamespace,
|
|
41
|
+
tooltip: "Kaleidoscope effect",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
blockType: posterizeBlockType,
|
|
45
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
46
|
+
const module = await import(
|
|
47
|
+
/* webpackChunkName: "posterizeBlock" */ "../blocks/babylon/demo/effects/posterizeBlock.block.js");
|
|
48
|
+
const block = new module.PosterizeBlock(smartFilter, (serializedBlock === null || serializedBlock === void 0 ? void 0 : serializedBlock.name) || "Posterize");
|
|
49
|
+
if (!serializedBlock) {
|
|
50
|
+
const input = new InputBlock(smartFilter, "Intensity", ConnectionPointType.Float, 0.5);
|
|
51
|
+
input.output.connectTo(block.intensity);
|
|
52
|
+
}
|
|
53
|
+
return block;
|
|
54
|
+
},
|
|
55
|
+
namespace: babylonDemoEffectsNamespace,
|
|
56
|
+
tooltip: "Posterize to the input texture",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
blockType: desaturateBlockType,
|
|
60
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
61
|
+
const module = await import(
|
|
62
|
+
/* webpackChunkName: "desaturateBlock" */ "../blocks/babylon/demo/effects/desaturateBlock.block.js");
|
|
63
|
+
const block = new module.DesaturateBlock(smartFilter, (serializedBlock === null || serializedBlock === void 0 ? void 0 : serializedBlock.name) || "Desaturate");
|
|
64
|
+
if (!serializedBlock) {
|
|
65
|
+
const input = new InputBlock(smartFilter, "Intensity", ConnectionPointType.Float, 0.5);
|
|
66
|
+
input.output.connectTo(block.intensity);
|
|
67
|
+
}
|
|
68
|
+
return block;
|
|
69
|
+
},
|
|
70
|
+
namespace: babylonDemoEffectsNamespace,
|
|
71
|
+
tooltip: "Applies a desaturated effect to the input texture",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
blockType: contrastBlockType,
|
|
75
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
76
|
+
const module = await import(
|
|
77
|
+
/* webpackChunkName: "contrastBlock" */ "../blocks/babylon/demo/effects/contrastBlock.block.js");
|
|
78
|
+
const block = new module.ContrastBlock(smartFilter, (serializedBlock === null || serializedBlock === void 0 ? void 0 : serializedBlock.name) || "Contrast");
|
|
79
|
+
if (!serializedBlock) {
|
|
80
|
+
const input = new InputBlock(smartFilter, "Intensity", ConnectionPointType.Float, 0.5);
|
|
81
|
+
input.output.connectTo(block.intensity);
|
|
82
|
+
}
|
|
83
|
+
return block;
|
|
84
|
+
},
|
|
85
|
+
namespace: babylonDemoEffectsNamespace,
|
|
86
|
+
tooltip: "Change the contrast of the input texture",
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
blockType: greenScreenBlockType,
|
|
90
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
91
|
+
const module = await import(
|
|
92
|
+
/* webpackChunkName: "greenScreenBlock" */ "../blocks/babylon/demo/effects/greenScreenBlock.block.js");
|
|
93
|
+
const block = new module.GreenScreenBlock(smartFilter, (serializedBlock === null || serializedBlock === void 0 ? void 0 : serializedBlock.name) || "GreenScreen");
|
|
94
|
+
if (!serializedBlock) {
|
|
95
|
+
const reference = new InputBlock(smartFilter, "Reference", ConnectionPointType.Color3, {
|
|
96
|
+
r: 92 / 255,
|
|
97
|
+
g: 204 / 255,
|
|
98
|
+
b: 78 / 255,
|
|
99
|
+
});
|
|
100
|
+
const distance = new InputBlock(smartFilter, "Distance", ConnectionPointType.Float, 0.25);
|
|
101
|
+
reference.output.connectTo(block.reference);
|
|
102
|
+
distance.output.connectTo(block.distance);
|
|
103
|
+
}
|
|
104
|
+
return block;
|
|
105
|
+
},
|
|
106
|
+
namespace: babylonDemoEffectsNamespace,
|
|
107
|
+
tooltip: "Replaces a green screen background with a different texture",
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
blockType: pixelateBlockType,
|
|
111
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
112
|
+
const module = await import(
|
|
113
|
+
/* webpackChunkName: "pixelateBlock" */ "../blocks/babylon/demo/effects/pixelateBlock.block.js");
|
|
114
|
+
const block = new module.PixelateBlock(smartFilter, (serializedBlock === null || serializedBlock === void 0 ? void 0 : serializedBlock.name) || "Pixelate");
|
|
115
|
+
if (!serializedBlock) {
|
|
116
|
+
const input = new InputBlock(smartFilter, "Intensity", ConnectionPointType.Float, 0.4);
|
|
117
|
+
input.output.connectTo(block.intensity);
|
|
118
|
+
}
|
|
119
|
+
return block;
|
|
120
|
+
},
|
|
121
|
+
namespace: babylonDemoEffectsNamespace,
|
|
122
|
+
tooltip: "Add pixelation to the input texture",
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
blockType: exposureBlockType,
|
|
126
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
127
|
+
const module = await import(
|
|
128
|
+
/* webpackChunkName: "exposureBlock" */ "../blocks/babylon/demo/effects/exposureBlock.block.js");
|
|
129
|
+
const block = new module.ExposureBlock(smartFilter, (serializedBlock === null || serializedBlock === void 0 ? void 0 : serializedBlock.name) || "Exposure");
|
|
130
|
+
if (!serializedBlock) {
|
|
131
|
+
const input = new InputBlock(smartFilter, "Amount", ConnectionPointType.Float, 0.7);
|
|
132
|
+
input.output.connectTo(block.amount);
|
|
133
|
+
}
|
|
134
|
+
return block;
|
|
135
|
+
},
|
|
136
|
+
namespace: babylonDemoEffectsNamespace,
|
|
137
|
+
tooltip: "Alters the exposure of the input texture",
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
blockType: maskBlockType,
|
|
141
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
142
|
+
const module = await import(
|
|
143
|
+
/* webpackChunkName: "maskBlock" */ "../blocks/babylon/demo/effects/maskBlock.block.js");
|
|
144
|
+
return new module.MaskBlock(smartFilter, (serializedBlock === null || serializedBlock === void 0 ? void 0 : serializedBlock.name) || "Mask");
|
|
145
|
+
},
|
|
146
|
+
namespace: babylonDemoEffectsNamespace,
|
|
147
|
+
tooltip: "Applies mask in one texture to another texture",
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
blockType: spritesheetBlockType,
|
|
151
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
152
|
+
const module = await import(
|
|
153
|
+
/* webpackChunkName: "spritesheetBlock" */ "../blocks/babylon/demo/effects/spritesheetBlock.js");
|
|
154
|
+
return new module.SpritesheetBlock(smartFilter, (serializedBlock === null || serializedBlock === void 0 ? void 0 : serializedBlock.name) || "Spritesheet");
|
|
155
|
+
},
|
|
156
|
+
namespace: babylonDemoEffectsNamespace,
|
|
157
|
+
tooltip: "Animates a sprite sheet texture",
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
blockType: premultiplyAlphaBlockType,
|
|
161
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
162
|
+
const module = await import(
|
|
163
|
+
/* webpackChunkName: "premultiplyAlphaBlock" */ "../blocks/babylon/demo/utilities/premultiplyAlphaBlock.block.js");
|
|
164
|
+
return new module.PremultiplyAlphaBlock(smartFilter, (serializedBlock === null || serializedBlock === void 0 ? void 0 : serializedBlock.name) || "PremultiplyAlpha");
|
|
165
|
+
},
|
|
166
|
+
namespace: babylonDemoUtilitiesNamespace,
|
|
167
|
+
tooltip: "Premultiplies the input texture's color against its alpha",
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
blockType: wipeBlockType,
|
|
171
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
172
|
+
const module = await import(
|
|
173
|
+
/* webpackChunkName: "wipeBlock" */ "../blocks/babylon/demo/transitions/wipeBlock.block.js");
|
|
174
|
+
return new module.WipeBlock(smartFilter, (serializedBlock === null || serializedBlock === void 0 ? void 0 : serializedBlock.name) || "Wipe");
|
|
175
|
+
},
|
|
176
|
+
namespace: babylonDemoTransitionsNamespace,
|
|
177
|
+
tooltip: "Transition from one texture to another using a wipe",
|
|
178
|
+
},
|
|
179
|
+
// Blocks with custom deserializers
|
|
180
|
+
// --------------------------------
|
|
181
|
+
{
|
|
182
|
+
blockType: blurBlockType,
|
|
183
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
184
|
+
if (serializedBlock) {
|
|
185
|
+
const module = await import(
|
|
186
|
+
/* webpackChunkName: "blurBlockDeserializer" */ "../blocks/babylon/demo/effects/blurBlock.deserializer.js");
|
|
187
|
+
return module.blurBlockDeserializer(smartFilter, serializedBlock);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
const module = await import(
|
|
191
|
+
/* webpackChunkName: "blurBlock" */ "../blocks/babylon/demo/effects/blurBlock.js");
|
|
192
|
+
return new module.BlurBlock(smartFilter, "Blur");
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
namespace: babylonDemoEffectsNamespace,
|
|
196
|
+
tooltip: "Blur the input texture",
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
blockType: compositionBlockType,
|
|
200
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
201
|
+
if (serializedBlock) {
|
|
202
|
+
const module = await import(
|
|
203
|
+
/* webpackChunkName: "compositionBlockDeserializer" */ "../blocks/babylon/demo/effects/compositionBlock.deserializer.js");
|
|
204
|
+
return module.compositionDeserializer(smartFilter, serializedBlock);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
const module = await import(
|
|
208
|
+
/* webpackChunkName: "compositionBlock" */ "../blocks/babylon/demo/effects/compositionBlock.js");
|
|
209
|
+
const block = new module.CompositionBlock(smartFilter, "Composition");
|
|
210
|
+
const top = new InputBlock(smartFilter, "Top", ConnectionPointType.Float, 0.0);
|
|
211
|
+
const left = new InputBlock(smartFilter, "Left", ConnectionPointType.Float, 0.0);
|
|
212
|
+
const width = new InputBlock(smartFilter, "Width", ConnectionPointType.Float, 1.0);
|
|
213
|
+
const height = new InputBlock(smartFilter, "Height", ConnectionPointType.Float, 1.0);
|
|
214
|
+
top.output.connectTo(block.foregroundTop);
|
|
215
|
+
left.output.connectTo(block.foregroundLeft);
|
|
216
|
+
width.output.connectTo(block.foregroundWidth);
|
|
217
|
+
height.output.connectTo(block.foregroundHeight);
|
|
218
|
+
return block;
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
namespace: babylonDemoEffectsNamespace,
|
|
222
|
+
tooltip: "Composite the foreground texture over the background texture",
|
|
223
|
+
},
|
|
224
|
+
// Blocks defined by serialized definitions
|
|
225
|
+
// ----------------------------------------
|
|
226
|
+
{
|
|
227
|
+
blockType: tintBlockType,
|
|
228
|
+
factory: async (smartFilter, _engine, _smartFilterDeserializer, serializedBlock) => {
|
|
229
|
+
const module = await import(
|
|
230
|
+
/* webpackChunkName: "tintBlock" */ "../blocks/babylon/demo/effects/tintBlock.js");
|
|
231
|
+
return CustomShaderBlock.Create(smartFilter, (serializedBlock === null || serializedBlock === void 0 ? void 0 : serializedBlock.name) || "Tint", module.deserializedTintBlockDefinition);
|
|
232
|
+
},
|
|
233
|
+
namespace: babylonDemoEffectsNamespace,
|
|
234
|
+
tooltip: "Adds colored tint to the input texture",
|
|
235
|
+
},
|
|
236
|
+
// Standard input blocks
|
|
237
|
+
// ---------------------
|
|
238
|
+
{
|
|
239
|
+
blockType: "Float",
|
|
240
|
+
namespace: inputsNamespace,
|
|
241
|
+
tooltip: "A floating point number representing a value with a fractional component",
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
blockType: "Color3",
|
|
245
|
+
namespace: inputsNamespace,
|
|
246
|
+
tooltip: "A set of 3 floating point numbers representing a color",
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
blockType: "Color4",
|
|
250
|
+
namespace: inputsNamespace,
|
|
251
|
+
tooltip: "A set of 4 floating point numbers representing a color",
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
blockType: "Texture",
|
|
255
|
+
namespace: inputsNamespace,
|
|
256
|
+
tooltip: "A texture to be used as input",
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
blockType: "Vector2",
|
|
260
|
+
namespace: inputsNamespace,
|
|
261
|
+
tooltip: "A Vector2 to be used as input",
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
blockType: "Boolean",
|
|
265
|
+
namespace: inputsNamespace,
|
|
266
|
+
tooltip: "A boolean to be used as input",
|
|
267
|
+
},
|
|
268
|
+
];
|
|
269
|
+
//# sourceMappingURL=builtInBlockRegistrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtInBlockRegistrations.js","sourceRoot":"","sources":["../../src/registration/builtInBlockRegistrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registration/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registration/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC"}
|
package/license.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Babylon.js
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@babylonjs/smart-filters-blocks",
|
|
3
|
+
"version": "0.8.1",
|
|
4
|
+
"description": "Babylon.js Smart Filter Block Library",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"video",
|
|
7
|
+
"composition",
|
|
8
|
+
"3D",
|
|
9
|
+
"2D",
|
|
10
|
+
"javascript",
|
|
11
|
+
"html5",
|
|
12
|
+
"webgl",
|
|
13
|
+
"webgl2",
|
|
14
|
+
"webgpu",
|
|
15
|
+
"babylon"
|
|
16
|
+
],
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"readme": "README.md",
|
|
19
|
+
"main": "dist/index",
|
|
20
|
+
"module": "dist/index",
|
|
21
|
+
"esnext": "dist/index",
|
|
22
|
+
"types": "dist/index",
|
|
23
|
+
"type": "module",
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git+https://github.com/BabylonJS/SmartFilters.git"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"dist",
|
|
31
|
+
"src",
|
|
32
|
+
"license.md",
|
|
33
|
+
"readme.md"
|
|
34
|
+
],
|
|
35
|
+
"scripts": {
|
|
36
|
+
"clean": "rimraf dist && rimraf tsconfig.build.tsbuildinfo && rimraf --glob ./src/blocks/**/*.block.ts && rimraf --glob ./src/blocks/**/*.fragment.ts",
|
|
37
|
+
"preparePublish": "node build/preparePublish.js",
|
|
38
|
+
"build": "npm run build:runTools && npm run build:blocks",
|
|
39
|
+
"build:blocks": "tsc -p ./tsconfig.build.json",
|
|
40
|
+
"build:runTools": "node ../core/dist/utils/buildTools/buildShaders.js ./src/blocks @babylonjs/smart-filters",
|
|
41
|
+
"watch": "concurrently \"npm run watch:blocks\" \"npm run watch:shaders\"",
|
|
42
|
+
"watch:blocks": "tsc -p ./tsconfig.build.json --watch",
|
|
43
|
+
"watch:shaders": "node ../core/dist/utils/buildTools/watchShaders.js ./src/blocks @babylonjs/smart-filters",
|
|
44
|
+
"test": "echo \"Error: run test from the root of the monorepo\" && exit 1"
|
|
45
|
+
},
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"@babylonjs/core": "^7.54.2"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"@babylonjs/smart-filters": "0.8.1"
|
|
51
|
+
}
|
|
52
|
+
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Babylon.js Smart Filters
|
|
2
|
+
|
|
3
|
+
## Blocks
|
|
4
|
+
|
|
5
|
+
This package contains a library of blocks for use with Babylon Smart Filters (see @babylonjs/smart-filters).
|
|
6
|
+
|
|
7
|
+
See the full documentation at [doc.babylonjs.com](https://doc.babylonjs.com/features/featuresDeepDive/smartFilters/)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*
|
|
2
|
+
{
|
|
3
|
+
"smartFilterBlockType": "BlackAndWhiteBlock",
|
|
4
|
+
"namespace": "Babylon.Demo.Effects",
|
|
5
|
+
"blockDisableStrategy": "AutoSample"
|
|
6
|
+
}
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
uniform sampler2D input; // main
|
|
10
|
+
|
|
11
|
+
vec4 blackAndWhite(vec2 vUV) { // main
|
|
12
|
+
vec4 color = texture2D(input, vUV);
|
|
13
|
+
|
|
14
|
+
float luminance = dot(color.rgb, vec3(0.3, 0.59, 0.11));
|
|
15
|
+
vec3 bg = vec3(luminance, luminance, luminance);
|
|
16
|
+
|
|
17
|
+
return vec4(bg, color.a);
|
|
18
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/* eslint-disable prettier/prettier */
|
|
2
|
+
// ************************************************************
|
|
3
|
+
// Note: this file is auto-generated, do not modify it directly
|
|
4
|
+
// ************************************************************
|
|
5
|
+
|
|
6
|
+
// It was generated by convertGlslIntoBlock() from
|
|
7
|
+
// an annotated .glsl file. Modify the .glsl file to make changes
|
|
8
|
+
// to the block. This file will get overwritten when the build
|
|
9
|
+
// is run or during a watch when the .glsl file is updated.
|
|
10
|
+
|
|
11
|
+
import type { Effect } from "@babylonjs/core/Materials/effect";
|
|
12
|
+
|
|
13
|
+
import {
|
|
14
|
+
DisableableShaderBinding,
|
|
15
|
+
type RuntimeData,
|
|
16
|
+
ConnectionPointType,
|
|
17
|
+
type SmartFilter,
|
|
18
|
+
DisableableShaderBlock,
|
|
19
|
+
type ShaderProgram,
|
|
20
|
+
type IDisableableBlock,
|
|
21
|
+
BlockDisableStrategy} from "@babylonjs/smart-filters";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The shader program for the block.
|
|
25
|
+
*/
|
|
26
|
+
const shaderProgram: ShaderProgram = {
|
|
27
|
+
vertex: undefined,
|
|
28
|
+
fragment: {
|
|
29
|
+
uniform: `
|
|
30
|
+
uniform sampler2D _input_; // main`,
|
|
31
|
+
mainInputTexture: "_input_",
|
|
32
|
+
mainFunctionName: "_blackAndWhite_",
|
|
33
|
+
functions: [
|
|
34
|
+
{
|
|
35
|
+
name: "_blackAndWhite_",
|
|
36
|
+
code: `
|
|
37
|
+
vec4 _blackAndWhite_(vec2 vUV) {
|
|
38
|
+
vec4 color = texture2D(_input_, vUV);
|
|
39
|
+
|
|
40
|
+
float luminance = dot(color.rgb, vec3(0.3, 0.59, 0.11));
|
|
41
|
+
vec3 bg = vec3(luminance, luminance, luminance);
|
|
42
|
+
|
|
43
|
+
return vec4(bg, color.a);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
`,
|
|
47
|
+
params: "vec2 vUV",
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The uniform names for this shader, to be used in the shader binding so
|
|
55
|
+
* that the names are always in sync.
|
|
56
|
+
*/
|
|
57
|
+
const uniforms = {
|
|
58
|
+
input: "input",
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* The shader binding for the BlackAndWhiteBlock, used by the runtime
|
|
63
|
+
*/
|
|
64
|
+
class BlackAndWhiteBlockShaderBinding extends DisableableShaderBinding {
|
|
65
|
+
private readonly _input: RuntimeData<ConnectionPointType.Texture>;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Creates a new shader binding instance for the block.
|
|
69
|
+
* @param parentBlock - IDisableableBlock
|
|
70
|
+
* @param input - The input runtime value
|
|
71
|
+
*/
|
|
72
|
+
constructor(
|
|
73
|
+
parentBlock: IDisableableBlock,
|
|
74
|
+
input: RuntimeData<ConnectionPointType.Texture>
|
|
75
|
+
) {
|
|
76
|
+
super(parentBlock);
|
|
77
|
+
this._input = input;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Binds all the required data to the shader when rendering.
|
|
82
|
+
* @param effect - defines the effect to bind the data to
|
|
83
|
+
*/
|
|
84
|
+
public override bind(effect: Effect): void {
|
|
85
|
+
super.bind(effect);
|
|
86
|
+
effect.setTexture(this.getRemappedName(uniforms.input), this._input.value);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* The implementation of the BlackAndWhiteBlock
|
|
92
|
+
*/
|
|
93
|
+
export class BlackAndWhiteBlock extends DisableableShaderBlock {
|
|
94
|
+
/**
|
|
95
|
+
* The class name of the block.
|
|
96
|
+
*/
|
|
97
|
+
public static override ClassName = "BlackAndWhiteBlock";
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* The namespace of the block.
|
|
101
|
+
*/
|
|
102
|
+
public static override Namespace = "Babylon.Demo.Effects";
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* The input connection point.
|
|
106
|
+
*/
|
|
107
|
+
public readonly input = this._registerInput(uniforms.input, ConnectionPointType.Texture);
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* The shader program (vertex and fragment code) to use to render the block
|
|
111
|
+
*/
|
|
112
|
+
public static override ShaderCode = shaderProgram;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Instantiates a new BlackAndWhiteBlock.
|
|
116
|
+
* @param smartFilter - The smart filter this block belongs to
|
|
117
|
+
* @param name - The friendly name of the block
|
|
118
|
+
*/
|
|
119
|
+
constructor(smartFilter: SmartFilter, name: string) {
|
|
120
|
+
super(smartFilter, name, false, BlockDisableStrategy.AutoSample);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Get the class instance that binds all the required data to the shader (effect) when rendering.
|
|
125
|
+
* @returns The class instance that binds the data to the effect
|
|
126
|
+
*/
|
|
127
|
+
public getShaderBinding(): DisableableShaderBinding {
|
|
128
|
+
const input = this._confirmRuntimeDataSupplied(this.input);
|
|
129
|
+
|
|
130
|
+
return new BlackAndWhiteBlockShaderBinding(this,input);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type SmartFilter, type ISerializedBlockV1 } from "@babylonjs/smart-filters";
|
|
2
|
+
import { BlurBlock } from "./blurBlock.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The definition of the extra data serialized for blur blocks.
|
|
6
|
+
*/
|
|
7
|
+
export interface ISerializedBlurBlockV1 extends ISerializedBlockV1 {
|
|
8
|
+
/**
|
|
9
|
+
* The extra data of the block.
|
|
10
|
+
*/
|
|
11
|
+
data: {
|
|
12
|
+
/**
|
|
13
|
+
* The blur texture ratio per pass.
|
|
14
|
+
*/
|
|
15
|
+
blurTextureRatioPerPass: number;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The size of the blur.
|
|
19
|
+
*/
|
|
20
|
+
blurSize: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* V1 Blur Deserializer.
|
|
26
|
+
* @param smartFilter - The SmartFilter to deserialize the block into
|
|
27
|
+
* @param serializedBlock - The serialized block data
|
|
28
|
+
* @returns A deserialized BlurBlock
|
|
29
|
+
*/
|
|
30
|
+
export function blurBlockDeserializer(smartFilter: SmartFilter, serializedBlock: ISerializedBlurBlockV1) {
|
|
31
|
+
const block = new BlurBlock(smartFilter, serializedBlock.name);
|
|
32
|
+
|
|
33
|
+
// If data is missing, use the default value set by the block
|
|
34
|
+
block.blurTextureRatioPerPass = serializedBlock.data.blurTextureRatioPerPass ?? block.blurSize;
|
|
35
|
+
block.blurSize = serializedBlock.data.blurSize ?? block.blurSize;
|
|
36
|
+
return block;
|
|
37
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { BaseBlock, IBlockSerializerV1 } from "@babylonjs/smart-filters";
|
|
2
|
+
import type { BlurBlock } from "./blurBlock";
|
|
3
|
+
import { blurBlockType } from "../../../blockTypes.js";
|
|
4
|
+
import { babylonDemoEffectsNamespace } from "../../../blockNamespaces.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The V1 serializer for a Blur Block.
|
|
8
|
+
* Though it is an aggregate block, Blur creates and manages its own blocks
|
|
9
|
+
* internally, so there's no need to worry about serializing them.
|
|
10
|
+
*/
|
|
11
|
+
export const blurBlockSerializer: IBlockSerializerV1 = {
|
|
12
|
+
blockType: blurBlockType,
|
|
13
|
+
serialize: (block: BaseBlock) => {
|
|
14
|
+
if (block.getClassName() !== blurBlockType) {
|
|
15
|
+
throw new Error("Was asked to serialize an unrecognized block type");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const blurBlock = block as unknown as BlurBlock;
|
|
19
|
+
return {
|
|
20
|
+
name: block.name,
|
|
21
|
+
uniqueId: block.uniqueId,
|
|
22
|
+
blockType: blurBlockType,
|
|
23
|
+
namespace: babylonDemoEffectsNamespace,
|
|
24
|
+
comments: block.comments,
|
|
25
|
+
data: {
|
|
26
|
+
blurTextureRatioPerPass: blurBlock.blurTextureRatioPerPass,
|
|
27
|
+
blurSize: blurBlock.blurSize,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
};
|