fra.ktu.red-component 0.1.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.
Files changed (208) hide show
  1. package/LICENSE +44 -0
  2. package/README.md +1 -0
  3. package/dist/components/red_viewer.d.ts +5 -0
  4. package/dist/components/red_viewer.d.ts.map +1 -0
  5. package/dist/components/red_viewer.js +86 -0
  6. package/dist/components/red_viewer.js.map +1 -0
  7. package/dist/ffmpeg/ffmpeg-core.js +21 -0
  8. package/dist/ffmpeg/ffmpeg-core.wasm +0 -0
  9. package/dist/helpers/assets.d.ts +8 -0
  10. package/dist/helpers/assets.d.ts.map +1 -0
  11. package/dist/helpers/assets.js +63 -0
  12. package/dist/helpers/assets.js.map +1 -0
  13. package/dist/helpers/export.d.ts +8 -0
  14. package/dist/helpers/export.d.ts.map +1 -0
  15. package/dist/helpers/export.js +58 -0
  16. package/dist/helpers/export.js.map +1 -0
  17. package/dist/helpers/ffmpeg-core.js +21 -0
  18. package/dist/helpers/ffmpeg-core.wasm +0 -0
  19. package/dist/helpers/ids.d.ts +2 -0
  20. package/dist/helpers/ids.d.ts.map +1 -0
  21. package/dist/helpers/ids.js +11 -0
  22. package/dist/helpers/ids.js.map +1 -0
  23. package/dist/helpers/layers.d.ts +8 -0
  24. package/dist/helpers/layers.d.ts.map +1 -0
  25. package/dist/helpers/layers.js +32 -0
  26. package/dist/helpers/layers.js.map +1 -0
  27. package/dist/helpers/signals.d.ts +13 -0
  28. package/dist/helpers/signals.d.ts.map +1 -0
  29. package/dist/helpers/signals.js +61 -0
  30. package/dist/helpers/signals.js.map +1 -0
  31. package/dist/helpers/sparkle.d.ts +4 -0
  32. package/dist/helpers/sparkle.d.ts.map +1 -0
  33. package/dist/helpers/sparkle.js +4742 -0
  34. package/dist/helpers/sparkle.js.map +1 -0
  35. package/dist/index.d.ts +57 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +31 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/ktu/ui/core/data_store.d.ts +12 -0
  40. package/dist/ktu/ui/core/data_store.d.ts.map +1 -0
  41. package/dist/ktu/ui/core/data_store.js +71 -0
  42. package/dist/ktu/ui/core/data_store.js.map +1 -0
  43. package/dist/ktu/ui/core/event_dispatcher.d.ts +11 -0
  44. package/dist/ktu/ui/core/event_dispatcher.d.ts.map +1 -0
  45. package/dist/ktu/ui/core/event_dispatcher.js +37 -0
  46. package/dist/ktu/ui/core/event_dispatcher.js.map +1 -0
  47. package/dist/ktu/ui/core/ktu_component.d.ts +22 -0
  48. package/dist/ktu/ui/core/ktu_component.d.ts.map +1 -0
  49. package/dist/ktu/ui/core/ktu_component.js +74 -0
  50. package/dist/ktu/ui/core/ktu_component.js.map +1 -0
  51. package/dist/ktu/ui/core/translation_manager.d.ts +12 -0
  52. package/dist/ktu/ui/core/translation_manager.d.ts.map +1 -0
  53. package/dist/ktu/ui/core/translation_manager.js +34 -0
  54. package/dist/ktu/ui/core/translation_manager.js.map +1 -0
  55. package/dist/layers/base_layer.d.ts +18 -0
  56. package/dist/layers/base_layer.d.ts.map +1 -0
  57. package/dist/layers/base_layer.js +68 -0
  58. package/dist/layers/base_layer.js.map +1 -0
  59. package/dist/layers/display/background_layer.d.ts +15 -0
  60. package/dist/layers/display/background_layer.d.ts.map +1 -0
  61. package/dist/layers/display/background_layer.js +40 -0
  62. package/dist/layers/display/background_layer.js.map +1 -0
  63. package/dist/layers/display/display_layer.d.ts +24 -0
  64. package/dist/layers/display/display_layer.d.ts.map +1 -0
  65. package/dist/layers/display/display_layer.js +131 -0
  66. package/dist/layers/display/display_layer.js.map +1 -0
  67. package/dist/layers/display/video_layer.d.ts +36 -0
  68. package/dist/layers/display/video_layer.d.ts.map +1 -0
  69. package/dist/layers/display/video_layer.js +296 -0
  70. package/dist/layers/display/video_layer.js.map +1 -0
  71. package/dist/layers/ilayer.d.ts +21 -0
  72. package/dist/layers/ilayer.d.ts.map +1 -0
  73. package/dist/layers/ilayer.js +2 -0
  74. package/dist/layers/ilayer.js.map +1 -0
  75. package/dist/layers/shaders/anaglyph/anaglyph_shader.d.ts +16 -0
  76. package/dist/layers/shaders/anaglyph/anaglyph_shader.d.ts.map +1 -0
  77. package/dist/layers/shaders/anaglyph/anaglyph_shader.frag +36 -0
  78. package/dist/layers/shaders/anaglyph/anaglyph_shader.js +28 -0
  79. package/dist/layers/shaders/anaglyph/anaglyph_shader.js.map +1 -0
  80. package/dist/layers/shaders/blur/blur_shader.d.ts +17 -0
  81. package/dist/layers/shaders/blur/blur_shader.d.ts.map +1 -0
  82. package/dist/layers/shaders/blur/blur_shader.frag +47 -0
  83. package/dist/layers/shaders/blur/blur_shader.js +36 -0
  84. package/dist/layers/shaders/blur/blur_shader.js.map +1 -0
  85. package/dist/layers/shaders/bnw/bnw_shader.d.ts +11 -0
  86. package/dist/layers/shaders/bnw/bnw_shader.d.ts.map +1 -0
  87. package/dist/layers/shaders/bnw/bnw_shader.frag +13 -0
  88. package/dist/layers/shaders/bnw/bnw_shader.js +21 -0
  89. package/dist/layers/shaders/bnw/bnw_shader.js.map +1 -0
  90. package/dist/layers/shaders/chroma/chroma_shader.d.ts +18 -0
  91. package/dist/layers/shaders/chroma/chroma_shader.d.ts.map +1 -0
  92. package/dist/layers/shaders/chroma/chroma_shader.frag +32 -0
  93. package/dist/layers/shaders/chroma/chroma_shader.js +45 -0
  94. package/dist/layers/shaders/chroma/chroma_shader.js.map +1 -0
  95. package/dist/layers/shaders/crosses/crosses_shader.d.ts +20 -0
  96. package/dist/layers/shaders/crosses/crosses_shader.d.ts.map +1 -0
  97. package/dist/layers/shaders/crosses/crosses_shader.frag +78 -0
  98. package/dist/layers/shaders/crosses/crosses_shader.js +51 -0
  99. package/dist/layers/shaders/crosses/crosses_shader.js.map +1 -0
  100. package/dist/layers/shaders/defaultFilter.vert +27 -0
  101. package/dist/layers/shaders/hlines/hlines_shader.d.ts +17 -0
  102. package/dist/layers/shaders/hlines/hlines_shader.d.ts.map +1 -0
  103. package/dist/layers/shaders/hlines/hlines_shader.frag +43 -0
  104. package/dist/layers/shaders/hlines/hlines_shader.js +31 -0
  105. package/dist/layers/shaders/hlines/hlines_shader.js.map +1 -0
  106. package/dist/layers/shaders/hnoise/hnoise_shader.d.ts +19 -0
  107. package/dist/layers/shaders/hnoise/hnoise_shader.d.ts.map +1 -0
  108. package/dist/layers/shaders/hnoise/hnoise_shader.frag +68 -0
  109. package/dist/layers/shaders/hnoise/hnoise_shader.js +40 -0
  110. package/dist/layers/shaders/hnoise/hnoise_shader.js.map +1 -0
  111. package/dist/layers/shaders/hsb_blur/hsb_blur_shader.d.ts +19 -0
  112. package/dist/layers/shaders/hsb_blur/hsb_blur_shader.d.ts.map +1 -0
  113. package/dist/layers/shaders/hsb_blur/hsb_blur_shader.frag +73 -0
  114. package/dist/layers/shaders/hsb_blur/hsb_blur_shader.js +50 -0
  115. package/dist/layers/shaders/hsb_blur/hsb_blur_shader.js.map +1 -0
  116. package/dist/layers/shaders/light_split/light_split_shader.d.ts +20 -0
  117. package/dist/layers/shaders/light_split/light_split_shader.d.ts.map +1 -0
  118. package/dist/layers/shaders/light_split/light_split_shader.frag +54 -0
  119. package/dist/layers/shaders/light_split/light_split_shader.js +40 -0
  120. package/dist/layers/shaders/light_split/light_split_shader.js.map +1 -0
  121. package/dist/layers/shaders/montecarlo/montecarlo_shader.d.ts +17 -0
  122. package/dist/layers/shaders/montecarlo/montecarlo_shader.d.ts.map +1 -0
  123. package/dist/layers/shaders/montecarlo/montecarlo_shader.frag +31 -0
  124. package/dist/layers/shaders/montecarlo/montecarlo_shader.js +31 -0
  125. package/dist/layers/shaders/montecarlo/montecarlo_shader.js.map +1 -0
  126. package/dist/layers/shaders/negative/negative_shader.d.ts +11 -0
  127. package/dist/layers/shaders/negative/negative_shader.d.ts.map +1 -0
  128. package/dist/layers/shaders/negative/negative_shader.frag +13 -0
  129. package/dist/layers/shaders/negative/negative_shader.js +21 -0
  130. package/dist/layers/shaders/negative/negative_shader.js.map +1 -0
  131. package/dist/layers/shaders/pixelate/pixelate_shader.d.ts +16 -0
  132. package/dist/layers/shaders/pixelate/pixelate_shader.d.ts.map +1 -0
  133. package/dist/layers/shaders/pixelate/pixelate_shader.frag +50 -0
  134. package/dist/layers/shaders/pixelate/pixelate_shader.js +28 -0
  135. package/dist/layers/shaders/pixelate/pixelate_shader.js.map +1 -0
  136. package/dist/layers/shaders/posterize/posterize_shader.d.ts +16 -0
  137. package/dist/layers/shaders/posterize/posterize_shader.d.ts.map +1 -0
  138. package/dist/layers/shaders/posterize/posterize_shader.frag +24 -0
  139. package/dist/layers/shaders/posterize/posterize_shader.js +28 -0
  140. package/dist/layers/shaders/posterize/posterize_shader.js.map +1 -0
  141. package/dist/layers/shaders/recolour/recolour_shader.d.ts +22 -0
  142. package/dist/layers/shaders/recolour/recolour_shader.d.ts.map +1 -0
  143. package/dist/layers/shaders/recolour/recolour_shader.frag +68 -0
  144. package/dist/layers/shaders/recolour/recolour_shader.js +83 -0
  145. package/dist/layers/shaders/recolour/recolour_shader.js.map +1 -0
  146. package/dist/layers/shaders/scramble/scramble_shader.d.ts +16 -0
  147. package/dist/layers/shaders/scramble/scramble_shader.d.ts.map +1 -0
  148. package/dist/layers/shaders/scramble/scramble_shader.frag +45 -0
  149. package/dist/layers/shaders/scramble/scramble_shader.js +28 -0
  150. package/dist/layers/shaders/scramble/scramble_shader.js.map +1 -0
  151. package/dist/layers/shaders/shader_layer.d.ts +36 -0
  152. package/dist/layers/shaders/shader_layer.d.ts.map +1 -0
  153. package/dist/layers/shaders/shader_layer.js +100 -0
  154. package/dist/layers/shaders/shader_layer.js.map +1 -0
  155. package/dist/layers/shaders/vlines/vlines_shader.d.ts +17 -0
  156. package/dist/layers/shaders/vlines/vlines_shader.d.ts.map +1 -0
  157. package/dist/layers/shaders/vlines/vlines_shader.frag +43 -0
  158. package/dist/layers/shaders/vlines/vlines_shader.js +31 -0
  159. package/dist/layers/shaders/vlines/vlines_shader.js.map +1 -0
  160. package/dist/managers/export_manager.d.ts +2 -0
  161. package/dist/managers/export_manager.d.ts.map +1 -0
  162. package/dist/managers/export_manager.js +51 -0
  163. package/dist/managers/export_manager.js.map +1 -0
  164. package/dist/managers/layer_manager.d.ts +2 -0
  165. package/dist/managers/layer_manager.d.ts.map +1 -0
  166. package/dist/managers/layer_manager.js +62 -0
  167. package/dist/managers/layer_manager.js.map +1 -0
  168. package/dist/managers/modulator_manager.d.ts +2 -0
  169. package/dist/managers/modulator_manager.d.ts.map +1 -0
  170. package/dist/managers/modulator_manager.js +54 -0
  171. package/dist/managers/modulator_manager.js.map +1 -0
  172. package/dist/managers/shader_manager.d.ts +2 -0
  173. package/dist/managers/shader_manager.d.ts.map +1 -0
  174. package/dist/managers/shader_manager.js +106 -0
  175. package/dist/managers/shader_manager.js.map +1 -0
  176. package/dist/modulators/base_modulator.d.ts +20 -0
  177. package/dist/modulators/base_modulator.d.ts.map +1 -0
  178. package/dist/modulators/base_modulator.js +109 -0
  179. package/dist/modulators/base_modulator.js.map +1 -0
  180. package/dist/modulators/compressor_modulator.d.ts +17 -0
  181. package/dist/modulators/compressor_modulator.d.ts.map +1 -0
  182. package/dist/modulators/compressor_modulator.js +34 -0
  183. package/dist/modulators/compressor_modulator.js.map +1 -0
  184. package/dist/modulators/imodulator.d.ts +22 -0
  185. package/dist/modulators/imodulator.d.ts.map +1 -0
  186. package/dist/modulators/imodulator.js +2 -0
  187. package/dist/modulators/imodulator.js.map +1 -0
  188. package/dist/modulators/lfo_modulator.d.ts +13 -0
  189. package/dist/modulators/lfo_modulator.d.ts.map +1 -0
  190. package/dist/modulators/lfo_modulator.js +53 -0
  191. package/dist/modulators/lfo_modulator.js.map +1 -0
  192. package/dist/modulators/random_modulator.d.ts +12 -0
  193. package/dist/modulators/random_modulator.d.ts.map +1 -0
  194. package/dist/modulators/random_modulator.js +22 -0
  195. package/dist/modulators/random_modulator.js.map +1 -0
  196. package/dist/modulators/ring_modulator.d.ts +15 -0
  197. package/dist/modulators/ring_modulator.d.ts.map +1 -0
  198. package/dist/modulators/ring_modulator.js +39 -0
  199. package/dist/modulators/ring_modulator.js.map +1 -0
  200. package/dist/types/red_scene_state.d.ts +16 -0
  201. package/dist/types/red_scene_state.d.ts.map +1 -0
  202. package/dist/types/red_scene_state.js +2 -0
  203. package/dist/types/red_scene_state.js.map +1 -0
  204. package/dist/util.d.ts +2 -0
  205. package/dist/util.d.ts.map +1 -0
  206. package/dist/util.js +2 -0
  207. package/dist/util.js.map +1 -0
  208. package/package.json +39 -0
