@flighthq/effects-wgpu 0.3.0-next.906.07cea63 → 0.3.1-next.1041.35b950c

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 (269) hide show
  1. package/dist/contract.d.ts +2 -3
  2. package/dist/contract.d.ts.map +1 -1
  3. package/dist/contract.js +2 -3
  4. package/dist/contract.js.map +1 -1
  5. package/dist/enableWgpuRenderEffectGuards.d.ts +5 -0
  6. package/dist/enableWgpuRenderEffectGuards.d.ts.map +1 -0
  7. package/dist/enableWgpuRenderEffectGuards.js +63 -0
  8. package/dist/enableWgpuRenderEffectGuards.js.map +1 -0
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/wgpuBevelEffect.d.ts +1 -0
  14. package/dist/wgpuBevelEffect.d.ts.map +1 -1
  15. package/dist/wgpuBevelEffect.js +17 -7
  16. package/dist/wgpuBevelEffect.js.map +1 -1
  17. package/dist/wgpuBlendEffect.d.ts +2 -1
  18. package/dist/wgpuBlendEffect.d.ts.map +1 -1
  19. package/dist/wgpuBlendEffect.js +8 -0
  20. package/dist/wgpuBlendEffect.js.map +1 -1
  21. package/dist/wgpuBloomEffect.d.ts +1 -0
  22. package/dist/wgpuBloomEffect.d.ts.map +1 -1
  23. package/dist/wgpuBloomEffect.js +4 -0
  24. package/dist/wgpuBloomEffect.js.map +1 -1
  25. package/dist/wgpuBlurEffect.d.ts +1 -0
  26. package/dist/wgpuBlurEffect.d.ts.map +1 -1
  27. package/dist/wgpuBlurEffect.js +4 -0
  28. package/dist/wgpuBlurEffect.js.map +1 -1
  29. package/dist/wgpuCameraMotionBlurEffect.d.ts +1 -0
  30. package/dist/wgpuCameraMotionBlurEffect.d.ts.map +1 -1
  31. package/dist/wgpuCameraMotionBlurEffect.js +4 -0
  32. package/dist/wgpuCameraMotionBlurEffect.js.map +1 -1
  33. package/dist/wgpuChromaticAberrationEffect.d.ts +1 -0
  34. package/dist/wgpuChromaticAberrationEffect.d.ts.map +1 -1
  35. package/dist/wgpuChromaticAberrationEffect.js +4 -0
  36. package/dist/wgpuChromaticAberrationEffect.js.map +1 -1
  37. package/dist/wgpuCompositeEffect.d.ts +1 -0
  38. package/dist/wgpuCompositeEffect.d.ts.map +1 -1
  39. package/dist/wgpuCompositeEffect.js +4 -0
  40. package/dist/wgpuCompositeEffect.js.map +1 -1
  41. package/dist/wgpuContactShadowsEffect.d.ts +5 -0
  42. package/dist/wgpuContactShadowsEffect.d.ts.map +1 -0
  43. package/dist/wgpuContactShadowsEffect.js +19 -0
  44. package/dist/wgpuContactShadowsEffect.js.map +1 -0
  45. package/dist/wgpuConvolutionEffect.d.ts +1 -0
  46. package/dist/wgpuConvolutionEffect.d.ts.map +1 -1
  47. package/dist/wgpuConvolutionEffect.js +12 -4
  48. package/dist/wgpuConvolutionEffect.js.map +1 -1
  49. package/dist/wgpuCrtEffect.d.ts +1 -0
  50. package/dist/wgpuCrtEffect.d.ts.map +1 -1
  51. package/dist/wgpuCrtEffect.js +4 -0
  52. package/dist/wgpuCrtEffect.js.map +1 -1
  53. package/dist/wgpuDirectionalBlurEffect.d.ts +1 -0
  54. package/dist/wgpuDirectionalBlurEffect.d.ts.map +1 -1
  55. package/dist/wgpuDirectionalBlurEffect.js +4 -0
  56. package/dist/wgpuDirectionalBlurEffect.js.map +1 -1
  57. package/dist/wgpuDisplacementEffect.d.ts +1 -0
  58. package/dist/wgpuDisplacementEffect.d.ts.map +1 -1
  59. package/dist/wgpuDisplacementEffect.js +4 -0
  60. package/dist/wgpuDisplacementEffect.js.map +1 -1
  61. package/dist/wgpuDitherEffect.d.ts +1 -0
  62. package/dist/wgpuDitherEffect.d.ts.map +1 -1
  63. package/dist/wgpuDitherEffect.js +4 -0
  64. package/dist/wgpuDitherEffect.js.map +1 -1
  65. package/dist/wgpuDropShadowEffect.d.ts +1 -0
  66. package/dist/wgpuDropShadowEffect.d.ts.map +1 -1
  67. package/dist/wgpuDropShadowEffect.js +7 -1
  68. package/dist/wgpuDropShadowEffect.js.map +1 -1
  69. package/dist/wgpuEffectTintShader.d.ts.map +1 -1
  70. package/dist/wgpuEffectTintShader.js +13 -13
  71. package/dist/wgpuEffectTintShader.js.map +1 -1
  72. package/dist/wgpuFilmGrainEffect.d.ts +1 -0
  73. package/dist/wgpuFilmGrainEffect.d.ts.map +1 -1
  74. package/dist/wgpuFilmGrainEffect.js +4 -0
  75. package/dist/wgpuFilmGrainEffect.js.map +1 -1
  76. package/dist/wgpuFxaaEffect.d.ts +1 -0
  77. package/dist/wgpuFxaaEffect.d.ts.map +1 -1
  78. package/dist/wgpuFxaaEffect.js +4 -0
  79. package/dist/wgpuFxaaEffect.js.map +1 -1
  80. package/dist/wgpuGlitchEffect.d.ts +1 -0
  81. package/dist/wgpuGlitchEffect.d.ts.map +1 -1
  82. package/dist/wgpuGlitchEffect.js +4 -0
  83. package/dist/wgpuGlitchEffect.js.map +1 -1
  84. package/dist/wgpuGodRaysEffect.d.ts +1 -0
  85. package/dist/wgpuGodRaysEffect.d.ts.map +1 -1
  86. package/dist/wgpuGodRaysEffect.js +4 -0
  87. package/dist/wgpuGodRaysEffect.js.map +1 -1
  88. package/dist/wgpuGradientBevelEffect.d.ts +1 -0
  89. package/dist/wgpuGradientBevelEffect.d.ts.map +1 -1
  90. package/dist/wgpuGradientBevelEffect.js +7 -8
  91. package/dist/wgpuGradientBevelEffect.js.map +1 -1
  92. package/dist/wgpuGradientGlowEffect.d.ts +1 -0
  93. package/dist/wgpuGradientGlowEffect.d.ts.map +1 -1
  94. package/dist/wgpuGradientGlowEffect.js +5 -1
  95. package/dist/wgpuGradientGlowEffect.js.map +1 -1
  96. package/dist/wgpuHalftoneEffect.d.ts +1 -0
  97. package/dist/wgpuHalftoneEffect.d.ts.map +1 -1
  98. package/dist/wgpuHalftoneEffect.js +4 -0
  99. package/dist/wgpuHalftoneEffect.js.map +1 -1
  100. package/dist/wgpuInnerGlowEffect.d.ts +1 -0
  101. package/dist/wgpuInnerGlowEffect.d.ts.map +1 -1
  102. package/dist/wgpuInnerGlowEffect.js +12 -8
  103. package/dist/wgpuInnerGlowEffect.js.map +1 -1
  104. package/dist/wgpuInnerShadowEffect.d.ts +1 -0
  105. package/dist/wgpuInnerShadowEffect.d.ts.map +1 -1
  106. package/dist/wgpuInnerShadowEffect.js +12 -8
  107. package/dist/wgpuInnerShadowEffect.js.map +1 -1
  108. package/dist/wgpuKuwaharaEffect.d.ts +1 -0
  109. package/dist/wgpuKuwaharaEffect.d.ts.map +1 -1
  110. package/dist/wgpuKuwaharaEffect.js +4 -0
  111. package/dist/wgpuKuwaharaEffect.js.map +1 -1
  112. package/dist/wgpuLensDirtEffect.d.ts +1 -0
  113. package/dist/wgpuLensDirtEffect.d.ts.map +1 -1
  114. package/dist/wgpuLensDirtEffect.js +4 -0
  115. package/dist/wgpuLensDirtEffect.js.map +1 -1
  116. package/dist/wgpuLensDistortionEffect.d.ts +1 -0
  117. package/dist/wgpuLensDistortionEffect.d.ts.map +1 -1
  118. package/dist/wgpuLensDistortionEffect.js +4 -0
  119. package/dist/wgpuLensDistortionEffect.js.map +1 -1
  120. package/dist/wgpuLensFlareEffect.d.ts +1 -0
  121. package/dist/wgpuLensFlareEffect.d.ts.map +1 -1
  122. package/dist/wgpuLensFlareEffect.js +4 -0
  123. package/dist/wgpuLensFlareEffect.js.map +1 -1
  124. package/dist/wgpuMedianEffect.d.ts +1 -0
  125. package/dist/wgpuMedianEffect.d.ts.map +1 -1
  126. package/dist/wgpuMedianEffect.js +4 -0
  127. package/dist/wgpuMedianEffect.js.map +1 -1
  128. package/dist/wgpuMotionBlurEffect.d.ts +1 -0
  129. package/dist/wgpuMotionBlurEffect.d.ts.map +1 -1
  130. package/dist/wgpuMotionBlurEffect.js +4 -0
  131. package/dist/wgpuMotionBlurEffect.js.map +1 -1
  132. package/dist/wgpuOuterGlowEffect.d.ts +1 -0
  133. package/dist/wgpuOuterGlowEffect.d.ts.map +1 -1
  134. package/dist/wgpuOuterGlowEffect.js +5 -1
  135. package/dist/wgpuOuterGlowEffect.js.map +1 -1
  136. package/dist/wgpuOutlineEffect.d.ts +1 -0
  137. package/dist/wgpuOutlineEffect.d.ts.map +1 -1
  138. package/dist/wgpuOutlineEffect.js +4 -0
  139. package/dist/wgpuOutlineEffect.js.map +1 -1
  140. package/dist/wgpuPixelateEffect.d.ts +1 -0
  141. package/dist/wgpuPixelateEffect.d.ts.map +1 -1
  142. package/dist/wgpuPixelateEffect.js +4 -0
  143. package/dist/wgpuPixelateEffect.js.map +1 -1
  144. package/dist/wgpuPosterizeEffect.d.ts +1 -0
  145. package/dist/wgpuPosterizeEffect.d.ts.map +1 -1
  146. package/dist/wgpuPosterizeEffect.js +4 -0
  147. package/dist/wgpuPosterizeEffect.js.map +1 -1
  148. package/dist/wgpuRadialBlurEffect.d.ts +1 -0
  149. package/dist/wgpuRadialBlurEffect.d.ts.map +1 -1
  150. package/dist/wgpuRadialBlurEffect.js +4 -0
  151. package/dist/wgpuRadialBlurEffect.js.map +1 -1
  152. package/dist/wgpuRenderEffectPipeline.d.ts +2 -1
  153. package/dist/wgpuRenderEffectPipeline.d.ts.map +1 -1
  154. package/dist/wgpuRenderEffectPipeline.js +16 -1
  155. package/dist/wgpuRenderEffectPipeline.js.map +1 -1
  156. package/dist/wgpuRenderEffectRegistry.d.ts.map +1 -1
  157. package/dist/wgpuRenderEffectRegistry.js +10 -9
  158. package/dist/wgpuRenderEffectRegistry.js.map +1 -1
  159. package/dist/wgpuRenderTextureEffect.d.ts +6 -0
  160. package/dist/wgpuRenderTextureEffect.d.ts.map +1 -0
  161. package/dist/wgpuRenderTextureEffect.js +95 -0
  162. package/dist/wgpuRenderTextureEffect.js.map +1 -0
  163. package/dist/wgpuScanlinesEffect.d.ts +1 -0
  164. package/dist/wgpuScanlinesEffect.d.ts.map +1 -1
  165. package/dist/wgpuScanlinesEffect.js +4 -0
  166. package/dist/wgpuScanlinesEffect.js.map +1 -1
  167. package/dist/wgpuScreenSpaceFogEffect.d.ts +1 -0
  168. package/dist/wgpuScreenSpaceFogEffect.d.ts.map +1 -1
  169. package/dist/wgpuScreenSpaceFogEffect.js +5 -1
  170. package/dist/wgpuScreenSpaceFogEffect.js.map +1 -1
  171. package/dist/wgpuSharpenEffect.d.ts +1 -0
  172. package/dist/wgpuSharpenEffect.d.ts.map +1 -1
  173. package/dist/wgpuSharpenEffect.js +4 -0
  174. package/dist/wgpuSharpenEffect.js.map +1 -1
  175. package/dist/wgpuSketchEffect.d.ts +1 -0
  176. package/dist/wgpuSketchEffect.d.ts.map +1 -1
  177. package/dist/wgpuSketchEffect.js +4 -0
  178. package/dist/wgpuSketchEffect.js.map +1 -1
  179. package/dist/wgpuSmaaEffect.d.ts +1 -0
  180. package/dist/wgpuSmaaEffect.d.ts.map +1 -1
  181. package/dist/wgpuSmaaEffect.js +4 -0
  182. package/dist/wgpuSmaaEffect.js.map +1 -1
  183. package/dist/wgpuSsaoEffect.d.ts +1 -0
  184. package/dist/wgpuSsaoEffect.d.ts.map +1 -1
  185. package/dist/wgpuSsaoEffect.js +4 -0
  186. package/dist/wgpuSsaoEffect.js.map +1 -1
  187. package/dist/wgpuTiltShiftEffect.d.ts +1 -0
  188. package/dist/wgpuTiltShiftEffect.d.ts.map +1 -1
  189. package/dist/wgpuTiltShiftEffect.js +4 -0
  190. package/dist/wgpuTiltShiftEffect.js.map +1 -1
  191. package/dist/wgpuToneMapEffect.d.ts +1 -0
  192. package/dist/wgpuToneMapEffect.d.ts.map +1 -1
  193. package/dist/wgpuToneMapEffect.js +4 -0
  194. package/dist/wgpuToneMapEffect.js.map +1 -1
  195. package/dist/wgpuVignetteEffect.d.ts +1 -0
  196. package/dist/wgpuVignetteEffect.d.ts.map +1 -1
  197. package/dist/wgpuVignetteEffect.js +4 -0
  198. package/dist/wgpuVignetteEffect.js.map +1 -1
  199. package/dist/wgpuWhiteBalanceEffect.d.ts +1 -0
  200. package/dist/wgpuWhiteBalanceEffect.d.ts.map +1 -1
  201. package/dist/wgpuWhiteBalanceEffect.js +4 -0
  202. package/dist/wgpuWhiteBalanceEffect.js.map +1 -1
  203. package/package.json +15 -6
  204. package/src/enableWgpuRenderEffectGuards.test.ts +169 -0
  205. package/src/wgpuBevelEffect.test.ts +7 -1
  206. package/src/wgpuBlendEffect.test.ts +25 -0
  207. package/src/wgpuBloomEffect.test.ts +7 -1
  208. package/src/wgpuBlurEffect.test.ts +19 -1
  209. package/src/wgpuCameraMotionBlurEffect.test.ts +7 -0
  210. package/src/wgpuChromaticAberrationEffect.test.ts +7 -0
  211. package/src/wgpuCompositeEffect.test.ts +7 -0
  212. package/src/wgpuContactShadowsEffect.test.ts +47 -0
  213. package/src/wgpuConvolutionEffect.test.ts +11 -1
  214. package/src/wgpuCrtEffect.test.ts +7 -1
  215. package/src/wgpuDirectionalBlurEffect.test.ts +11 -1
  216. package/src/wgpuDisplacementEffect.test.ts +11 -1
  217. package/src/wgpuDitherEffect.test.ts +7 -1
  218. package/src/wgpuDropShadowEffect.test.ts +11 -10
  219. package/src/wgpuEffectBoxBlur.test.ts +0 -5
  220. package/src/wgpuEffectTintShader.test.ts +0 -5
  221. package/src/wgpuFilmGrainEffect.test.ts +11 -1
  222. package/src/wgpuFxaaEffect.test.ts +7 -1
  223. package/src/wgpuGlitchEffect.test.ts +7 -1
  224. package/src/wgpuGodRaysEffect.test.ts +11 -1
  225. package/src/wgpuGradientBevelEffect.test.ts +11 -1
  226. package/src/wgpuGradientGlowEffect.test.ts +11 -1
  227. package/src/wgpuHalftoneEffect.test.ts +11 -1
  228. package/src/wgpuInnerGlowEffect.test.ts +12 -11
  229. package/src/wgpuInnerShadowEffect.test.ts +12 -11
  230. package/src/wgpuKuwaharaEffect.test.ts +11 -1
  231. package/src/wgpuLensDirtEffect.test.ts +11 -1
  232. package/src/wgpuLensDistortionEffect.test.ts +11 -1
  233. package/src/wgpuLensFlareEffect.test.ts +11 -1
  234. package/src/wgpuMedianEffect.test.ts +7 -1
  235. package/src/wgpuMotionBlurEffect.test.ts +11 -1
  236. package/src/wgpuOuterGlowEffect.test.ts +11 -10
  237. package/src/wgpuOutlineEffect.test.ts +11 -1
  238. package/src/wgpuPixelateEffect.test.ts +11 -1
  239. package/src/wgpuPosterizeEffect.test.ts +11 -1
  240. package/src/wgpuRadialBlurEffect.test.ts +11 -1
  241. package/src/wgpuRenderEffectPipeline.test.ts +31 -0
  242. package/src/wgpuRenderEffectRegistry.test.ts +21 -1
  243. package/src/wgpuRenderTextureEffect.test.ts +154 -0
  244. package/src/wgpuScanlinesEffect.test.ts +11 -1
  245. package/src/wgpuScreenSpaceFogEffect.test.ts +11 -1
  246. package/src/wgpuSharpenEffect.test.ts +11 -1
  247. package/src/wgpuSketchEffect.test.ts +7 -1
  248. package/src/wgpuSmaaEffect.test.ts +7 -1
  249. package/src/wgpuSpatialEffectRegistration.test.ts +70 -0
  250. package/src/wgpuSsaoEffect.test.ts +7 -1
  251. package/src/wgpuTiltShiftEffect.test.ts +11 -1
  252. package/src/wgpuToneMapEffect.test.ts +11 -1
  253. package/src/wgpuVignetteEffect.test.ts +11 -1
  254. package/src/wgpuWhiteBalanceEffect.test.ts +11 -1
  255. package/dist/wgpuBokehDepthOfFieldEffect.d.ts +0 -4
  256. package/dist/wgpuBokehDepthOfFieldEffect.d.ts.map +0 -1
  257. package/dist/wgpuBokehDepthOfFieldEffect.js +0 -51
  258. package/dist/wgpuBokehDepthOfFieldEffect.js.map +0 -1
  259. package/dist/wgpuSsrEffect.d.ts +0 -4
  260. package/dist/wgpuSsrEffect.d.ts.map +0 -1
  261. package/dist/wgpuSsrEffect.js +0 -28
  262. package/dist/wgpuSsrEffect.js.map +0 -1
  263. package/dist/wgpuTaaEffect.d.ts +0 -4
  264. package/dist/wgpuTaaEffect.d.ts.map +0 -1
  265. package/dist/wgpuTaaEffect.js +0 -27
  266. package/dist/wgpuTaaEffect.js.map +0 -1
  267. package/src/wgpuBokehDepthOfFieldEffect.test.ts +0 -16
  268. package/src/wgpuSsrEffect.test.ts +0 -13
  269. package/src/wgpuTaaEffect.test.ts +0 -13
