@flighthq/effects-wgpu 0.1.0 → 0.2.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 (256) hide show
  1. package/dist/index.d.ts +17 -10
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +17 -10
  4. package/dist/index.js.map +1 -1
  5. package/dist/wgpuBevelEffect.d.ts +4 -0
  6. package/dist/wgpuBevelEffect.d.ts.map +1 -0
  7. package/dist/wgpuBevelEffect.js +122 -0
  8. package/dist/wgpuBevelEffect.js.map +1 -0
  9. package/dist/wgpuBloomEffect.d.ts.map +1 -1
  10. package/dist/wgpuBloomEffect.js +9 -8
  11. package/dist/wgpuBloomEffect.js.map +1 -1
  12. package/dist/wgpuBlurEffect.d.ts +8 -0
  13. package/dist/wgpuBlurEffect.d.ts.map +1 -0
  14. package/dist/wgpuBlurEffect.js +70 -0
  15. package/dist/wgpuBlurEffect.js.map +1 -0
  16. package/dist/wgpuBokehDepthOfFieldEffect.d.ts.map +1 -1
  17. package/dist/wgpuBokehDepthOfFieldEffect.js +2 -2
  18. package/dist/wgpuBokehDepthOfFieldEffect.js.map +1 -1
  19. package/dist/wgpuCameraMotionBlurEffect.d.ts.map +1 -1
  20. package/dist/wgpuCameraMotionBlurEffect.js +2 -2
  21. package/dist/wgpuCameraMotionBlurEffect.js.map +1 -1
  22. package/dist/wgpuChromaticAberrationEffect.d.ts.map +1 -1
  23. package/dist/wgpuChromaticAberrationEffect.js +2 -2
  24. package/dist/wgpuChromaticAberrationEffect.js.map +1 -1
  25. package/dist/wgpuColorLutPass.d.ts +3 -0
  26. package/dist/wgpuColorLutPass.d.ts.map +1 -0
  27. package/dist/wgpuColorLutPass.js +144 -0
  28. package/dist/wgpuColorLutPass.js.map +1 -0
  29. package/dist/wgpuColorMatrixPass.d.ts +3 -0
  30. package/dist/wgpuColorMatrixPass.d.ts.map +1 -0
  31. package/dist/wgpuColorMatrixPass.js +51 -0
  32. package/dist/wgpuColorMatrixPass.js.map +1 -0
  33. package/dist/wgpuConvolutionEffect.d.ts +5 -0
  34. package/dist/wgpuConvolutionEffect.d.ts.map +1 -0
  35. package/dist/wgpuConvolutionEffect.js +108 -0
  36. package/dist/wgpuConvolutionEffect.js.map +1 -0
  37. package/dist/wgpuCrtEffect.d.ts.map +1 -1
  38. package/dist/wgpuCrtEffect.js +2 -2
  39. package/dist/wgpuCrtEffect.js.map +1 -1
  40. package/dist/wgpuDirectionalBlurEffect.d.ts.map +1 -1
  41. package/dist/wgpuDirectionalBlurEffect.js +2 -2
  42. package/dist/wgpuDirectionalBlurEffect.js.map +1 -1
  43. package/dist/wgpuDisplacementEffect.d.ts.map +1 -1
  44. package/dist/wgpuDisplacementEffect.js +2 -2
  45. package/dist/wgpuDisplacementEffect.js.map +1 -1
  46. package/dist/wgpuDitherEffect.d.ts.map +1 -1
  47. package/dist/wgpuDitherEffect.js +2 -2
  48. package/dist/wgpuDitherEffect.js.map +1 -1
  49. package/dist/wgpuDropShadowEffect.d.ts +4 -0
  50. package/dist/wgpuDropShadowEffect.d.ts.map +1 -0
  51. package/dist/wgpuDropShadowEffect.js +49 -0
  52. package/dist/wgpuDropShadowEffect.js.map +1 -0
  53. package/dist/wgpuEffectBlitShader.d.ts +15 -0
  54. package/dist/wgpuEffectBlitShader.d.ts.map +1 -0
  55. package/dist/wgpuEffectBlitShader.js +71 -0
  56. package/dist/wgpuEffectBlitShader.js.map +1 -0
  57. package/dist/wgpuEffectBoxBlur.d.ts +14 -0
  58. package/dist/wgpuEffectBoxBlur.d.ts.map +1 -0
  59. package/dist/wgpuEffectBoxBlur.js +81 -0
  60. package/dist/wgpuEffectBoxBlur.js.map +1 -0
  61. package/dist/wgpuEffectGradientRamp.d.ts +17 -0
  62. package/dist/wgpuEffectGradientRamp.d.ts.map +1 -0
  63. package/dist/wgpuEffectGradientRamp.js +89 -0
  64. package/dist/wgpuEffectGradientRamp.js.map +1 -0
  65. package/dist/wgpuEffectPass.d.ts +41 -0
  66. package/dist/wgpuEffectPass.d.ts.map +1 -0
  67. package/dist/wgpuEffectPass.js +259 -0
  68. package/dist/wgpuEffectPass.js.map +1 -0
  69. package/dist/wgpuEffectProgramCache.d.ts +2 -2
  70. package/dist/wgpuEffectProgramCache.d.ts.map +1 -1
  71. package/dist/wgpuEffectProgramCache.js +5 -5
  72. package/dist/wgpuEffectProgramCache.js.map +1 -1
  73. package/dist/wgpuEffectTintShader.d.ts +8 -0
  74. package/dist/wgpuEffectTintShader.d.ts.map +1 -0
  75. package/dist/wgpuEffectTintShader.js +109 -0
  76. package/dist/wgpuEffectTintShader.js.map +1 -0
  77. package/dist/wgpuFilmGrainEffect.d.ts.map +1 -1
  78. package/dist/wgpuFilmGrainEffect.js +2 -2
  79. package/dist/wgpuFilmGrainEffect.js.map +1 -1
  80. package/dist/wgpuFxaaEffect.d.ts.map +1 -1
  81. package/dist/wgpuFxaaEffect.js +2 -2
  82. package/dist/wgpuFxaaEffect.js.map +1 -1
  83. package/dist/wgpuGlitchEffect.d.ts.map +1 -1
  84. package/dist/wgpuGlitchEffect.js +2 -2
  85. package/dist/wgpuGlitchEffect.js.map +1 -1
  86. package/dist/wgpuGodRaysEffect.d.ts.map +1 -1
  87. package/dist/wgpuGodRaysEffect.js +2 -2
  88. package/dist/wgpuGodRaysEffect.js.map +1 -1
  89. package/dist/wgpuGradientBevelEffect.d.ts +4 -0
  90. package/dist/wgpuGradientBevelEffect.d.ts.map +1 -0
  91. package/dist/wgpuGradientBevelEffect.js +189 -0
  92. package/dist/wgpuGradientBevelEffect.js.map +1 -0
  93. package/dist/wgpuGradientGlowEffect.d.ts +4 -0
  94. package/dist/wgpuGradientGlowEffect.d.ts.map +1 -0
  95. package/dist/wgpuGradientGlowEffect.js +97 -0
  96. package/dist/wgpuGradientGlowEffect.js.map +1 -0
  97. package/dist/wgpuHalftoneEffect.d.ts.map +1 -1
  98. package/dist/wgpuHalftoneEffect.js +2 -2
  99. package/dist/wgpuHalftoneEffect.js.map +1 -1
  100. package/dist/wgpuInnerGlowEffect.d.ts +4 -0
  101. package/dist/wgpuInnerGlowEffect.d.ts.map +1 -0
  102. package/dist/wgpuInnerGlowEffect.js +37 -0
  103. package/dist/wgpuInnerGlowEffect.js.map +1 -0
  104. package/dist/wgpuInnerShadowEffect.d.ts +4 -0
  105. package/dist/wgpuInnerShadowEffect.d.ts.map +1 -0
  106. package/dist/wgpuInnerShadowEffect.js +42 -0
  107. package/dist/wgpuInnerShadowEffect.js.map +1 -0
  108. package/dist/wgpuKuwaharaEffect.d.ts.map +1 -1
  109. package/dist/wgpuKuwaharaEffect.js +2 -2
  110. package/dist/wgpuKuwaharaEffect.js.map +1 -1
  111. package/dist/wgpuLensDirtEffect.d.ts.map +1 -1
  112. package/dist/wgpuLensDirtEffect.js +2 -2
  113. package/dist/wgpuLensDirtEffect.js.map +1 -1
  114. package/dist/wgpuLensDistortionEffect.d.ts.map +1 -1
  115. package/dist/wgpuLensDistortionEffect.js +2 -2
  116. package/dist/wgpuLensDistortionEffect.js.map +1 -1
  117. package/dist/wgpuLensFlareEffect.d.ts.map +1 -1
  118. package/dist/wgpuLensFlareEffect.js +2 -2
  119. package/dist/wgpuLensFlareEffect.js.map +1 -1
  120. package/dist/wgpuMedianEffect.d.ts +5 -0
  121. package/dist/wgpuMedianEffect.d.ts.map +1 -0
  122. package/dist/wgpuMedianEffect.js +74 -0
  123. package/dist/wgpuMedianEffect.js.map +1 -0
  124. package/dist/wgpuMotionBlurEffect.d.ts.map +1 -1
  125. package/dist/wgpuMotionBlurEffect.js +6 -7
  126. package/dist/wgpuMotionBlurEffect.js.map +1 -1
  127. package/dist/wgpuOuterGlowEffect.d.ts +4 -0
  128. package/dist/wgpuOuterGlowEffect.d.ts.map +1 -0
  129. package/dist/wgpuOuterGlowEffect.js +43 -0
  130. package/dist/wgpuOuterGlowEffect.js.map +1 -0
  131. package/dist/wgpuOutlineEffect.d.ts.map +1 -1
  132. package/dist/wgpuOutlineEffect.js +2 -2
  133. package/dist/wgpuOutlineEffect.js.map +1 -1
  134. package/dist/wgpuPixelateEffect.d.ts.map +1 -1
  135. package/dist/wgpuPixelateEffect.js +2 -2
  136. package/dist/wgpuPixelateEffect.js.map +1 -1
  137. package/dist/wgpuPosterizeEffect.d.ts.map +1 -1
  138. package/dist/wgpuPosterizeEffect.js +2 -2
  139. package/dist/wgpuPosterizeEffect.js.map +1 -1
  140. package/dist/wgpuRadialBlurEffect.d.ts.map +1 -1
  141. package/dist/wgpuRadialBlurEffect.js +2 -2
  142. package/dist/wgpuRadialBlurEffect.js.map +1 -1
  143. package/dist/wgpuRenderEffectPipeline.d.ts +2 -2
  144. package/dist/wgpuRenderEffectPipeline.d.ts.map +1 -1
  145. package/dist/wgpuRenderEffectPipeline.js +59 -9
  146. package/dist/wgpuRenderEffectPipeline.js.map +1 -1
  147. package/dist/wgpuRenderEffectRegistrants.d.ts +1 -0
  148. package/dist/wgpuRenderEffectRegistrants.d.ts.map +1 -1
  149. package/dist/wgpuRenderEffectRegistrants.js +39 -28
  150. package/dist/wgpuRenderEffectRegistrants.js.map +1 -1
  151. package/dist/wgpuScanlinesEffect.d.ts.map +1 -1
  152. package/dist/wgpuScanlinesEffect.js +2 -2
  153. package/dist/wgpuScanlinesEffect.js.map +1 -1
  154. package/dist/wgpuScreenSpaceFogEffect.d.ts.map +1 -1
  155. package/dist/wgpuScreenSpaceFogEffect.js +2 -2
  156. package/dist/wgpuScreenSpaceFogEffect.js.map +1 -1
  157. package/dist/wgpuSharpenEffect.d.ts.map +1 -1
  158. package/dist/wgpuSharpenEffect.js +2 -2
  159. package/dist/wgpuSharpenEffect.js.map +1 -1
  160. package/dist/wgpuSketchEffect.d.ts.map +1 -1
  161. package/dist/wgpuSketchEffect.js +2 -2
  162. package/dist/wgpuSketchEffect.js.map +1 -1
  163. package/dist/wgpuSmaaEffect.d.ts.map +1 -1
  164. package/dist/wgpuSmaaEffect.js +2 -2
  165. package/dist/wgpuSmaaEffect.js.map +1 -1
  166. package/dist/wgpuSsaoEffect.d.ts.map +1 -1
  167. package/dist/wgpuSsaoEffect.js +2 -2
  168. package/dist/wgpuSsaoEffect.js.map +1 -1
  169. package/dist/wgpuSsrEffect.d.ts.map +1 -1
  170. package/dist/wgpuSsrEffect.js +2 -2
  171. package/dist/wgpuSsrEffect.js.map +1 -1
  172. package/dist/wgpuTaaEffect.d.ts.map +1 -1
  173. package/dist/wgpuTaaEffect.js +2 -2
  174. package/dist/wgpuTaaEffect.js.map +1 -1
  175. package/dist/wgpuTiltShiftEffect.d.ts.map +1 -1
  176. package/dist/wgpuTiltShiftEffect.js +2 -2
  177. package/dist/wgpuTiltShiftEffect.js.map +1 -1
  178. package/dist/wgpuToneMapEffect.d.ts.map +1 -1
  179. package/dist/wgpuToneMapEffect.js +2 -2
  180. package/dist/wgpuToneMapEffect.js.map +1 -1
  181. package/dist/wgpuVignetteEffect.d.ts.map +1 -1
  182. package/dist/wgpuVignetteEffect.js +2 -2
  183. package/dist/wgpuVignetteEffect.js.map +1 -1
  184. package/dist/wgpuWhiteBalanceEffect.d.ts.map +1 -1
  185. package/dist/wgpuWhiteBalanceEffect.js +2 -2
  186. package/dist/wgpuWhiteBalanceEffect.js.map +1 -1
  187. package/package.json +11 -7
  188. package/src/wgpuBevelEffect.test.ts +13 -0
  189. package/src/wgpuBlurEffect.test.ts +19 -0
  190. package/src/wgpuColorLutPass.test.ts +7 -0
  191. package/src/wgpuColorMatrixPass.test.ts +7 -0
  192. package/src/wgpuConvolutionEffect.test.ts +13 -0
  193. package/src/wgpuDropShadowEffect.test.ts +13 -0
  194. package/src/wgpuEffectBlitShader.test.ts +13 -0
  195. package/src/wgpuEffectBoxBlur.test.ts +7 -0
  196. package/src/wgpuEffectGradientRamp.test.ts +7 -0
  197. package/src/wgpuEffectPass.test.ts +51 -0
  198. package/src/wgpuEffectTintShader.test.ts +23 -0
  199. package/src/wgpuGradientBevelEffect.test.ts +13 -0
  200. package/src/wgpuGradientGlowEffect.test.ts +13 -0
  201. package/src/wgpuInnerGlowEffect.test.ts +13 -0
  202. package/src/wgpuInnerShadowEffect.test.ts +13 -0
  203. package/src/wgpuMedianEffect.test.ts +13 -0
  204. package/src/wgpuOuterGlowEffect.test.ts +13 -0
  205. package/src/wgpuRenderEffectPipeline.test.ts +2 -0
  206. package/src/wgpuRenderEffectRegistrants.test.ts +25 -14
  207. package/dist/wgpuBrightnessContrastEffect.d.ts +0 -4
  208. package/dist/wgpuBrightnessContrastEffect.d.ts.map +0 -1
  209. package/dist/wgpuBrightnessContrastEffect.js +0 -29
  210. package/dist/wgpuBrightnessContrastEffect.js.map +0 -1
  211. package/dist/wgpuChannelMixerEffect.d.ts +0 -4
  212. package/dist/wgpuChannelMixerEffect.d.ts.map +0 -1
  213. package/dist/wgpuChannelMixerEffect.js +0 -34
  214. package/dist/wgpuChannelMixerEffect.js.map +0 -1
  215. package/dist/wgpuColorGradeEffect.d.ts +0 -4
  216. package/dist/wgpuColorGradeEffect.d.ts.map +0 -1
  217. package/dist/wgpuColorGradeEffect.js +0 -52
  218. package/dist/wgpuColorGradeEffect.js.map +0 -1
  219. package/dist/wgpuExposureEffect.d.ts +0 -4
  220. package/dist/wgpuExposureEffect.d.ts.map +0 -1
  221. package/dist/wgpuExposureEffect.js +0 -28
  222. package/dist/wgpuExposureEffect.js.map +0 -1
  223. package/dist/wgpuGrayscaleEffect.d.ts +0 -4
  224. package/dist/wgpuGrayscaleEffect.d.ts.map +0 -1
  225. package/dist/wgpuGrayscaleEffect.js +0 -27
  226. package/dist/wgpuGrayscaleEffect.js.map +0 -1
  227. package/dist/wgpuHueSaturationEffect.d.ts +0 -4
  228. package/dist/wgpuHueSaturationEffect.d.ts.map +0 -1
  229. package/dist/wgpuHueSaturationEffect.js +0 -75
  230. package/dist/wgpuHueSaturationEffect.js.map +0 -1
  231. package/dist/wgpuInvertEffect.d.ts +0 -4
  232. package/dist/wgpuInvertEffect.d.ts.map +0 -1
  233. package/dist/wgpuInvertEffect.js +0 -26
  234. package/dist/wgpuInvertEffect.js.map +0 -1
  235. package/dist/wgpuLiftGammaGainEffect.d.ts +0 -4
  236. package/dist/wgpuLiftGammaGainEffect.d.ts.map +0 -1
  237. package/dist/wgpuLiftGammaGainEffect.js +0 -51
  238. package/dist/wgpuLiftGammaGainEffect.js.map +0 -1
  239. package/dist/wgpuLookupTableGradeEffect.d.ts +0 -4
  240. package/dist/wgpuLookupTableGradeEffect.d.ts.map +0 -1
  241. package/dist/wgpuLookupTableGradeEffect.js +0 -30
  242. package/dist/wgpuLookupTableGradeEffect.js.map +0 -1
  243. package/dist/wgpuSepiaEffect.d.ts +0 -4
  244. package/dist/wgpuSepiaEffect.d.ts.map +0 -1
  245. package/dist/wgpuSepiaEffect.js +0 -31
  246. package/dist/wgpuSepiaEffect.js.map +0 -1
  247. package/src/wgpuBrightnessContrastEffect.test.ts +0 -16
  248. package/src/wgpuChannelMixerEffect.test.ts +0 -13
  249. package/src/wgpuColorGradeEffect.test.ts +0 -13
  250. package/src/wgpuExposureEffect.test.ts +0 -13
  251. package/src/wgpuGrayscaleEffect.test.ts +0 -13
  252. package/src/wgpuHueSaturationEffect.test.ts +0 -13
  253. package/src/wgpuInvertEffect.test.ts +0 -13
  254. package/src/wgpuLiftGammaGainEffect.test.ts +0 -13
  255. package/src/wgpuLookupTableGradeEffect.test.ts +0 -16
  256. package/src/wgpuSepiaEffect.test.ts +0 -13
