@babylonjs/smart-filters 0.7.10-alpha → 0.7.12-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/dist/blockFoundation/outputBlock.d.ts +5 -0
  2. package/dist/blockFoundation/outputBlock.d.ts.map +1 -1
  3. package/dist/blockFoundation/outputBlock.js +30 -1
  4. package/dist/blockFoundation/outputBlock.js.map +1 -1
  5. package/dist/index.d.ts +0 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +0 -2
  8. package/dist/index.js.map +1 -1
  9. package/dist/version.d.ts +1 -1
  10. package/dist/version.js +1 -1
  11. package/package.json +5 -10
  12. package/readme.md +2 -0
  13. package/src/blockFoundation/outputBlock.ts +33 -1
  14. package/src/index.ts +0 -2
  15. package/src/version.ts +1 -1
  16. package/dist/blockFoundation/outputBlock.shader.d.ts +0 -13
  17. package/dist/blockFoundation/outputBlock.shader.d.ts.map +0 -1
  18. package/dist/blockFoundation/outputBlock.shader.js +0 -31
  19. package/dist/blockFoundation/outputBlock.shader.js.map +0 -1
  20. package/dist/blockRegistration/IBlockRegistration.d.ts +0 -36
  21. package/dist/blockRegistration/IBlockRegistration.d.ts.map +0 -1
  22. package/dist/blockRegistration/IBlockRegistration.js +0 -2
  23. package/dist/blockRegistration/IBlockRegistration.js.map +0 -1
  24. package/dist/blockRegistration/blockSerializers.d.ts +0 -13
  25. package/dist/blockRegistration/blockSerializers.d.ts.map +0 -1
  26. package/dist/blockRegistration/blockSerializers.js +0 -35
  27. package/dist/blockRegistration/blockSerializers.js.map +0 -1
  28. package/dist/blockRegistration/builtInBlockRegistrations.d.ts +0 -13
  29. package/dist/blockRegistration/builtInBlockRegistrations.d.ts.map +0 -1
  30. package/dist/blockRegistration/builtInBlockRegistrations.js +0 -266
  31. package/dist/blockRegistration/builtInBlockRegistrations.js.map +0 -1
  32. package/dist/blockRegistration/index.d.ts +0 -3
  33. package/dist/blockRegistration/index.d.ts.map +0 -1
  34. package/dist/blockRegistration/index.js +0 -3
  35. package/dist/blockRegistration/index.js.map +0 -1
  36. package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.d.ts +0 -56
  37. package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.d.ts.map +0 -1
  38. package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.js +0 -66
  39. package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.js.map +0 -1
  40. package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.shader.d.ts +0 -13
  41. package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.shader.d.ts.map +0 -1
  42. package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.shader.js +0 -36
  43. package/dist/blocks/babylon/demo/effects/blackAndWhiteBlock.shader.js.map +0 -1
  44. package/dist/blocks/babylon/demo/effects/blurBlock.d.ts +0 -56
  45. package/dist/blocks/babylon/demo/effects/blurBlock.d.ts.map +0 -1
  46. package/dist/blocks/babylon/demo/effects/blurBlock.deserializer.d.ts +0 -29
  47. package/dist/blocks/babylon/demo/effects/blurBlock.deserializer.d.ts.map +0 -1
  48. package/dist/blocks/babylon/demo/effects/blurBlock.deserializer.js +0 -16
  49. package/dist/blocks/babylon/demo/effects/blurBlock.deserializer.js.map +0 -1
  50. package/dist/blocks/babylon/demo/effects/blurBlock.js +0 -100
  51. package/dist/blocks/babylon/demo/effects/blurBlock.js.map +0 -1
  52. package/dist/blocks/babylon/demo/effects/blurBlock.serializer.d.ts +0 -8
  53. package/dist/blocks/babylon/demo/effects/blurBlock.serializer.d.ts.map +0 -1
  54. package/dist/blocks/babylon/demo/effects/blurBlock.serializer.js +0 -28
  55. package/dist/blocks/babylon/demo/effects/blurBlock.serializer.js.map +0 -1
  56. package/dist/blocks/babylon/demo/effects/compositionBlock.d.ts +0 -118
  57. package/dist/blocks/babylon/demo/effects/compositionBlock.d.ts.map +0 -1
  58. package/dist/blocks/babylon/demo/effects/compositionBlock.deserializer.d.ts +0 -25
  59. package/dist/blocks/babylon/demo/effects/compositionBlock.deserializer.d.ts.map +0 -1
  60. package/dist/blocks/babylon/demo/effects/compositionBlock.deserializer.js +0 -15
  61. package/dist/blocks/babylon/demo/effects/compositionBlock.deserializer.js.map +0 -1
  62. package/dist/blocks/babylon/demo/effects/compositionBlock.js +0 -219
  63. package/dist/blocks/babylon/demo/effects/compositionBlock.js.map +0 -1
  64. package/dist/blocks/babylon/demo/effects/compositionBlock.serializer.d.ts +0 -6
  65. package/dist/blocks/babylon/demo/effects/compositionBlock.serializer.d.ts.map +0 -1
  66. package/dist/blocks/babylon/demo/effects/compositionBlock.serializer.js +0 -25
  67. package/dist/blocks/babylon/demo/effects/compositionBlock.serializer.js.map +0 -1
  68. package/dist/blocks/babylon/demo/effects/contrastBlock.d.ts +0 -63
  69. package/dist/blocks/babylon/demo/effects/contrastBlock.d.ts.map +0 -1
  70. package/dist/blocks/babylon/demo/effects/contrastBlock.js +0 -122
  71. package/dist/blocks/babylon/demo/effects/contrastBlock.js.map +0 -1
  72. package/dist/blocks/babylon/demo/effects/desaturateBlock.d.ts +0 -63
  73. package/dist/blocks/babylon/demo/effects/desaturateBlock.d.ts.map +0 -1
  74. package/dist/blocks/babylon/demo/effects/desaturateBlock.js +0 -107
  75. package/dist/blocks/babylon/demo/effects/desaturateBlock.js.map +0 -1
  76. package/dist/blocks/babylon/demo/effects/directionalBlurBlock.d.ts +0 -79
  77. package/dist/blocks/babylon/demo/effects/directionalBlurBlock.d.ts.map +0 -1
  78. package/dist/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.d.ts +0 -33
  79. package/dist/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.d.ts.map +0 -1
  80. package/dist/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.js +0 -17
  81. package/dist/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.js.map +0 -1
  82. package/dist/blocks/babylon/demo/effects/directionalBlurBlock.js +0 -171
  83. package/dist/blocks/babylon/demo/effects/directionalBlurBlock.js.map +0 -1
  84. package/dist/blocks/babylon/demo/effects/directionalBlurBlock.serializer.d.ts +0 -6
  85. package/dist/blocks/babylon/demo/effects/directionalBlurBlock.serializer.d.ts.map +0 -1
  86. package/dist/blocks/babylon/demo/effects/directionalBlurBlock.serializer.js +0 -27
  87. package/dist/blocks/babylon/demo/effects/directionalBlurBlock.serializer.js.map +0 -1
  88. package/dist/blocks/babylon/demo/effects/exposureBlock.d.ts +0 -63
  89. package/dist/blocks/babylon/demo/effects/exposureBlock.d.ts.map +0 -1
  90. package/dist/blocks/babylon/demo/effects/exposureBlock.js +0 -95
  91. package/dist/blocks/babylon/demo/effects/exposureBlock.js.map +0 -1
  92. package/dist/blocks/babylon/demo/effects/greenScreenBlock.d.ts +0 -75
  93. package/dist/blocks/babylon/demo/effects/greenScreenBlock.d.ts.map +0 -1
  94. package/dist/blocks/babylon/demo/effects/greenScreenBlock.js +0 -121
  95. package/dist/blocks/babylon/demo/effects/greenScreenBlock.js.map +0 -1
  96. package/dist/blocks/babylon/demo/effects/index.d.ts +0 -15
  97. package/dist/blocks/babylon/demo/effects/index.d.ts.map +0 -1
  98. package/dist/blocks/babylon/demo/effects/index.js +0 -15
  99. package/dist/blocks/babylon/demo/effects/index.js.map +0 -1
  100. package/dist/blocks/babylon/demo/effects/kaleidoscopeBlock.d.ts +0 -63
  101. package/dist/blocks/babylon/demo/effects/kaleidoscopeBlock.d.ts.map +0 -1
  102. package/dist/blocks/babylon/demo/effects/kaleidoscopeBlock.js +0 -159
  103. package/dist/blocks/babylon/demo/effects/kaleidoscopeBlock.js.map +0 -1
  104. package/dist/blocks/babylon/demo/effects/maskBlock.d.ts +0 -62
  105. package/dist/blocks/babylon/demo/effects/maskBlock.d.ts.map +0 -1
  106. package/dist/blocks/babylon/demo/effects/maskBlock.js +0 -75
  107. package/dist/blocks/babylon/demo/effects/maskBlock.js.map +0 -1
  108. package/dist/blocks/babylon/demo/effects/maskBlock.shader.d.ts +0 -14
  109. package/dist/blocks/babylon/demo/effects/maskBlock.shader.d.ts.map +0 -1
  110. package/dist/blocks/babylon/demo/effects/maskBlock.shader.js +0 -37
  111. package/dist/blocks/babylon/demo/effects/maskBlock.shader.js.map +0 -1
  112. package/dist/blocks/babylon/demo/effects/pixelateBlock.d.ts +0 -62
  113. package/dist/blocks/babylon/demo/effects/pixelateBlock.d.ts.map +0 -1
  114. package/dist/blocks/babylon/demo/effects/pixelateBlock.js +0 -77
  115. package/dist/blocks/babylon/demo/effects/pixelateBlock.js.map +0 -1
  116. package/dist/blocks/babylon/demo/effects/pixelateBlock.shader.d.ts +0 -15
  117. package/dist/blocks/babylon/demo/effects/pixelateBlock.shader.d.ts.map +0 -1
  118. package/dist/blocks/babylon/demo/effects/pixelateBlock.shader.js +0 -44
  119. package/dist/blocks/babylon/demo/effects/pixelateBlock.shader.js.map +0 -1
  120. package/dist/blocks/babylon/demo/effects/posterizeBlock.d.ts +0 -63
  121. package/dist/blocks/babylon/demo/effects/posterizeBlock.d.ts.map +0 -1
  122. package/dist/blocks/babylon/demo/effects/posterizeBlock.js +0 -108
  123. package/dist/blocks/babylon/demo/effects/posterizeBlock.js.map +0 -1
  124. package/dist/blocks/babylon/demo/effects/spritesheetBlock.d.ts +0 -81
  125. package/dist/blocks/babylon/demo/effects/spritesheetBlock.d.ts.map +0 -1
  126. package/dist/blocks/babylon/demo/effects/spritesheetBlock.js +0 -103
  127. package/dist/blocks/babylon/demo/effects/spritesheetBlock.js.map +0 -1
  128. package/dist/blocks/babylon/demo/effects/spritesheetBlock.shader.d.ts +0 -18
  129. package/dist/blocks/babylon/demo/effects/spritesheetBlock.shader.d.ts.map +0 -1
  130. package/dist/blocks/babylon/demo/effects/spritesheetBlock.shader.js +0 -57
  131. package/dist/blocks/babylon/demo/effects/spritesheetBlock.shader.js.map +0 -1
  132. package/dist/blocks/babylon/demo/effects/tintBlock.d.ts +0 -7
  133. package/dist/blocks/babylon/demo/effects/tintBlock.d.ts.map +0 -1
  134. package/dist/blocks/babylon/demo/effects/tintBlock.js +0 -51
  135. package/dist/blocks/babylon/demo/effects/tintBlock.js.map +0 -1
  136. package/dist/blocks/babylon/demo/transitions/index.d.ts +0 -2
  137. package/dist/blocks/babylon/demo/transitions/index.d.ts.map +0 -1
  138. package/dist/blocks/babylon/demo/transitions/index.js +0 -2
  139. package/dist/blocks/babylon/demo/transitions/index.js.map +0 -1
  140. package/dist/blocks/babylon/demo/transitions/wipeBlock.d.ts +0 -69
  141. package/dist/blocks/babylon/demo/transitions/wipeBlock.d.ts.map +0 -1
  142. package/dist/blocks/babylon/demo/transitions/wipeBlock.js +0 -110
  143. package/dist/blocks/babylon/demo/transitions/wipeBlock.js.map +0 -1
  144. package/dist/blocks/babylon/demo/utilities/index.d.ts +0 -2
  145. package/dist/blocks/babylon/demo/utilities/index.d.ts.map +0 -1
  146. package/dist/blocks/babylon/demo/utilities/index.js +0 -2
  147. package/dist/blocks/babylon/demo/utilities/index.js.map +0 -1
  148. package/dist/blocks/babylon/demo/utilities/premultiplyAlphaBlock.d.ts +0 -58
  149. package/dist/blocks/babylon/demo/utilities/premultiplyAlphaBlock.d.ts.map +0 -1
  150. package/dist/blocks/babylon/demo/utilities/premultiplyAlphaBlock.js +0 -87
  151. package/dist/blocks/babylon/demo/utilities/premultiplyAlphaBlock.js.map +0 -1
  152. package/dist/blocks/blockNamespaces.d.ts +0 -5
  153. package/dist/blocks/blockNamespaces.d.ts.map +0 -1
  154. package/dist/blocks/blockNamespaces.js +0 -5
  155. package/dist/blocks/blockNamespaces.js.map +0 -1
  156. package/dist/blocks/blockTypes.d.ts +0 -22
  157. package/dist/blocks/blockTypes.d.ts.map +0 -1
  158. package/dist/blocks/blockTypes.js +0 -22
  159. package/dist/blocks/blockTypes.js.map +0 -1
  160. package/dist/blocks/index.d.ts +0 -6
  161. package/dist/blocks/index.d.ts.map +0 -1
  162. package/dist/blocks/index.js +0 -6
  163. package/dist/blocks/index.js.map +0 -1
  164. package/src/blockFoundation/outputBlock.fragment.glsl +0 -5
  165. package/src/blockFoundation/outputBlock.shader.ts +0 -33
  166. package/src/blockRegistration/IBlockRegistration.ts +0 -45
  167. package/src/blockRegistration/blockSerializers.ts +0 -52
  168. package/src/blockRegistration/builtInBlockRegistrations.ts +0 -390
  169. package/src/blockRegistration/index.ts +0 -2
  170. package/src/blocks/babylon/demo/effects/blackAndWhiteBlock.fragment.glsl +0 -10
  171. package/src/blocks/babylon/demo/effects/blackAndWhiteBlock.shader.ts +0 -38
  172. package/src/blocks/babylon/demo/effects/blackAndWhiteBlock.ts +0 -80
  173. package/src/blocks/babylon/demo/effects/blurBlock.deserializer.ts +0 -38
  174. package/src/blocks/babylon/demo/effects/blurBlock.serializer.ts +0 -32
  175. package/src/blocks/babylon/demo/effects/blurBlock.ts +0 -119
  176. package/src/blocks/babylon/demo/effects/compositionBlock.deserializer.ts +0 -32
  177. package/src/blocks/babylon/demo/effects/compositionBlock.serializer.ts +0 -29
  178. package/src/blocks/babylon/demo/effects/compositionBlock.ts +0 -293
  179. package/src/blocks/babylon/demo/effects/contrastBlock.ts +0 -152
  180. package/src/blocks/babylon/demo/effects/desaturateBlock.ts +0 -137
  181. package/src/blocks/babylon/demo/effects/directionalBlurBlock.deserializer.ts +0 -47
  182. package/src/blocks/babylon/demo/effects/directionalBlurBlock.serializer.ts +0 -31
  183. package/src/blocks/babylon/demo/effects/directionalBlurBlock.ts +0 -193
  184. package/src/blocks/babylon/demo/effects/exposureBlock.ts +0 -120
  185. package/src/blocks/babylon/demo/effects/greenScreenBlock.ts +0 -152
  186. package/src/blocks/babylon/demo/effects/index.ts +0 -14
  187. package/src/blocks/babylon/demo/effects/kaleidoscopeBlock.ts +0 -186
  188. package/src/blocks/babylon/demo/effects/maskBlock.fragment.glsl +0 -10
  189. package/src/blocks/babylon/demo/effects/maskBlock.shader.ts +0 -39
  190. package/src/blocks/babylon/demo/effects/maskBlock.ts +0 -94
  191. package/src/blocks/babylon/demo/effects/pixelateBlock.fragment.glsl +0 -18
  192. package/src/blocks/babylon/demo/effects/pixelateBlock.shader.ts +0 -46
  193. package/src/blocks/babylon/demo/effects/pixelateBlock.ts +0 -101
  194. package/src/blocks/babylon/demo/effects/posterizeBlock.ts +0 -139
  195. package/src/blocks/babylon/demo/effects/spritesheetBlock.fragment.glsl +0 -26
  196. package/src/blocks/babylon/demo/effects/spritesheetBlock.shader.ts +0 -59
  197. package/src/blocks/babylon/demo/effects/spritesheetBlock.ts +0 -135
  198. package/src/blocks/babylon/demo/effects/tintBlock.ts +0 -52
  199. package/src/blocks/babylon/demo/transitions/index.ts +0 -1
  200. package/src/blocks/babylon/demo/transitions/wipeBlock.ts +0 -138
  201. package/src/blocks/babylon/demo/utilities/index.ts +0 -1
  202. package/src/blocks/babylon/demo/utilities/premultiplyAlphaBlock.ts +0 -106
  203. package/src/blocks/blockNamespaces.ts +0 -4
  204. package/src/blocks/blockTypes.ts +0 -21
  205. package/src/blocks/index.ts +0 -5