@@ -1,10 +1,10 @@
1
1
  export * from './wgpuColorMatrixPass';
2
2
  export * from './wgpuCompositeEffect';
3
+ export * from './wgpuContactShadowsEffect';
3
4
  export * from './wgpuBlendEffect';
4
5
  export * from './wgpuBevelEffect';
5
6
  export * from './wgpuBloomEffect';
6
7
  export * from './wgpuBlurEffect';
7
- export * from './wgpuBokehDepthOfFieldEffect';
8
8
  export * from './wgpuCameraMotionBlurEffect';
9
9
  export * from './wgpuChromaticAberrationEffect';
10
10
  export * from './wgpuConvolutionEffect';
@@ -41,14 +41,13 @@ export * from './wgpuPosterizeEffect';
41
41
  export * from './wgpuRadialBlurEffect';
42
42
  export * from './wgpuRenderEffectPipeline';
43
43
  export * from './wgpuRenderEffectRegistry';
44
+ export * from './wgpuRenderTextureEffect';
44
45
  export * from './wgpuScanlinesEffect';
45
46
  export * from './wgpuScreenSpaceFogEffect';
46
47
  export * from './wgpuSharpenEffect';
47
48
  export * from './wgpuSketchEffect';
48
49
  export * from './wgpuSmaaEffect';
49
50
  export * from './wgpuSsaoEffect';
50
- export * from './wgpuSsrEffect';
51
- export * from './wgpuTaaEffect';
52
51
  export * from './wgpuTiltShiftEffect';
53
52
  export * from './wgpuToneMapEffect';
