@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 @@
1
+ {"version":3,"file":"wgpuRenderEffectRegistrants.js","sourceRoot":"","sources":["../src/wgpuRenderEffectRegistrants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { WgpuRenderEffectRunner, WgpuRenderState } from '@flighthq/types';
2
+ export declare function getWgpuRenderEffectRunner(state: WgpuRenderState, kind: string): WgpuRenderEffectRunner | null;
3
+ export declare function hasWgpuRenderEffectRunner(state: WgpuRenderState, kind: string): boolean;
4
+ export declare function registerWgpuRenderEffect(state: WgpuRenderState, kind: string, runner: WgpuRenderEffectRunner): void;
5
+ //# sourceMappingURL=wgpuRenderEffectRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuRenderEffectRegistry.d.ts","sourceRoot":"","sources":["../src/wgpuRenderEffectRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAQ/E,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAE7G;AAMD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAOnH"}
@@ -0,0 +1,25 @@
1
+ // Per-state registry mapping an effect `kind` string to its Wgpu runner — the material-renderer
2
+ // pattern one tier up. Registration is opt-in (import a runner only to register it) and dispatch is a
3
+ // Map lookup, so there is no monolithic switch and unused effect recipes tree-shake away. Register an
4
+ // alternative runner under the same key to swap algorithms. The Wgpu mirror of the effects-gl
5
+ // renderEffectRegistry — the same agnostic RenderEffect[] drives both backends through their registries.
6
+ export function getWgpuRenderEffectRunner(state, kind) {
7
+ return _registries.get(state)?.get(kind) ?? null;
8
+ }
9
+ // Returns true if a runner is registered for the given kind in this state. Symmetric with
10
+ // hasGlRenderEffectRunner. Use to validate an effect chain before dispatching — the pipeline
11
+ // silently skips unregistered kinds; check up front to apply your own policy (warn, filter)
12
+ // rather than relying on silent no-ops.
13
+ export function hasWgpuRenderEffectRunner(state, kind) {
14
+ return _registries.get(state)?.has(kind) ?? false;
15
+ }
16
+ export function registerWgpuRenderEffect(state, kind, runner) {
17
+ let registry = _registries.get(state);
18
+ if (registry === undefined) {
19
+ registry = new Map();
20
+ _registries.set(state, registry);
21
+ }
22
+ registry.set(kind, runner);
23
+ }
24
+ const _registries = new WeakMap();
25
+ //# sourceMappingURL=wgpuRenderEffectRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuRenderEffectRegistry.js","sourceRoot":"","sources":["../src/wgpuRenderEffectRegistry.ts"],"names":[],"mappings":"AAEA,gGAAgG;AAChG,sGAAsG;AACtG,sGAAsG;AACtG,8FAA8F;AAC9F,yGAAyG;AAEzG,MAAM,UAAU,yBAAyB,CAAC,KAAsB,EAAE,IAAY;IAC5E,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACnD,CAAC;AAED,0FAA0F;AAC1F,6FAA6F;AAC7F,4FAA4F;AAC5F,wCAAwC;AACxC,MAAM,UAAU,yBAAyB,CAAC,KAAsB,EAAE,IAAY;IAC5E,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAsB,EAAE,IAAY,EAAE,MAA8B;IAC3G,IAAI,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QACrB,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,OAAO,EAAwD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ScanlinesEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applyScanlinesEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<ScanlinesEffect>): void;
3
+ export declare const defaultWgpuScanlinesEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuScanlinesEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuScanlinesEffect.d.ts","sourceRoot":"","sources":["../src/wgpuScanlinesEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAKlH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAChC,IAAI,CAQN;AAED,eAAO,MAAM,gCAAgC,EAAE,sBAE9C,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // Scanlines: darken by a vertical sine band; `count` sets the line density, `intensity` the darkening.
4
+ export function applyScanlinesEffectToWgpu(state, source, dest, effect) {
5
+ const count = effect.count ?? 240;
6
+ const intensity = effect.intensity ?? 0.3;
7
+ const pipeline = getWgpuEffectPipeline(state, 'stylization.scanlines', SCANLINES_FRAGMENT_WGSL, 'replace');
8
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
9
+ f32[0] = count;
10
+ f32[1] = intensity;
11
+ });
12
+ }
13
+ export const defaultWgpuScanlinesEffectRunner = (ctx, effect) => {
14
+ applyScanlinesEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
15
+ };
16
+ // Slot layout: [0]=count, [1]=intensity.
17
+ const SCANLINES_FRAGMENT_WGSL = /* wgsl */ `
18
+ struct Uniforms {
19
+ u_count : f32,
20
+ u_intensity : f32,
21
+ }
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 line = sin(uv.y * uni.u_count * 3.14159265) * 0.5 + 0.5;
30
+ return vec4f(c.rgb * (1.0 - uni.u_intensity * (1.0 - line)), c.a);
31
+ }`;
32
+ //# sourceMappingURL=wgpuScanlinesEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuScanlinesEffect.js","sourceRoot":"","sources":["../src/wgpuScanlinesEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,uGAAuG;AACvG,MAAM,UAAU,0BAA0B,CACxC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAiC;IAEjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;IAClC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;IAC1C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,SAAS,CAAC,CAAC;IAC3G,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACf,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,gCAAgC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACtF,0BAA0B,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAyB,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF,yCAAyC;AACzC,MAAM,uBAAuB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;EAczC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ScreenSpaceFogEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applyScreenSpaceFogEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<ScreenSpaceFogEffect>): void;
3
+ export declare const defaultWgpuScreenSpaceFogEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuScreenSpaceFogEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuScreenSpaceFogEffect.d.ts","sourceRoot":"","sources":["../src/wgpuScreenSpaceFogEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AASvH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACrC,IAAI,CAkBN;AAED,eAAO,MAAM,qCAAqC,EAAE,sBAEnD,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // Screen-space fog: blends the scene toward an unpacked fog color by a depth proxy. The real recipe
4
+ // reads a sampleable DEPTH texture per fragment — fog = 1 - exp(-density * remap(depth, near, far)) — but
5
+ // Wgpu has no depth G-buffer yet, so this color-only fallback uses the screen-Y gradient as the proxy
6
+ // (bottom of frame reads as "far"). near/far are reserved for the depth-driven recipe; density scales
7
+ // the proxy. color is a packed RGBA int unpacked to 0..1 floats on the JS side.
8
+ export function applyScreenSpaceFogEffectToWgpu(state, source, dest, effect) {
9
+ const packed = effect.color ?? 0xc8d2dcff;
10
+ const r = ((packed >>> 24) & 0xff) / 255;
11
+ const g = ((packed >>> 16) & 0xff) / 255;
12
+ const b = ((packed >>> 8) & 0xff) / 255;
13
+ const density = effect.density ?? 1;
14
+ const pipeline = getWgpuEffectPipeline(state, 'atmospheric.screenSpaceFog', SCREEN_SPACE_FOG_FRAGMENT_WGSL, 'replace');
15
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
16
+ f32[0] = density;
17
+ f32[4] = r;
18
+ f32[5] = g;
19
+ f32[6] = b;
20
+ });
21
+ }
22
+ export const defaultWgpuScreenSpaceFogEffectRunner = (ctx, effect) => {
23
+ applyScreenSpaceFogEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
24
+ };
25
+ // Slot layout: [0]=density, [1..3]=pad, [4..6]=fog color rgb. The std140-style struct aligns the vec3
26
+ // color to a 16-byte boundary, so the JS writes skip slots [1..3].
27
+ const SCREEN_SPACE_FOG_FRAGMENT_WGSL = /* wgsl */ `
28
+ struct Uniforms {
29
+ u_density : f32,
30
+ _pad0 : f32,
31
+ _pad1 : f32,
32
+ _pad2 : f32,
33
+ u_fogColor : vec3f,
34
+ }
35
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
36
+ @group(1) @binding(0) var tex : texture_2d<f32>;
37
+ @group(1) @binding(1) var smp : sampler;
38
+
39
+ @fragment
40
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
41
+ let c = textureSampleLevel(tex, smp, uv, 0.0);
42
+ // Color-only fallback: no depth G-buffer in Wgpu yet — screen-Y gradient as a depth proxy.
43
+ // The real version reads depth and computes fog = 1 - exp(-density * remap(depth, near, far)).
44
+ let fog = clamp((1.0 - uv.y) * uni.u_density, 0.0, 1.0);
45
+ return vec4f(mix(c.rgb, uni.u_fogColor, fog), c.a);
46
+ }`;
47
+ //# sourceMappingURL=wgpuScreenSpaceFogEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuScreenSpaceFogEffect.js","sourceRoot":"","sources":["../src/wgpuScreenSpaceFogEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,oGAAoG;AACpG,0GAA0G;AAC1G,sGAAsG;AACtG,sGAAsG;AACtG,gFAAgF;AAChF,MAAM,UAAU,+BAA+B,CAC7C,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAsC;IAEtC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACzC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACzC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,qBAAqB,CACpC,KAAK,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,SAAS,CACV,CAAC;IACF,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,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,qCAAqC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAC3F,+BAA+B,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAA8B,CAAC,CAAC;AACnG,CAAC,CAAC;AAEF,sGAAsG;AACtG,mEAAmE;AACnE,MAAM,8BAA8B,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;EAmBhD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SepiaEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applySepiaEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<SepiaEffect>): void;
3
+ export declare const defaultWgpuSepiaEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuSepiaEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuSepiaEffect.d.ts","sourceRoot":"","sources":["../src/wgpuSepiaEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAK9G,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC5B,IAAI,CAMN;AAED,eAAO,MAAM,4BAA4B,EAAE,sBAE1C,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // Sepia: mix toward a sepia matrix transform by intensity.
4
+ export function applySepiaEffectToWgpu(state, source, dest, effect) {
5
+ const intensity = effect.intensity ?? 1;
6
+ const pipeline = getWgpuEffectPipeline(state, 'colorGrade.sepia', SEPIA_FRAGMENT_WGSL, 'replace');
7
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
8
+ f32[0] = intensity;
9
+ });
10
+ }
11
+ export const defaultWgpuSepiaEffectRunner = (ctx, effect) => {
12
+ applySepiaEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
13
+ };
14
+ // Slot layout: [0]=intensity.
15
+ const SEPIA_FRAGMENT_WGSL = /* wgsl */ `
16
+ struct Uniforms { u_intensity : f32, _pad0 : f32, _pad1 : f32, _pad2 : f32, }
17
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
18
+ @group(1) @binding(0) var tex : texture_2d<f32>;
19
+ @group(1) @binding(1) var smp : sampler;
20
+
21
+ @fragment
22
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
23
+ let c = textureSampleLevel(tex, smp, uv, 0.0);
24
+ let sepia = vec3f(
25
+ dot(c.rgb, vec3f(0.393, 0.769, 0.189)),
26
+ dot(c.rgb, vec3f(0.349, 0.686, 0.168)),
27
+ dot(c.rgb, vec3f(0.272, 0.534, 0.131))
28
+ );
29
+ return vec4f(mix(c.rgb, sepia, uni.u_intensity), c.a);
30
+ }`;
31
+ //# sourceMappingURL=wgpuSepiaEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuSepiaEffect.js","sourceRoot":"","sources":["../src/wgpuSepiaEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,2DAA2D;AAC3D,MAAM,UAAU,sBAAsB,CACpC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA6B;IAE7B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;IAClG,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,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,MAAqB,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF,8BAA8B;AAC9B,MAAM,mBAAmB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;EAerC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SharpenEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applySharpenEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<SharpenEffect>): void;
3
+ export declare const defaultWgpuSharpenEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuSharpenEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuSharpenEffect.d.ts","sourceRoot":"","sources":["../src/wgpuSharpenEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAKhH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC9B,IAAI,CASN;AAED,eAAO,MAAM,8BAA8B,EAAE,sBAE5C,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // Sharpen: unsharp mask via a 3x3 Laplacian kernel; `amount` scales the high-frequency boost.
4
+ export function applySharpenEffectToWgpu(state, source, dest, effect) {
5
+ const amount = effect.amount ?? 0.5;
6
+ const pipeline = getWgpuEffectPipeline(state, 'stylization.sharpen', SHARPEN_FRAGMENT_WGSL, 'replace');
7
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
8
+ f32[0] = amount;
9
+ // u_resolution (vec2f) aligns to slot [2].
10
+ f32[2] = source.width;
11
+ f32[3] = source.height;
12
+ });
13
+ }
14
+ export const defaultWgpuSharpenEffectRunner = (ctx, effect) => {
15
+ applySharpenEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
16
+ };
17
+ // Slot layout: [0]=amount, [1]=pad, [2..3]=resolution.
18
+ const SHARPEN_FRAGMENT_WGSL = /* wgsl */ `
19
+ struct Uniforms {
20
+ u_amount : f32,
21
+ _pad0 : f32,
22
+ u_resolution : vec2f,
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 texel = 1.0 / uni.u_resolution;
31
+ let c = textureSampleLevel(tex, smp, uv, 0.0).rgb;
32
+ let n = textureSampleLevel(tex, smp, uv + vec2f(0.0, -texel.y), 0.0).rgb;
33
+ let s = textureSampleLevel(tex, smp, uv + vec2f(0.0, texel.y), 0.0).rgb;
34
+ let e = textureSampleLevel(tex, smp, uv + vec2f(texel.x, 0.0), 0.0).rgb;
35
+ let w = textureSampleLevel(tex, smp, uv + vec2f(-texel.x, 0.0), 0.0).rgb;
36
+ let high = c * 4.0 - n - s - e - w;
37
+ let a = textureSampleLevel(tex, smp, uv, 0.0).a;
38
+ return vec4f(clamp(c + high * uni.u_amount, vec3f(0.0), vec3f(1.0)), a);
39
+ }`;
40
+ //# sourceMappingURL=wgpuSharpenEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuSharpenEffect.js","sourceRoot":"","sources":["../src/wgpuSharpenEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,8FAA8F;AAC9F,MAAM,UAAU,wBAAwB,CACtC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA+B;IAE/B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;IACpC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,SAAS,CAAC,CAAC;IACvG,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAChB,2CAA2C;QAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACtB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,8BAA8B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACpF,wBAAwB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAuB,CAAC,CAAC;AACrF,CAAC,CAAC;AAEF,uDAAuD;AACvD,MAAM,qBAAqB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;EAqBvC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SketchEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applySketchEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<SketchEffect>): void;
3
+ export declare const defaultWgpuSketchEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuSketchEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuSketchEffect.d.ts","sourceRoot":"","sources":["../src/wgpuSketchEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAM/G,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,IAAI,CASN;AAED,eAAO,MAAM,6BAA6B,EAAE,sBAE3C,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // Sketch: detect luminance edges and invert them into dark pencil strokes over a light page; `strength`
4
+ // scales how dark the strokes get.
5
+ export function applySketchEffectToWgpu(state, source, dest, effect) {
6
+ const strength = effect.strength ?? 1;
7
+ const pipeline = getWgpuEffectPipeline(state, 'stylization.sketch', SKETCH_FRAGMENT_WGSL, 'replace');
8
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
9
+ f32[0] = strength;
10
+ // u_resolution (vec2f) aligns to slot [2].
11
+ f32[2] = source.width;
12
+ f32[3] = source.height;
13
+ });
14
+ }
15
+ export const defaultWgpuSketchEffectRunner = (ctx, effect) => {
16
+ applySketchEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
17
+ };
18
+ // Slot layout: [0]=strength, [1]=pad, [2..3]=resolution.
19
+ const SKETCH_FRAGMENT_WGSL = /* wgsl */ `
20
+ struct Uniforms {
21
+ u_strength : f32,
22
+ _pad0 : f32,
23
+ u_resolution : vec2f,
24
+ }
25
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
26
+ @group(1) @binding(0) var tex : texture_2d<f32>;
27
+ @group(1) @binding(1) var smp : sampler;
28
+
29
+ fn lum(uv : vec2f) -> f32 {
30
+ return dot(textureSampleLevel(tex, smp, uv, 0.0).rgb, vec3f(0.2126, 0.7152, 0.0722));
31
+ }
32
+
33
+ @fragment
34
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
35
+ let texel = 1.0 / uni.u_resolution;
36
+ let tl = lum(uv + texel * vec2f(-1.0, -1.0));
37
+ let t = lum(uv + texel * vec2f(0.0, -1.0));
38
+ let tr = lum(uv + texel * vec2f(1.0, -1.0));
39
+ let l = lum(uv + texel * vec2f(-1.0, 0.0));
40
+ let rr = lum(uv + texel * vec2f(1.0, 0.0));
41
+ let bl = lum(uv + texel * vec2f(-1.0, 1.0));
42
+ let b = lum(uv + texel * vec2f(0.0, 1.0));
43
+ let br = lum(uv + texel * vec2f(1.0, 1.0));
44
+ let gx = -tl - 2.0 * l - bl + tr + 2.0 * rr + br;
45
+ let gy = -tl - 2.0 * t - tr + bl + 2.0 * b + br;
46
+ let edge = sqrt(gx * gx + gy * gy);
47
+ let pencil = clamp(1.0 - edge * uni.u_strength, 0.0, 1.0);
48
+ let a = textureSampleLevel(tex, smp, uv, 0.0).a;
49
+ return vec4f(vec3f(pencil), a);
50
+ }`;
51
+ //# sourceMappingURL=wgpuSketchEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuSketchEffect.js","sourceRoot":"","sources":["../src/wgpuSketchEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,wGAAwG;AACxG,mCAAmC;AACnC,MAAM,UAAU,uBAAuB,CACrC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA8B;IAE9B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;IACrG,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAClB,2CAA2C;QAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACtB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,6BAA6B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACnF,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAsB,CAAC,CAAC;AACnF,CAAC,CAAC;AAEF,yDAAyD;AACzD,MAAM,oBAAoB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BtC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SmaaEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applySmaaEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<SmaaEffect>): void;
3
+ export declare const defaultWgpuSmaaEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuSmaaEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuSmaaEffect.d.ts","sourceRoot":"","sources":["../src/wgpuSmaaEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAO7G,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAC3B,IAAI,CAUN;AAED,eAAO,MAAM,2BAA2B,EAAE,sBAEzC,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // SMAA: a single-pass edge-aware blur approximation. Full SMAA needs separate edge-detection and
4
+ // blend-weight passes against precomputed area/search lookup textures; this single-pass approximation
5
+ // softens detected edges only and is acceptable until the multi-pass recipe lands.
6
+ export function applySmaaEffectToWgpu(state, source, dest, effect) {
7
+ const threshold = effect.threshold ?? 0.1;
8
+ const width = source.width;
9
+ const height = source.height;
10
+ const pipeline = getWgpuEffectPipeline(state, 'antialiasing.smaa', SMAA_FRAGMENT_WGSL, 'replace');
11
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
12
+ f32[0] = width;
13
+ f32[1] = height;
14
+ f32[2] = threshold;
15
+ });
16
+ }
17
+ export const defaultWgpuSmaaEffectRunner = (ctx, effect) => {
18
+ applySmaaEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
19
+ };
20
+ // Slots [0..1]=resolution (vec2f), [2]=threshold; the trailing scalar fits in the same 16-byte block.
21
+ const SMAA_FRAGMENT_WGSL = /* wgsl */ `
22
+ struct Uniforms { u_resolution : vec2f, u_threshold : f32, _pad0 : f32, }
23
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
24
+ @group(1) @binding(0) var tex : texture_2d<f32>;
25
+ @group(1) @binding(1) var smp : sampler;
26
+
27
+ fn luma(c : vec3f) -> f32 {
28
+ return dot(c, vec3f(0.299, 0.587, 0.114));
29
+ }
30
+
31
+ @fragment
32
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
33
+ let texel = 1.0 / uni.u_resolution;
34
+ let center = textureSampleLevel(tex, smp, uv, 0.0);
35
+ let lumaC = luma(center.rgb);
36
+ let lumaL = luma(textureSampleLevel(tex, smp, uv + vec2f(-1.0, 0.0) * texel, 0.0).rgb);
37
+ let lumaR = luma(textureSampleLevel(tex, smp, uv + vec2f(1.0, 0.0) * texel, 0.0).rgb);
38
+ let lumaT = luma(textureSampleLevel(tex, smp, uv + vec2f(0.0, -1.0) * texel, 0.0).rgb);
39
+ let lumaB = luma(textureSampleLevel(tex, smp, uv + vec2f(0.0, 1.0) * texel, 0.0).rgb);
40
+ let edge = max(abs(lumaC - lumaL), max(abs(lumaC - lumaR), max(abs(lumaC - lumaT), abs(lumaC - lumaB))));
41
+ if (edge < uni.u_threshold) {
42
+ return center;
43
+ }
44
+ let blurred = (
45
+ textureSampleLevel(tex, smp, uv + vec2f(-1.0, 0.0) * texel, 0.0).rgb +
46
+ textureSampleLevel(tex, smp, uv + vec2f(1.0, 0.0) * texel, 0.0).rgb +
47
+ textureSampleLevel(tex, smp, uv + vec2f(0.0, -1.0) * texel, 0.0).rgb +
48
+ textureSampleLevel(tex, smp, uv + vec2f(0.0, 1.0) * texel, 0.0).rgb +
49
+ center.rgb) / 5.0;
50
+ return vec4f(blurred, center.a);
51
+ }`;
52
+ //# sourceMappingURL=wgpuSmaaEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuSmaaEffect.js","sourceRoot":"","sources":["../src/wgpuSmaaEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,iGAAiG;AACjG,sGAAsG;AACtG,mFAAmF;AACnF,MAAM,UAAU,qBAAqB,CACnC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA4B;IAE5B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;IAClG,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACf,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAChB,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACjF,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAoB,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,sGAAsG;AACtG,MAAM,kBAAkB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BpC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SsaoEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applySsaoEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<SsaoEffect>): void;
3
+ export declare const defaultWgpuSsaoEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuSsaoEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuSsaoEffect.d.ts","sourceRoot":"","sources":["../src/wgpuSsaoEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAS7G,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAC3B,IAAI,CAUN;AAED,eAAO,MAAM,2BAA2B,EAAE,sBAEzC,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // SSAO: ambient-occlusion approximation. Real SSAO reconstructs view-space position/normals from a
4
+ // sampleable DEPTH texture and accumulates occlusion over `samples` kernel offsets within `radius`,
5
+ // gated by `bias`; Wgpu has no depth G-buffer yet, so none of that data exists. This stand-in darkens
6
+ // fragments by local luminance variation (high-contrast neighborhoods read as creases/contact) scaled
7
+ // by intensity, sampling neighbors via u_resolution-derived texel steps.
8
+ export function applySsaoEffectToWgpu(state, source, dest, effect) {
9
+ const radius = effect.radius ?? 1;
10
+ const intensity = effect.intensity ?? 1;
11
+ const pipeline = getWgpuEffectPipeline(state, 'atmospheric.ssao', SSAO_FRAGMENT_WGSL, 'replace');
12
+ drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
13
+ f32[0] = radius;
14
+ f32[1] = intensity;
15
+ f32[2] = source.width;
16
+ f32[3] = source.height;
17
+ });
18
+ }
19
+ export const defaultWgpuSsaoEffectRunner = (ctx, effect) => {
20
+ applySsaoEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
21
+ };
22
+ // Slot layout: [0]=radius, [1]=intensity, [2]=resolution.x, [3]=resolution.y.
23
+ const SSAO_FRAGMENT_WGSL = /* wgsl */ `
24
+ struct Uniforms {
25
+ u_radius : f32,
26
+ u_intensity : f32,
27
+ u_resolution : vec2f,
28
+ }
29
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
30
+ @group(1) @binding(0) var tex : texture_2d<f32>;
31
+ @group(1) @binding(1) var smp : sampler;
32
+
33
+ fn luma(c : vec3f) -> f32 {
34
+ return dot(c, vec3f(0.299, 0.587, 0.114));
35
+ }
36
+
37
+ @fragment
38
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
39
+ let texel = (1.0 / uni.u_resolution) * max(uni.u_radius, 1.0);
40
+ let center = textureSampleLevel(tex, smp, uv, 0.0);
41
+ let lc = luma(center.rgb);
42
+ var variation = 0.0;
43
+ variation = variation + abs(lc - luma(textureSampleLevel(tex, smp, uv + vec2f(-1.0, 0.0) * texel, 0.0).rgb));
44
+ variation = variation + abs(lc - luma(textureSampleLevel(tex, smp, uv + vec2f(1.0, 0.0) * texel, 0.0).rgb));
45
+ variation = variation + abs(lc - luma(textureSampleLevel(tex, smp, uv + vec2f(0.0, -1.0) * texel, 0.0).rgb));
46
+ variation = variation + abs(lc - luma(textureSampleLevel(tex, smp, uv + vec2f(0.0, 1.0) * texel, 0.0).rgb));
47
+ variation = variation * 0.25;
48
+ let occlusion = clamp(variation * uni.u_intensity, 0.0, 1.0);
49
+ return vec4f(center.rgb * (1.0 - occlusion), center.a);
50
+ }`;
51
+ //# sourceMappingURL=wgpuSsaoEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuSsaoEffect.js","sourceRoot":"","sources":["../src/wgpuSsaoEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,mGAAmG;AACnG,oGAAoG;AACpG,sGAAsG;AACtG,sGAAsG;AACtG,yEAAyE;AACzE,MAAM,UAAU,qBAAqB,CACnC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA4B;IAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACjG,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAChB,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACtB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACjF,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAoB,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,kBAAkB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BpC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SsrEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applySsrEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<SsrEffect>): void;
3
+ export declare const defaultWgpuSsrEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuSsrEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuSsrEffect.d.ts","sourceRoot":"","sources":["../src/wgpuSsrEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAQ5G,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAEhC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,GAC1B,IAAI,CAGN;AAED,eAAO,MAAM,0BAA0B,EAAE,sBAExC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // SSR: screen-space reflections. The real recipe ray-marches reflected rays against a sampleable DEPTH
4
+ // buffer using view-space normals, walking `steps` increments up to `maxDistance` at the given
5
+ // `resolution`; Wgpu has neither depth nor a normals attachment yet, so this is a passthrough copy
6
+ // that preserves the pipeline stage. maxDistance/resolution/steps are reserved for the depth-driven recipe.
7
+ export function applySsrEffectToWgpu(state, source, dest,
8
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
+ effect) {
10
+ const pipeline = getWgpuEffectPipeline(state, 'atmospheric.ssr', SSR_FRAGMENT_WGSL, 'replace');
11
+ drawWgpuFilterPass(state, source, dest, pipeline, () => { });
12
+ }
13
+ export const defaultWgpuSsrEffectRunner = (ctx, effect) => {
14
+ applySsrEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
15
+ };
16
+ const SSR_FRAGMENT_WGSL = /* wgsl */ `
17
+ struct Uniforms {
18
+ _pad0 : vec4f,
19
+ }
20
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
21
+ @group(1) @binding(0) var tex : texture_2d<f32>;
22
+ @group(1) @binding(1) var smp : sampler;
23
+
24
+ @fragment
25
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
26
+ return textureSampleLevel(tex, smp, uv, 0.0);
27
+ }`;
28
+ //# sourceMappingURL=wgpuSsrEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuSsrEffect.js","sourceRoot":"","sources":["../src/wgpuSsrEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,uGAAuG;AACvG,+FAA+F;AAC/F,mGAAmG;AACnG,4GAA4G;AAC5G,MAAM,UAAU,oBAAoB,CAClC,KAAsB,EACtB,MAAkC,EAClC,IAAgC;AAChC,6DAA6D;AAC7D,MAA2B;IAE3B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAC/F,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAChF,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAmB,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,UAAU,CAAC;;;;;;;;;;;EAWnC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { TaaEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applyTaaEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, _effect: Readonly<TaaEffect>): void;
3
+ export declare const defaultWgpuTaaEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuTaaEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuTaaEffect.d.ts","sourceRoot":"","sources":["../src/wgpuTaaEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAO5G,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,GAC3B,IAAI,CAGN;AAED,eAAO,MAAM,0BAA0B,EAAE,sBAExC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
2
+ import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ // TAA: passthrough copy of source → dest. Real temporal AA needs a history buffer + motion vectors to
4
+ // reproject and accumulate prior frames; neither is available in the single-frame effect context, so
5
+ // this is a placeholder that preserves the pipeline stage without altering the image.
6
+ export function applyTaaEffectToWgpu(state, source, dest, _effect) {
7
+ const pipeline = getWgpuEffectPipeline(state, 'antialiasing.taa', TAA_FRAGMENT_WGSL, 'replace');
8
+ drawWgpuFilterPass(state, source, dest, pipeline, _noopSetUniforms);
9
+ }
10
+ export const defaultWgpuTaaEffectRunner = (ctx, effect) => {
11
+ applyTaaEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
12
+ };
13
+ function _noopSetUniforms() { }
14
+ // TAA has no parameters, but the filter pass always binds a uniform buffer at group(0); the struct is
15
+ // declared and read (× 1.0) so the binding stays live and the bind-group layout matches.
16
+ const TAA_FRAGMENT_WGSL = /* wgsl */ `
17
+ struct Uniforms { _pad0 : f32, _pad1 : f32, _pad2 : f32, _pad3 : f32, }
18
+ @group(0) @binding(0) var<uniform> uni : Uniforms;
19
+ @group(1) @binding(0) var tex : texture_2d<f32>;
20
+ @group(1) @binding(1) var smp : sampler;
21
+
22
+ @fragment
23
+ fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
24
+ let c = textureSampleLevel(tex, smp, uv, 0.0);
25
+ return vec4f(c.rgb, c.a + uni._pad0 * 0.0);
26
+ }`;
27
+ //# sourceMappingURL=wgpuTaaEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuTaaEffect.js","sourceRoot":"","sources":["../src/wgpuTaaEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,sGAAsG;AACtG,qGAAqG;AACrG,sFAAsF;AACtF,MAAM,UAAU,oBAAoB,CAClC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,OAA4B;IAE5B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAChG,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC9G,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAChF,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAmB,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEF,SAAS,gBAAgB,KAAU,CAAC;AAEpC,sGAAsG;AACtG,yFAAyF;AACzF,MAAM,iBAAiB,GAAG,UAAU,CAAC;;;;;;;;;;EAUnC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { TiltShiftEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
2
+ export declare function applyTiltShiftEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<TiltShiftEffect>): void;
3
+ export declare const defaultWgpuTiltShiftEffectRunner: WgpuRenderEffectRunner;
4
+ //# sourceMappingURL=wgpuTiltShiftEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuTiltShiftEffect.d.ts","sourceRoot":"","sources":["../src/wgpuTiltShiftEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOlH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAChC,IAAI,CAYN;AAED,eAAO,MAAM,gCAAgC,EAAE,sBAE9C,CAAC"}