@@ -1,11 +1,11 @@
1
- import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
1
+ import { drawWgpuEffectPass } from './wgpuEffectPass';
2
2
  import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
3
  // TAA: passthrough copy of source → dest. Real temporal AA needs a history buffer + motion vectors to
4
4
  // reproject and accumulate prior frames; neither is available in the single-frame effect context, so
5
5
  // this is a placeholder that preserves the pipeline stage without altering the image.
6
6
  export function applyTaaEffectToWgpu(state, source, dest, _effect) {
7
7
  const pipeline = getWgpuEffectPipeline(state, 'antialiasing.taa', TAA_FRAGMENT_WGSL, 'replace');
8
- drawWgpuFilterPass(state, source, dest, pipeline, _noopSetUniforms);
8
+ drawWgpuEffectPass(state, source, dest, pipeline, _noopSetUniforms);
9
9
  }
10
10
  export const defaultWgpuTaaEffectRunner = (ctx, effect) => {
11
11
  applyTaaEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
@@ -1 +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"}
1
+ {"version":3,"file":"wgpuTaaEffect.js","sourceRoot":"","sources":["../src/wgpuTaaEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,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"}
@@ -1 +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"}
1
+ {"version":3,"file":"wgpuTiltShiftEffect.d.ts","sourceRoot":"","sources":["../src/wgpuTiltShiftEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAQlH,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"}
@@ -1,4 +1,4 @@
1
- import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
1
+ import { drawWgpuEffectPass } from './wgpuEffectPass';
2
2
  import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
3
  // Tilt-shift: keep a horizontal focus band sharp and blur above and below it. The band is centered at
4
4
  // `center` on Y with height `width`; blur strength ramps with distance outside the band. Blur is
@@ -8,7 +8,7 @@ export function applyTiltShiftEffectToWgpu(state, source, dest, effect) {
8
8
  const width = effect.width ?? 0.3;
9
9
  const blur = effect.blur ?? 4;
10
10
  const pipeline = getWgpuEffectPipeline(state, 'lens.tiltShift', TILT_SHIFT_FRAGMENT_WGSL, 'replace');
11
- drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
11
+ drawWgpuEffectPass(state, source, dest, pipeline, (f32) => {
12
12
  f32[0] = center;
13
13
  f32[1] = width;
14
14
  f32[2] = blur;
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuTiltShiftEffect.js","sourceRoot":"","sources":["../src/wgpuTiltShiftEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,sGAAsG;AACtG,iGAAiG;AACjG,kGAAkG;AAClG,MAAM,UAAU,0BAA0B,CACxC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAiC;IAEjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,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,MAAM,CAAC;QAChB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACf,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACd,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,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,uGAAuG;AACvG,MAAM,wBAAwB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2B1C,CAAC"}
1
+ {"version":3,"file":"wgpuTiltShiftEffect.js","sourceRoot":"","sources":["../src/wgpuTiltShiftEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,sGAAsG;AACtG,iGAAiG;AACjG,kGAAkG;AAClG,MAAM,UAAU,0BAA0B,CACxC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAiC;IAEjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,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,MAAM,CAAC;QAChB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACf,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACd,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,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,uGAAuG;AACvG,MAAM,wBAAwB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2B1C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuToneMapEffect.d.ts","sourceRoot":"","sources":["../src/wgpuToneMapEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOhH,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"}
1
+ {"version":3,"file":"wgpuToneMapEffect.d.ts","sourceRoot":"","sources":["../src/wgpuToneMapEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAQhH,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"}
@@ -1,4 +1,4 @@
1
- import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
1
+ import { drawWgpuEffectPass } from './wgpuEffectPass';
2
2
  import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
3
  // Tone map: compress HDR to displayable range via the selected operator. Single-pass reference recipe,
4
4
  // the Wgpu mirror of effects-gl's applyToneMapEffectToGl. The operator selects a tonemap body
@@ -8,7 +8,7 @@ export function applyToneMapEffectToWgpu(state, source, dest, effect) {
8
8
  const exposure = effect.exposure ?? 1;
9
9
  const white = effect.white ?? 1;
10
10
  const pipeline = getWgpuEffectPipeline(state, `toneMap.${operator}`, buildToneMapFragment(operator), 'replace');
11
- drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
11
+ drawWgpuEffectPass(state, source, dest, pipeline, (f32) => {
12
12
  f32[0] = exposure;
13
13
  f32[1] = white;
14
14
  });
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuToneMapEffect.js","sourceRoot":"","sources":["../src/wgpuToneMapEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,uGAAuG;AACvG,8FAA8F;AAC9F,6EAA6E;AAC7E,MAAM,UAAU,wBAAwB,CACtC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA+B;IAE/B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,WAAW,QAAQ,EAAE,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;IAChH,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,KAAK,CAAC;IACjB,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,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,OAAO,qBAAqB,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC;AACjH,CAAC;AAED,sGAAsG;AACtG,qCAAqC;AACrC,MAAM,qBAAqB,GAAG,UAAU,CAAC;;;;;;iCAMR,CAAC;AAElC,MAAM,qBAAqB,GAAG,UAAU,CAAC;;;;;;;EAOvC,CAAC;AAEH,MAAM,iBAAiB,GAA2B;IAChD,IAAI,EAAE;;;gBAGQ;IACd,QAAQ,EAAE;sDAC0C;IACpD,MAAM,EAAE;;+DAEqD;IAC7D,UAAU,EAAE;;;YAGF;IACV,GAAG,EAAE;;6BAEsB;CAC5B,CAAC"}
1
+ {"version":3,"file":"wgpuToneMapEffect.js","sourceRoot":"","sources":["../src/wgpuToneMapEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,uGAAuG;AACvG,8FAA8F;AAC9F,6EAA6E;AAC7E,MAAM,UAAU,wBAAwB,CACtC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA+B;IAE/B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,WAAW,QAAQ,EAAE,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;IAChH,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,KAAK,CAAC;IACjB,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,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,OAAO,qBAAqB,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC;AACjH,CAAC;AAED,sGAAsG;AACtG,qCAAqC;AACrC,MAAM,qBAAqB,GAAG,UAAU,CAAC;;;;;;iCAMR,CAAC;AAElC,MAAM,qBAAqB,GAAG,UAAU,CAAC;;;;;;;EAOvC,CAAC;AAEH,MAAM,iBAAiB,GAA2B;IAChD,IAAI,EAAE;;;gBAGQ;IACd,QAAQ,EAAE;sDAC0C;IACpD,MAAM,EAAE;;+DAEqD;IAC7D,UAAU,EAAE;;;YAGF;IACV,GAAG,EAAE;;6BAEsB;CAC5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuVignetteEffect.d.ts","sourceRoot":"","sources":["../src/wgpuVignetteEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AASjH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC/B,IAAI,CAmBN;AAED,eAAO,MAAM,+BAA+B,EAAE,sBAE7C,CAAC"}
1
+ {"version":3,"file":"wgpuVignetteEffect.d.ts","sourceRoot":"","sources":["../src/wgpuVignetteEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAUjH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC/B,IAAI,CAmBN;AAED,eAAO,MAAM,+BAA+B,EAAE,sBAE7C,CAAC"}
@@ -1,4 +1,4 @@
1
- import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
1
+ import { drawWgpuEffectPass } from './wgpuEffectPass';
2
2
  import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
3
  // Vignette: darken toward the edges. Pixels inside `radius` stay full bright; beyond it, brightness
4
4
  // falls off over `softness` and the color is blended toward the (unpacked) vignette color by intensity.
@@ -15,7 +15,7 @@ export function applyVignetteEffectToWgpu(state, source, dest, effect) {
15
15
  const b = ((color >>> 8) & 0xff) / 255;
16
16
  const a = (color & 0xff) / 255;
17
17
  const pipeline = getWgpuEffectPipeline(state, 'lens.vignette', VIGNETTE_FRAGMENT_WGSL, 'replace');
18
- drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
18
+ drawWgpuEffectPass(state, source, dest, pipeline, (f32) => {
19
19
  f32[0] = intensity;
20
20
  f32[1] = radius;
21
21
  f32[2] = softness;
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuVignetteEffect.js","sourceRoot":"","sources":["../src/wgpuVignetteEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,oGAAoG;AACpG,wGAAwG;AACxG,6FAA6F;AAC7F,sGAAsG;AACtG,sFAAsF;AACtF,MAAM,UAAU,yBAAyB,CACvC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAgC;IAEhC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC;IACzC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACvC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IAC/B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,sBAAsB,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;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAChB,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAClB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,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,+BAA+B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACrF,yBAAyB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAwB,CAAC,CAAC;AACvF,CAAC,CAAC;AAEF,qGAAqG;AACrG,sFAAsF;AACtF,MAAM,sBAAsB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;EAoBxC,CAAC"}
1
+ {"version":3,"file":"wgpuVignetteEffect.js","sourceRoot":"","sources":["../src/wgpuVignetteEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,oGAAoG;AACpG,wGAAwG;AACxG,6FAA6F;AAC7F,sGAAsG;AACtG,sFAAsF;AACtF,MAAM,UAAU,yBAAyB,CACvC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAgC;IAEhC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC;IACzC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACvC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IAC/B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,sBAAsB,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;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAChB,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAClB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,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,+BAA+B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACrF,yBAAyB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAwB,CAAC,CAAC;AACvF,CAAC,CAAC;AAEF,qGAAqG;AACrG,sFAAsF;AACtF,MAAM,sBAAsB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;EAoBxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuWhiteBalanceEffect.d.ts","sourceRoot":"","sources":["../src/wgpuWhiteBalanceEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAKrH,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,CAQN;AAED,eAAO,MAAM,mCAAmC,EAAE,sBAEjD,CAAC"}
1
+ {"version":3,"file":"wgpuWhiteBalanceEffect.d.ts","sourceRoot":"","sources":["../src/wgpuWhiteBalanceEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,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,CAQN;AAED,eAAO,MAAM,mCAAmC,EAAE,sBAEjD,CAAC"}
@@ -1,11 +1,11 @@
1
- import { drawWgpuFilterPass } from '@flighthq/filters-wgpu';
1
+ import { drawWgpuEffectPass } from './wgpuEffectPass';
2
2
  import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
3
  // White balance: warm/cool temperature and magenta/green tint channel shift.
4
4
  export function applyWhiteBalanceEffectToWgpu(state, source, dest, effect) {
5
5
  const temperature = effect.temperature ?? 0;
6
6
  const tint = effect.tint ?? 0;
7
7
  const pipeline = getWgpuEffectPipeline(state, 'colorGrade.whiteBalance', WHITE_BALANCE_FRAGMENT_WGSL, 'replace');
8
- drawWgpuFilterPass(state, source, dest, pipeline, (f32) => {
8
+ drawWgpuEffectPass(state, source, dest, pipeline, (f32) => {
9
9
  f32[0] = temperature;
10
10
  f32[1] = tint;
11
11
  });
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuWhiteBalanceEffect.js","sourceRoot":"","sources":["../src/wgpuWhiteBalanceEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,6EAA6E;AAC7E,MAAM,UAAU,6BAA6B,CAC3C,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAoC;IAEpC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9B,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,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;QACrB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChB,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,0CAA0C;AAC1C,MAAM,2BAA2B,GAAG,UAAU,CAAC;;;;;;;;;;;;;;EAc7C,CAAC"}
1
+ {"version":3,"file":"wgpuWhiteBalanceEffect.js","sourceRoot":"","sources":["../src/wgpuWhiteBalanceEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,6EAA6E;AAC7E,MAAM,UAAU,6BAA6B,CAC3C,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAoC;IAEpC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9B,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,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;QACrB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChB,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,0CAA0C;AAC1C,MAAM,2BAA2B,GAAG,UAAU,CAAC;;;;;;;;;;;;;;EAc7C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,11 @@
1
1
  {
2
2
  "name": "@flighthq/effects-wgpu",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/flighthq/flight.git",
7
+ "directory": "packages/effects-wgpu"
8
+ },
4
9
  "type": "module",
5
10
  "main": "dist/index.js",
6
11
  "types": "dist/index.d.ts",
@@ -27,12 +32,11 @@
27
32
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
28
33
  },
29
34
  "dependencies": {
30
- "@flighthq/effects": "0.1.0",
31
- "@flighthq/filters": "0.1.0",
32
- "@flighthq/filters-wgpu": "0.1.0",
33
- "@flighthq/geometry": "0.1.0",
34
- "@flighthq/render-wgpu": "0.1.0",
35
- "@flighthq/types": "0.1.0"
35
+ "@flighthq/adjustments": "0.2.0",
36
+ "@flighthq/effects": "0.2.0",
37
+ "@flighthq/geometry": "0.2.0",
38
+ "@flighthq/render-wgpu": "0.2.0",
39
+ "@flighthq/types": "0.2.0"
36
40
  },
37
41
  "devDependencies": {
38
42
  "typescript": "^5.3.0"
@@ -0,0 +1,13 @@
1
+ import { applyBevelEffectToWgpu, defaultWgpuBevelEffectRunner } from './wgpuBevelEffect';
2
+
3
+ describe('applyBevelEffectToWgpu', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyBevelEffectToWgpu).toBe('function');
6
+ });
7
+ });
8
+
9
+ describe('defaultWgpuBevelEffectRunner', () => {
10
+ it('is a function', () => {
11
+ expect(typeof defaultWgpuBevelEffectRunner).toBe('function');
12
+ });
13
+ });
@@ -0,0 +1,19 @@
1
+ import { applyBlurEffectToWgpu, applyGaussianBlurToWgpu, defaultWgpuBlurEffectRunner } from './wgpuBlurEffect';
2
+
3
+ describe('applyBlurEffectToWgpu', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyBlurEffectToWgpu).toBe('function');
6
+ });
7
+ });
8
+
9
+ describe('applyGaussianBlurToWgpu', () => {
10
+ it('is a function', () => {
11
+ expect(typeof applyGaussianBlurToWgpu).toBe('function');
12
+ });
13
+ });
14
+
15
+ describe('defaultWgpuBlurEffectRunner', () => {
16
+ it('is a function', () => {
17
+ expect(typeof defaultWgpuBlurEffectRunner).toBe('function');
18
+ });
19
+ });
@@ -0,0 +1,7 @@
1
+ import { applyColorLutPassToWgpu } from './wgpuColorLutPass';
2
+
3
+ describe('applyColorLutPassToWgpu', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyColorLutPassToWgpu).toBe('function');
6
+ });
7
+ });
@@ -0,0 +1,7 @@
1
+ import { applyColorMatrixPassToWgpu } from './wgpuColorMatrixPass';
2
+
3
+ describe('applyColorMatrixPassToWgpu', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyColorMatrixPassToWgpu).toBe('function');
6
+ });
7
+ });
@@ -0,0 +1,13 @@
1
+ import { applyConvolutionEffectToWgpu, defaultWgpuConvolutionEffectRunner } from './wgpuConvolutionEffect';
2
+
3
+ describe('applyConvolutionEffectToWgpu', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyConvolutionEffectToWgpu).toBe('function');
6
+ });
7
+ });
8
+
9
+ describe('defaultWgpuConvolutionEffectRunner', () => {
10
+ it('is a function', () => {
11
+ expect(typeof defaultWgpuConvolutionEffectRunner).toBe('function');
12
+ });
13
+ });
@@ -0,0 +1,13 @@
1
+ import { applyDropShadowEffectToWgpu, defaultWgpuDropShadowEffectRunner } from './wgpuDropShadowEffect';
2
+
3
+ describe('applyDropShadowEffectToWgpu', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyDropShadowEffectToWgpu).toBe('function');
6
+ });
7
+ });
8
+
9
+ describe('defaultWgpuDropShadowEffectRunner', () => {
10
+ it('is a function', () => {
11
+ expect(typeof defaultWgpuDropShadowEffectRunner).toBe('function');
12
+ });
13
+ });
@@ -0,0 +1,13 @@
1
+ import { applyWgpuEffectBlitOffsetPass, applyWgpuEffectBlitPass } from './wgpuEffectBlitShader';
2
+
3
+ describe('applyWgpuEffectBlitOffsetPass', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyWgpuEffectBlitOffsetPass).toBe('function');
6
+ });
7
+ });
8
+
9
+ describe('applyWgpuEffectBlitPass', () => {
10
+ it('is a function', () => {
11
+ expect(typeof applyWgpuEffectBlitPass).toBe('function');
12
+ });
13
+ });
@@ -0,0 +1,7 @@
1
+ import { applyWgpuEffectBoxBlur } from './wgpuEffectBoxBlur';
2
+
3
+ describe('applyWgpuEffectBoxBlur', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyWgpuEffectBoxBlur).toBe('function');
6
+ });
7
+ });
@@ -0,0 +1,7 @@
1
+ import { getWgpuEffectGradientRampTexture } from './wgpuEffectGradientRamp';
2
+
3
+ describe('getWgpuEffectGradientRampTexture', () => {
4
+ it('is a function', () => {
5
+ expect(typeof getWgpuEffectGradientRampTexture).toBe('function');
6
+ });
7
+ });
@@ -0,0 +1,51 @@
1
+ import {
2
+ clearWgpuEffectTarget,
3
+ createWgpuDualSourceEffectPipeline,
4
+ createWgpuEffectPipeline,
5
+ drawWgpuDualSourceEffectPass,
6
+ drawWgpuEffectPass,
7
+ EFFECT_VERTEX_WGSL,
8
+ getWgpuEffectPassState,
9
+ } from './wgpuEffectPass';
10
+
11
+ describe('clearWgpuEffectTarget', () => {
12
+ it('is a function', () => {
13
+ expect(typeof clearWgpuEffectTarget).toBe('function');
14
+ });
15
+ });
16
+
17
+ describe('createWgpuDualSourceEffectPipeline', () => {
18
+ it('is a function', () => {
19
+ expect(typeof createWgpuDualSourceEffectPipeline).toBe('function');
20
+ });
21
+ });
22
+
23
+ describe('createWgpuEffectPipeline', () => {
24
+ it('is a function', () => {
25
+ expect(typeof createWgpuEffectPipeline).toBe('function');
26
+ });
27
+ });
28
+
29
+ describe('drawWgpuDualSourceEffectPass', () => {
30
+ it('is a function', () => {
31
+ expect(typeof drawWgpuDualSourceEffectPass).toBe('function');
32
+ });
33
+ });
34
+
35
+ describe('drawWgpuEffectPass', () => {
36
+ it('is a function', () => {
37
+ expect(typeof drawWgpuEffectPass).toBe('function');
38
+ });
39
+ });
40
+
41
+ describe('EFFECT_VERTEX_WGSL', () => {
42
+ it('is a WGSL string', () => {
43
+ expect(typeof EFFECT_VERTEX_WGSL).toBe('string');
44
+ });
45
+ });
46
+
47
+ describe('getWgpuEffectPassState', () => {
48
+ it('is a function', () => {
49
+ expect(typeof getWgpuEffectPassState).toBe('function');
50
+ });
51
+ });
@@ -0,0 +1,23 @@
1
+ import {
2
+ applyWgpuEffectInnerClipPass,
3
+ applyWgpuEffectInvertTintPass,
4
+ applyWgpuEffectTintPass,
5
+ } from './wgpuEffectTintShader';
6
+
7
+ describe('applyWgpuEffectInnerClipPass', () => {
8
+ it('is a function', () => {
9
+ expect(typeof applyWgpuEffectInnerClipPass).toBe('function');
10
+ });
11
+ });
12
+
13
+ describe('applyWgpuEffectInvertTintPass', () => {
14
+ it('is a function', () => {
15
+ expect(typeof applyWgpuEffectInvertTintPass).toBe('function');
16
+ });
17
+ });
18
+
19
+ describe('applyWgpuEffectTintPass', () => {
20
+ it('is a function', () => {
21
+ expect(typeof applyWgpuEffectTintPass).toBe('function');
22
+ });
23
+ });
@@ -0,0 +1,13 @@
1
+ import { applyGradientBevelEffectToWgpu, defaultWgpuGradientBevelEffectRunner } from './wgpuGradientBevelEffect';
2
+
3
+ describe('applyGradientBevelEffectToWgpu', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyGradientBevelEffectToWgpu).toBe('function');
6
+ });
7
+ });
8
+
9
+ describe('defaultWgpuGradientBevelEffectRunner', () => {
10
+ it('is a function', () => {
11
+ expect(typeof defaultWgpuGradientBevelEffectRunner).toBe('function');
12
+ });
13
+ });
@@ -0,0 +1,13 @@
1
+ import { applyGradientGlowEffectToWgpu, defaultWgpuGradientGlowEffectRunner } from './wgpuGradientGlowEffect';
2
+
3
+ describe('applyGradientGlowEffectToWgpu', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyGradientGlowEffectToWgpu).toBe('function');
6
+ });
7
+ });
8
+
9
+ describe('defaultWgpuGradientGlowEffectRunner', () => {
10
+ it('is a function', () => {
11
+ expect(typeof defaultWgpuGradientGlowEffectRunner).toBe('function');
12
+ });
13
+ });
@@ -0,0 +1,13 @@
1
+ import { applyInnerGlowEffectToWgpu, defaultWgpuInnerGlowEffectRunner } from './wgpuInnerGlowEffect';
2
+
3
+ describe('applyInnerGlowEffectToWgpu', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyInnerGlowEffectToWgpu).toBe('function');
6
+ });
7
+ });
8
+
9
+ describe('defaultWgpuInnerGlowEffectRunner', () => {
10
+ it('is a function', () => {
11
+ expect(typeof defaultWgpuInnerGlowEffectRunner).toBe('function');
12
+ });
13
+ });
@@ -0,0 +1,13 @@
1
+ import { applyInnerShadowEffectToWgpu, defaultWgpuInnerShadowEffectRunner } from './wgpuInnerShadowEffect';
2
+
3
+ describe('applyInnerShadowEffectToWgpu', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyInnerShadowEffectToWgpu).toBe('function');
6
+ });
7
+ });
8
+
9
+ describe('defaultWgpuInnerShadowEffectRunner', () => {
10
+ it('is a function', () => {
11
+ expect(typeof defaultWgpuInnerShadowEffectRunner).toBe('function');
12
+ });
13
+ });
@@ -0,0 +1,13 @@
1
+ import { applyMedianEffectToWgpu, defaultWgpuMedianEffectRunner } from './wgpuMedianEffect';
2
+
3
+ describe('applyMedianEffectToWgpu', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyMedianEffectToWgpu).toBe('function');
6
+ });
7
+ });
8
+
9
+ describe('defaultWgpuMedianEffectRunner', () => {
10
+ it('is a function', () => {
11
+ expect(typeof defaultWgpuMedianEffectRunner).toBe('function');
12
+ });
13
+ });
@@ -0,0 +1,13 @@
1
+ import { applyOuterGlowEffectToWgpu, defaultWgpuOuterGlowEffectRunner } from './wgpuOuterGlowEffect';
2
+
3
+ describe('applyOuterGlowEffectToWgpu', () => {
4
+ it('is a function', () => {
5
+ expect(typeof applyOuterGlowEffectToWgpu).toBe('function');
6
+ });
7
+ });
8
+
9
+ describe('defaultWgpuOuterGlowEffectRunner', () => {
10
+ it('is a function', () => {
11
+ expect(typeof defaultWgpuOuterGlowEffectRunner).toBe('function');
12
+ });
13
+ });
@@ -36,6 +36,8 @@ describe('setWgpuRenderEffectVelocityTexture', () => {
36
36
  options: {},
37
37
  sceneTarget: null,
38
38
  pool: { free: [] },
39
+ lutCache: { signature: null, lut: null },
40
+ lutTexture: { texture: null, size: 0, lut: null },
39
41
  velocityTexture: null,
40
42
  };
41
43
  const texture = {} as GPUTexture;
@@ -5,6 +5,7 @@ import {
5
5
  registerBloomWgpuRenderEffects,
6
6
  registerBlurWgpuRenderEffects,
7
7
  registerColorWgpuRenderEffects,
8
+ registerCompositeWgpuRenderEffects,
8
9
  registerScreenSpaceWgpuRenderEffects,
9
10
  registerStandardWgpuRenderEffects,
10
11
  registerStylizeWgpuRenderEffects,
@@ -53,22 +54,33 @@ describe('registerBlurWgpuRenderEffects', () => {
53
54
  });
54
55
 
55
56
  describe('registerColorWgpuRenderEffects', () => {
56
- it('registers all color and tone effect runners', async () => {
57
+ it('registers the remaining color and tone effect runners', async () => {
57
58
  const state = await createWgpuRenderStateForTest();
58
59
  registerColorWgpuRenderEffects(state);
59
- expect(getWgpuRenderEffectRunner(state, 'BrightnessContrastEffect')).not.toBe(null);
60
- expect(getWgpuRenderEffectRunner(state, 'ChannelMixerEffect')).not.toBe(null);
61
- expect(getWgpuRenderEffectRunner(state, 'ColorGradeEffect')).not.toBe(null);
62
- expect(getWgpuRenderEffectRunner(state, 'ExposureEffect')).not.toBe(null);
63
- expect(getWgpuRenderEffectRunner(state, 'GrayscaleEffect')).not.toBe(null);
64
- expect(getWgpuRenderEffectRunner(state, 'HueSaturationEffect')).not.toBe(null);
65
- expect(getWgpuRenderEffectRunner(state, 'InvertEffect')).not.toBe(null);
66
- expect(getWgpuRenderEffectRunner(state, 'LiftGammaGainEffect')).not.toBe(null);
67
- expect(getWgpuRenderEffectRunner(state, 'LookupTableGradeEffect')).not.toBe(null);
68
- expect(getWgpuRenderEffectRunner(state, 'PosterizeEffect')).not.toBe(null);
69
- expect(getWgpuRenderEffectRunner(state, 'SepiaEffect')).not.toBe(null);
70
60
  expect(getWgpuRenderEffectRunner(state, 'ToneMapEffect')).not.toBe(null);
71
61
  expect(getWgpuRenderEffectRunner(state, 'WhiteBalanceEffect')).not.toBe(null);
62
+ // The pointwise color ops moved to @flighthq/adjustments and fold through the pipeline, no runner.
63
+ expect(getWgpuRenderEffectRunner(state, 'ColorGradeEffect')).toBe(null);
64
+ expect(getWgpuRenderEffectRunner(state, 'HueSaturationEffect')).toBe(null);
65
+ expect(getWgpuRenderEffectRunner(state, 'LookupTableGradeEffect')).toBe(null);
66
+ });
67
+ });
68
+
69
+ describe('registerCompositeWgpuRenderEffects', () => {
70
+ it('registers the seven former-filter composite effect runners', async () => {
71
+ const state = await createWgpuRenderStateForTest();
72
+ registerCompositeWgpuRenderEffects(state);
73
+ for (const kind of [
74
+ 'BevelEffect',
75
+ 'DropShadowEffect',
76
+ 'GradientBevelEffect',
77
+ 'GradientGlowEffect',
78
+ 'InnerGlowEffect',
79
+ 'InnerShadowEffect',
80
+ 'OuterGlowEffect',
81
+ ]) {
82
+ expect(getWgpuRenderEffectRunner(state, kind)).not.toBe(null);
83
+ }
72
84
  });
73
85
  });
74
86
 
@@ -85,14 +97,13 @@ describe('registerScreenSpaceWgpuRenderEffects', () => {
85
97
  });
86
98
 
87
99
  describe('registerStandardWgpuRenderEffects', () => {
88
- it('registers all 45 standard effect runners', async () => {
100
+ it('registers all 43 standard effect runners', async () => {
89
101
  const state = await createWgpuRenderStateForTest();
90
102
  registerStandardWgpuRenderEffects(state);
91
103
  // Spot-check one from each band.
92
104
  expect(getWgpuRenderEffectRunner(state, 'FxaaEffect')).not.toBe(null);
93
105
  expect(getWgpuRenderEffectRunner(state, 'BloomEffect')).not.toBe(null);
94
106
  expect(getWgpuRenderEffectRunner(state, 'DirectionalBlurEffect')).not.toBe(null);
95
- expect(getWgpuRenderEffectRunner(state, 'GrayscaleEffect')).not.toBe(null);
96
107
  expect(getWgpuRenderEffectRunner(state, 'SsaoEffect')).not.toBe(null);
97
108
  expect(getWgpuRenderEffectRunner(state, 'HalftoneEffect')).not.toBe(null);
98
109
  });
@@ -1,4 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,29 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,4 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,34 +0,0 @@
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