54
53
  export * from './wgpuVignetteEffect';
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
package/dist/contract.js CHANGED
@@ -1,10 +1,10 @@
1
1
  export * from './wgpuColorMatrixPass';
2
2
  export * from './wgpuCompositeEffect';
3
+ export * from './wgpuContactShadowsEffect';
3
4
  export * from './wgpuBlendEffect';
4
5
  export * from './wgpuBevelEffect';
5
6
  export * from './wgpuBloomEffect';
6
7
  export * from './wgpuBlurEffect';
7
- export * from './wgpuBokehDepthOfFieldEffect';
8
8
  export * from './wgpuCameraMotionBlurEffect';
9
9
  export * from './wgpuChromaticAberrationEffect';
10
10
  export * from './wgpuConvolutionEffect';
@@ -41,14 +41,13 @@ export * from './wgpuPosterizeEffect';
41
41
  export * from './wgpuRadialBlurEffect';
42
42
  export * from './wgpuRenderEffectPipeline';
43
43
  export * from './wgpuRenderEffectRegistry';
44
+ export * from './wgpuRenderTextureEffect';
44
45
  export * from './wgpuScanlinesEffect';
45
46
  export * from './wgpuScreenSpaceFogEffect';
46
47
  export * from './wgpuSharpenEffect';
47
48
  export * from './wgpuSketchEffect';
48
49
  export * from './wgpuSmaaEffect';
49
50
  export * from './wgpuSsaoEffect';
50
- export * from './wgpuSsrEffect';
51
- export * from './wgpuTaaEffect';
52
51
  export * from './wgpuTiltShiftEffect';
53
52
  export * from './wgpuToneMapEffect';