@@ -1,100 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { AggregateBlock } from "../../../../blockFoundation/aggregateBlock.js";
8
- import { editableInPropertyPage, PropertyTypeForEdition } from "../../../../editorUtils/editableInPropertyPage.js";
9
- import { SmartFilter } from "../../../../smartFilter.js";
10
- import { DirectionalBlurBlock } from "./directionalBlurBlock.js";
11
- import { blurBlockType } from "../../../blockTypes.js";
12
- import { babylonDemoEffectsNamespace } from "../../../blockNamespaces.js";
13
- const defaultBlurTextureRatioPerPass = 0.5;
14
- const defaultBlurSize = 2;
15
- /**
16
- * A block performing a blur on the input texture.
17
- *
18
- * It performs the blur in 4 consecutive passes, 2 verticals and 2 horizontals downsizing the texture as we go.
19
- */
20
- export class BlurBlock extends AggregateBlock {
21
- /**
22
- * Gets how much smaller we should make the texture between the 2 consecutive bi lateral passes.
23
- */
24
- get blurTextureRatioPerPass() {
25
- return this._blurTextureRatioPerPass;
26
- }
27
- /**
28
- * Sets how much smaller we should make the texture between the 2 consecutive bi lateral passes.
29
- */
30
- set blurTextureRatioPerPass(value) {
31
- this._blurTextureRatioPerPass = value;
32
- this._intermediateBlurV.blurTextureRatio = value;
33
- this._intermediateBlurH.blurTextureRatio = value;
34
- this._finalBlurV.blurTextureRatio = value * value;
35
- this._finalBlurH.blurTextureRatio = value * value;
36
- }
37
- /**
38
- * Gets how far the kernel might fetch the data from.
39
- */
40
- get blurSize() {
41
- return this._blurSize;
42
- }
43
- /**
44
- * Sets how far the kernel might fetch the data from.
45
- */
46
- set blurSize(value) {
47
- this._blurSize = value;
48
- this._intermediateBlurV.blurHorizontalWidth = value;
49
- this._intermediateBlurH.blurVerticalWidth = value;
50
- this._finalBlurV.blurHorizontalWidth = value;
51
- this._finalBlurH.blurVerticalWidth = value;
52
- }
53
- /**
54
- * Instantiates a new Block.
55
- * @param smartFilter - The smart filter this block belongs to
56
- * @param name - The friendly name of the block
57
- */
58
- constructor(smartFilter, name) {
59
- super(smartFilter, name);
60
- this._blurTextureRatioPerPass = defaultBlurTextureRatioPerPass;
61
- this._blurSize = defaultBlurSize;
62
- const internalFilter = new SmartFilter(name + "_BlurBlock_Aggregated");
63
- this._intermediateBlurV = new DirectionalBlurBlock(internalFilter, name + "IV");
64
- this._intermediateBlurH = new DirectionalBlurBlock(internalFilter, name + "IH");
65
- this._finalBlurV = new DirectionalBlurBlock(internalFilter, name + "V");
66
- this._finalBlurH = new DirectionalBlurBlock(internalFilter, name + "H");
67
- this._intermediateBlurV.output.connectTo(this._intermediateBlurH.input);
68
- this._intermediateBlurH.output.connectTo(this._finalBlurV.input);
69
- this._finalBlurV.output.connectTo(this._finalBlurH.input);
70
- this.input = this._registerSubfilterInput("input", [this._intermediateBlurV.input]);
71
- this.output = this._registerSubfilterOutput("output", this._finalBlurH.output);
72
- this.blurSize = defaultBlurSize;
73
- this.blurTextureRatioPerPass = defaultBlurTextureRatioPerPass;
74
- this._intermediateBlurV.blurVerticalWidth = 0;
75
- this._intermediateBlurH.blurHorizontalWidth = 0;
76
- this._finalBlurV.blurVerticalWidth = 0;
77
- this._finalBlurH.blurHorizontalWidth = 0;
78
- }
79
- }
80
- /**
81
- * The class name of the block.
82
- */
83
- BlurBlock.ClassName = blurBlockType;
84
- /**
85
- * The namespace of the block.
86
- */
87
- BlurBlock.Namespace = babylonDemoEffectsNamespace;
88
- __decorate([
89
- editableInPropertyPage("Pass Texture Ratio", PropertyTypeForEdition.Float, "PROPERTIES", {
90
- min: 0,
91
- max: 1,
92
- notifiers: { rebuild: true },
93
- })
94
- ], BlurBlock.prototype, "blurTextureRatioPerPass", null);
95
- __decorate([
96
- editableInPropertyPage("Size", PropertyTypeForEdition.Float, "PROPERTIES", {
97
- notifiers: { rebuild: true },
98
- })
99
- ], BlurBlock.prototype, "blurSize", null);
100
- //# sourceMappingURL=blurBlock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"blurBlock.js","sourceRoot":"","sources":["../../../../../src/blocks/babylon/demo/effects/blurBlock.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { IBlockSerializerV1 } from "../../../../serialization/v1/smartFilterSerialization.types";
2
- /**
3
- * The V1 serializer for a Blur Block.
4
- * Though it is an aggregate block, Blur creates and manages its own blocks
5
- * internally, so there's no need to worry about serializing them.
6
- */
7
- export declare const blurBlockSerializer: IBlockSerializerV1;
8
- //# sourceMappingURL=blurBlock.serializer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"blurBlock.serializer.d.ts","sourceRoot":"","sources":["../../../../../src/blocks/babylon/demo/effects/blurBlock.serializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6DAA6D,CAAC;AAMtG;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,kBAoBjC,CAAC"}
@@ -1,28 +0,0 @@
1
- import { blurBlockType } from "../../../blockTypes.js";
2
- import { babylonDemoEffectsNamespace } from "../../../blockNamespaces.js";
3
- /**
4
- * The V1 serializer for a Blur Block.
5
- * Though it is an aggregate block, Blur creates and manages its own blocks
6
- * internally, so there's no need to worry about serializing them.
7
- */
8
- export const blurBlockSerializer = {
9
- blockType: blurBlockType,
10
- serialize: (block) => {
11
- if (block.getClassName() !== blurBlockType) {
12
- throw new Error("Was asked to serialize an unrecognized block type");
13
- }
14
- const blurBlock = block;
15
- return {
16
- name: block.name,
17
- uniqueId: block.uniqueId,
18
- blockType: blurBlockType,
19
- namespace: babylonDemoEffectsNamespace,
20
- comments: block.comments,
21
- data: {
22
- blurTextureRatioPerPass: blurBlock.blurTextureRatioPerPass,
23
- blurSize: blurBlock.blurSize,
24
- },
25
- };
26
- },
27
- };
28
- //# sourceMappingURL=blurBlock.serializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"blurBlock.serializer.js","sourceRoot":"","sources":["../../../../../src/blocks/babylon/demo/effects/blurBlock.serializer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAuB;IACnD,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,CAAC,KAAgB,EAAE,EAAE;QAC5B,IAAI,KAAK,CAAC,YAAY,EAAE,KAAK,aAAa,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,SAAS,GAAG,KAAkB,CAAC;QACrC,OAAO;YACH,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,aAAa;YACxB,SAAS,EAAE,2BAA2B;YACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE;gBACF,uBAAuB,EAAE,SAAS,CAAC,uBAAuB;gBAC1D,QAAQ,EAAE,SAAS,CAAC,QAAQ;aAC/B;SACJ,CAAC;IACN,CAAC;CACJ,CAAC"}
@@ -1,118 +0,0 @@
1
- import type { Effect } from "@babylonjs/core/Materials/effect";
2
- import { type IDisableableBlock, DisableableShaderBlock } from "../../../../blockFoundation/disableableShaderBlock.js";
3
- import type { RuntimeData } from "../../../../connection/connectionPoint.js";
4
- import type { SmartFilter } from "../../../../smartFilter.js";
5
- import type { ShaderProgram } from "../../../../utils/shaderCodeUtils.js";
6
- import { DisableableShaderBinding } from "../../../../runtime/shaderRuntime.js";
7
- import { ConnectionPointType } from "../../../../connection/connectionPointType.js";
8
- /** Defines that alpha blending is disabled */
9
- export declare const ALPHA_DISABLE = 0;
10
- /** Defines that alpha blending is SRC ALPHA * SRC + DEST */
11
- export declare const ALPHA_ADD = 1;
12
- /** Defines that alpha blending is SRC ALPHA * SRC + (1 - SRC ALPHA) * DEST */
13
- export declare const ALPHA_COMBINE = 2;
14
- /** Defines that alpha blending is DEST - SRC * DEST */
15
- export declare const ALPHA_SUBTRACT = 3;
16
- /** Defines that alpha blending is SRC * DEST */
17
- export declare const ALPHA_MULTIPLY = 4;
18
- /**
19
- * The shader bindings for the Composition block.
20
- */
21
- export declare class CompositionShaderBinding extends DisableableShaderBinding {
22
- private readonly _backgroundTexture;
23
- private readonly _foregroundTexture;
24
- private readonly _foregroundTop;
25
- private readonly _foregroundLeft;
26
- private readonly _foregroundWidth;
27
- private readonly _foregroundHeight;
28
- private readonly _foregroundAlphaScale;
29
- private readonly _alphaMode;
30
- /**
31
- * Creates a new shader binding instance for the Composition block.
32
- * @param parentBlock - The parent block
33
- * @param backgroundTexture - the background texture
34
- * @param foregroundTexture - the foreground texture
35
- * @param foregroundTop - the top position of the foreground texture
36
- * @param foregroundLeft - the left position of the foreground texture
37
- * @param foregroundWidth - the width of the foreground texture
38
- * @param foregroundHeight - the height of the foreground texture
39
- * @param foregroundAlphaScale - the alpha scale of the foreground texture
40
- * @param alphaMode - the alpha mode to use
41
- */
42
- constructor(parentBlock: IDisableableBlock, backgroundTexture: RuntimeData<ConnectionPointType.Texture>, foregroundTexture: RuntimeData<ConnectionPointType.Texture>, foregroundTop: RuntimeData<ConnectionPointType.Float>, foregroundLeft: RuntimeData<ConnectionPointType.Float>, foregroundWidth: RuntimeData<ConnectionPointType.Float>, foregroundHeight: RuntimeData<ConnectionPointType.Float>, foregroundAlphaScale: RuntimeData<ConnectionPointType.Float>, alphaMode: number);
43
- /**
44
- * Binds all the required data to the shader when rendering.
45
- * @param effect - defines the effect to bind the data to
46
- * @param width - defines the width of the output
47
- * @param height - defines the height of the output
48
- */
49
- bind(effect: Effect, width: number, height: number): void;
50
- }
51
- /**
52
- * A simple compositing Block letting the filter "blend" 2 different layers.
53
- *
54
- * The alpha mode of the block can be set to one of the following:
55
- * - ALPHA_DISABLE: alpha blending is disabled
56
- * - ALPHA_ADD: alpha blending is SRC ALPHA * SRC + DEST
57
- * - ALPHA_COMBINE: alpha blending is SRC ALPHA * SRC + (1 - SRC ALPHA) * DEST
58
- * - ALPHA_SUBTRACT: alpha blending is DEST - SRC * DEST
59
- * - ALPHA_MULTIPLY: alpha blending is SRC * DEST
60
- */
61
- export declare class CompositionBlock extends DisableableShaderBlock {
62
- /**
63
- * The class name of the block.
64
- */
65
- static ClassName: string;
66
- /**
67
- * The namespace of the block.
68
- */
69
- static Namespace: string;
70
- /**
71
- * The background texture to composite on to.
72
- */
73
- readonly background: import("../../../../connection/connectionPoint.js").ConnectionPoint<ConnectionPointType.Texture>;
74
- /**
75
- * The foreground texture to composite in.
76
- */
77
- readonly foreground: import("../../../../connection/connectionPointWithDefault.js").ConnectionPointWithDefault<ConnectionPointType.Texture>;
78
- /**
79
- * Defines where the top of the texture to composite in should be displayed. (between 0 and 1).
80
- */
81
- readonly foregroundTop: import("../../../../connection/connectionPointWithDefault.js").ConnectionPointWithDefault<ConnectionPointType.Float>;
82
- /**
83
- * Defines where the left of the texture to composite in should be displayed. (between 0 and 1).
84
- */
85
- readonly foregroundLeft: import("../../../../connection/connectionPointWithDefault.js").ConnectionPointWithDefault<ConnectionPointType.Float>;
86
- /**
87
- * Defines the width of the texture in the composition.
88
- */
89
- readonly foregroundWidth: import("../../../../connection/connectionPointWithDefault.js").ConnectionPointWithDefault<ConnectionPointType.Float>;
90
- /**
91
- * Defines the height of the texture in the composition.
92
- */
93
- readonly foregroundHeight: import("../../../../connection/connectionPointWithDefault.js").ConnectionPointWithDefault<ConnectionPointType.Float>;
94
- /**
95
- * Defines a multiplier applied to the foreground's alpha channel.
96
- */
97
- readonly foregroundAlphaScale: import("../../../../connection/connectionPointWithDefault.js").ConnectionPointWithDefault<ConnectionPointType.Float>;
98
- /**
99
- * Defines blend mode of the composition.
100
- */
101
- alphaMode: number;
102
- /**
103
- * The shader program (vertex and fragment code) to use to render the block
104
- */
105
- static ShaderCode: ShaderProgram;
106
- /**
107
- * Instantiates a new Block.
108
- * @param smartFilter - The smart filter this block belongs to
109
- * @param name - The friendly name of the block
110
- */
111
- constructor(smartFilter: SmartFilter, name: string);
112
- /**
113
- * Get the class instance that binds all the required data to the shader (effect) when rendering.
114
- * @returns The class instance that binds the data to the effect
115
- */
116
- getShaderBinding(): DisableableShaderBinding;
117
- }
118
- //# sourceMappingURL=compositionBlock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compositionBlock.d.ts","sourceRoot":"","sources":["../../../../../src/blocks/babylon/demo/effects/compositionBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAE,KAAK,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AACvH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAKpF,8CAA8C;AAC9C,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,4DAA4D;AAC5D,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,8EAA8E;AAC9E,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,uDAAuD;AACvD,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,gDAAgD;AAChD,eAAO,MAAM,cAAc,IAAI,CAAC;AA0DhC;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,wBAAwB;IAClE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2C;IAC9E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2C;IAC9E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyC;IACxE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyC;IACzE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyC;IAC1E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyC;IAC3E,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAyC;IAC/E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC;;;;;;;;;;;OAWG;gBAEC,WAAW,EAAE,iBAAiB,EAC9B,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAC3D,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAC3D,aAAa,EAAE,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACrD,cAAc,EAAE,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACtD,eAAe,EAAE,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACvD,gBAAgB,EAAE,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACxD,oBAAoB,EAAE,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAC5D,SAAS,EAAE,MAAM;IAarB;;;;;OAKG;IACa,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAsB5E;AAED;;;;;;;;;GASG;AACH,qBAAa,gBAAiB,SAAQ,sBAAsB;IACxD;;OAEG;IACH,OAAuB,SAAS,SAAwB;IAExD;;OAEG;IACH,OAAuB,SAAS,SAA+B;IAE/D;;OAEG;IACH,SAAgB,UAAU,mGAAkE;IAE5F;;OAEG;IACH,SAAgB,UAAU,yHAIxB;IAEF;;OAEG;IACH,SAAgB,aAAa,uHAI3B;IAEF;;OAEG;IACH,SAAgB,cAAc,uHAI5B;IAEF;;OAEG;IACH,SAAgB,eAAe,uHAI7B;IAEF;;OAEG;IACH,SAAgB,gBAAgB,uHAI9B;IAEF;;OAEG;IACH,SAAgB,oBAAoB,uHAIlC;IAEF;;OAEG;IAWI,SAAS,EAAE,MAAM,CAAiB;IAEzC;;OAEG;IACH,OAAuB,UAAU,gBAAiB;IAElD;;;;OAIG;gBACS,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IAIlD;;;OAGG;IACI,gBAAgB,IAAI,wBAAwB;CAsBtD"}
@@ -1,25 +0,0 @@
1
- import type { ISerializedBlockV1 } from "../../../../serialization/index.js";
2
- import type { SmartFilter } from "../../../../smartFilter.js";
3
- import { CompositionBlock } from "./compositionBlock.js";
4
- /**
5
- * The definition of the extra data serialized for composition blocks.
6
- */
7
- export interface ISerializedCompositionBlockV1 extends ISerializedBlockV1 {
8
- /**
9
- * The extra data of the block.
10
- */
11
- data: {
12
- /**
13
- * The alpha mode of the composition.
14
- */
15
- alphaMode: number;
16
- };
17
- }
18
- /**
19
- * V1 Composition Deserializer.
20
- * @param smartFilter - The SmartFilter to deserialize the block into
21
- * @param serializedBlock - The serialized block data
22
- * @returns A deserialized CompositionBlock
23
- */
24
- export declare function compositionDeserializer(smartFilter: SmartFilter, serializedBlock: ISerializedCompositionBlockV1): CompositionBlock;
25
- //# sourceMappingURL=compositionBlock.deserializer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compositionBlock.deserializer.d.ts","sourceRoot":"","sources":["../../../../../src/blocks/babylon/demo/effects/compositionBlock.deserializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,kBAAkB;IACrE;;OAEG;IACH,IAAI,EAAE;QACF;;WAEG;QACH,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC;CACL;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,6BAA6B,oBAM/G"}
@@ -1,15 +0,0 @@
1
- import { CompositionBlock } from "./compositionBlock.js";
2
- /**
3
- * V1 Composition Deserializer.
4
- * @param smartFilter - The SmartFilter to deserialize the block into
5
- * @param serializedBlock - The serialized block data
6
- * @returns A deserialized CompositionBlock
7
- */
8
- export function compositionDeserializer(smartFilter, serializedBlock) {
9
- var _a;
10
- const block = new CompositionBlock(smartFilter, serializedBlock.name);
11
- // If data is missing, use the default value set by the block
12
- block.alphaMode = (_a = serializedBlock.data.alphaMode) !== null && _a !== void 0 ? _a : block.alphaMode;
13
- return block;
14
- }
15
- //# sourceMappingURL=compositionBlock.deserializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compositionBlock.deserializer.js","sourceRoot":"","sources":["../../../../../src/blocks/babylon/demo/effects/compositionBlock.deserializer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAiBzD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAwB,EAAE,eAA8C;;IAC5G,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAEtE,6DAA6D;IAC7D,KAAK,CAAC,SAAS,GAAG,MAAA,eAAe,CAAC,IAAI,CAAC,SAAS,mCAAI,KAAK,CAAC,SAAS,CAAC;IACpE,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -1,219 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { editableInPropertyPage, PropertyTypeForEdition } from "../../../../editorUtils/editableInPropertyPage.js";
8
- import { DisableableShaderBlock } from "../../../../blockFoundation/disableableShaderBlock.js";
9
- import { DisableableShaderBinding } from "../../../../runtime/shaderRuntime.js";
10
- import { createStrongRef } from "../../../../runtime/strongRef.js";
11
- import { ConnectionPointType } from "../../../../connection/connectionPointType.js";
12
- import { compositionBlockType } from "../../../blockTypes.js";
13
- import { babylonDemoEffectsNamespace } from "../../../blockNamespaces.js";
14
- /** Defines that alpha blending is disabled */
15
- export const ALPHA_DISABLE = 0;
16
- /** Defines that alpha blending is SRC ALPHA * SRC + DEST */
17
- export const ALPHA_ADD = 1;
18
- /** Defines that alpha blending is SRC ALPHA * SRC + (1 - SRC ALPHA) * DEST */
19
- export const ALPHA_COMBINE = 2;
20
- /** Defines that alpha blending is DEST - SRC * DEST */
21
- export const ALPHA_SUBTRACT = 3;
22
- /** Defines that alpha blending is SRC * DEST */
23
- export const ALPHA_MULTIPLY = 4;
24
- const shaderProgram = {
25
- fragment: {
26
- uniform: `
27
- uniform sampler2D _background_;
28
- uniform sampler2D _foreground_;
29
-
30
- uniform vec2 _scaleUV_;
31
- uniform vec2 _translateUV_;
32
- uniform int _alphaMode_;
33
- uniform float _foregroundAlphaScale_;
34
- `,
35
- mainFunctionName: "_composition_",
36
- mainInputTexture: "_background_",
37
- functions: [
38
- {
39
- name: "_composition_",
40
- code: `
41
- vec4 _composition_(vec2 vUV) {
42
- vec4 background = texture2D(_background_, vUV);
43
-
44
- vec2 transformedUV = vUV * (1.0 / _scaleUV_) + _translateUV_;
45
- if (transformedUV.x < 0.0 || transformedUV.x > 1.0 || transformedUV.y < 0.0 || transformedUV.y > 1.0) {
46
- return background;
47
- }
48
-
49
- vec4 foreground = texture2D(_foreground_, transformedUV);
50
- foreground.a *= _foregroundAlphaScale_;
51
-
52
- // SRC is foreground, DEST is background
53
- if (_alphaMode_ == 0) {
54
- return foreground;
55
- }
56
- else if (_alphaMode_ == 1) {
57
- return foreground.a * foreground + background;
58
- }
59
- else if (_alphaMode_ == 2) {
60
- return mix(background, foreground, foreground.a);
61
- }
62
- else if (_alphaMode_ == 3) {
63
- return background - foreground * background;
64
- }
65
- else if (_alphaMode_ == 4) {
66
- return foreground * background;
67
- }
68
-
69
- return background;
70
- }
71
- `,
72
- },
73
- ],
74
- },
75
- };
76
- /**
77
- * The shader bindings for the Composition block.
78
- */
79
- export class CompositionShaderBinding extends DisableableShaderBinding {
80
- /**
81
- * Creates a new shader binding instance for the Composition block.
82
- * @param parentBlock - The parent block
83
- * @param backgroundTexture - the background texture
84
- * @param foregroundTexture - the foreground texture
85
- * @param foregroundTop - the top position of the foreground texture
86
- * @param foregroundLeft - the left position of the foreground texture
87
- * @param foregroundWidth - the width of the foreground texture
88
- * @param foregroundHeight - the height of the foreground texture
89
- * @param foregroundAlphaScale - the alpha scale of the foreground texture
90
- * @param alphaMode - the alpha mode to use
91
- */
92
- constructor(parentBlock, backgroundTexture, foregroundTexture, foregroundTop, foregroundLeft, foregroundWidth, foregroundHeight, foregroundAlphaScale, alphaMode) {
93
- super(parentBlock);
94
- this._backgroundTexture = backgroundTexture;
95
- this._foregroundTexture = foregroundTexture;
96
- this._foregroundTop = foregroundTop;
97
- this._foregroundLeft = foregroundLeft;
98
- this._foregroundWidth = foregroundWidth;
99
- this._foregroundHeight = foregroundHeight;
100
- this._foregroundAlphaScale = foregroundAlphaScale;
101
- this._alphaMode = alphaMode;
102
- }
103
- /**
104
- * Binds all the required data to the shader when rendering.
105
- * @param effect - defines the effect to bind the data to
106
- * @param width - defines the width of the output
107
- * @param height - defines the height of the output
108
- */
109
- bind(effect, width, height) {
110
- super.bind(effect, width, height);
111
- const background = this._backgroundTexture.value;
112
- const foreground = this._foregroundTexture.value;
113
- const foregroundTop = this._foregroundTop.value;
114
- const foregroundLeft = this._foregroundLeft.value;
115
- const foregroundWidth = this._foregroundWidth.value;
116
- const foregroundHeight = this._foregroundHeight.value;
117
- const foregroundAlphaScale = this._foregroundAlphaScale.value;
118
- const alphaMode = this._alphaMode;
119
- effect.setInt(this.getRemappedName("alphaMode"), alphaMode);
120
- effect.setTexture(this.getRemappedName("background"), background);
121
- effect.setTexture(this.getRemappedName("foreground"), foreground);
122
- // NOTE: textures may always be undefined if connected to another shader block when the graph is optimized
123
- effect.setFloat2(this.getRemappedName("scaleUV"), foregroundWidth, foregroundHeight);
124
- effect.setFloat2(this.getRemappedName("translateUV"), -1 * foregroundLeft, foregroundTop);
125
- effect.setFloat(this.getRemappedName("foregroundAlphaScale"), foregroundAlphaScale);
126
- }
127
- }
128
- /**
129
- * A simple compositing Block letting the filter "blend" 2 different layers.
130
- *
131
- * The alpha mode of the block can be set to one of the following:
132
- * - ALPHA_DISABLE: alpha blending is disabled
133
- * - ALPHA_ADD: alpha blending is SRC ALPHA * SRC + DEST
134
- * - ALPHA_COMBINE: alpha blending is SRC ALPHA * SRC + (1 - SRC ALPHA) * DEST
135
- * - ALPHA_SUBTRACT: alpha blending is DEST - SRC * DEST
136
- * - ALPHA_MULTIPLY: alpha blending is SRC * DEST
137
- */
138
- export class CompositionBlock extends DisableableShaderBlock {
139
- /**
140
- * Instantiates a new Block.
141
- * @param smartFilter - The smart filter this block belongs to
142
- * @param name - The friendly name of the block
143
- */
144
- constructor(smartFilter, name) {
145
- super(smartFilter, name, true);
146
- /**
147
- * The background texture to composite on to.
148
- */
149
- this.background = this._registerInput("background", ConnectionPointType.Texture);
150
- /**
151
- * The foreground texture to composite in.
152
- */
153
- this.foreground = this._registerOptionalInput("foreground", ConnectionPointType.Texture, createStrongRef(null));
154
- /**
155
- * Defines where the top of the texture to composite in should be displayed. (between 0 and 1).
156
- */
157
- this.foregroundTop = this._registerOptionalInput("foregroundTop", ConnectionPointType.Float, createStrongRef(0.0));
158
- /**
159
- * Defines where the left of the texture to composite in should be displayed. (between 0 and 1).
160
- */
161
- this.foregroundLeft = this._registerOptionalInput("foregroundLeft", ConnectionPointType.Float, createStrongRef(0.0));
162
- /**
163
- * Defines the width of the texture in the composition.
164
- */
165
- this.foregroundWidth = this._registerOptionalInput("foregroundWidth", ConnectionPointType.Float, createStrongRef(1.0));
166
- /**
167
- * Defines the height of the texture in the composition.
168
- */
169
- this.foregroundHeight = this._registerOptionalInput("foregroundHeight", ConnectionPointType.Float, createStrongRef(1.0));
170
- /**
171
- * Defines a multiplier applied to the foreground's alpha channel.
172
- */
173
- this.foregroundAlphaScale = this._registerOptionalInput("foregroundAlphaScale", ConnectionPointType.Float, createStrongRef(1.0));
174
- /**
175
- * Defines blend mode of the composition.
176
- */
177
- this.alphaMode = ALPHA_COMBINE;
178
- }
179
- /**
180
- * Get the class instance that binds all the required data to the shader (effect) when rendering.
181
- * @returns The class instance that binds the data to the effect
182
- */
183
- getShaderBinding() {
184
- const background = this._confirmRuntimeDataSupplied(this.background);
185
- const foreground = this._confirmRuntimeDataSupplied(this.foreground);
186
- const foregroundWidth = this.foregroundWidth.runtimeData;
187
- const foregroundLeft = this.foregroundLeft.runtimeData;
188
- const foregroundHeight = this.foregroundHeight.runtimeData;
189
- const foregroundTop = this.foregroundTop.runtimeData;
190
- const foregroundAlphaScale = this.foregroundAlphaScale.runtimeData;
191
- const alphaMode = this.alphaMode;
192
- return new CompositionShaderBinding(this, background, foreground, foregroundTop, foregroundLeft, foregroundWidth, foregroundHeight, foregroundAlphaScale, alphaMode);
193
- }
194
- }
195
- /**
196
- * The class name of the block.
197
- */
198
- CompositionBlock.ClassName = compositionBlockType;
199
- /**
200
- * The namespace of the block.
201
- */
202
- CompositionBlock.Namespace = babylonDemoEffectsNamespace;
203
- /**
204
- * The shader program (vertex and fragment code) to use to render the block
205
- */
206
- CompositionBlock.ShaderCode = shaderProgram;
207
- __decorate([
208
- editableInPropertyPage("Alpha Mode", PropertyTypeForEdition.List, "PROPERTIES", {
209
- notifiers: { rebuild: true },
210
- options: [
211
- { label: "Disable", value: ALPHA_DISABLE },
212
- { label: "Add", value: ALPHA_ADD },
213
- { label: "Combine", value: ALPHA_COMBINE },
214
- { label: "Subtract", value: ALPHA_SUBTRACT },
215
- { label: "Multiply", value: ALPHA_MULTIPLY },
216
- ],
217
- })
218
- ], CompositionBlock.prototype, "alphaMode", void 0);
219
- //# sourceMappingURL=compositionBlock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compositionBlock.js","sourceRoot":"","sources":["../../../../../src/blocks/babylon/demo/effects/compositionBlock.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { IBlockSerializerV1 } from "../../../../serialization";
2
- /**
3
- * The V1 serializer for a Composition Block
4
- */
5
- export declare const compositionBlockSerializer: IBlockSerializerV1;
6
- //# sourceMappingURL=compositionBlock.serializer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compositionBlock.serializer.d.ts","sourceRoot":"","sources":["../../../../../src/blocks/babylon/demo/effects/compositionBlock.serializer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAKpE;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,kBAmBxC,CAAC"}
@@ -1,25 +0,0 @@
1
- import { compositionBlockType } from "../../../blockTypes.js";
2
- import { babylonDemoEffectsNamespace } from "../../../blockNamespaces.js";
3
- /**
4
- * The V1 serializer for a Composition Block
5
- */
6
- export const compositionBlockSerializer = {
7
- blockType: compositionBlockType,
8
- serialize: (block) => {
9
- if (block.getClassName() !== compositionBlockType) {
10
- throw new Error("Was asked to serialize an unrecognized block type");
11
- }
12
- const compositionBlock = block;
13
- return {
14
- name: block.name,
15
- uniqueId: block.uniqueId,
16
- blockType: compositionBlockType,
17
- namespace: babylonDemoEffectsNamespace,
18
- comments: block.comments,
19
- data: {
20
- alphaMode: compositionBlock.alphaMode,
21
- },
22
- };
23
- },
24
- };
25
- //# sourceMappingURL=compositionBlock.serializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compositionBlock.serializer.js","sourceRoot":"","sources":["../../../../../src/blocks/babylon/demo/effects/compositionBlock.serializer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAuB;IAC1D,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,CAAC,KAAgB,EAAE,EAAE;QAC5B,IAAI,KAAK,CAAC,YAAY,EAAE,KAAK,oBAAoB,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,gBAAgB,GAAG,KAAyB,CAAC;QACnD,OAAO;YACH,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,oBAAoB;YAC/B,SAAS,EAAE,2BAA2B;YACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE;gBACF,SAAS,EAAE,gBAAgB,CAAC,SAAS;aACxC;SACJ,CAAC;IACN,CAAC;CACJ,CAAC"}