@@ -0,0 +1,16 @@
1
+ import type { UniformData } from "pixi.js";
2
+ import { ShaderLayer, type ShaderLayerState } from "../shader_layer.js";
3
+ export type PixelateShaderState = ShaderLayerState & {
4
+ pixelSize: number;
5
+ };
6
+ export declare class PixelateShader extends ShaderLayer {
7
+ _state: PixelateShaderState;
8
+ fragment: string;
9
+ static getDefaultState(sceneStateId: string): PixelateShaderState;
10
+ constructor(sceneStateId: string, state: PixelateShaderState, owner: string);
11
+ setupUniformValues(): {
12
+ [key: string]: UniformData;
13
+ };
14
+ updateUniforms(): void;
15
+ }
16
+ //# sourceMappingURL=pixelate_shader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pixelate_shader.d.ts","sourceRoot":"","sources":["../../../../src/layers/shaders/pixelate/pixelate_shader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGxE,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG;IACnD,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAa,cAAe,SAAQ,WAAW;IACrC,MAAM,EAAE,mBAAmB,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAY;IAE5B,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB;gBASrD,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM;IAK3E,kBAAkB,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE;IAMpD,cAAc,IAAI,IAAI;CAIvB"}
@@ -0,0 +1,50 @@
1
+ precision highp float;
2
+ in vec2 vTextureCoord;
3
+
4
+ uniform sampler2D uTexture;
5
+ uniform vec4 uInputSize;
6
+
7
+ uniform float uPixelSize;
8
+
9
+ uniform vec4 uDryWet;
10
+
11
+ float PHI = 1.61803398874989484820459; // Φ = Golden Ratio
12
+
13
+ float gold_noise(vec2 xy, float seed){
14
+ return fract(tan(distance(xy*PHI, xy)*seed)*xy.x);
15
+ }
16
+
17
+ vec2 mapCoord( vec2 coord )
18
+ {
19
+ coord *= uInputSize.xy;
20
+ coord += uInputSize.zw;
21
+
22
+ return coord;
23
+ }
24
+
25
+ vec2 unmapCoord( vec2 coord )
26
+ {
27
+ coord -= uInputSize.zw;
28
+ coord /= uInputSize.xy;
29
+
30
+ return coord;
31
+ }
32
+
33
+ vec2 pixelate(vec2 coord, float uPixelSize)
34
+ {
35
+ return (floor( coord / vec2(uPixelSize,uPixelSize) ) * vec2(uPixelSize,uPixelSize)) + (uPixelSize / 2.0);
36
+ }
37
+
38
+ void main(){
39
+ vec4 oTex = texture(uTexture, vTextureCoord);
40
+
41
+ vec2 pixelCoord = mapCoord(vTextureCoord);
42
+ vec2 newCoord = pixelate(pixelCoord, uPixelSize);
43
+
44
+ vec2 coord = vTextureCoord;
45
+ coord = unmapCoord(newCoord);
46
+
47
+ vec4 tex = texture(uTexture, coord);
48
+
49
+ gl_FragColor = (1.0-uDryWet)*oTex +uDryWet * tex;
50
+ }
@@ -0,0 +1,28 @@
1
+ import { getCount } from "../../../helpers/ids.js";
2
+ import { ShaderLayer } from "../shader_layer.js";
3
+ import fragment from "./pixelate_shader.frag?raw";
4
+ export class PixelateShader extends ShaderLayer {
5
+ fragment = fragment;
6
+ static getDefaultState(sceneStateId) {
7
+ return {
8
+ ...ShaderLayer.getDefaultState(sceneStateId),
9
+ type: "pixelate",
10
+ name: "pixelate_" + getCount(sceneStateId),
11
+ pixelSize: 10,
12
+ };
13
+ }
14
+ constructor(sceneStateId, state, owner) {
15
+ super(sceneStateId, state, owner);
16
+ console.trace();
17
+ }
18
+ setupUniformValues() {
19
+ return {
20
+ uPixelSize: { value: this.getFieldValue("pixelSize"), type: "f32" },
21
+ };
22
+ }
23
+ updateUniforms() {
24
+ super.updateUniforms();
25
+ this.uniforms.uniforms.uPixelSize = this.getFieldValue("pixelSize");
26
+ }
27
+ }
28
+ //# sourceMappingURL=pixelate_shader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pixelate_shader.js","sourceRoot":"","sources":["../../../../src/layers/shaders/pixelate/pixelate_shader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAyB,MAAM,oBAAoB,CAAC;AACxE,OAAO,QAAQ,MAAM,4BAA4B,CAAC;AAMlD,MAAM,OAAO,cAAe,SAAQ,WAAW;IAE7C,QAAQ,GAAW,QAAQ,CAAC;IAE5B,MAAM,CAAC,eAAe,CAAC,YAAoB;QACzC,OAAO;YACL,GAAG,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC;YAC5C,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC;YAC1C,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;IAED,YAAY,YAAoB,EAAE,KAA0B,EAAE,KAAa;QACzE,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,kBAAkB;QAChB,OAAO;YACL,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;SACpE,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import type { UniformData } from "pixi.js";
2
+ import { ShaderLayer, type ShaderLayerState } from "../shader_layer.js";
3
+ export type PosterizeShaderState = ShaderLayerState & {
4
+ levels: number;
5
+ };
6
+ export declare class PosterizeShader extends ShaderLayer {
7
+ _state: PosterizeShaderState;
8
+ fragment: string;
9
+ static getDefaultState(sceneStateId: string): PosterizeShaderState;
10
+ constructor(sceneStateId: string, state: PosterizeShaderState, owner: string);
11
+ setupUniformValues(): {
12
+ [key: string]: UniformData;
13
+ };
14
+ updateUniforms(): void;
15
+ }
16
+ //# sourceMappingURL=posterize_shader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posterize_shader.d.ts","sourceRoot":"","sources":["../../../../src/layers/shaders/posterize/posterize_shader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGxE,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IACpD,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,eAAgB,SAAQ,WAAW;IACtC,MAAM,EAAE,oBAAoB,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAY;IAE5B,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB;gBAUhE,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,MAAM;IAMf,kBAAkB,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE;IAMpD,cAAc,IAAI,IAAI;CAIvB"}
@@ -0,0 +1,24 @@
1
+ in vec2 vTextureCoord;
2
+
3
+ uniform sampler2D uTexture;
4
+ uniform float uLevels;
5
+ uniform vec4 uDryWet;
6
+
7
+ float roundValue(float x) {
8
+ return x - floor(x) > 0.5 ? ceil(x) : floor(x);
9
+ }
10
+
11
+ void main() {
12
+ vec4 oTex = texture(uTexture, vTextureCoord);
13
+
14
+ // Avoid division by zero and preserve a minimum of 2 discrete levels.
15
+ float levels = max(uLevels, 2.0);
16
+ float scale = levels - 1.0;
17
+
18
+ vec4 tex = oTex;
19
+ tex.r = roundValue(tex.r * scale) / scale;
20
+ tex.g = roundValue(tex.g * scale) / scale;
21
+ tex.b = roundValue(tex.b * scale) / scale;
22
+
23
+ gl_FragColor = (1.0 - uDryWet) * oTex + uDryWet * tex;
24
+ }
@@ -0,0 +1,28 @@
1
+ import { getCount } from "../../../helpers/ids.js";
2
+ import { ShaderLayer } from "../shader_layer.js";
3
+ import fragment from "./posterize_shader.frag?raw";
4
+ export class PosterizeShader extends ShaderLayer {
5
+ fragment = fragment;
6
+ static getDefaultState(sceneStateId) {
7
+ return {
8
+ ...ShaderLayer.getDefaultState(sceneStateId),
9
+ type: "posterize",
10
+ name: "posterize_" + getCount(sceneStateId),
11
+ levels: 3,
12
+ };
13
+ }
14
+ constructor(sceneStateId, state, owner) {
15
+ super(sceneStateId, state, owner);
16
+ console.trace();
17
+ }
18
+ setupUniformValues() {
19
+ return {
20
+ uLevels: { value: this.getFieldValue("levels"), type: "f32" },
21
+ };
22
+ }
23
+ updateUniforms() {
24
+ super.updateUniforms();
25
+ this.uniforms.uniforms.uLevels = this.getFieldValue("levels");
26
+ }
27
+ }
28
+ //# sourceMappingURL=posterize_shader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posterize_shader.js","sourceRoot":"","sources":["../../../../src/layers/shaders/posterize/posterize_shader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAyB,MAAM,oBAAoB,CAAC;AACxE,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AAMnD,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAE9C,QAAQ,GAAW,QAAQ,CAAC;IAE5B,MAAM,CAAC,eAAe,CAAC,YAAoB;QACzC,OAAO;YACL,GAAG,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC;YAC5C,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;YAC3C,MAAM,EAAE,CAAC;SACV,CAAC;IACJ,CAAC;IAED,YACE,YAAoB,EACpB,KAA2B,EAC3B,KAAa;QAEb,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,kBAAkB;QAChB,OAAO;YACL,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;SAC9D,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ import { type UniformData } from "pixi.js";
2
+ import { ShaderLayer, type ShaderLayerState } from "../shader_layer.js";
3
+ export type RecolourShaderState = ShaderLayerState & {
4
+ fromColor: string;
5
+ toColor: string;
6
+ threshold: number;
7
+ not: boolean;
8
+ onlyHue: boolean;
9
+ onlySaturation: boolean;
10
+ onlyLightness: boolean;
11
+ };
12
+ export declare class RecolourShader extends ShaderLayer {
13
+ _state: RecolourShaderState;
14
+ fragment: string;
15
+ static getDefaultState(sceneStateId: string): RecolourShaderState;
16
+ constructor(sceneStateId: string, state: RecolourShaderState, owner: string);
17
+ setupUniformValues(): {
18
+ [key: string]: UniformData;
19
+ };
20
+ updateUniforms(): void;
21
+ }
22
+ //# sourceMappingURL=recolour_shader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recolour_shader.d.ts","sourceRoot":"","sources":["../../../../src/layers/shaders/recolour/recolour_shader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAIxE,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,qBAAa,cAAe,SAAQ,WAAW;IACrC,MAAM,EAAE,mBAAmB,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAY;IAE5B,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB;gBAerD,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM;IAK3E,kBAAkB,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE;IAgCpD,cAAc,IAAI,IAAI;CA8BvB"}
@@ -0,0 +1,68 @@
1
+ in vec2 vTextureCoord;
2
+
3
+ uniform sampler2D uTexture;
4
+ uniform vec4 uFromColor;
5
+ uniform vec4 uToColor;
6
+
7
+ uniform float uThreshold;
8
+ uniform int uNot;
9
+ uniform int uOnlyHue;
10
+ uniform int uOnlySaturation;
11
+ uniform int uOnlyLightness;
12
+ uniform vec4 uDryWet;
13
+
14
+ vec3 rgb2hsv(vec3 c)
15
+ {
16
+ vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
17
+ vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
18
+ vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
19
+
20
+ float d = q.x - min(q.w, q.y);
21
+ float e = 1.0e-10;
22
+ return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
23
+ }
24
+
25
+ vec3 hsv2rgb(vec3 c)
26
+ {
27
+ vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
28
+ vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
29
+ return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
30
+ }
31
+
32
+ void main(){
33
+ vec4 oTex = texture2D(uTexture, vTextureCoord);
34
+
35
+ vec4 tex = vec4(oTex.r, oTex.g, oTex.b, oTex.a);
36
+
37
+ vec4 color = vec4(uToColor.r, uToColor.g, uToColor.b, oTex.a);
38
+
39
+ if(uOnlyHue == 1 || uOnlySaturation == 1 || uOnlyLightness == 1){
40
+ vec3 hsvFrom = rgb2hsv(oTex.rgb);
41
+ vec3 hsvTo = rgb2hsv(vec3(uToColor.rgb));
42
+
43
+ vec3 hsv = hsvFrom;
44
+ if(uOnlyHue == 1){
45
+ hsv.x = hsvTo.x;
46
+ }
47
+ if(uOnlySaturation == 1){
48
+ hsv.y = hsvTo.y;
49
+ }
50
+ if(uOnlyLightness == 1){
51
+ hsv.z = hsvTo.z;
52
+ }
53
+ vec3 rgb = hsv2rgb(vec3(hsv.x, hsv.y, hsv.z));
54
+ color = vec4(rgb.r,rgb.g,rgb.b,oTex.a);
55
+ }
56
+ if(oTex.r >= uFromColor.r - uThreshold && oTex.r <= uFromColor.r + uThreshold &&
57
+ oTex.g >= uFromColor.g - uThreshold && oTex.g <= uFromColor.g + uThreshold &&
58
+ oTex.b >= uFromColor.b - uThreshold && oTex.b <= uFromColor.b + uThreshold){
59
+ if(uNot == 0){
60
+ tex = color;
61
+ }
62
+ }else if(uNot == 1){
63
+ tex = color;
64
+ }
65
+
66
+ //DRY/WET
67
+ gl_FragColor = ((1.0-uDryWet)*oTex) + (uDryWet * tex);
68
+ }
@@ -0,0 +1,83 @@
1
+ import { Color } from "pixi.js";
2
+ import { getCount } from "../../../helpers/ids.js";
3
+ import { ShaderLayer } from "../shader_layer.js";
4
+ import fragment from "./recolour_shader.frag?raw";
5
+ import { getFunColor } from "../../../helpers/sparkle.js";
6
+ export class RecolourShader extends ShaderLayer {
7
+ fragment = fragment;
8
+ static getDefaultState(sceneStateId) {
9
+ return {
10
+ ...ShaderLayer.getDefaultState(sceneStateId),
11
+ type: "recolour",
12
+ name: "recolour_" + getCount(sceneStateId),
13
+ fromColor: "#000000",
14
+ toColor: getFunColor(),
15
+ threshold: 0.1,
16
+ not: false,
17
+ onlyHue: false,
18
+ onlySaturation: false,
19
+ onlyLightness: false,
20
+ };
21
+ }
22
+ constructor(sceneStateId, state, owner) {
23
+ super(sceneStateId, state, owner);
24
+ console.trace();
25
+ }
26
+ setupUniformValues() {
27
+ const fromColor = new Color(this.getFieldValue("fromColor"));
28
+ const toColor = new Color(this.getFieldValue("toColor"));
29
+ return {
30
+ uFromColor: {
31
+ value: [
32
+ fromColor.red,
33
+ fromColor.green,
34
+ fromColor.blue,
35
+ fromColor.alpha,
36
+ ],
37
+ type: "vec4<f32>",
38
+ },
39
+ uToColor: {
40
+ value: [toColor.red, toColor.green, toColor.blue, toColor.alpha],
41
+ type: "vec4<f32>",
42
+ },
43
+ uThreshold: { value: this.getFieldValue("threshold"), type: "f32" },
44
+ uNot: { value: this.getFieldBoolean("not") ? 1 : 0, type: "i32" },
45
+ uOnlyHue: { value: this.getFieldBoolean("onlyHue") ? 1 : 0, type: "i32" },
46
+ uOnlySaturation: {
47
+ value: this.getFieldBoolean("onlySaturation") ? 1 : 0,
48
+ type: "i32",
49
+ },
50
+ uOnlyLightness: {
51
+ value: this.getFieldBoolean("onlyLightness") ? 1 : 0,
52
+ type: "i32",
53
+ },
54
+ };
55
+ }
56
+ updateUniforms() {
57
+ super.updateUniforms();
58
+ const fromColor = new Color(this.getFieldValue("fromColor"));
59
+ const toColor = new Color(this.getFieldValue("toColor"));
60
+ this.uniforms.uniforms.uFromColor = [
61
+ fromColor.red,
62
+ fromColor.green,
63
+ fromColor.blue,
64
+ fromColor.alpha,
65
+ ];
66
+ this.uniforms.uniforms.uToColor = [
67
+ toColor.red,
68
+ toColor.green,
69
+ toColor.blue,
70
+ toColor.alpha,
71
+ ];
72
+ this.uniforms.uniforms.uThreshold = this.getFieldValue("threshold");
73
+ this.uniforms.uniforms.uNot = this.getFieldBoolean("not") ? 1 : 0;
74
+ this.uniforms.uniforms.uOnlyHue = this.getFieldBoolean("onlyHue") ? 1 : 0;
75
+ this.uniforms.uniforms.uOnlySaturation = this.getFieldBoolean("onlySaturation")
76
+ ? 1
77
+ : 0;
78
+ this.uniforms.uniforms.uOnlyLightness = this.getFieldBoolean("onlyLightness")
79
+ ? 1
80
+ : 0;
81
+ }
82
+ }
83
+ //# sourceMappingURL=recolour_shader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recolour_shader.js","sourceRoot":"","sources":["../../../../src/layers/shaders/recolour/recolour_shader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { UniformData } from "pixi.js";
2
+ import { ShaderLayer, type ShaderLayerState } from "../shader_layer.js";
3
+ export type ScrambleShaderState = ShaderLayerState & {
4
+ range: number;
5
+ };
6
+ export declare class ScrambleShader extends ShaderLayer {
7
+ _state: ScrambleShaderState;
8
+ fragment: string;
9
+ static getDefaultState(sceneStateId: string): ScrambleShaderState;
10
+ constructor(sceneStateId: string, state: ScrambleShaderState, owner: string);
11
+ setupUniformValues(): {
12
+ [key: string]: UniformData;
13
+ };
14
+ updateUniforms(): void;
15
+ }
16
+ //# sourceMappingURL=scramble_shader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scramble_shader.d.ts","sourceRoot":"","sources":["../../../../src/layers/shaders/scramble/scramble_shader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGxE,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG;IACnD,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,cAAe,SAAQ,WAAW;IACrC,MAAM,EAAE,mBAAmB,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAY;IAE5B,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB;gBASrD,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM;IAK3E,kBAAkB,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE;IAMpD,cAAc,IAAI,IAAI;CAIvB"}
@@ -0,0 +1,45 @@
1
+ precision highp float;
2
+ in vec2 vTextureCoord;
3
+
4
+ uniform sampler2D uTexture;
5
+ uniform vec4 uInputSize;
6
+
7
+ uniform float uRange;
8
+ uniform float uTime;
9
+ uniform vec4 uDryWet;
10
+
11
+ float PHI = 1.61803398874989484820459; // Φ = Golden Ratio
12
+
13
+ float gold_noise(vec2 xy, float seed){
14
+ return fract(tan(distance(xy*PHI, xy)*seed)*xy.x);
15
+ }
16
+
17
+ vec2 mapCoord( vec2 coord )
18
+ {
19
+ coord *= uInputSize.xy;
20
+ coord += uInputSize.zw;
21
+
22
+ return coord;
23
+ }
24
+
25
+ vec2 unmapCoord( vec2 coord )
26
+ {
27
+ coord -= uInputSize.zw;
28
+ coord /= uInputSize.xy;
29
+
30
+ return coord;
31
+ }
32
+
33
+ void main(){
34
+ vec4 oTex = texture(uTexture, vTextureCoord);
35
+ vec2 pixelCoord = mapCoord(vTextureCoord);
36
+ vec2 newCoords = pixelCoord + vec2((
37
+ gold_noise(vTextureCoord * vec2(1920,1080), uTime)*uRange-
38
+ uRange / 2.0),(
39
+ gold_noise(vTextureCoord * vec2(1920,1080), uTime+0.1)*uRange-
40
+ uRange / 2.0));
41
+ vec4 tex = texture2D(uTexture, unmapCoord(newCoords));
42
+
43
+ //DRY/WET
44
+ gl_FragColor = (1.0-uDryWet)*oTex +uDryWet * tex;
45
+ }
@@ -0,0 +1,28 @@
1
+ import { getCount } from "../../../helpers/ids.js";
2
+ import { ShaderLayer } from "../shader_layer.js";
3
+ import fragment from "./scramble_shader.frag?raw";
4
+ export class ScrambleShader extends ShaderLayer {
5
+ fragment = fragment;
6
+ static getDefaultState(sceneStateId) {
7
+ return {
8
+ ...ShaderLayer.getDefaultState(sceneStateId),
9
+ type: "scramble",
10
+ name: "scramble_" + getCount(sceneStateId),
11
+ range: 10,
12
+ };
13
+ }
14
+ constructor(sceneStateId, state, owner) {
15
+ super(sceneStateId, state, owner);
16
+ console.trace();
17
+ }
18
+ setupUniformValues() {
19
+ return {
20
+ uRange: { value: this.getFieldValue("range"), type: "f32" },
21
+ };
22
+ }
23
+ updateUniforms() {
24
+ super.updateUniforms();
25
+ this.uniforms.uniforms.uRange = this.getFieldValue("range");
26
+ }
27
+ }
28
+ //# sourceMappingURL=scramble_shader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scramble_shader.js","sourceRoot":"","sources":["../../../../src/layers/shaders/scramble/scramble_shader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAyB,MAAM,oBAAoB,CAAC;AACxE,OAAO,QAAQ,MAAM,4BAA4B,CAAC;AAMlD,MAAM,OAAO,cAAe,SAAQ,WAAW;IAE7C,QAAQ,GAAW,QAAQ,CAAC;IAE5B,MAAM,CAAC,eAAe,CAAC,YAAoB;QACzC,OAAO;YACL,GAAG,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC;YAC5C,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC;YAC1C,KAAK,EAAE,EAAE;SACV,CAAC;IACJ,CAAC;IAED,YAAY,YAAoB,EAAE,KAA0B,EAAE,KAAa;QACzE,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,kBAAkB;QAChB,OAAO;YACL,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;SAC5D,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;CACF"}
@@ -0,0 +1,36 @@
1
+ import { Filter, TextureSource, UniformGroup, type UniformData } from "pixi.js";
2
+ import { BaseLayer } from "../base_layer.js";
3
+ import type { LayerState } from "../ilayer.js";
4
+ export type ShaderLayerState = LayerState & {
5
+ redDryWet: number;
6
+ greenDryWet: number;
7
+ blueDryWet: number;
8
+ alphaDryWet: number;
9
+ };
10
+ export declare abstract class ShaderLayer extends BaseLayer {
11
+ _state: ShaderLayerState;
12
+ shader: Filter;
13
+ abstract fragment: string;
14
+ uniforms: UniformGroup;
15
+ static getDefaultState(sceneStateId: string): ShaderLayerState;
16
+ constructor(sceneStateId: string, state: LayerState, owner: string);
17
+ onStateChange(): void;
18
+ onSignalChange(): void;
19
+ bind(): void;
20
+ buildShader(): void;
21
+ defaultUniforms(): {
22
+ [key: string]: UniformData;
23
+ };
24
+ updateUniforms(): void;
25
+ abstract setupUniformValues(): {
26
+ [key: string]: UniformData;
27
+ };
28
+ getVertex(): string;
29
+ getExtraTextures(): {
30
+ [key: string]: TextureSource;
31
+ };
32
+ tick(time: any, loop: boolean): void;
33
+ reTime(): void;
34
+ unbind(): void;
35
+ }
36
+ //# sourceMappingURL=shader_layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_layer.d.ts","sourceRoot":"","sources":["../../../src/layers/shaders/shader_layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAIN,aAAa,EACb,YAAY,EACZ,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,8BAAsB,WAAY,SAAQ,SAAS;IACzC,MAAM,EAAE,gBAAgB,CAAC;IACjC,MAAM,EAAG,MAAM,CAAC;IAChB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAG,YAAY,CAAC;IAExB,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB;gBAYlD,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM;IAIlE,aAAa,IAAI,IAAI;IAIrB,cAAc,IAAI,IAAI;IAItB,IAAI,IAAI,IAAI;IAIZ,WAAW;IAeX,eAAe,IAAI;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;KAC5B;IAuBD,cAAc;IAcd,QAAQ,CAAC,kBAAkB,IAAI;QAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;KAC5B;IAED,SAAS,IAAI,MAAM;IAInB,gBAAgB,IAAI;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;KAC9B;IAID,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAapC,MAAM;IAIN,MAAM,IAAI,IAAI;CAOf"}
@@ -0,0 +1,100 @@
1
+ import { Application, Filter, Graphics, Point, Sprite, TextureSource, UniformGroup, } from "pixi.js";
2
+ import { BaseLayer } from "../base_layer.js";
3
+ import { DataStore } from "../../index.js";
4
+ import vertex from "./defaultFilter.vert?raw";
5
+ import { getSignal } from "../../helpers/signals.js";
6
+ export class ShaderLayer extends BaseLayer {
7
+ shader;
8
+ uniforms;
9
+ static getDefaultState(sceneStateId) {
10
+ return {
11
+ ...BaseLayer.getDefaultState(sceneStateId),
12
+ type: "pixelate",
13
+ name: "shader",
14
+ redDryWet: 1,
15
+ greenDryWet: 1,
16
+ blueDryWet: 1,
17
+ alphaDryWet: 1,
18
+ };
19
+ }
20
+ constructor(sceneStateId, state, owner) {
21
+ super(sceneStateId, state, owner);
22
+ }
23
+ onStateChange() {
24
+ this.updateUniforms();
25
+ }
26
+ onSignalChange() {
27
+ this.updateUniforms();
28
+ }
29
+ bind() {
30
+ this.buildShader();
31
+ }
32
+ buildShader() {
33
+ this.uniforms = new UniformGroup({
34
+ ...this.defaultUniforms(),
35
+ ...this.setupUniformValues(),
36
+ });
37
+ const uniforms = this.uniforms;
38
+ this.shader = Filter.from({
39
+ gl: {
40
+ vertex: this.getVertex(),
41
+ fragment: this.fragment,
42
+ },
43
+ resources: { uniforms, ...this.getExtraTextures() },
44
+ });
45
+ }
46
+ defaultUniforms() {
47
+ return {
48
+ uDryWet: {
49
+ value: [
50
+ this._state.visible ? this.getFieldValue("redDryWet") : 0,
51
+ this._state.visible ? this.getFieldValue("greenDryWet") : 0,
52
+ this._state.visible ? this.getFieldValue("blueDryWet") : 0,
53
+ this._state.visible ? this.getFieldValue("alphaDryWet") : 0,
54
+ 1,
55
+ ],
56
+ type: "vec4<f32>",
57
+ },
58
+ uSize: {
59
+ value: new Point(DataStore.getInstance().getStore(this.sceneStateId + ".width"), DataStore.getInstance().getStore(this.sceneStateId + ".height")),
60
+ type: "vec2<f32>",
61
+ },
62
+ uTime: { value: Math.random(), type: "f32" },
63
+ };
64
+ }
65
+ updateUniforms() {
66
+ this.uniforms.uniforms.uDryWet = [
67
+ this._state.visible ? this.getFieldValue("redDryWet") : 0,
68
+ this._state.visible ? this.getFieldValue("greenDryWet") : 0,
69
+ this._state.visible ? this.getFieldValue("blueDryWet") : 0,
70
+ this._state.visible ? this.getFieldValue("alphaDryWet") : 0,
71
+ 1,
72
+ ];
73
+ this.uniforms.uniforms.uSize = new Point(DataStore.getInstance().getStore(this.sceneStateId + ".width"), DataStore.getInstance().getStore(this.sceneStateId + ".height"));
74
+ }
75
+ getVertex() {
76
+ return vertex;
77
+ }
78
+ getExtraTextures() {
79
+ return {};
80
+ }
81
+ tick(time, loop) {
82
+ super.tick(time, loop);
83
+ if (this._state.signaledFields["refresh"]) {
84
+ const signal = getSignal(this.sceneStateId, this._state.signaledFields["refresh"]);
85
+ if (signal?.changed && signal.getValue() === 1) {
86
+ this.reTime();
87
+ }
88
+ }
89
+ }
90
+ reTime() {
91
+ this.uniforms.uniforms.uTime = Math.random();
92
+ }
93
+ unbind() {
94
+ super.unbind();
95
+ this.shader.destroy();
96
+ this.shader = undefined;
97
+ this.uniforms = undefined;
98
+ }
99
+ }
100
+ //# sourceMappingURL=shader_layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_layer.js","sourceRoot":"","sources":["../../../src/layers/shaders/shader_layer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { UniformData } from "pixi.js";
2
+ import { ShaderLayer, type ShaderLayerState } from "../shader_layer.js";
3
+ export type VLinesShaderState = ShaderLayerState & {
4
+ distance: number;
5
+ thickness: number;
6
+ };
7
+ export declare class VLinesShader extends ShaderLayer {
8
+ _state: VLinesShaderState;
9
+ fragment: string;
10
+ static getDefaultState(sceneStateId: string): VLinesShaderState;
11
+ constructor(sceneStateId: string, state: VLinesShaderState, owner: string);
12
+ setupUniformValues(): {
13
+ [key: string]: UniformData;
14
+ };
15
+ updateUniforms(): void;
16
+ }
17
+ //# sourceMappingURL=vlines_shader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vlines_shader.d.ts","sourceRoot":"","sources":["../../../../src/layers/shaders/vlines/vlines_shader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGxE,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAa,YAAa,SAAQ,WAAW;IACnC,MAAM,EAAE,iBAAiB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAY;IAE5B,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,iBAAiB;gBAUnD,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM;IAKzE,kBAAkB,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE;IAOpD,cAAc,IAAI,IAAI;CAKvB"}