54
53
  export * from './wgpuVignetteEffect';
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { WgpuRenderState } from '@flighthq/types/contract';
2
+ export declare function areWgpuRenderEffectGuardsEnabled(state: WgpuRenderState): boolean;
3
+ export declare function disableWgpuRenderEffectGuards(state: WgpuRenderState): void;
4
+ export declare function enableWgpuRenderEffectGuards(state: WgpuRenderState): void;
5
+ //# sourceMappingURL=enableWgpuRenderEffectGuards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableWgpuRenderEffectGuards.d.ts","sourceRoot":"","sources":["../src/enableWgpuRenderEffectGuards.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA0C,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAMxG,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAEhF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAI1E;AAWD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAIzE"}
@@ -0,0 +1,63 @@
1
+ import { logOnce } from '@flighthq/log/contract';
2
+ import { LogLevel } from '@flighthq/types/contract';
3
+ import { setWgpuRenderEffectPipelineSkipGuard } from './wgpuRenderEffectPipeline';
4
+ import { setWgpuRenderEffectApplicationGuard } from './wgpuRenderTextureEffect';
5
+ export function areWgpuRenderEffectGuardsEnabled(state) {
6
+ return _guardedStates.has(state);
7
+ }
8
+ export function disableWgpuRenderEffectGuards(state) {
9
+ setWgpuRenderEffectApplicationGuard(state, null);
10
+ setWgpuRenderEffectPipelineSkipGuard(state, null);
11
+ _guardedStates.delete(state);
12
+ }
13
+ // Installs diagnostics for the effect-chain sentinels that are indistinguishable from working code: an
14
+ // unregistered chain returns false having never written `dest`, so a sprite sampling that texture shows
15
+ // whatever was last in it, and a partially registered chain succeeds while silently dropping the effects
16
+ // it could not run. Both are correct by contract and neither surfaces anywhere.
17
+ //
18
+ // The WGPU sibling of enableGlRenderEffectGuards, and deliberately narrower: GL additionally guards
19
+ // per-instance resolvability and re-registered custom-shader source, and WGPU has neither a resolver half
20
+ // to registration nor a custom-shader effect. Guarding what this backend cannot observe would be a
21
+ // warning that can never fire, so the absence is the honest shape rather than an oversight.
22
+ export function enableWgpuRenderEffectGuards(state) {
23
+ setWgpuRenderEffectApplicationGuard(state, warnWgpuRenderEffectApplication);
24
+ setWgpuRenderEffectPipelineSkipGuard(state, warnWgpuRenderEffectPipelineSkip);
25
+ _guardedStates.add(state);
26
+ }
27
+ function getWgpuRenderEffectApplicationMessage(explanation) {
28
+ switch (explanation.status) {
29
+ case 'partial-registration':
30
+ return `applyWgpuRenderEffectsToRenderTexture: ${explanation.unregisteredKinds.length} of ${explanation.requestedCount} effect kinds have no registered runner and were SKIPPED — the destination was written without them; call registerWgpuRenderEffect(state, kind, runner) for ${explanation.unregisteredKinds.join(', ')}`;
31
+ case 'source-unavailable':
32
+ return 'applyWgpuRenderEffectsToRenderTexture: the source render Texture has no realized WGPU target, so the call returned false and the destination was NOT written — render into the source before applying effects';
33
+ case 'stale-destination':
34
+ return 'applyWgpuRenderEffectsToRenderTexture: the call returned false before replacing the destination, so its previously published pixels are a STALE DESTINATION — handle the false return before sampling dest, and make the source and runners available before retrying';
35
+ default:
36
+ return `applyWgpuRenderEffectsToRenderTexture: no registered runner for any of ${explanation.unregisteredKinds.join(', ')}, so the call returned false and the destination was NEVER WRITTEN — anything sampling it reads a stale or empty texture; call registerWgpuRenderEffect(state, kind, runner)`;
37
+ }
38
+ }
39
+ function warnWgpuRenderEffectApplication(_state, explanation) {
40
+ // Keyed by status plus the kinds involved: a chain missing a different effect is a different
41
+ // observation worth reporting, while the same miss every frame is not.
42
+ logOnce(`effects-wgpu:effect-application:${explanation.status}:${explanation.unregisteredKinds.join(',')}`, LogLevel.Warn, {
43
+ message: getWgpuRenderEffectApplicationMessage(explanation),
44
+ registeredCount: explanation.registeredCount,
45
+ requestedCount: explanation.requestedCount,
46
+ status: explanation.status,
47
+ unregisteredKinds: explanation.unregisteredKinds,
48
+ }, 'effects-wgpu');
49
+ }
50
+ // A pipeline pass drops an effect whose kind has no runner with a bare `continue`: no draw, no error, no
51
+ // artifact. Seven effect kinds ship a descriptor and a constructor with no runner on ANY backend
52
+ // (AutoExposure, BarrelDistortion, FilmEmulation, PanniniProjection, Ssr, Taa, VolumetricLight), so a
53
+ // caller can build one into a chain and watch nothing happen with nothing to grep for.
54
+ function warnWgpuRenderEffectPipelineSkip(_state, kind) {
55
+ // Keyed by kind, not by frame: the same missing kind every frame is one observation, and a second kind
56
+ // going missing is a new one worth reporting.
57
+ logOnce(`effects-wgpu:pipeline-effect-skipped:${kind}`, LogLevel.Warn, {
58
+ kind,
59
+ message: `endWgpuRenderEffectPipeline: effect kind "${kind}" has no registered runner, so the pass was SKIPPED — the frame was written without it and nothing else reports this; call registerWgpuRenderEffect(state, "${kind}", runner), or check whether this kind has a runner on this backend at all`,
60
+ }, 'effects-wgpu');
61
+ }
62
+ const _guardedStates = new WeakSet();
63
+ //# sourceMappingURL=enableWgpuRenderEffectGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableWgpuRenderEffectGuards.js","sourceRoot":"","sources":["../src/enableWgpuRenderEffectGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,oCAAoC,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AAEhF,MAAM,UAAU,gCAAgC,CAAC,KAAsB;IACrE,OAAO,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAsB;IAClE,mCAAmC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjD,oCAAoC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClD,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,uGAAuG;AACvG,wGAAwG;AACxG,yGAAyG;AACzG,gFAAgF;AAChF,EAAE;AACF,oGAAoG;AACpG,0GAA0G;AAC1G,mGAAmG;AACnG,4FAA4F;AAC5F,MAAM,UAAU,4BAA4B,CAAC,KAAsB;IACjE,mCAAmC,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;IAC5E,oCAAoC,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;IAC9E,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,qCAAqC,CAAC,WAA6D;IAC1G,QAAQ,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3B,KAAK,sBAAsB;YACzB,OAAO,0CAA0C,WAAW,CAAC,iBAAiB,CAAC,MAAM,OAAO,WAAW,CAAC,cAAc,+JAA+J,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClU,KAAK,oBAAoB;YACvB,OAAO,+MAA+M,CAAC;QACzN,KAAK,mBAAmB;YACtB,OAAO,uQAAuQ,CAAC;QACjR;YACE,OAAO,0EAA0E,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,8KAA8K,CAAC;IAC5S,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CACtC,MAAuB,EACvB,WAA6D;IAE7D,6FAA6F;IAC7F,uEAAuE;IACvE,OAAO,CACL,mCAAmC,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAClG,QAAQ,CAAC,IAAI,EACb;QACE,OAAO,EAAE,qCAAqC,CAAC,WAAW,CAAC;QAC3D,eAAe,EAAE,WAAW,CAAC,eAAe;QAC5C,cAAc,EAAE,WAAW,CAAC,cAAc;QAC1C,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;KACjD,EACD,cAAc,CACf,CAAC;AACJ,CAAC;AAED,yGAAyG;AACzG,iGAAiG;AACjG,sGAAsG;AACtG,uFAAuF;AACvF,SAAS,gCAAgC,CAAC,MAAuB,EAAE,IAAY;IAC7E,uGAAuG;IACvG,8CAA8C;IAC9C,OAAO,CACL,wCAAwC,IAAI,EAAE,EAC9C,QAAQ,CAAC,IAAI,EACb;QACE,IAAI;QACJ,OAAO,EAAE,6CAA6C,IAAI,+JAA+J,IAAI,4EAA4E;KAC1S,EACD,cAAc,CACf,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,OAAO,EAAmB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { beginWgpuRenderEffectPipeline, createWgpuRenderEffectPipeline, defaultWgpuBlendEffectRunner, defaultWgpuBloomEffectRunner, defaultWgpuBokehDepthOfFieldEffectRunner, defaultWgpuCameraMotionBlurEffectRunner, defaultWgpuChromaticAberrationEffectRunner, defaultWgpuCompositeEffectRunner, defaultWgpuCrtEffectRunner, defaultWgpuDirectionalBlurEffectRunner, defaultWgpuDisplacementEffectRunner, defaultWgpuDitherEffectRunner, defaultWgpuFilmGrainEffectRunner, defaultWgpuFxaaEffectRunner, defaultWgpuGlitchEffectRunner, defaultWgpuGodRaysEffectRunner, defaultWgpuHalftoneEffectRunner, defaultWgpuKuwaharaEffectRunner, defaultWgpuLensDirtEffectRunner, defaultWgpuLensDistortionEffectRunner, defaultWgpuLensFlareEffectRunner, defaultWgpuMotionBlurEffectRunner, defaultWgpuOutlineEffectRunner, defaultWgpuPixelateEffectRunner, defaultWgpuPosterizeEffectRunner, defaultWgpuRadialBlurEffectRunner, defaultWgpuScanlinesEffectRunner, defaultWgpuScreenSpaceFogEffectRunner, defaultWgpuSharpenEffectRunner, defaultWgpuSketchEffectRunner, defaultWgpuSmaaEffectRunner, defaultWgpuSsaoEffectRunner, defaultWgpuSsrEffectRunner, defaultWgpuTaaEffectRunner, defaultWgpuTiltShiftEffectRunner, defaultWgpuToneMapEffectRunner, defaultWgpuVignetteEffectRunner, defaultWgpuWhiteBalanceEffectRunner, endWgpuRenderEffectPipeline, registerWgpuBlendEffectBackdrop, registerWgpuRenderEffect, setWgpuRenderEffectVelocityTexture, } from './contract';
1
+ export { applyWgpuRenderEffectsToRenderTexture, beginWgpuRenderEffectPipeline, createWgpuRenderEffectPipeline, defaultWgpuBevelEffectRunner, defaultWgpuBlendEffectRunner, defaultWgpuBloomEffectRunner, defaultWgpuBlurEffectRunner, defaultWgpuCameraMotionBlurEffectRunner, defaultWgpuChromaticAberrationEffectRunner, defaultWgpuCompositeEffectRunner, defaultWgpuContactShadowsEffectRunner, defaultWgpuConvolutionEffectRunner, defaultWgpuCrtEffectRunner, defaultWgpuDirectionalBlurEffectRunner, defaultWgpuDisplacementEffectRunner, defaultWgpuDitherEffectRunner, defaultWgpuDropShadowEffectRunner, defaultWgpuFilmGrainEffectRunner, defaultWgpuFxaaEffectRunner, defaultWgpuGlitchEffectRunner, defaultWgpuGodRaysEffectRunner, defaultWgpuGradientBevelEffectRunner, defaultWgpuGradientGlowEffectRunner, defaultWgpuHalftoneEffectRunner, defaultWgpuInnerGlowEffectRunner, defaultWgpuInnerShadowEffectRunner, defaultWgpuKuwaharaEffectRunner, defaultWgpuLensDirtEffectRunner, defaultWgpuLensDistortionEffectRunner, defaultWgpuLensFlareEffectRunner, defaultWgpuMedianEffectRunner, defaultWgpuMotionBlurEffectRunner, defaultWgpuOuterGlowEffectRunner, defaultWgpuOutlineEffectRunner, defaultWgpuPixelateEffectRunner, defaultWgpuPosterizeEffectRunner, defaultWgpuRadialBlurEffectRunner, defaultWgpuScanlinesEffectRunner, defaultWgpuScreenSpaceFogEffectRunner, defaultWgpuSharpenEffectRunner, defaultWgpuSketchEffectRunner, defaultWgpuSmaaEffectRunner, defaultWgpuSsaoEffectRunner, defaultWgpuTiltShiftEffectRunner, defaultWgpuToneMapEffectRunner, defaultWgpuVignetteEffectRunner, defaultWgpuWhiteBalanceEffectRunner, endWgpuRenderEffectPipeline, registerWgpuBlendEffectBackdrop, registerWgpuBevelEffect, registerWgpuBlurEffect, registerWgpuContactShadowsEffect, registerWgpuDropShadowEffect, registerWgpuGradientBevelEffect, registerWgpuGradientGlowEffect, registerWgpuInnerGlowEffect, registerWgpuInnerShadowEffect, registerWgpuOuterGlowEffect, registerWgpuBlendEffect, registerWgpuBloomEffect, registerWgpuCameraMotionBlurEffect, registerWgpuChromaticAberrationEffect, registerWgpuCompositeEffect, registerWgpuConvolutionEffect, registerWgpuCrtEffect, registerWgpuDirectionalBlurEffect, registerWgpuDisplacementEffect, registerWgpuDitherEffect, registerWgpuFilmGrainEffect, registerWgpuFxaaEffect, registerWgpuGlitchEffect, registerWgpuGodRaysEffect, registerWgpuHalftoneEffect, registerWgpuKuwaharaEffect, registerWgpuLensDirtEffect, registerWgpuLensDistortionEffect, registerWgpuLensFlareEffect, registerWgpuMedianEffect, registerWgpuMotionBlurEffect, registerWgpuOutlineEffect, registerWgpuPixelateEffect, registerWgpuPosterizeEffect, registerWgpuRadialBlurEffect, registerWgpuScanlinesEffect, registerWgpuScreenSpaceFogEffect, registerWgpuSharpenEffect, registerWgpuSketchEffect, registerWgpuSmaaEffect, registerWgpuSsaoEffect, registerWgpuTiltShiftEffect, registerWgpuToneMapEffect, registerWgpuVignetteEffect, registerWgpuWhiteBalanceEffect, registerWgpuRenderEffect, setWgpuRenderEffectVelocityTexture, } from './contract';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,wCAAwC,EACxC,uCAAuC,EACvC,0CAA0C,EAC1C,gCAAgC,EAChC,0BAA0B,EAC1B,sCAAsC,EACtC,mCAAmC,EACnC,6BAA6B,EAC7B,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,qCAAqC,EACrC,gCAAgC,EAChC,iCAAiC,EACjC,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,qCAAqC,EACrC,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mCAAmC,EACnC,2BAA2B,EAC3B,+BAA+B,EAC/B,wBAAwB,EACxB,kCAAkC,GACnC,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,uCAAuC,EACvC,0CAA0C,EAC1C,gCAAgC,EAChC,qCAAqC,EACrC,kCAAkC,EAClC,0BAA0B,EAC1B,sCAAsC,EACtC,mCAAmC,EACnC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,oCAAoC,EACpC,mCAAmC,EACnC,+BAA+B,EAC/B,gCAAgC,EAChC,kCAAkC,EAClC,+BAA+B,EAC/B,+BAA+B,EAC/B,qCAAqC,EACrC,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,qCAAqC,EACrC,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mCAAmC,EACnC,2BAA2B,EAC3B,+BAA+B,EAC/B,uBAAuB,EACvB,sBAAsB,EACtB,gCAAgC,EAChC,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,kCAAkC,EAClC,qCAAqC,EACrC,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,EAChC,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EACxB,kCAAkC,GACnC,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { beginWgpuRenderEffectPipeline, createWgpuRenderEffectPipeline, defaultWgpuBlendEffectRunner, defaultWgpuBloomEffectRunner, defaultWgpuBokehDepthOfFieldEffectRunner, defaultWgpuCameraMotionBlurEffectRunner, defaultWgpuChromaticAberrationEffectRunner, defaultWgpuCompositeEffectRunner, defaultWgpuCrtEffectRunner, defaultWgpuDirectionalBlurEffectRunner, defaultWgpuDisplacementEffectRunner, defaultWgpuDitherEffectRunner, defaultWgpuFilmGrainEffectRunner, defaultWgpuFxaaEffectRunner, defaultWgpuGlitchEffectRunner, defaultWgpuGodRaysEffectRunner, defaultWgpuHalftoneEffectRunner, defaultWgpuKuwaharaEffectRunner, defaultWgpuLensDirtEffectRunner, defaultWgpuLensDistortionEffectRunner, defaultWgpuLensFlareEffectRunner, defaultWgpuMotionBlurEffectRunner, defaultWgpuOutlineEffectRunner, defaultWgpuPixelateEffectRunner, defaultWgpuPosterizeEffectRunner, defaultWgpuRadialBlurEffectRunner, defaultWgpuScanlinesEffectRunner, defaultWgpuScreenSpaceFogEffectRunner, defaultWgpuSharpenEffectRunner, defaultWgpuSketchEffectRunner, defaultWgpuSmaaEffectRunner, defaultWgpuSsaoEffectRunner, defaultWgpuSsrEffectRunner, defaultWgpuTaaEffectRunner, defaultWgpuTiltShiftEffectRunner, defaultWgpuToneMapEffectRunner, defaultWgpuVignetteEffectRunner, defaultWgpuWhiteBalanceEffectRunner, endWgpuRenderEffectPipeline, registerWgpuBlendEffectBackdrop, registerWgpuRenderEffect, setWgpuRenderEffectVelocityTexture, } from './contract';
1
+ export { applyWgpuRenderEffectsToRenderTexture, beginWgpuRenderEffectPipeline, createWgpuRenderEffectPipeline, defaultWgpuBevelEffectRunner, defaultWgpuBlendEffectRunner, defaultWgpuBloomEffectRunner, defaultWgpuBlurEffectRunner, defaultWgpuCameraMotionBlurEffectRunner, defaultWgpuChromaticAberrationEffectRunner, defaultWgpuCompositeEffectRunner, defaultWgpuContactShadowsEffectRunner, defaultWgpuConvolutionEffectRunner, defaultWgpuCrtEffectRunner, defaultWgpuDirectionalBlurEffectRunner, defaultWgpuDisplacementEffectRunner, defaultWgpuDitherEffectRunner, defaultWgpuDropShadowEffectRunner, defaultWgpuFilmGrainEffectRunner, defaultWgpuFxaaEffectRunner, defaultWgpuGlitchEffectRunner, defaultWgpuGodRaysEffectRunner, defaultWgpuGradientBevelEffectRunner, defaultWgpuGradientGlowEffectRunner, defaultWgpuHalftoneEffectRunner, defaultWgpuInnerGlowEffectRunner, defaultWgpuInnerShadowEffectRunner, defaultWgpuKuwaharaEffectRunner, defaultWgpuLensDirtEffectRunner, defaultWgpuLensDistortionEffectRunner, defaultWgpuLensFlareEffectRunner, defaultWgpuMedianEffectRunner, defaultWgpuMotionBlurEffectRunner, defaultWgpuOuterGlowEffectRunner, defaultWgpuOutlineEffectRunner, defaultWgpuPixelateEffectRunner, defaultWgpuPosterizeEffectRunner, defaultWgpuRadialBlurEffectRunner, defaultWgpuScanlinesEffectRunner, defaultWgpuScreenSpaceFogEffectRunner, defaultWgpuSharpenEffectRunner, defaultWgpuSketchEffectRunner, defaultWgpuSmaaEffectRunner, defaultWgpuSsaoEffectRunner, defaultWgpuTiltShiftEffectRunner, defaultWgpuToneMapEffectRunner, defaultWgpuVignetteEffectRunner, defaultWgpuWhiteBalanceEffectRunner, endWgpuRenderEffectPipeline, registerWgpuBlendEffectBackdrop, registerWgpuBevelEffect, registerWgpuBlurEffect, registerWgpuContactShadowsEffect, registerWgpuDropShadowEffect, registerWgpuGradientBevelEffect, registerWgpuGradientGlowEffect, registerWgpuInnerGlowEffect, registerWgpuInnerShadowEffect, registerWgpuOuterGlowEffect, registerWgpuBlendEffect, registerWgpuBloomEffect, registerWgpuCameraMotionBlurEffect, registerWgpuChromaticAberrationEffect, registerWgpuCompositeEffect, registerWgpuConvolutionEffect, registerWgpuCrtEffect, registerWgpuDirectionalBlurEffect, registerWgpuDisplacementEffect, registerWgpuDitherEffect, registerWgpuFilmGrainEffect, registerWgpuFxaaEffect, registerWgpuGlitchEffect, registerWgpuGodRaysEffect, registerWgpuHalftoneEffect, registerWgpuKuwaharaEffect, registerWgpuLensDirtEffect, registerWgpuLensDistortionEffect, registerWgpuLensFlareEffect, registerWgpuMedianEffect, registerWgpuMotionBlurEffect, registerWgpuOutlineEffect, registerWgpuPixelateEffect, registerWgpuPosterizeEffect, registerWgpuRadialBlurEffect, registerWgpuScanlinesEffect, registerWgpuScreenSpaceFogEffect, registerWgpuSharpenEffect, registerWgpuSketchEffect, registerWgpuSmaaEffect, registerWgpuSsaoEffect, registerWgpuTiltShiftEffect, registerWgpuToneMapEffect, registerWgpuVignetteEffect, registerWgpuWhiteBalanceEffect, registerWgpuRenderEffect, setWgpuRenderEffectVelocityTexture, } from './contract';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,wCAAwC,EACxC,uCAAuC,EACvC,0CAA0C,EAC1C,gCAAgC,EAChC,0BAA0B,EAC1B,sCAAsC,EACtC,mCAAmC,EACnC,6BAA6B,EAC7B,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,qCAAqC,EACrC,gCAAgC,EAChC,iCAAiC,EACjC,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,qCAAqC,EACrC,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mCAAmC,EACnC,2BAA2B,EAC3B,+BAA+B,EAC/B,wBAAwB,EACxB,kCAAkC,GACnC,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,uCAAuC,EACvC,0CAA0C,EAC1C,gCAAgC,EAChC,qCAAqC,EACrC,kCAAkC,EAClC,0BAA0B,EAC1B,sCAAsC,EACtC,mCAAmC,EACnC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,oCAAoC,EACpC,mCAAmC,EACnC,+BAA+B,EAC/B,gCAAgC,EAChC,kCAAkC,EAClC,+BAA+B,EAC/B,+BAA+B,EAC/B,qCAAqC,EACrC,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,qCAAqC,EACrC,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mCAAmC,EACnC,2BAA2B,EAC3B,+BAA+B,EAC/B,uBAAuB,EACvB,sBAAsB,EACtB,gCAAgC,EAChC,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,kCAAkC,EAClC,qCAAqC,EACrC,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,EAChC,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EACxB,kCAAkC,GACnC,MAAM,YAAY,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { BevelEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget, WgpuRenderTargetPool } from '@flighthq/types/contract';
2
2
  export declare function applyBevelEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, pool: WgpuRenderTargetPool, effect: Readonly<BevelEffect>): void;
