@flighthq/effects-wgpu 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 (245) hide show
  1. package/dist/index.d.ts +49 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +49 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/wgpuBloomEffect.d.ts +4 -0
  6. package/dist/wgpuBloomEffect.d.ts.map +1 -0
  7. package/dist/wgpuBloomEffect.js +72 -0
  8. package/dist/wgpuBloomEffect.js.map +1 -0
  9. package/dist/wgpuBokehDepthOfFieldEffect.d.ts +4 -0
  10. package/dist/wgpuBokehDepthOfFieldEffect.d.ts.map +1 -0
  11. package/dist/wgpuBokehDepthOfFieldEffect.js +51 -0
  12. package/dist/wgpuBokehDepthOfFieldEffect.js.map +1 -0
  13. package/dist/wgpuBrightnessContrastEffect.d.ts +4 -0
  14. package/dist/wgpuBrightnessContrastEffect.d.ts.map +1 -0
  15. package/dist/wgpuBrightnessContrastEffect.js +29 -0
  16. package/dist/wgpuBrightnessContrastEffect.js.map +1 -0
  17. package/dist/wgpuCameraMotionBlurEffect.d.ts +4 -0
  18. package/dist/wgpuCameraMotionBlurEffect.d.ts.map +1 -0
  19. package/dist/wgpuCameraMotionBlurEffect.js +49 -0
  20. package/dist/wgpuCameraMotionBlurEffect.js.map +1 -0
  21. package/dist/wgpuChannelMixerEffect.d.ts +4 -0
  22. package/dist/wgpuChannelMixerEffect.d.ts.map +1 -0
  23. package/dist/wgpuChannelMixerEffect.js +34 -0
  24. package/dist/wgpuChannelMixerEffect.js.map +1 -0
  25. package/dist/wgpuChromaticAberrationEffect.d.ts +4 -0
  26. package/dist/wgpuChromaticAberrationEffect.d.ts.map +1 -0
  27. package/dist/wgpuChromaticAberrationEffect.js +40 -0
  28. package/dist/wgpuChromaticAberrationEffect.js.map +1 -0
  29. package/dist/wgpuColorGradeEffect.d.ts +4 -0
  30. package/dist/wgpuColorGradeEffect.d.ts.map +1 -0
  31. package/dist/wgpuColorGradeEffect.js +52 -0
  32. package/dist/wgpuColorGradeEffect.js.map +1 -0
  33. package/dist/wgpuCrtEffect.d.ts +4 -0
  34. package/dist/wgpuCrtEffect.d.ts.map +1 -0
  35. package/dist/wgpuCrtEffect.js +60 -0
  36. package/dist/wgpuCrtEffect.js.map +1 -0
  37. package/dist/wgpuDirectionalBlurEffect.d.ts +4 -0
  38. package/dist/wgpuDirectionalBlurEffect.d.ts.map +1 -0
  39. package/dist/wgpuDirectionalBlurEffect.js +52 -0
  40. package/dist/wgpuDirectionalBlurEffect.js.map +1 -0
  41. package/dist/wgpuDisplacementEffect.d.ts +4 -0
  42. package/dist/wgpuDisplacementEffect.d.ts.map +1 -0
  43. package/dist/wgpuDisplacementEffect.js +44 -0
  44. package/dist/wgpuDisplacementEffect.js.map +1 -0
  45. package/dist/wgpuDitherEffect.d.ts +4 -0
  46. package/dist/wgpuDitherEffect.d.ts.map +1 -0
  47. package/dist/wgpuDitherEffect.js +45 -0
  48. package/dist/wgpuDitherEffect.js.map +1 -0
  49. package/dist/wgpuEffectProgramCache.d.ts +4 -0
  50. package/dist/wgpuEffectProgramCache.d.ts.map +1 -0
  51. package/dist/wgpuEffectProgramCache.js +26 -0
  52. package/dist/wgpuEffectProgramCache.js.map +1 -0
  53. package/dist/wgpuExposureEffect.d.ts +4 -0
  54. package/dist/wgpuExposureEffect.d.ts.map +1 -0
  55. package/dist/wgpuExposureEffect.js +28 -0
  56. package/dist/wgpuExposureEffect.js.map +1 -0
  57. package/dist/wgpuFilmGrainEffect.d.ts +4 -0
  58. package/dist/wgpuFilmGrainEffect.d.ts.map +1 -0
  59. package/dist/wgpuFilmGrainEffect.js +41 -0
  60. package/dist/wgpuFilmGrainEffect.js.map +1 -0
  61. package/dist/wgpuFxaaEffect.d.ts +4 -0
  62. package/dist/wgpuFxaaEffect.d.ts.map +1 -0
  63. package/dist/wgpuFxaaEffect.js +65 -0
  64. package/dist/wgpuFxaaEffect.js.map +1 -0
  65. package/dist/wgpuGlitchEffect.d.ts +4 -0
  66. package/dist/wgpuGlitchEffect.d.ts.map +1 -0
  67. package/dist/wgpuGlitchEffect.js +60 -0
  68. package/dist/wgpuGlitchEffect.js.map +1 -0
  69. package/dist/wgpuGodRaysEffect.d.ts +4 -0
  70. package/dist/wgpuGodRaysEffect.d.ts.map +1 -0
  71. package/dist/wgpuGodRaysEffect.js +67 -0
  72. package/dist/wgpuGodRaysEffect.js.map +1 -0
  73. package/dist/wgpuGrayscaleEffect.d.ts +4 -0
  74. package/dist/wgpuGrayscaleEffect.d.ts.map +1 -0
  75. package/dist/wgpuGrayscaleEffect.js +27 -0
  76. package/dist/wgpuGrayscaleEffect.js.map +1 -0
  77. package/dist/wgpuHalftoneEffect.d.ts +4 -0
  78. package/dist/wgpuHalftoneEffect.d.ts.map +1 -0
  79. package/dist/wgpuHalftoneEffect.js +45 -0
  80. package/dist/wgpuHalftoneEffect.js.map +1 -0
  81. package/dist/wgpuHueSaturationEffect.d.ts +4 -0
  82. package/dist/wgpuHueSaturationEffect.d.ts.map +1 -0
  83. package/dist/wgpuHueSaturationEffect.js +75 -0
  84. package/dist/wgpuHueSaturationEffect.js.map +1 -0
  85. package/dist/wgpuInvertEffect.d.ts +4 -0
  86. package/dist/wgpuInvertEffect.d.ts.map +1 -0
  87. package/dist/wgpuInvertEffect.js +26 -0
  88. package/dist/wgpuInvertEffect.js.map +1 -0
  89. package/dist/wgpuKuwaharaEffect.d.ts +4 -0
  90. package/dist/wgpuKuwaharaEffect.d.ts.map +1 -0
  91. package/dist/wgpuKuwaharaEffect.js +69 -0
  92. package/dist/wgpuKuwaharaEffect.js.map +1 -0
  93. package/dist/wgpuLensDirtEffect.d.ts +4 -0
  94. package/dist/wgpuLensDirtEffect.d.ts.map +1 -0
  95. package/dist/wgpuLensDirtEffect.js +51 -0
  96. package/dist/wgpuLensDirtEffect.js.map +1 -0
  97. package/dist/wgpuLensDistortionEffect.d.ts +4 -0
  98. package/dist/wgpuLensDistortionEffect.d.ts.map +1 -0
  99. package/dist/wgpuLensDistortionEffect.js +36 -0
  100. package/dist/wgpuLensDistortionEffect.js.map +1 -0
  101. package/dist/wgpuLensFlareEffect.d.ts +4 -0
  102. package/dist/wgpuLensFlareEffect.d.ts.map +1 -0
  103. package/dist/wgpuLensFlareEffect.js +61 -0
  104. package/dist/wgpuLensFlareEffect.js.map +1 -0
  105. package/dist/wgpuLiftGammaGainEffect.d.ts +4 -0
  106. package/dist/wgpuLiftGammaGainEffect.d.ts.map +1 -0
  107. package/dist/wgpuLiftGammaGainEffect.js +51 -0
  108. package/dist/wgpuLiftGammaGainEffect.js.map +1 -0
  109. package/dist/wgpuLookupTableGradeEffect.d.ts +4 -0
  110. package/dist/wgpuLookupTableGradeEffect.d.ts.map +1 -0
  111. package/dist/wgpuLookupTableGradeEffect.js +30 -0
  112. package/dist/wgpuLookupTableGradeEffect.js.map +1 -0
  113. package/dist/wgpuMotionBlurEffect.d.ts +4 -0
  114. package/dist/wgpuMotionBlurEffect.d.ts.map +1 -0
  115. package/dist/wgpuMotionBlurEffect.js +97 -0
  116. package/dist/wgpuMotionBlurEffect.js.map +1 -0
  117. package/dist/wgpuOutlineEffect.d.ts +4 -0
  118. package/dist/wgpuOutlineEffect.d.ts.map +1 -0
  119. package/dist/wgpuOutlineEffect.js +64 -0
  120. package/dist/wgpuOutlineEffect.js.map +1 -0
  121. package/dist/wgpuPixelateEffect.d.ts +4 -0
  122. package/dist/wgpuPixelateEffect.d.ts.map +1 -0
  123. package/dist/wgpuPixelateEffect.js +34 -0
  124. package/dist/wgpuPixelateEffect.js.map +1 -0
  125. package/dist/wgpuPosterizeEffect.d.ts +4 -0
  126. package/dist/wgpuPosterizeEffect.d.ts.map +1 -0
  127. package/dist/wgpuPosterizeEffect.js +27 -0
  128. package/dist/wgpuPosterizeEffect.js.map +1 -0
  129. package/dist/wgpuRadialBlurEffect.d.ts +4 -0
  130. package/dist/wgpuRadialBlurEffect.d.ts.map +1 -0
  131. package/dist/wgpuRadialBlurEffect.js +50 -0
  132. package/dist/wgpuRadialBlurEffect.js.map +1 -0
  133. package/dist/wgpuRenderEffectPipeline.d.ts +7 -0
  134. package/dist/wgpuRenderEffectPipeline.d.ts.map +1 -0
  135. package/dist/wgpuRenderEffectPipeline.js +106 -0
  136. package/dist/wgpuRenderEffectPipeline.js.map +1 -0
  137. package/dist/wgpuRenderEffectRegistrants.d.ts +9 -0
  138. package/dist/wgpuRenderEffectRegistrants.d.ts.map +1 -0
  139. package/dist/wgpuRenderEffectRegistrants.js +129 -0
  140. package/dist/wgpuRenderEffectRegistrants.js.map +1 -0
  141. package/dist/wgpuRenderEffectRegistry.d.ts +5 -0
  142. package/dist/wgpuRenderEffectRegistry.d.ts.map +1 -0
  143. package/dist/wgpuRenderEffectRegistry.js +25 -0
  144. package/dist/wgpuRenderEffectRegistry.js.map +1 -0
  145. package/dist/wgpuScanlinesEffect.d.ts +4 -0
  146. package/dist/wgpuScanlinesEffect.d.ts.map +1 -0
  147. package/dist/wgpuScanlinesEffect.js +32 -0
  148. package/dist/wgpuScanlinesEffect.js.map +1 -0
  149. package/dist/wgpuScreenSpaceFogEffect.d.ts +4 -0
  150. package/dist/wgpuScreenSpaceFogEffect.d.ts.map +1 -0
  151. package/dist/wgpuScreenSpaceFogEffect.js +47 -0
  152. package/dist/wgpuScreenSpaceFogEffect.js.map +1 -0
  153. package/dist/wgpuSepiaEffect.d.ts +4 -0
  154. package/dist/wgpuSepiaEffect.d.ts.map +1 -0
  155. package/dist/wgpuSepiaEffect.js +31 -0
  156. package/dist/wgpuSepiaEffect.js.map +1 -0
  157. package/dist/wgpuSharpenEffect.d.ts +4 -0
  158. package/dist/wgpuSharpenEffect.d.ts.map +1 -0
  159. package/dist/wgpuSharpenEffect.js +40 -0
  160. package/dist/wgpuSharpenEffect.js.map +1 -0
  161. package/dist/wgpuSketchEffect.d.ts +4 -0
  162. package/dist/wgpuSketchEffect.d.ts.map +1 -0
  163. package/dist/wgpuSketchEffect.js +51 -0
  164. package/dist/wgpuSketchEffect.js.map +1 -0
  165. package/dist/wgpuSmaaEffect.d.ts +4 -0
  166. package/dist/wgpuSmaaEffect.d.ts.map +1 -0
  167. package/dist/wgpuSmaaEffect.js +52 -0
  168. package/dist/wgpuSmaaEffect.js.map +1 -0
  169. package/dist/wgpuSsaoEffect.d.ts +4 -0
  170. package/dist/wgpuSsaoEffect.d.ts.map +1 -0
  171. package/dist/wgpuSsaoEffect.js +51 -0
  172. package/dist/wgpuSsaoEffect.js.map +1 -0
  173. package/dist/wgpuSsrEffect.d.ts +4 -0
  174. package/dist/wgpuSsrEffect.d.ts.map +1 -0
  175. package/dist/wgpuSsrEffect.js +28 -0
  176. package/dist/wgpuSsrEffect.js.map +1 -0
  177. package/dist/wgpuTaaEffect.d.ts +4 -0
  178. package/dist/wgpuTaaEffect.d.ts.map +1 -0
  179. package/dist/wgpuTaaEffect.js +27 -0
  180. package/dist/wgpuTaaEffect.js.map +1 -0
  181. package/dist/wgpuTiltShiftEffect.d.ts +4 -0
  182. package/dist/wgpuTiltShiftEffect.d.ts.map +1 -0
  183. package/dist/wgpuTiltShiftEffect.js +51 -0
  184. package/dist/wgpuTiltShiftEffect.js.map +1 -0
  185. package/dist/wgpuToneMapEffect.d.ts +4 -0
  186. package/dist/wgpuToneMapEffect.d.ts.map +1 -0
  187. package/dist/wgpuToneMapEffect.js +57 -0
  188. package/dist/wgpuToneMapEffect.js.map +1 -0
  189. package/dist/wgpuVignetteEffect.d.ts +4 -0
  190. package/dist/wgpuVignetteEffect.d.ts.map +1 -0
  191. package/dist/wgpuVignetteEffect.js +54 -0
  192. package/dist/wgpuVignetteEffect.js.map +1 -0
  193. package/dist/wgpuWhiteBalanceEffect.d.ts +4 -0
  194. package/dist/wgpuWhiteBalanceEffect.d.ts.map +1 -0
  195. package/dist/wgpuWhiteBalanceEffect.js +32 -0
  196. package/dist/wgpuWhiteBalanceEffect.js.map +1 -0
  197. package/package.json +42 -0
  198. package/src/wgpuBloomEffect.test.ts +13 -0
  199. package/src/wgpuBokehDepthOfFieldEffect.test.ts +16 -0
  200. package/src/wgpuBrightnessContrastEffect.test.ts +16 -0
  201. package/src/wgpuCameraMotionBlurEffect.test.ts +16 -0
  202. package/src/wgpuChannelMixerEffect.test.ts +13 -0
  203. package/src/wgpuChromaticAberrationEffect.test.ts +16 -0
  204. package/src/wgpuColorGradeEffect.test.ts +13 -0
  205. package/src/wgpuCrtEffect.test.ts +13 -0
  206. package/src/wgpuDirectionalBlurEffect.test.ts +13 -0
  207. package/src/wgpuDisplacementEffect.test.ts +13 -0
  208. package/src/wgpuDitherEffect.test.ts +13 -0
  209. package/src/wgpuEffectProgramCache.test.ts +7 -0
  210. package/src/wgpuExposureEffect.test.ts +13 -0
  211. package/src/wgpuFilmGrainEffect.test.ts +13 -0
  212. package/src/wgpuFxaaEffect.test.ts +13 -0
  213. package/src/wgpuGlitchEffect.test.ts +13 -0
  214. package/src/wgpuGodRaysEffect.test.ts +13 -0
  215. package/src/wgpuGrayscaleEffect.test.ts +13 -0
  216. package/src/wgpuHalftoneEffect.test.ts +13 -0
  217. package/src/wgpuHueSaturationEffect.test.ts +13 -0
  218. package/src/wgpuInvertEffect.test.ts +13 -0
  219. package/src/wgpuKuwaharaEffect.test.ts +13 -0
  220. package/src/wgpuLensDirtEffect.test.ts +13 -0
  221. package/src/wgpuLensDistortionEffect.test.ts +13 -0
  222. package/src/wgpuLensFlareEffect.test.ts +13 -0
  223. package/src/wgpuLiftGammaGainEffect.test.ts +13 -0
  224. package/src/wgpuLookupTableGradeEffect.test.ts +16 -0
  225. package/src/wgpuMotionBlurEffect.test.ts +13 -0
  226. package/src/wgpuOutlineEffect.test.ts +13 -0
  227. package/src/wgpuPixelateEffect.test.ts +13 -0
  228. package/src/wgpuPosterizeEffect.test.ts +13 -0
  229. package/src/wgpuRadialBlurEffect.test.ts +13 -0
  230. package/src/wgpuRenderEffectPipeline.test.ts +45 -0
  231. package/src/wgpuRenderEffectRegistrants.test.ts +122 -0
  232. package/src/wgpuRenderEffectRegistry.test.ts +40 -0
  233. package/src/wgpuScanlinesEffect.test.ts +13 -0
  234. package/src/wgpuScreenSpaceFogEffect.test.ts +13 -0
  235. package/src/wgpuSepiaEffect.test.ts +13 -0
  236. package/src/wgpuSharpenEffect.test.ts +13 -0
  237. package/src/wgpuSketchEffect.test.ts +13 -0
  238. package/src/wgpuSmaaEffect.test.ts +13 -0
  239. package/src/wgpuSsaoEffect.test.ts +13 -0
  240. package/src/wgpuSsrEffect.test.ts +13 -0
  241. package/src/wgpuTaaEffect.test.ts +13 -0
  242. package/src/wgpuTiltShiftEffect.test.ts +13 -0
  243. package/src/wgpuToneMapEffect.test.ts +13 -0
  244. package/src/wgpuVignetteEffect.test.ts +13 -0
  245. package/src/wgpuWhiteBalanceEffect.test.ts +13 -0