3
3
  export declare const defaultWgpuBevelEffectRunner: WgpuRenderEffectRunner;
4
+ export declare function registerWgpuBevelEffect(state: WgpuRenderState): void;
4
5
  //# sourceMappingURL=wgpuBevelEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuBevelEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBevelEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAelC,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC5B,IAAI,CAoDN;AAED,eAAO,MAAM,4BAA4B,EAAE,sBAE1C,CAAC"}
1
+ {"version":3,"file":"wgpuBevelEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBevelEffect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAgBlC,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC5B,IAAI,CAyDN;AAED,eAAO,MAAM,4BAA4B,EAAE,sBAE1C,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEpE"}
@@ -1,8 +1,10 @@
1
+ import { getColorAlpha, getColorRgb } from '@flighthq/color/contract';
1
2
  import { acquireWgpuRenderTarget, releaseWgpuRenderTarget } from '@flighthq/render-wgpu/contract';
2
3
  import { applyWgpuEffectBlitPass, applyWgpuEffectErasePass } from './wgpuEffectBlitShader';
3
4
  import { applyWgpuEffectBoxBlur } from './wgpuEffectBoxBlur';
4
5
  import { clearWgpuEffectTarget, createWgpuDualSourceEffectPipeline, drawWgpuDualSourceEffectPass, } from './wgpuEffectPass';
5
6
  import { applyWgpuEffectTintPass } from './wgpuEffectTintShader';
7
+ import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
6
8
  // Bevel composite effect: the directional gradient of the blurred silhouette drives a highlight/shadow edge band, clipped by bevelType, then sourceMode decides source compositing.
7
9
  // Full-frame realization: acquires the recipe's three scratch targets from the effect pool, runs the
8
10
  // multi-pass recipe (neutral tint → box blur → directional-gradient composite), then releases them.
@@ -18,17 +20,22 @@ export function applyBevelEffectToWgpu(state, source, dest, pool, effect) {
18
20
  // Match the surface reference, which snaps the light offset to whole pixels.
19
21
  const offsetX = Math.round(Math.cos(angle) * distance);
20
22
  const offsetY = Math.round(Math.sin(angle) * distance);
21
- const shadowColor = effect.shadowColor ?? 0x000000;
22
- const shadowAlpha = effect.shadowAlpha ?? 1;
23
- const highlightColor = effect.highlightColor ?? 0xffffff;
24
- const highlightAlpha = effect.highlightAlpha ?? 1;
23
+ // The color is packed RGBA and its alpha multiplies the separate *Alpha field, matching what
24
+ // BitmapBevelOptions does offscreen. The composite still wants RGB plus one alpha, so the split
25
+ // happens here rather than in the shader.
26
+ const shadowPacked = effect.shadowColor ?? 0x000000ff;
27
+ const shadowColor = getColorRgb(shadowPacked);
28
+ const shadowAlpha = (effect.shadowAlpha ?? 1) * getColorAlpha(shadowPacked);
29
+ const highlightPacked = effect.highlightColor ?? 0xffffffff;
30
+ const highlightColor = getColorRgb(highlightPacked);
31
+ const highlightAlpha = (effect.highlightAlpha ?? 1) * getColorAlpha(highlightPacked);
25
32
  const strength = effect.strength ?? 1;
26
33
  const quality = Math.max(1, Math.round(effect.quality ?? 1));
27
34
  const sourceMode = effect.sourceMode ?? 'draw';
28
35
  const bevelType = effect.bevelType ?? 'inner';
29
36
  // Blurred alpha field (neutral white tint, strength 1 — strength is the gradient
30
37
  // intensity applied per-pixel in the composite, not baked into the field).
31
- applyWgpuEffectTintPass(state, src, tinted, 0xffffff, 1, 1);
38
+ applyWgpuEffectTintPass(state, src, tinted, 0xffffffff, 1, 1);
32
39
  applyWgpuEffectBoxBlur(state, tinted, blurred, blurTemp, {
33
40
  blurX: effect.blurX ?? 4,
34
41
  blurY: effect.blurY ?? 4,
@@ -39,8 +46,8 @@ export function applyBevelEffectToWgpu(state, source, dest, pool, effect) {
39
46
  applyWgpuEffectBlitPass(state, src, dst);
40
47
  applyWgpuBevelCompositePass(state, blurred, src, dst, {
41
48
  offsetX: offsetX / source.width,
42
- // Negate Y: the field is a top-down render-target texture, so sampling toward the light
43
- // along screen-Y reads the opposite UV-Y (same orientation rule as applyWgpuEffectBlitOffsetPass).
49
+ // Negate Y to map the screen-space-Y-down light direction into the bottom-left-origin
50
+ // render-target contents, matching the Gl bevel and Wgpu offset-blit conventions.
44
51
  offsetY: -offsetY / source.height,
45
52
  highlightColor,
46
53
  highlightAlpha,
@@ -58,6 +65,9 @@ export function applyBevelEffectToWgpu(state, source, dest, pool, effect) {
58
65
  export const defaultWgpuBevelEffectRunner = (ctx, effect) => {
59
66
  applyBevelEffectToWgpu(ctx.state, ctx.source, ctx.dest, ctx.pool, effect);
60
67
  };
68
+ export function registerWgpuBevelEffect(state) {
69
+ registerWgpuRenderEffect(state, 'BevelEffect', defaultWgpuBevelEffectRunner);
70
+ }
61
71
  // Reads the blurred alpha field (group 1) and source (group 2); writes the tinted, clipped bevel
62
72
  // mask, premultiplied, blended over `dest` (which already holds the source when sourceMode is 'draw').
63
73
  const BEVEL_COMPOSITE_WGSL = /* wgsl */ `
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuBevelEffect.js","sourceRoot":"","sources":["../src/wgpuBevelEffect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wgpuBevelEffect.js","sourceRoot":"","sources":["../src/wgpuBevelEffect.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@ export declare function applyBlendEffectToWgpu(state: WgpuRenderState, source: R
3
3
  export declare const defaultWgpuBlendEffectRunner: WgpuRenderEffectRunner;
4
4
  export declare function getWgpuBlendEffectBackdrop(state: WgpuRenderState, backdropKey: string | null): WgpuRenderTarget | null;
5
5
  export declare function getWgpuBlendEffectModeIndex(mode: AdvancedBlendMode): number;
6
+ export declare function registerWgpuBlendEffect(state: WgpuRenderState): void;
6
7
  export declare function registerWgpuBlendEffectBackdrop(state: WgpuRenderState, backdropKey: string, target: WgpuRenderTarget): void;
7
8
  export declare function unregisterWgpuBlendEffectBackdrop(state: WgpuRenderState, backdropKey: string): boolean;
8
- export declare const WGPU_BLEND_FRAGMENT_WGSL = "\nstruct Uniforms {\n mode : i32,\n opacity : f32,\n hasBackdrop : i32,\n _pad0 : f32,\n}\n@group(0) @binding(0) var<uniform> uni : Uniforms;\n@group(1) @binding(0) var layerTexture : texture_2d<f32>;\n@group(1) @binding(1) var layerSampler : sampler;\n@group(2) @binding(0) var backdropTexture : texture_2d<f32>;\n@group(2) @binding(1) var backdropSampler : sampler;\n\nfn lum(c : vec3f) -> f32 {\n return dot(c, vec3f(0.3, 0.59, 0.11));\n}\n\nfn sat(c : vec3f) -> f32 {\n return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b);\n}\n\nfn clipColor(inputColor : vec3f) -> vec3f {\n var c = inputColor;\n let l = lum(c);\n let mn = min(min(c.r, c.g), c.b);\n let mx = max(max(c.r, c.g), c.b);\n if (mn < 0.0) {\n c = vec3f(l) + (c - vec3f(l)) * l / (l - mn);\n }\n if (mx > 1.0) {\n c = vec3f(l) + (c - vec3f(l)) * (1.0 - l) / (mx - l);\n }\n return c;\n}\n\nfn setLum(c : vec3f, l : f32) -> vec3f {\n return clipColor(c + vec3f(l - lum(c)));\n}\n\nfn setSat(c : vec3f, s : f32) -> vec3f {\n let mn = min(min(c.r, c.g), c.b);\n let mx = max(max(c.r, c.g), c.b);\n let md = c.r + c.g + c.b - mn - mx;\n let rmid = select(0.0, (md - mn) * s / (mx - mn), mx > mn);\n let rmax = select(0.0, s, mx > mn);\n var out = vec3f(0.0);\n out.r = select(select(rmid, 0.0, c.r == mn), rmax, c.r == mx);\n out.g = select(select(rmid, 0.0, c.g == mn), rmax, c.g == mx);\n out.b = select(select(rmid, 0.0, c.b == mn), rmax, c.b == mx);\n return out;\n}\n\nfn sepChannel(mode : i32, cb : f32, cs : f32) -> f32 {\n if (mode == 0) {\n return select(1.0 - 2.0 * (1.0 - cb) * (1.0 - cs), 2.0 * cb * cs, cb <= 0.5);\n }\n if (mode == 1) {\n return select(1.0 - 2.0 * (1.0 - cb) * (1.0 - cs), 2.0 * cb * cs, cs <= 0.5);\n }\n if (mode == 2) {\n let d = select(sqrt(cb), ((16.0 * cb - 12.0) * cb + 4.0) * cb, cb <= 0.25);\n return select(cb + (2.0 * cs - 1.0) * (d - cb), cb - (1.0 - 2.0 * cs) * cb * (1.0 - cb), cs <= 0.5);\n }\n if (mode == 3) { return abs(cb - cs); }\n if (mode == 4) { return cb + cs - 2.0 * cb * cs; }\n if (mode == 5) {\n if (cb <= 0.0) { return 0.0; }\n return select(min(1.0, cb / (1.0 - cs)), 1.0, cs >= 1.0);\n }\n if (mode == 6) {\n if (cb >= 1.0) { return 1.0; }\n return select(1.0 - min(1.0, (1.0 - cb) / cs), 0.0, cs <= 0.0);\n }\n return cs;\n}\n\nfn blendRgb(mode : i32, cb : vec3f, cs : vec3f) -> vec3f {\n if (mode == 7) { return setLum(setSat(cs, sat(cb)), lum(cb)); }\n if (mode == 8) { return setLum(setSat(cb, sat(cs)), lum(cb)); }\n if (mode == 9) { return setLum(cs, lum(cb)); }\n if (mode == 10) { return setLum(cb, lum(cs)); }\n return vec3f(\n sepChannel(mode, cb.r, cs.r),\n sepChannel(mode, cb.g, cs.g),\n sepChannel(mode, cb.b, cs.b),\n );\n}\n\n@fragment\nfn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {\n let layer = textureSampleLevel(layerTexture, layerSampler, uv, 0.0);\n if (uni.hasBackdrop == 0) {\n return layer;\n }\n let back = textureSampleLevel(backdropTexture, backdropSampler, uv, 0.0);\n let cs = select(vec3f(0.0), layer.rgb / layer.a, layer.a > 0.0);\n let cb = select(vec3f(0.0), back.rgb / back.a, back.a > 0.0);\n let sourceAlpha = layer.a * uni.opacity;\n let backdropAlpha = back.a;\n let blended = blendRgb(uni.mode, cb, cs);\n let mixed = (1.0 - backdropAlpha) * cs + backdropAlpha * blended;\n let outAlpha = sourceAlpha + backdropAlpha * (1.0 - sourceAlpha);\n let outRgb = mixed * sourceAlpha + cb * backdropAlpha * (1.0 - sourceAlpha);\n return vec4f(outRgb, outAlpha);\n}\n";
9
+ export declare const WGPU_BLEND_FRAGMENT_WGSL = "\nstruct Uniforms {\n mode : i32,\n opacity : f32,\n hasBackdrop : i32,\n _pad0 : f32,\n}\n@group(0) @binding(0) var<uniform> uni : Uniforms;\n@group(1) @binding(0) var layerTexture : texture_2d<f32>;\n@group(1) @binding(1) var layerSampler : sampler;\n@group(2) @binding(0) var backdropTexture : texture_2d<f32>;\n@group(2) @binding(1) var backdropSampler : sampler;\n\nfn lum(c : vec3f) -> f32 {\n return dot(c, vec3f(0.3, 0.59, 0.11));\n}\n\nfn sat(c : vec3f) -> f32 {\n return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b);\n}\n\nfn clipColor(inputColor : vec3f) -> vec3f {\n var c = inputColor;\n let l = lum(c);\n let mn = min(min(c.r, c.g), c.b);\n let mx = max(max(c.r, c.g), c.b);\n if (mn < 0.0) {\n c = vec3f(l) + (c - vec3f(l)) * l / (l - mn);\n }\n if (mx > 1.0) {\n c = vec3f(l) + (c - vec3f(l)) * (1.0 - l) / (mx - l);\n }\n return c;\n}\n\nfn setLum(c : vec3f, l : f32) -> vec3f {\n return clipColor(c + vec3f(l - lum(c)));\n}\n\nfn setSat(c : vec3f, s : f32) -> vec3f {\n let mn = min(min(c.r, c.g), c.b);\n let mx = max(max(c.r, c.g), c.b);\n let md = c.r + c.g + c.b - mn - mx;\n let rmid = select(0.0, (md - mn) * s / (mx - mn), mx > mn);\n let rmax = select(0.0, s, mx > mn);\n var out = vec3f(0.0);\n out.r = select(select(rmid, 0.0, c.r == mn), rmax, c.r == mx);\n out.g = select(select(rmid, 0.0, c.g == mn), rmax, c.g == mx);\n out.b = select(select(rmid, 0.0, c.b == mn), rmax, c.b == mx);\n return out;\n}\n\nfn sepChannel(mode : i32, cb : f32, cs : f32) -> f32 {\n if (mode == 0) {\n return select(1.0 - 2.0 * (1.0 - cb) * (1.0 - cs), 2.0 * cb * cs, cb <= 0.5);\n }\n if (mode == 1) {\n return select(1.0 - 2.0 * (1.0 - cb) * (1.0 - cs), 2.0 * cb * cs, cs <= 0.5);\n }\n if (mode == 2) {\n let d = select(sqrt(cb), ((16.0 * cb - 12.0) * cb + 4.0) * cb, cb <= 0.25);\n return select(cb + (2.0 * cs - 1.0) * (d - cb), cb - (1.0 - 2.0 * cs) * cb * (1.0 - cb), cs <= 0.5);\n }\n if (mode == 3) { return abs(cb - cs); }\n if (mode == 4) { return cb + cs - 2.0 * cb * cs; }\n if (mode == 5) {\n if (cb <= 0.0) { return 0.0; }\n return select(min(1.0, cb / (1.0 - cs)), 1.0, cs >= 1.0);\n }\n if (mode == 6) {\n if (cb >= 1.0) { return 1.0; }\n return select(1.0 - min(1.0, (1.0 - cb) / cs), 0.0, cs <= 0.0);\n }\n if (mode == 11) { return min(cb, cs); }\n if (mode == 12) { return max(cb, cs); }\n return cs;\n}\n\nfn blendRgb(mode : i32, cb : vec3f, cs : vec3f) -> vec3f {\n if (mode == 7) { return setLum(setSat(cs, sat(cb)), lum(cb)); }\n if (mode == 8) { return setLum(setSat(cb, sat(cs)), lum(cb)); }\n if (mode == 9) { return setLum(cs, lum(cb)); }\n if (mode == 10) { return setLum(cb, lum(cs)); }\n return vec3f(\n sepChannel(mode, cb.r, cs.r),\n sepChannel(mode, cb.g, cs.g),\n sepChannel(mode, cb.b, cs.b),\n );\n}\n\n@fragment\nfn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {\n let layer = textureSampleLevel(layerTexture, layerSampler, uv, 0.0);\n if (uni.hasBackdrop == 0) {\n return layer;\n }\n let back = textureSampleLevel(backdropTexture, backdropSampler, uv, 0.0);\n let cs = select(vec3f(0.0), layer.rgb / layer.a, layer.a > 0.0);\n let cb = select(vec3f(0.0), back.rgb / back.a, back.a > 0.0);\n let sourceAlpha = layer.a * uni.opacity;\n let backdropAlpha = back.a;\n let blended = blendRgb(uni.mode, cb, cs);\n let mixed = (1.0 - backdropAlpha) * cs + backdropAlpha * blended;\n let outAlpha = sourceAlpha + backdropAlpha * (1.0 - sourceAlpha);\n let outRgb = mixed * sourceAlpha + cb * backdropAlpha * (1.0 - sourceAlpha);\n return vec4f(outRgb, outAlpha);\n}\n";
9
10
  //# sourceMappingURL=wgpuBlendEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuBlendEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBlendEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EAEX,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AASlC,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,CAiBN;AAED,eAAO,MAAM,4BAA4B,EAAE,sBAE1C,CAAC;AAGF,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,gBAAgB,GAAG,IAAI,CAGzB;AAID,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAE3E;AAID,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,gBAAgB,GACvB,IAAI,CAON;AAGD,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAEtG;AA8BD,eAAO,MAAM,wBAAwB,w9GAyGpC,CAAC"}
1
+ {"version":3,"file":"wgpuBlendEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBlendEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EAEX,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAUlC,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,CAiBN;AAED,eAAO,MAAM,4BAA4B,EAAE,sBAE1C,CAAC;AAGF,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,gBAAgB,GAAG,IAAI,CAGzB;AAID,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAE3E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEpE;AAID,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,gBAAgB,GACvB,IAAI,CAON;AAGD,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAEtG;AAgCD,eAAO,MAAM,wBAAwB,8iHA2GpC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { AdvancedBlendMode as AdvancedBlendModeValues } from '@flighthq/types/contract';
2
2
  import { createWgpuDualSourceEffectPipeline, drawWgpuDualSourceEffectPass } from './wgpuEffectPass';
3
+ import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
3
4
  // Advanced-blend composite pass: reads the incoming layer and an explicitly registered backdrop,
4
5
  // applies the same W3C straight-color blend math as glBlendEffect, then writes premultiplied
5
6
  // source-over output. A missing backdrop uses the layer as a harmless second binding and the uniform
@@ -29,6 +30,9 @@ export function getWgpuBlendEffectBackdrop(state, backdropKey) {
29
30
  export function getWgpuBlendEffectModeIndex(mode) {
30
31
  return BLEND_MODE_INDEX[mode] ?? -1;
31
32
  }
33
+ export function registerWgpuBlendEffect(state) {
34
+ registerWgpuRenderEffect(state, 'BlendEffect', defaultWgpuBlendEffectRunner);
35
+ }
32
36
  // Registers a borrowed render target as a named backdrop. Last write wins; the registry never owns or
33
37
  // destroys the target, so its caller must keep it alive until the BlendEffect pass completes.
34
38
  export function registerWgpuBlendEffectBackdrop(state, backdropKey, target) {
@@ -63,6 +67,8 @@ const BLEND_MODE_INDEX = {
63
67
  [AdvancedBlendModeValues.Saturation]: 8,
64
68
  [AdvancedBlendModeValues.Color]: 9,
65
69
  [AdvancedBlendModeValues.Luminosity]: 10,
70
+ [AdvancedBlendModeValues.Darken]: 11,
71
+ [AdvancedBlendModeValues.Lighten]: 12,
66
72
  };
67
73
  const backdrops = new WeakMap();
68
74
  const pipelines = new WeakMap();
@@ -141,6 +147,8 @@ fn sepChannel(mode : i32, cb : f32, cs : f32) -> f32 {
141
147
  if (cb >= 1.0) { return 1.0; }
142
148
  return select(1.0 - min(1.0, (1.0 - cb) / cs), 0.0, cs <= 0.0);
143
149
  }
150
+ if (mode == 11) { return min(cb, cs); }
151
+ if (mode == 12) { return max(cb, cs); }
144
152
  return cs;
145
153
  }
146
154
 
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuBlendEffect.js","sourceRoot":"","sources":["../src/wgpuBlendEffect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wgpuBlendEffect.js","sourceRoot":"","sources":["../src/wgpuBlendEffect.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { BloomEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget, WgpuRenderTargetPool } from '@flighthq/types/contract';
2
2
  export declare function applyBloomEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, pool: WgpuRenderTargetPool, effect: Readonly<BloomEffect>): void;
3
3
  export declare const defaultWgpuBloomEffectRunner: WgpuRenderEffectRunner;
4
+ export declare function registerWgpuBloomEffect(state: WgpuRenderState): void;
4
5
  //# sourceMappingURL=wgpuBloomEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuBloomEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBloomEffect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAYlC,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC5B,IAAI,CAgCN;AAED,eAAO,MAAM,4BAA4B,EAAE,sBAE1C,CAAC"}
1
+ {"version":3,"file":"wgpuBloomEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBloomEffect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAalC,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC5B,IAAI,CAgCN;AAED,eAAO,MAAM,4BAA4B,EAAE,sBAE1C,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEpE"}
@@ -3,6 +3,7 @@ import { acquireWgpuRenderTarget, releaseWgpuRenderTarget } from '@flighthq/rend
3
3
  import { applyGaussianBlurToWgpu } from './wgpuBlurEffect';
4
4
  import { createWgpuDualSourceEffectPipeline, drawWgpuDualSourceEffectPass, drawWgpuEffectPass } from './wgpuEffectPass';
5
5
  import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
6
+ import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
6
7
  // Bloom: bright-pass → blur the bright branch (via the effects-owned separable gaussian blur) →
7
8
  // additively composite back. The multi-pass reference recipe — it acquires intermediate targets from
8
9
  // the pool and releases them, branches, and reuses the blur primitive, which is what makes it an effect.
@@ -32,6 +33,9 @@ export function applyBloomEffectToWgpu(state, source, dest, pool, effect) {
32
33
  export const defaultWgpuBloomEffectRunner = (ctx, effect) => {
33
34
  applyBloomEffectToWgpu(ctx.state, ctx.source, ctx.dest, ctx.pool, effect);
34
35
  };
36
+ export function registerWgpuBloomEffect(state) {
37
+ registerWgpuRenderEffect(state, 'BloomEffect', defaultWgpuBloomEffectRunner);
38
+ }
35
39
  // The composite pipeline reads two textures (scene = group 1, blurred = group 2) so it uses the
36
40
  // dual-source filter primitive; cached per state alongside the single-source pipelines.
37
41
  function getBloomCompositePipeline(state) {
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuBloomEffect.js","sourceRoot":"","sources":["../src/wgpuBloomEffect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wgpuBloomEffect.js","sourceRoot":"","sources":["../src/wgpuBloomEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAClH,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAUlG,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,kCAAkC,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxH,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,gGAAgG;AAChG,qGAAqG;AACrG,yGAAyG;AACzG,2FAA2F;AAC3F,iFAAiF;AACjF,MAAM,UAAU,sBAAsB,CACpC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,IAA0B,EAC1B,MAA6B;IAE7B,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAEzF,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAE9D,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,0BAA0B,EAAE,SAAS,CAAC,CAAC;IAC3G,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE;QACpF,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAExF,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC3D,4BAA4B,CAC1B,KAAK,EACL,MAA0B,EAC1B,OAAO,EACP,IAAwB,EACxB,iBAAiB,EACjB,CAAC,GAAG,EAAE,EAAE;QACN,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,CAAC,CACF,CAAC;IAEF,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,MAAM,4BAA4B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAClF,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAqB,CAAC,CAAC;AAC3F,CAAC,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,KAAsB;IAC5D,wBAAwB,CAAC,KAAK,EAAE,aAAa,EAAE,4BAA4B,CAAC,CAAC;AAC/E,CAAC;AAED,gGAAgG;AAChG,wFAAwF;AACxF,SAAS,yBAAyB,CAAC,KAAsB;IACvD,IAAI,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,GAAG,kCAAkC,CAAC,KAAK,EAAE,6BAA6B,EAAE,SAAS,CAAC,CAAC;QAC/F,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAAiD,CAAC;AAEzF,MAAM,0BAA0B,GAAG,UAAU,CAAC;;;;;;;;;;;;EAY5C,CAAC;AAEH,MAAM,6BAA6B,GAAG,UAAU,CAAC;;;;;;;;;;;;;EAa/C,CAAC"}
@@ -5,4 +5,5 @@ export declare function applyGaussianBlurToWgpu(state: WgpuRenderState, source:
5
5
  blurY?: number;
6
6
  }>): void;
7
7
  export declare const defaultWgpuBlurEffectRunner: WgpuRenderEffectRunner;
8
+ export declare function registerWgpuBlurEffect(state: WgpuRenderState): void;
8
9
  //# sourceMappingURL=wgpuBlurEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuBlurEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBlurEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAatH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAC3B,IAAI,CAEN;AAMD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,OAAO,EAAE,QAAQ,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACpD,IAAI,CAON;AAED,eAAO,MAAM,2BAA2B,EAAE,sBAKzC,CAAC"}
1
+ {"version":3,"file":"wgpuBlurEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBlurEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AActH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAC3B,IAAI,CAEN;AAMD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,OAAO,EAAE,QAAQ,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACpD,IAAI,CAON;AAED,eAAO,MAAM,2BAA2B,EAAE,sBAKzC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEnE"}
@@ -1,6 +1,7 @@
1
1
  import { acquireWgpuRenderTarget, releaseWgpuRenderTarget } from '@flighthq/render-wgpu/contract';
2
2
  import { drawWgpuEffectPass } from './wgpuEffectPass';
3
3
  import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
4
+ import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
4
5
  // Plain separable Gaussian blur: two axis passes (source → temp horizontally, temp → dest vertically),
5
6
  // each a single weighted fullscreen pass with radius ⌈3σ⌉. `blurX`/`blurY` are the Gaussian standard
6
7
  // deviations (CSS `blur(Xpx)` uses sigma = X), matching the CSS and surface Gaussian references and the
@@ -29,6 +30,9 @@ export const defaultWgpuBlurEffectRunner = (ctx, effect) => {
29
30
  applyBlurEffectToWgpu(ctx.state, ctx.source, ctx.dest, temp, effect);
30
31
  releaseWgpuRenderTarget(ctx.pool, temp);
31
32
  };
33
+ export function registerWgpuBlurEffect(state) {
34
+ registerWgpuRenderEffect(state, 'BlurEffect', defaultWgpuBlurEffectRunner);
35
+ }
32
36
  function applyWgpuGaussianBlurPass(state, source, dest, sigma, radius, dirX, dirY) {
33
37
  const pipeline = getWgpuEffectPipeline(state, 'blur.gaussian', GAUSSIAN_BLUR_WGSL, 'replace');
34
38
  drawWgpuEffectPass(state, source, dest, pipeline, (f32) => {
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuBlurEffect.js","sourceRoot":"","sources":["../src/wgpuBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGlG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,uGAAuG;AACvG,qGAAqG;AACrG,wGAAwG;AACxG,yGAAyG;AACzG,8GAA8G;AAE9G,kGAAkG;AAClG,iDAAiD;AACjD,MAAM,UAAU,qBAAqB,CACnC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,IAAgC,EAChC,MAA4B;IAE5B,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACnG,CAAC;AAED,qGAAqG;AACrG,+FAA+F;AAC/F,qGAAqG;AACrG,oGAAoG;AACpG,MAAM,UAAU,uBAAuB,CACrC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,IAAgC,EAChC,OAAqD;IAErD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,yBAAyB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACjF,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACrG,MAAM,IAAI,GAAG,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtE,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAoB,CAAC,CAAC;IACnF,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,SAAS,yBAAyB,CAChC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,KAAa,EACb,MAAc,EACd,IAAY,EACZ,IAAY;IAEZ,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;IAC9F,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACd,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACd,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAChB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,wEAAwE;AACxE,MAAM,kBAAkB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;EAyBpC,CAAC"}
1
+ {"version":3,"file":"wgpuBlurEffect.js","sourceRoot":"","sources":["../src/wgpuBlurEffect.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CameraMotionBlurEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types/contract';
2
2
  export declare function applyCameraMotionBlurEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<CameraMotionBlurEffect>): void;
3
3
  export declare const defaultWgpuCameraMotionBlurEffectRunner: WgpuRenderEffectRunner;
4
+ export declare function registerWgpuCameraMotionBlurEffect(state: WgpuRenderState): void;
4
5
  //# sourceMappingURL=wgpuCameraMotionBlurEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuCameraMotionBlurEffect.d.ts","sourceRoot":"","sources":["../src/wgpuCameraMotionBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAUlC,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GACvC,IAAI,CAQN;AAED,eAAO,MAAM,uCAAuC,EAAE,sBAErD,CAAC"}
1
+ {"version":3,"file":"wgpuCameraMotionBlurEffect.d.ts","sourceRoot":"","sources":["../src/wgpuCameraMotionBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAWlC,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GACvC,IAAI,CAQN;AAED,eAAO,MAAM,uCAAuC,EAAE,sBAErD,CAAC;AAEF,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAE/E"}
@@ -1,5 +1,6 @@
1
1
  import { drawWgpuEffectPass } from './wgpuEffectPass';
2
2
  import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
3
4
  // Camera3D motion blur: a real single-pass radial/zoom blur scaled by intensity — smears each sample
4
5
  // toward the screen center. A legitimate 2D effect on its own, the Wgpu mirror of effects-gl's
5
6
  // applyCameraMotionBlurEffectToGl. Two richer variants are 2D-native follow-ups, not 3D-gated:
@@ -17,6 +18,9 @@ export function applyCameraMotionBlurEffectToWgpu(state, source, dest, effect) {
17
18
  export const defaultWgpuCameraMotionBlurEffectRunner = (ctx, effect) => {
18
19
  applyCameraMotionBlurEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
19
20
  };
21
+ export function registerWgpuCameraMotionBlurEffect(state) {
22
+ registerWgpuRenderEffect(state, 'CameraMotionBlurEffect', defaultWgpuCameraMotionBlurEffectRunner);
23
+ }
20
24
  // Slot layout: [0]=intensity, [1]=samples. SAMPLES caps the loop; min(u_samples, 16.0) gates the taps.
21
25
  const CAMERA_MOTION_BLUR_FRAGMENT_WGSL = /* wgsl */ `
22
26
  struct Uniforms {
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuCameraMotionBlurEffect.js","sourceRoot":"","sources":["../src/wgpuCameraMotionBlurEffect.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,qGAAqG;AACrG,+FAA+F;AAC/F,+FAA+F;AAC/F,uGAAuG;AACvG,gFAAgF;AAChF,MAAM,UAAU,iCAAiC,CAC/C,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAwC;IAExC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,SAAS,CAAC,CAAC;IACtH,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,uCAAuC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAC7F,iCAAiC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAgC,CAAC,CAAC;AACvG,CAAC,CAAC;AAEF,uGAAuG;AACvG,MAAM,gCAAgC,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BlD,CAAC"}
1
+ {"version":3,"file":"wgpuCameraMotionBlurEffect.js","sourceRoot":"","sources":["../src/wgpuCameraMotionBlurEffect.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,qGAAqG;AACrG,+FAA+F;AAC/F,+FAA+F;AAC/F,uGAAuG;AACvG,gFAAgF;AAChF,MAAM,UAAU,iCAAiC,CAC/C,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAwC;IAExC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,SAAS,CAAC,CAAC;IACtH,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,uCAAuC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAC7F,iCAAiC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAgC,CAAC,CAAC;AACvG,CAAC,CAAC;AAEF,MAAM,UAAU,kCAAkC,CAAC,KAAsB;IACvE,wBAAwB,CAAC,KAAK,EAAE,wBAAwB,EAAE,uCAAuC,CAAC,CAAC;AACrG,CAAC;AAED,uGAAuG;AACvG,MAAM,gCAAgC,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BlD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { ChromaticAberrationEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types/contract';
2
2
  export declare function applyChromaticAberrationEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<ChromaticAberrationEffect>): void;
3
3
  export declare const defaultWgpuChromaticAberrationEffectRunner: WgpuRenderEffectRunner;
4
+ export declare function registerWgpuChromaticAberrationEffect(state: WgpuRenderState): void;
4
5
  //# sourceMappingURL=wgpuChromaticAberrationEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuChromaticAberrationEffect.d.ts","sourceRoot":"","sources":["../src/wgpuChromaticAberrationEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAC1C,IAAI,CAaN;AAED,eAAO,MAAM,0CAA0C,EAAE,sBAExD,CAAC"}
1
+ {"version":3,"file":"wgpuChromaticAberrationEffect.d.ts","sourceRoot":"","sources":["../src/wgpuChromaticAberrationEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AASlC,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAC1C,IAAI,CAaN;AAED,eAAO,MAAM,0CAA0C,EAAE,sBAExD,CAAC;AAEF,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAElF"}
@@ -1,5 +1,6 @@
1
1
  import { drawWgpuEffectPass } from './wgpuEffectPass';
2
2
  import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
3
+ import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
3
4
  // Chromatic aberration: sample the R/G/B channels at progressively larger offsets so colors fringe
4
5
  // apart. When radial, the offset scales with distance from the optical center (true lens behavior);
5
6
  // otherwise it is a uniform horizontal split.
@@ -15,6 +16,9 @@ export function applyChromaticAberrationEffectToWgpu(state, source, dest, effect
15
16
  export const defaultWgpuChromaticAberrationEffectRunner = (ctx, effect) => {
16
17
  applyChromaticAberrationEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
17
18
  };
19
+ export function registerWgpuChromaticAberrationEffect(state) {
20
+ registerWgpuRenderEffect(state, 'ChromaticAberrationEffect', defaultWgpuChromaticAberrationEffectRunner);
21
+ }
18
22
  // Slot layout: [0]=intensity, [1]=radial flag (1.0/0.0).
19
23
  const CHROMATIC_ABERRATION_FRAGMENT_WGSL = /* wgsl */ `
20
24
  struct Uniforms {
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuChromaticAberrationEffect.js","sourceRoot":"","sources":["../src/wgpuChromaticAberrationEffect.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,mGAAmG;AACnG,oGAAoG;AACpG,8CAA8C;AAC9C,MAAM,UAAU,oCAAoC,CAClD,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA2C;IAE3C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;IACrC,MAAM,QAAQ,GAAG,qBAAqB,CACpC,KAAK,EACL,0BAA0B,EAC1B,kCAAkC,EAClC,SAAS,CACV,CAAC;IACF,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,0CAA0C,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAChG,oCAAoC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAmC,CAAC,CAAC;AAC7G,CAAC,CAAC;AAEF,yDAAyD;AACzD,MAAM,kCAAkC,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;EAoBpD,CAAC"}
1
+ {"version":3,"file":"wgpuChromaticAberrationEffect.js","sourceRoot":"","sources":["../src/wgpuChromaticAberrationEffect.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,mGAAmG;AACnG,oGAAoG;AACpG,8CAA8C;AAC9C,MAAM,UAAU,oCAAoC,CAClD,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA2C;IAE3C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;IACrC,MAAM,QAAQ,GAAG,qBAAqB,CACpC,KAAK,EACL,0BAA0B,EAC1B,kCAAkC,EAClC,SAAS,CACV,CAAC;IACF,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,0CAA0C,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAChG,oCAAoC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAmC,CAAC,CAAC;AAC7G,CAAC,CAAC;AAEF,MAAM,UAAU,qCAAqC,CAAC,KAAsB;IAC1E,wBAAwB,CAAC,KAAK,EAAE,2BAA2B,EAAE,0CAA0C,CAAC,CAAC;AAC3G,CAAC;AAED,yDAAyD;AACzD,MAAM,kCAAkC,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;EAoBpD,CAAC"}
@@ -2,5 +2,6 @@ import type { CompositeEffect, CompositeOperator, WgpuRenderEffectRunner, WgpuRe
2
2
  export declare function applyCompositeEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<CompositeEffect>): void;
3
3
  export declare const defaultWgpuCompositeEffectRunner: WgpuRenderEffectRunner;
4
4
  export declare function getWgpuCompositeEffectOperatorIndex(operator: CompositeOperator): number;
5
+ export declare function registerWgpuCompositeEffect(state: WgpuRenderState): void;
5
6
  export declare const WGPU_COMPOSITE_FRAGMENT_WGSL = "\nstruct Uniforms {\n operatorIndex : i32,\n hasBackdrop : i32,\n _pad0 : vec2f,\n}\n@group(0) @binding(0) var<uniform> uni : Uniforms;\n@group(1) @binding(0) var layerTexture : texture_2d<f32>;\n@group(1) @binding(1) var layerSampler : sampler;\n@group(2) @binding(0) var backdropTexture : texture_2d<f32>;\n@group(2) @binding(1) var backdropSampler : sampler;\n\n@fragment\nfn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {\n let layer = textureSampleLevel(layerTexture, layerSampler, uv, 0.0);\n let back = select(vec4f(0.0), textureSampleLevel(backdropTexture, backdropSampler, uv, 0.0),\n uni.hasBackdrop == 1);\n let sourceAlpha = layer.a;\n let backdropAlpha = back.a;\n var sourceFactor = 1.0;\n var backdropFactor = 1.0 - sourceAlpha;\n if (uni.operatorIndex == 1) {\n sourceFactor = 1.0 - backdropAlpha; backdropFactor = 1.0;\n } else if (uni.operatorIndex == 2) {\n sourceFactor = backdropAlpha; backdropFactor = 0.0;\n } else if (uni.operatorIndex == 3) {\n sourceFactor = 0.0; backdropFactor = sourceAlpha;\n } else if (uni.operatorIndex == 4) {\n sourceFactor = 1.0 - backdropAlpha; backdropFactor = 0.0;\n } else if (uni.operatorIndex == 5) {\n sourceFactor = 0.0; backdropFactor = 1.0 - sourceAlpha;\n } else if (uni.operatorIndex == 6) {\n sourceFactor = backdropAlpha; backdropFactor = 1.0 - sourceAlpha;\n } else if (uni.operatorIndex == 7) {\n sourceFactor = 1.0 - backdropAlpha; backdropFactor = sourceAlpha;\n } else if (uni.operatorIndex == 8) {\n sourceFactor = 1.0 - backdropAlpha; backdropFactor = 1.0 - sourceAlpha;\n } else if (uni.operatorIndex == 9) {\n sourceFactor = 1.0; backdropFactor = 0.0;\n } else if (uni.operatorIndex == 10) {\n sourceFactor = 0.0; backdropFactor = 0.0;\n }\n return sourceFactor * layer + backdropFactor * back;\n}\n";
6
7
  //# sourceMappingURL=wgpuCompositeEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuCompositeEffect.d.ts","sourceRoot":"","sources":["../src/wgpuCompositeEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAEjB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAQlC,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,CAcN;AAED,eAAO,MAAM,gCAAgC,EAAE,sBAE9C,CAAC;AAEF,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAEvF;AA2BD,eAAO,MAAM,4BAA4B,k0DA4CxC,CAAC"}
1
+ {"version":3,"file":"wgpuCompositeEffect.d.ts","sourceRoot":"","sources":["../src/wgpuCompositeEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAEjB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AASlC,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,CAcN;AAED,eAAO,MAAM,gCAAgC,EAAE,sBAE9C,CAAC;AAEF,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAEvF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAExE;AA2BD,eAAO,MAAM,4BAA4B,k0DA4CxC,CAAC"}