@@ -0,0 +1,49 @@
1
+ export * from './wgpuBloomEffect';
2
+ export * from './wgpuBokehDepthOfFieldEffect';
3
+ export * from './wgpuBrightnessContrastEffect';
4
+ export * from './wgpuCameraMotionBlurEffect';
5
+ export * from './wgpuChannelMixerEffect';
6
+ export * from './wgpuChromaticAberrationEffect';
7
+ export * from './wgpuColorGradeEffect';
8
+ export * from './wgpuCrtEffect';
9
+ export * from './wgpuDirectionalBlurEffect';
10
+ export * from './wgpuDisplacementEffect';
11
+ export * from './wgpuDitherEffect';
12
+ export * from './wgpuEffectProgramCache';
13
+ export * from './wgpuExposureEffect';
14
+ export * from './wgpuFilmGrainEffect';
15
+ export * from './wgpuFxaaEffect';
16
+ export * from './wgpuGlitchEffect';
17
+ export * from './wgpuGodRaysEffect';
18
+ export * from './wgpuGrayscaleEffect';
19
+ export * from './wgpuHalftoneEffect';
20
+ export * from './wgpuHueSaturationEffect';
21
+ export * from './wgpuInvertEffect';
22
+ export * from './wgpuKuwaharaEffect';
23
+ export * from './wgpuLensDirtEffect';
24
+ export * from './wgpuLensDistortionEffect';
25
+ export * from './wgpuLensFlareEffect';
26
+ export * from './wgpuLiftGammaGainEffect';
27
+ export * from './wgpuLookupTableGradeEffect';
28
+ export * from './wgpuMotionBlurEffect';
29
+ export * from './wgpuOutlineEffect';
30
+ export * from './wgpuPixelateEffect';
31
+ export * from './wgpuPosterizeEffect';
32
+ export * from './wgpuRadialBlurEffect';
33
+ export * from './wgpuRenderEffectPipeline';
34
+ export * from './wgpuRenderEffectRegistrants';
35
+ export * from './wgpuRenderEffectRegistry';
36
+ export * from './wgpuScanlinesEffect';
37
+ export * from './wgpuScreenSpaceFogEffect';
38
+ export * from './wgpuSepiaEffect';
39
+ export * from './wgpuSharpenEffect';
40
+ export * from './wgpuSketchEffect';
41
+ export * from './wgpuSmaaEffect';
42
+ export * from './wgpuSsaoEffect';
43
+ export * from './wgpuSsrEffect';
44
+ export * from './wgpuTaaEffect';
45
+ export * from './wgpuTiltShiftEffect';
46
+ export * from './wgpuToneMapEffect';
47
+ export * from './wgpuVignetteEffect';
48
+ export * from './wgpuWhiteBalanceEffect';
49
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,49 @@
1
+ export * from './wgpuBloomEffect';
2
+ export * from './wgpuBokehDepthOfFieldEffect';
3
+ export * from './wgpuBrightnessContrastEffect';
4
+ export * from './wgpuCameraMotionBlurEffect';
5
+ export * from './wgpuChannelMixerEffect';
6
+ export * from './wgpuChromaticAberrationEffect';
7
+ export * from './wgpuColorGradeEffect';
8
+ export * from './wgpuCrtEffect';
9
+ export * from './wgpuDirectionalBlurEffect';
10
+ export * from './wgpuDisplacementEffect';
11
+ export * from './wgpuDitherEffect';
12
+ export * from './wgpuEffectProgramCache';
13
+ export * from './wgpuExposureEffect';
14
+ export * from './wgpuFilmGrainEffect';
15
+ export * from './wgpuFxaaEffect';
16
+ export * from './wgpuGlitchEffect';
17
+ export * from './wgpuGodRaysEffect';
18
+ export * from './wgpuGrayscaleEffect';
19
+ export * from './wgpuHalftoneEffect';
20
+ export * from './wgpuHueSaturationEffect';
21
+ export * from './wgpuInvertEffect';
22
+ export * from './wgpuKuwaharaEffect';
23
+ export * from './wgpuLensDirtEffect';
24
+ export * from './wgpuLensDistortionEffect';
25
+ export * from './wgpuLensFlareEffect';
26
+ export * from './wgpuLiftGammaGainEffect';
27
+ export * from './wgpuLookupTableGradeEffect';
28
+ export * from './wgpuMotionBlurEffect';
29
+ export * from './wgpuOutlineEffect';
30
+ export * from './wgpuPixelateEffect';
31
+ export * from './wgpuPosterizeEffect';
32
+ export * from './wgpuRadialBlurEffect';
33
+ export * from './wgpuRenderEffectPipeline';
34
+ export * from './wgpuRenderEffectRegistrants';
35
+ export * from './wgpuRenderEffectRegistry';
36
+ export * from './wgpuScanlinesEffect';
37
+ export * from './wgpuScreenSpaceFogEffect';
38
+ export * from './wgpuSepiaEffect';
39
+ export * from './wgpuSharpenEffect';
40
+ export * from './wgpuSketchEffect';
41
+ export * from './wgpuSmaaEffect';
42
+ export * from './wgpuSsaoEffect';
43
+ export * from './wgpuSsrEffect';
44
+ export * from './wgpuTaaEffect';
45
+ export * from './wgpuTiltShiftEffect';
46
+ export * from './wgpuToneMapEffect';
47
+ export * from './wgpuVignetteEffect';
48
+ export * from './wgpuWhiteBalanceEffect';
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { BloomEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget, WgpuRenderTargetPool } from '@flighthq/types';
2
+ export declare function applyBloomEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, pool: WgpuRenderTargetPool, effect: Readonly<BloomEffect>): void;
3
+ export declare const defaultWgpuBloomEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuBloomEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuBloomEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBloomEffect.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AASzB,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC5B,IAAI,CAgCN;AAED,eAAO,MAAM,4BAA4B,EAAE,sBAE1C,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { computeBloomBlurRadius, computeBloomIntensity, computeBloomThreshold } from '@flighthq/effects';
2
+ import { applyGaussianBlurFilterToWgpu, createWgpuDualSourcePipeline, drawWgpuDualSourcePass, drawWgpuFilterPass, } from '@flighthq/filters-wgpu';
3
+ import { acquireWgpuRenderTarget, releaseWgpuRenderTarget } from '@flighthq/render-wgpu';
4
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
5
+ // Bloom: bright-pass → blur the bright branch (reusing the Tier-1 gaussian blur filter) → additively
6
+ // composite back. The multi-pass reference recipe — it acquires intermediate targets from the pool and
7
+ // releases them, branches, and reuses a filter, which is what makes it an effect and not a filter.
8
+ // The Wgpu mirror of effects-gl's applyBloomEffectToGl; identical parameters come from the
9
+ // shared computeBloomThreshold / computeBloomIntensity / computeBloomBlurRadius.
10
+ export function applyBloomEffectToWgpu(state, source, dest, pool, effect) {
11
+ const threshold = computeBloomThreshold(effect);
12
+ const intensity = computeBloomIntensity(effect);
13
+ const radius = computeBloomBlurRadius(effect);
14
+ const descriptor = { width: source.width, height: source.height, format: source.format };
15
+ const bright = acquireWgpuRenderTarget(state, pool, descriptor);
16
+ const blurred = acquireWgpuRenderTarget(state, pool, descriptor);
17
+ const temp = acquireWgpuRenderTarget(state, pool, descriptor);
18
+ const brightPipeline = getWgpuEffectPipeline(state, 'bloom.bright', BLOOM_BRIGHT_FRAGMENT_WGSL, 'replace');
19
+ drawWgpuFilterPass(state, source, bright, brightPipeline, (f32) => {
20
+ f32[0] = threshold;
21
+ });
22
+ applyGaussianBlurFilterToWgpu(state, bright, blurred, temp, { blurX: radius, blurY: radius });
23
+ const compositePipeline = getBloomCompositePipeline(state);
24
+ drawWgpuDualSourcePass(state, source, blurred, dest, compositePipeline, (f32) => {
25
+ f32[0] = intensity;
26
+ });
27
+ releaseWgpuRenderTarget(pool, bright);
28
+ releaseWgpuRenderTarget(pool, blurred);
29
+ releaseWgpuRenderTarget(pool, temp);
30
+ }
31
+ export const defaultWgpuBloomEffectRunner = (ctx, effect) => {
32
+ applyBloomEffectToWgpu(ctx.state, ctx.source, ctx.dest, ctx.pool, effect);
33
+ };
34
+ // The composite pipeline reads two textures (scene = group 1, blurred = group 2) so it uses the
35
+ // dual-source filter primitive; cached per state alongside the single-source pipelines.
36
+ function getBloomCompositePipeline(state) {
37
+ let pipeline = _compositePipelines.get(state);
38
+ if (pipeline === undefined) {
39
+ pipeline = createWgpuDualSourcePipeline(state, BLOOM_COMPOSITE_FRAGMENT_WGSL, 'replace');
40
+ _compositePipelines.set(state, pipeline);
41
+ }
42
+ return pipeline;
43
+ }
44
+ const _compositePipelines = new WeakMap();
45
+ const BLOOM_BRIGHT_FRAGMENT_WGSL = /* wgsl */ `
46
+ struct Uniforms { u_threshold : f32, _pad0 : f32, _pad1 : f32, _pad2 : f32, }
47
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
48
+ @group(1) @binding(0) var tex : texture_2d<f32>;
49
+ @group(1) @binding(1) var smp : sampler;
50
+
51
+ @fragment
52
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
53
+ let c = textureSampleLevel(tex, smp, uv, 0.0);
54
+ let l = dot(c.rgb, vec3f(0.2126, 0.7152, 0.0722));
55
+ let k = step(uni.u_threshold, l);
56
+ return vec4f(c.rgb * k, c.a);
57
+ }`;
58
+ const BLOOM_COMPOSITE_FRAGMENT_WGSL = /* wgsl */ `
59
+ struct Uniforms { u_intensity : f32, _pad0 : f32, _pad1 : f32, _pad2 : f32, }
60
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
61
+ @group(1) @binding(0) var tex0 : texture_2d<f32>;
62
+ @group(1) @binding(1) var smp0 : sampler;
63
+ @group(2) @binding(0) var tex1 : texture_2d<f32>;
64
+ @group(2) @binding(1) var smp1 : sampler;
65
+
66
+ @fragment
67
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
68
+ let scene = textureSampleLevel(tex0, smp0, uv, 0.0);
69
+ let bloom = textureSampleLevel(tex1, smp1, uv, 0.0);
70
+ return vec4f(scene.rgb + bloom.rgb * uni.u_intensity, scene.a);
71
+ }`;
72
+ //# sourceMappingURL=wgpuBloomEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuBloomEffect.js","sourceRoot":"","sources":["../src/wgpuBloomEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEzG,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AASzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,qGAAqG;AACrG,uGAAuG;AACvG,mGAAmG;AACnG,2FAA2F;AAC3F,iFAAiF;AACjF,MAAM,UAAU,sBAAsB,CACpC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,IAA0B,EAC1B,MAA6B;IAE7B,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAEzF,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAE9D,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,0BAA0B,EAAE,SAAS,CAAC,CAAC;IAC3G,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE;QACpF,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAE9F,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC3D,sBAAsB,CACpB,KAAK,EACL,MAA0B,EAC1B,OAAO,EACP,IAAwB,EACxB,iBAAiB,EACjB,CAAC,GAAG,EAAE,EAAE;QACN,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,CAAC,CACF,CAAC;IAEF,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,MAAM,4BAA4B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAClF,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAqB,CAAC,CAAC;AAC3F,CAAC,CAAC;AAEF,gGAAgG;AAChG,wFAAwF;AACxF,SAAS,yBAAyB,CAAC,KAAsB;IACvD,IAAI,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,GAAG,4BAA4B,CAAC,KAAK,EAAE,6BAA6B,EAAE,SAAS,CAAC,CAAC;QACzF,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAA2C,CAAC;AAEnF,MAAM,0BAA0B,GAAG,UAAU,CAAC;;;;;;;;;;;;EAY5C,CAAC;AAEH,MAAM,6BAA6B,GAAG,UAAU,CAAC;;;;;;;;;;;;;EAa/C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { BokehDepthOfFieldEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applyBokehDepthOfFieldEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<BokehDepthOfFieldEffect>): void;
3
+ export declare const defaultWgpuBokehDepthOfFieldEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuBokehDepthOfFieldEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuBokehDepthOfFieldEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBokehDepthOfFieldEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAUzB,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GACxC,IAAI,CAUN;AAED,eAAO,MAAM,wCAAwC,EAAE,sBAEtD,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // Bokeh depth-of-field: a disc-shaped blur. The real DoF computes a per-pixel circle of confusion from a
4
+ // sampleable depth texture (focusDistance/focusRange) and scales the disc radius by it — but Wgpu does
5
+ // not produce a scene depth texture yet (ctx.sceneDepthTexture is null), so there is no second source to
6
+ // bind here. This recipe always falls back to a uniform disc blur of radius maxBlur. When the depth seam
7
+ // lands it can take a depth source as group 2 and recover the true circle of confusion, matching
8
+ // effects-gl's applyBokehDepthOfFieldEffectToGl.
9
+ export function applyBokehDepthOfFieldEffectToWgpu(state, source, dest, effect) {
10
+ const maxBlur = effect.maxBlur ?? 4;
11
+ const width = source.width;
12
+ const height = source.height;
13
+ const pipeline = getWgpuEffectPipeline(state, 'lens.bokehDoF', BOKEH_DOF_FRAGMENT_WGSL, 'replace');
14
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
15
+ f32[0] = maxBlur;
16
+ f32[2] = width;
17
+ f32[3] = height;
18
+ });
19
+ }
20
+ export const defaultWgpuBokehDepthOfFieldEffectRunner = (ctx, effect) => {
21
+ applyBokehDepthOfFieldEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
22
+ };
23
+ // Slot layout: [0]=maxBlur, [1]=pad, [2..3]=resolution (vec2 aligned to 8 bytes). With no depth source
24
+ // the circle of confusion is fixed at 1.0, so the disc samples the full maxBlur radius everywhere.
25
+ const BOKEH_DOF_FRAGMENT_WGSL = /* wgsl */ `
26
+ struct Uniforms {
27
+ u_maxBlur : f32,
28
+ _pad0 : f32,
29
+ u_resolution : vec2f,
30
+ }
31
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
32
+ @group(1) @binding(0) var tex : texture_2d<f32>;
33
+ @group(1) @binding(1) var smp : sampler;
34
+
35
+ @fragment
36
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
37
+ let texel = vec2f(1.0) / uni.u_resolution;
38
+ // No depth texture in WebGPU yet: circle of confusion is fixed, so the disc uses the full radius.
39
+ let blur = uni.u_maxBlur;
40
+ var sum = vec4f(0.0);
41
+ var total = 0.0;
42
+ for (var i = 0; i < 16; i = i + 1) {
43
+ let ang = f32(i) * 0.39269908; // golden-ish angular step over the disc
44
+ let rad = (f32(i % 4) + 1.0) * 0.25;
45
+ let offset = vec2f(cos(ang), sin(ang)) * rad * blur * texel;
46
+ sum = sum + textureSampleLevel(tex, smp, uv + offset, 0.0);
47
+ total = total + 1.0;
48
+ }
49
+ return sum / total;
50
+ }`;
51
+ //# sourceMappingURL=wgpuBokehDepthOfFieldEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuBokehDepthOfFieldEffect.js","sourceRoot":"","sources":["../src/wgpuBokehDepthOfFieldEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAQ5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,yGAAyG;AACzG,uGAAuG;AACvG,yGAAyG;AACzG,yGAAyG;AACzG,iGAAiG;AACjG,iDAAiD;AACjD,MAAM,UAAU,kCAAkC,CAChD,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAyC;IAEzC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,SAAS,CAAC,CAAC;IACnG,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QACjB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACf,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,wCAAwC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAC9F,kCAAkC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAiC,CAAC,CAAC;AACzG,CAAC,CAAC;AAEF,uGAAuG;AACvG,mGAAmG;AACnG,MAAM,uBAAuB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;EAyBzC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { BrightnessContrastEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applyBrightnessContrastEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<BrightnessContrastEffect>): void;
3
+ export declare const defaultWgpuBrightnessContrastEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuBrightnessContrastEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuBrightnessContrastEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBrightnessContrastEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAKzB,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,wBAAwB,CAAC,GACzC,IAAI,CAaN;AAED,eAAO,MAAM,yCAAyC,EAAE,sBAEvD,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // Brightness/contrast: shift then scale about mid-grey.
4
+ export function applyBrightnessContrastEffectToWgpu(state, source, dest, effect) {
5
+ const brightness = effect.brightness ?? 0;
6
+ const contrast = effect.contrast ?? 1;
7
+ const pipeline = getWgpuEffectPipeline(state, 'colorGrade.brightnessContrast', BRIGHTNESS_CONTRAST_FRAGMENT_WGSL, 'replace');
8
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
9
+ f32[0] = brightness;
10
+ f32[1] = contrast;
11
+ });
12
+ }
13
+ export const defaultWgpuBrightnessContrastEffectRunner = (ctx, effect) => {
14
+ applyBrightnessContrastEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
15
+ };
16
+ // Slot layout: [0]=brightness, [1]=contrast.
17
+ const BRIGHTNESS_CONTRAST_FRAGMENT_WGSL = /* wgsl */ `
18
+ struct Uniforms { u_brightness : f32, u_contrast : f32, _pad0 : f32, _pad1 : f32, }
19
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
20
+ @group(1) @binding(0) var tex : texture_2d<f32>;
21
+ @group(1) @binding(1) var smp : sampler;
22
+
23
+ @fragment
24
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
25
+ let c = textureSampleLevel(tex, smp, uv, 0.0);
26
+ let rgb = (c.rgb + uni.u_brightness - 0.5) * uni.u_contrast + 0.5;
27
+ return vec4f(clamp(rgb, vec3f(0.0), vec3f(1.0)), c.a);
28
+ }`;
29
+ //# sourceMappingURL=wgpuBrightnessContrastEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuBrightnessContrastEffect.js","sourceRoot":"","sources":["../src/wgpuBrightnessContrastEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAQ5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,wDAAwD;AACxD,MAAM,UAAU,mCAAmC,CACjD,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA0C;IAE1C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,qBAAqB,CACpC,KAAK,EACL,+BAA+B,EAC/B,iCAAiC,EACjC,SAAS,CACV,CAAC;IACF,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;QACpB,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,yCAAyC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAC/F,mCAAmC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAkC,CAAC,CAAC;AAC3G,CAAC,CAAC;AAEF,6CAA6C;AAC7C,MAAM,iCAAiC,GAAG,UAAU,CAAC;;;;;;;;;;;EAWnD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CameraMotionBlurEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applyCameraMotionBlurEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<CameraMotionBlurEffect>): void;
3
+ export declare const defaultWgpuCameraMotionBlurEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuCameraMotionBlurEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuCameraMotionBlurEffect.d.ts","sourceRoot":"","sources":["../src/wgpuCameraMotionBlurEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AASzB,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GACvC,IAAI,CAQN;AAED,eAAO,MAAM,uCAAuC,EAAE,sBAErD,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // Camera motion blur: a real single-pass radial/zoom blur scaled by intensity — smears each sample
4
+ // toward the screen center. A legitimate 2D effect on its own, the Wgpu mirror of effects-gl's
5
+ // applyCameraMotionBlurEffectToGl. Two richer variants are 2D-native follow-ups, not 3D-gated:
6
+ // feeding the actual camera/root transform delta as the smear vector (global velocity), and per-object
7
+ // motion blur reading ctx.sceneVelocityTexture (per-node prev-transform delta).
8
+ export function applyCameraMotionBlurEffectToWgpu(state, source, dest, effect) {
9
+ const intensity = effect.intensity ?? 0.5;
10
+ const samples = effect.samples ?? 16;
11
+ const pipeline = getWgpuEffectPipeline(state, 'motion.cameraMotionBlur', CAMERA_MOTION_BLUR_FRAGMENT_WGSL, 'replace');
12
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
13
+ f32[0] = intensity;
14
+ f32[1] = samples;
15
+ });
16
+ }
17
+ export const defaultWgpuCameraMotionBlurEffectRunner = (ctx, effect) => {
18
+ applyCameraMotionBlurEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
19
+ };
20
+ // Slot layout: [0]=intensity, [1]=samples. SAMPLES caps the loop; min(u_samples, 16.0) gates the taps.
21
+ const CAMERA_MOTION_BLUR_FRAGMENT_WGSL = /* wgsl */ `
22
+ struct Uniforms {
23
+ u_intensity : f32,
24
+ u_samples : f32,
25
+ _pad0 : f32,
26
+ _pad1 : f32,
27
+ }
28
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
29
+ @group(1) @binding(0) var tex : texture_2d<f32>;
30
+ @group(1) @binding(1) var smp : sampler;
31
+
32
+ const SAMPLES : i32 = 16;
33
+
34
+ @fragment
35
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
36
+ let toCenter = vec2f(0.5) - uv;
37
+ let count = min(uni.u_samples, 16.0);
38
+ var sum = vec4f(0.0);
39
+ var taken = 0.0;
40
+ for (var i = 0; i < SAMPLES; i = i + 1) {
41
+ if (f32(i) >= count) { break; }
42
+ let t = select(0.0, f32(i) / (count - 1.0), count > 1.0);
43
+ let p = uv + toCenter * (t * uni.u_intensity);
44
+ sum = sum + textureSampleLevel(tex, smp, p, 0.0);
45
+ taken = taken + 1.0;
46
+ }
47
+ return sum / max(taken, 1.0);
48
+ }`;
49
+ //# sourceMappingURL=wgpuCameraMotionBlurEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuCameraMotionBlurEffect.js","sourceRoot":"","sources":["../src/wgpuCameraMotionBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAQ5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,mGAAmG;AACnG,+FAA+F;AAC/F,+FAA+F;AAC/F,uGAAuG;AACvG,gFAAgF;AAChF,MAAM,UAAU,iCAAiC,CAC/C,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAwC;IAExC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,SAAS,CAAC,CAAC;IACtH,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,uCAAuC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAC7F,iCAAiC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAgC,CAAC,CAAC;AACvG,CAAC,CAAC;AAEF,uGAAuG;AACvG,MAAM,gCAAgC,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BlD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ChannelMixerEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applyChannelMixerEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<ChannelMixerEffect>): void;
3
+ export declare const defaultWgpuChannelMixerEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuChannelMixerEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuChannelMixerEffect.d.ts","sourceRoot":"","sources":["../src/wgpuChannelMixerEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMrH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACnC,IAAI,CAON;AAED,eAAO,MAAM,mCAAmC,EAAE,sBAEjD,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // Channel mixer: apply a 3x4 row-major RGB->RGB matrix plus per-row offset. The matrix is uploaded as
4
+ // three vec4f rows (r/g/b), each 16-byte aligned, so the std140 layout maps a row directly onto a slot.
5
+ export function applyChannelMixerEffectToWgpu(state, source, dest, effect) {
6
+ const matrix = new Float32Array(12);
7
+ for (let i = 0; i < 12; i++)
8
+ matrix[i] = effect.matrix[i] ?? IDENTITY_CHANNEL_MIXER[i];
9
+ const pipeline = getWgpuEffectPipeline(state, 'colorGrade.channelMixer', CHANNEL_MIXER_FRAGMENT_WGSL, 'replace');
10
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
11
+ for (let i = 0; i < 12; i++)
12
+ f32[i] = matrix[i];
13
+ });
14
+ }
15
+ export const defaultWgpuChannelMixerEffectRunner = (ctx, effect) => {
16
+ applyChannelMixerEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
17
+ };
18
+ const IDENTITY_CHANNEL_MIXER = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0];
19
+ // Slot layout: three vec4f rows, each 16-byte aligned — [0..3]=row r, [4..7]=row g, [8..11]=row b.
20
+ const CHANNEL_MIXER_FRAGMENT_WGSL = /* wgsl */ `
21
+ struct Uniforms { u_row_r : vec4f, u_row_g : vec4f, u_row_b : vec4f, }
22
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
23
+ @group(1) @binding(0) var tex : texture_2d<f32>;
24
+ @group(1) @binding(1) var smp : sampler;
25
+
26
+ @fragment
27
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
28
+ let c = textureSampleLevel(tex, smp, uv, 0.0);
29
+ let r = uni.u_row_r.x * c.r + uni.u_row_r.y * c.g + uni.u_row_r.z * c.b + uni.u_row_r.w;
30
+ let g = uni.u_row_g.x * c.r + uni.u_row_g.y * c.g + uni.u_row_g.z * c.b + uni.u_row_g.w;
31
+ let b = uni.u_row_b.x * c.r + uni.u_row_b.y * c.g + uni.u_row_b.z * c.b + uni.u_row_b.w;
32
+ return vec4f(clamp(vec3f(r, g, b), vec3f(0.0), vec3f(1.0)), c.a);
33
+ }`;
34
+ //# sourceMappingURL=wgpuChannelMixerEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuChannelMixerEffect.js","sourceRoot":"","sources":["../src/wgpuChannelMixerEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,sGAAsG;AACtG,wGAAwG;AACxG,MAAM,UAAU,6BAA6B,CAC3C,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAoC;IAEpC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,SAAS,CAAC,CAAC;IACjH,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,mCAAmC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACzF,6BAA6B,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAA4B,CAAC,CAAC;AAC/F,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEvF,mGAAmG;AACnG,MAAM,2BAA2B,GAAG,UAAU,CAAC;;;;;;;;;;;;;EAa7C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ChromaticAberrationEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applyChromaticAberrationEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<ChromaticAberrationEffect>): void;
3
+ export declare const defaultWgpuChromaticAberrationEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuChromaticAberrationEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuChromaticAberrationEffect.d.ts","sourceRoot":"","sources":["../src/wgpuChromaticAberrationEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAOzB,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAC1C,IAAI,CAaN;AAED,eAAO,MAAM,0CAA0C,EAAE,sBAExD,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // Chromatic aberration: sample the R/G/B channels at progressively larger offsets so colors fringe
4
+ // apart. When radial, the offset scales with distance from the optical center (true lens behavior);
5
+ // otherwise it is a uniform horizontal split.
6
+ export function applyChromaticAberrationEffectToWgpu(state, source, dest, effect) {
7
+ const intensity = effect.intensity ?? 0.005;
8
+ const radial = effect.radial ?? true;
9
+ const pipeline = getWgpuEffectPipeline(state, 'lens.chromaticAberration', CHROMATIC_ABERRATION_FRAGMENT_WGSL, 'replace');
10
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
11
+ f32[0] = intensity;
12
+ f32[1] = radial ? 1 : 0;
13
+ });
14
+ }
15
+ export const defaultWgpuChromaticAberrationEffectRunner = (ctx, effect) => {
16
+ applyChromaticAberrationEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
17
+ };
18
+ // Slot layout: [0]=intensity, [1]=radial flag (1.0/0.0).
19
+ const CHROMATIC_ABERRATION_FRAGMENT_WGSL = /* wgsl */ `
20
+ struct Uniforms {
21
+ u_intensity : f32,
22
+ u_radial : f32,
23
+ }
24
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
25
+ @group(1) @binding(0) var tex : texture_2d<f32>;
26
+ @group(1) @binding(1) var smp : sampler;
27
+
28
+ @fragment
29
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
30
+ let centered = uv - vec2f(0.5);
31
+ let scale = mix(1.0, length(centered) * 2.0, uni.u_radial);
32
+ let dir = mix(vec2f(1.0, 0.0), normalize(centered + vec2f(1e-5)), uni.u_radial);
33
+ let offset = dir * uni.u_intensity * scale;
34
+ let r = textureSampleLevel(tex, smp, uv + offset, 0.0).r;
35
+ let g = textureSampleLevel(tex, smp, uv, 0.0).g;
36
+ let b = textureSampleLevel(tex, smp, uv - offset, 0.0).b;
37
+ let a = textureSampleLevel(tex, smp, uv, 0.0).a;
38
+ return vec4f(r, g, b, a);
39
+ }`;
40
+ //# sourceMappingURL=wgpuChromaticAberrationEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuChromaticAberrationEffect.js","sourceRoot":"","sources":["../src/wgpuChromaticAberrationEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAQ5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,mGAAmG;AACnG,oGAAoG;AACpG,8CAA8C;AAC9C,MAAM,UAAU,oCAAoC,CAClD,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA2C;IAE3C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;IACrC,MAAM,QAAQ,GAAG,qBAAqB,CACpC,KAAK,EACL,0BAA0B,EAC1B,kCAAkC,EAClC,SAAS,CACV,CAAC;IACF,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,0CAA0C,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAChG,oCAAoC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAmC,CAAC,CAAC;AAC7G,CAAC,CAAC;AAEF,yDAAyD;AACzD,MAAM,kCAAkC,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;EAoBpD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ColorGradeEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applyColorGradeEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<ColorGradeEffect>): void;
3
+ export declare const defaultWgpuColorGradeEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuColorGradeEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuColorGradeEffect.d.ts","sourceRoot":"","sources":["../src/wgpuColorGradeEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAKnH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,IAAI,CAgBN;AAED,eAAO,MAAM,iCAAiC,EAAE,sBAE/C,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // Color grade: combined exposure, brightness, contrast, saturation, and temperature/tint shift.
4
+ export function applyColorGradeEffectToWgpu(state, source, dest, effect) {
5
+ const exposure = Math.pow(2, effect.exposure ?? 0);
6
+ const contrast = effect.contrast ?? 1;
7
+ const saturation = effect.saturation ?? 1;
8
+ const temperature = effect.temperature ?? 0;
9
+ const tint = effect.tint ?? 0;
10
+ const brightness = effect.brightness ?? 0;
11
+ const pipeline = getWgpuEffectPipeline(state, 'colorGrade.colorGrade', COLOR_GRADE_FRAGMENT_WGSL, 'replace');
12
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
13
+ f32[0] = exposure;
14
+ f32[1] = contrast;
15
+ f32[2] = saturation;
16
+ f32[3] = temperature;
17
+ f32[4] = tint;
18
+ f32[5] = brightness;
19
+ });
20
+ }
21
+ export const defaultWgpuColorGradeEffectRunner = (ctx, effect) => {
22
+ applyColorGradeEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
23
+ };
24
+ // Slot layout: [0]=exposure, [1]=contrast, [2]=saturation, [3]=temperature, [4]=tint, [5]=brightness.
25
+ const COLOR_GRADE_FRAGMENT_WGSL = /* wgsl */ `
26
+ struct Uniforms {
27
+ u_exposure : f32,
28
+ u_contrast : f32,
29
+ u_saturation : f32,
30
+ u_temperature : f32,
31
+ u_tint : f32,
32
+ u_brightness : f32,
33
+ _pad0 : f32,
34
+ _pad1 : f32,
35
+ }
36
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
37
+ @group(1) @binding(0) var tex : texture_2d<f32>;
38
+ @group(1) @binding(1) var smp : sampler;
39
+
40
+ @fragment
41
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
42
+ let c = textureSampleLevel(tex, smp, uv, 0.0);
43
+ var rgb = c.rgb * uni.u_exposure + uni.u_brightness;
44
+ rgb.r += uni.u_temperature * 0.5;
45
+ rgb.b -= uni.u_temperature * 0.5;
46
+ rgb.g += uni.u_tint * 0.5;
47
+ let l = dot(rgb, vec3f(0.2126, 0.7152, 0.0722));
48
+ rgb = mix(vec3f(l), rgb, uni.u_saturation);
49
+ rgb = (rgb - 0.5) * uni.u_contrast + 0.5;
50
+ return vec4f(clamp(rgb, vec3f(0.0), vec3f(1.0)), c.a);
51
+ }`;
52
+ //# sourceMappingURL=wgpuColorGradeEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuColorGradeEffect.js","sourceRoot":"","sources":["../src/wgpuColorGradeEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,gGAAgG;AAChG,MAAM,UAAU,2BAA2B,CACzC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAkC;IAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,SAAS,CAAC,CAAC;IAC7G,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAClB,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAClB,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;QACpB,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;QACrB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACd,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,iCAAiC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACvF,2BAA2B,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAA0B,CAAC,CAAC;AAC3F,CAAC,CAAC;AAEF,sGAAsG;AACtG,MAAM,yBAAyB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EA0B3C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CrtEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applyCrtEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<CrtEffect>): void;
3
+ export declare const defaultWgpuCrtEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuCrtEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuCrtEffect.d.ts","sourceRoot":"","sources":["../src/wgpuCrtEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAM5G,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,GAC1B,IAAI,CAcN;AAED,eAAO,MAAM,0BAA0B,EAAE,sBAExC,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // CRT: barrel-distort the uv (curvature), darken alternating scanlines, vignette the edges, and split
4
+ // the channels outward (chromatic aberration) for a tube-monitor look.
5
+ export function applyCrtEffectToWgpu(state, source, dest, effect) {
6
+ const curvature = effect.curvature ?? 0.1;
7
+ const scanlineIntensity = effect.scanlineIntensity ?? 0.3;
8
+ const vignette = effect.vignette ?? 0.3;
9
+ const aberration = effect.aberration ?? 0.005;
10
+ const pipeline = getWgpuEffectPipeline(state, 'stylization.crt', CRT_FRAGMENT_WGSL, 'replace');
11
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
12
+ f32[0] = curvature;
13
+ f32[1] = scanlineIntensity;
14
+ f32[2] = vignette;
15
+ f32[3] = aberration;
16
+ f32[4] = source.width;
17
+ f32[5] = source.height;
18
+ });
19
+ }
20
+ export const defaultWgpuCrtEffectRunner = (ctx, effect) => {
21
+ applyCrtEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
22
+ };
23
+ // Slot layout: [0]=curvature, [1]=scanlineIntensity, [2]=vignette, [3]=aberration, [4..5]=resolution.
24
+ const CRT_FRAGMENT_WGSL = /* wgsl */ `
25
+ struct Uniforms {
26
+ u_curvature : f32,
27
+ u_scanlineIntensity : f32,
28
+ u_vignette : f32,
29
+ u_aberration : f32,
30
+ u_resolution : vec2f,
31
+ }
32
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
33
+ @group(1) @binding(0) var tex : texture_2d<f32>;
34
+ @group(1) @binding(1) var smp : sampler;
35
+
36
+ fn barrel(uv : vec2f) -> vec2f {
37
+ var c = uv * 2.0 - 1.0;
38
+ c += c * uni.u_curvature * dot(c, c);
39
+ return c * 0.5 + 0.5;
40
+ }
41
+
42
+ @fragment
43
+ fn fs_main(@location(0) uvIn : vec2f) -> @location(0) vec4f {
44
+ let uv = barrel(uvIn);
45
+ if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {
46
+ return vec4f(0.0, 0.0, 0.0, 1.0);
47
+ }
48
+ let off = vec2f(uni.u_aberration, 0.0);
49
+ let r = textureSampleLevel(tex, smp, uv + off, 0.0).r;
50
+ let g = textureSampleLevel(tex, smp, uv, 0.0).g;
51
+ let b = textureSampleLevel(tex, smp, uv - off, 0.0).b;
52
+ let a = textureSampleLevel(tex, smp, uv, 0.0).a;
53
+ var col = vec3f(r, g, b);
54
+ let line = sin(uv.y * uni.u_resolution.y * 3.14159265) * 0.5 + 0.5;
55
+ col *= 1.0 - uni.u_scanlineIntensity * (1.0 - line);
56
+ let vc = uv * 2.0 - 1.0;
57
+ col *= 1.0 - uni.u_vignette * dot(vc, vc);
58
+ return vec4f(col, a);
59
+ }`;
60
+ //# sourceMappingURL=wgpuCrtEffect.js.map