@flighthq/effects 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/dist/autoExposureEffect.d.ts +3 -0
  2. package/dist/autoExposureEffect.d.ts.map +1 -0
  3. package/dist/autoExposureEffect.js +4 -0
  4. package/dist/autoExposureEffect.js.map +1 -0
  5. package/dist/barrelDistortionEffect.d.ts +3 -0
  6. package/dist/barrelDistortionEffect.d.ts.map +1 -0
  7. package/dist/barrelDistortionEffect.js +4 -0
  8. package/dist/barrelDistortionEffect.js.map +1 -0
  9. package/dist/bloomEffect.d.ts +6 -0
  10. package/dist/bloomEffect.d.ts.map +1 -0
  11. package/dist/bloomEffect.js +16 -0
  12. package/dist/bloomEffect.js.map +1 -0
  13. package/dist/bokehDepthOfFieldEffect.d.ts +3 -0
  14. package/dist/bokehDepthOfFieldEffect.d.ts.map +1 -0
  15. package/dist/bokehDepthOfFieldEffect.js +4 -0
  16. package/dist/bokehDepthOfFieldEffect.js.map +1 -0
  17. package/dist/brightnessContrastEffect.d.ts +3 -0
  18. package/dist/brightnessContrastEffect.d.ts.map +1 -0
  19. package/dist/brightnessContrastEffect.js +4 -0
  20. package/dist/brightnessContrastEffect.js.map +1 -0
  21. package/dist/cameraMotionBlurEffect.d.ts +3 -0
  22. package/dist/cameraMotionBlurEffect.d.ts.map +1 -0
  23. package/dist/cameraMotionBlurEffect.js +4 -0
  24. package/dist/cameraMotionBlurEffect.js.map +1 -0
  25. package/dist/channelMixerEffect.d.ts +3 -0
  26. package/dist/channelMixerEffect.d.ts.map +1 -0
  27. package/dist/channelMixerEffect.js +4 -0
  28. package/dist/channelMixerEffect.js.map +1 -0
  29. package/dist/chromaticAberrationEffect.d.ts +3 -0
  30. package/dist/chromaticAberrationEffect.d.ts.map +1 -0
  31. package/dist/chromaticAberrationEffect.js +4 -0
  32. package/dist/chromaticAberrationEffect.js.map +1 -0
  33. package/dist/colorBlindSimulationEffect.d.ts +3 -0
  34. package/dist/colorBlindSimulationEffect.d.ts.map +1 -0
  35. package/dist/colorBlindSimulationEffect.js +4 -0
  36. package/dist/colorBlindSimulationEffect.js.map +1 -0
  37. package/dist/colorGradeEffect.d.ts +3 -0
  38. package/dist/colorGradeEffect.d.ts.map +1 -0
  39. package/dist/colorGradeEffect.js +4 -0
  40. package/dist/colorGradeEffect.js.map +1 -0
  41. package/dist/colorScienceMath.d.ts +9 -0
  42. package/dist/colorScienceMath.d.ts.map +1 -0
  43. package/dist/colorScienceMath.js +135 -0
  44. package/dist/colorScienceMath.js.map +1 -0
  45. package/dist/colorTemperatureMath.d.ts +5 -0
  46. package/dist/colorTemperatureMath.d.ts.map +1 -0
  47. package/dist/colorTemperatureMath.js +45 -0
  48. package/dist/colorTemperatureMath.js.map +1 -0
  49. package/dist/contactShadowsEffect.d.ts +3 -0
  50. package/dist/contactShadowsEffect.d.ts.map +1 -0
  51. package/dist/contactShadowsEffect.js +4 -0
  52. package/dist/contactShadowsEffect.js.map +1 -0
  53. package/dist/crtEffect.d.ts +3 -0
  54. package/dist/crtEffect.d.ts.map +1 -0
  55. package/dist/crtEffect.js +4 -0
  56. package/dist/crtEffect.js.map +1 -0
  57. package/dist/customShaderEffect.d.ts +3 -0
  58. package/dist/customShaderEffect.d.ts.map +1 -0
  59. package/dist/customShaderEffect.js +4 -0
  60. package/dist/customShaderEffect.js.map +1 -0
  61. package/dist/depthMath.d.ts +4 -0
  62. package/dist/depthMath.d.ts.map +1 -0
  63. package/dist/depthMath.js +55 -0
  64. package/dist/depthMath.js.map +1 -0
  65. package/dist/directionalBlurEffect.d.ts +3 -0
  66. package/dist/directionalBlurEffect.d.ts.map +1 -0
  67. package/dist/directionalBlurEffect.js +4 -0
  68. package/dist/directionalBlurEffect.js.map +1 -0
  69. package/dist/displacementEffect.d.ts +3 -0
  70. package/dist/displacementEffect.d.ts.map +1 -0
  71. package/dist/displacementEffect.js +4 -0
  72. package/dist/displacementEffect.js.map +1 -0
  73. package/dist/ditherEffect.d.ts +3 -0
  74. package/dist/ditherEffect.d.ts.map +1 -0
  75. package/dist/ditherEffect.js +4 -0
  76. package/dist/ditherEffect.js.map +1 -0
  77. package/dist/edgeDetectMath.d.ts +6 -0
  78. package/dist/edgeDetectMath.d.ts.map +1 -0
  79. package/dist/edgeDetectMath.js +72 -0
  80. package/dist/edgeDetectMath.js.map +1 -0
  81. package/dist/exposureEffect.d.ts +3 -0
  82. package/dist/exposureEffect.d.ts.map +1 -0
  83. package/dist/exposureEffect.js +4 -0
  84. package/dist/exposureEffect.js.map +1 -0
  85. package/dist/filmEmulationEffect.d.ts +3 -0
  86. package/dist/filmEmulationEffect.d.ts.map +1 -0
  87. package/dist/filmEmulationEffect.js +4 -0
  88. package/dist/filmEmulationEffect.js.map +1 -0
  89. package/dist/filmGrainEffect.d.ts +3 -0
  90. package/dist/filmGrainEffect.d.ts.map +1 -0
  91. package/dist/filmGrainEffect.js +4 -0
  92. package/dist/filmGrainEffect.js.map +1 -0
  93. package/dist/fxaaEffect.d.ts +3 -0
  94. package/dist/fxaaEffect.d.ts.map +1 -0
  95. package/dist/fxaaEffect.js +4 -0
  96. package/dist/fxaaEffect.js.map +1 -0
  97. package/dist/gaussianMath.d.ts +5 -0
  98. package/dist/gaussianMath.d.ts.map +1 -0
  99. package/dist/gaussianMath.js +42 -0
  100. package/dist/gaussianMath.js.map +1 -0
  101. package/dist/glitchEffect.d.ts +3 -0
  102. package/dist/glitchEffect.d.ts.map +1 -0
  103. package/dist/glitchEffect.js +4 -0
  104. package/dist/glitchEffect.js.map +1 -0
  105. package/dist/godRaysEffect.d.ts +3 -0
  106. package/dist/godRaysEffect.d.ts.map +1 -0
  107. package/dist/godRaysEffect.js +4 -0
  108. package/dist/godRaysEffect.js.map +1 -0
  109. package/dist/godRaysMath.d.ts +8 -0
  110. package/dist/godRaysMath.d.ts.map +1 -0
  111. package/dist/godRaysMath.js +49 -0
  112. package/dist/godRaysMath.js.map +1 -0
  113. package/dist/grayscaleEffect.d.ts +3 -0
  114. package/dist/grayscaleEffect.d.ts.map +1 -0
  115. package/dist/grayscaleEffect.js +4 -0
  116. package/dist/grayscaleEffect.js.map +1 -0
  117. package/dist/halftoneEffect.d.ts +3 -0
  118. package/dist/halftoneEffect.d.ts.map +1 -0
  119. package/dist/halftoneEffect.js +4 -0
  120. package/dist/halftoneEffect.js.map +1 -0
  121. package/dist/hueSaturationEffect.d.ts +3 -0
  122. package/dist/hueSaturationEffect.d.ts.map +1 -0
  123. package/dist/hueSaturationEffect.js +4 -0
  124. package/dist/hueSaturationEffect.js.map +1 -0
  125. package/dist/index.d.ts +67 -0
  126. package/dist/index.d.ts.map +1 -0
  127. package/dist/index.js +67 -0
  128. package/dist/index.js.map +1 -0
  129. package/dist/invertEffect.d.ts +3 -0
  130. package/dist/invertEffect.d.ts.map +1 -0
  131. package/dist/invertEffect.js +4 -0
  132. package/dist/invertEffect.js.map +1 -0
  133. package/dist/kuwaharaEffect.d.ts +3 -0
  134. package/dist/kuwaharaEffect.d.ts.map +1 -0
  135. package/dist/kuwaharaEffect.js +4 -0
  136. package/dist/kuwaharaEffect.js.map +1 -0
  137. package/dist/kuwaharaMath.d.ts +6 -0
  138. package/dist/kuwaharaMath.d.ts.map +1 -0
  139. package/dist/kuwaharaMath.js +70 -0
  140. package/dist/kuwaharaMath.js.map +1 -0
  141. package/dist/lensDirtEffect.d.ts +3 -0
  142. package/dist/lensDirtEffect.d.ts.map +1 -0
  143. package/dist/lensDirtEffect.js +4 -0
  144. package/dist/lensDirtEffect.js.map +1 -0
  145. package/dist/lensDistortionEffect.d.ts +3 -0
  146. package/dist/lensDistortionEffect.d.ts.map +1 -0
  147. package/dist/lensDistortionEffect.js +4 -0
  148. package/dist/lensDistortionEffect.js.map +1 -0
  149. package/dist/lensFlareEffect.d.ts +3 -0
  150. package/dist/lensFlareEffect.d.ts.map +1 -0
  151. package/dist/lensFlareEffect.js +4 -0
  152. package/dist/lensFlareEffect.js.map +1 -0
  153. package/dist/liftGammaGainEffect.d.ts +3 -0
  154. package/dist/liftGammaGainEffect.d.ts.map +1 -0
  155. package/dist/liftGammaGainEffect.js +4 -0
  156. package/dist/liftGammaGainEffect.js.map +1 -0
  157. package/dist/lookupTableGradeEffect.d.ts +3 -0
  158. package/dist/lookupTableGradeEffect.d.ts.map +1 -0
  159. package/dist/lookupTableGradeEffect.js +4 -0
  160. package/dist/lookupTableGradeEffect.js.map +1 -0
  161. package/dist/lutMath.d.ts +7 -0
  162. package/dist/lutMath.d.ts.map +1 -0
  163. package/dist/lutMath.js +39 -0
  164. package/dist/lutMath.js.map +1 -0
  165. package/dist/motionBlurEffect.d.ts +3 -0
  166. package/dist/motionBlurEffect.d.ts.map +1 -0
  167. package/dist/motionBlurEffect.js +4 -0
  168. package/dist/motionBlurEffect.js.map +1 -0
  169. package/dist/outlineEffect.d.ts +3 -0
  170. package/dist/outlineEffect.d.ts.map +1 -0
  171. package/dist/outlineEffect.js +4 -0
  172. package/dist/outlineEffect.js.map +1 -0
  173. package/dist/panniniProjectionEffect.d.ts +3 -0
  174. package/dist/panniniProjectionEffect.d.ts.map +1 -0
  175. package/dist/panniniProjectionEffect.js +4 -0
  176. package/dist/panniniProjectionEffect.js.map +1 -0
  177. package/dist/pixelateEffect.d.ts +3 -0
  178. package/dist/pixelateEffect.d.ts.map +1 -0
  179. package/dist/pixelateEffect.js +4 -0
  180. package/dist/pixelateEffect.js.map +1 -0
  181. package/dist/posterizeEffect.d.ts +3 -0
  182. package/dist/posterizeEffect.d.ts.map +1 -0
  183. package/dist/posterizeEffect.js +4 -0
  184. package/dist/posterizeEffect.js.map +1 -0
  185. package/dist/radialBlurEffect.d.ts +3 -0
  186. package/dist/radialBlurEffect.d.ts.map +1 -0
  187. package/dist/radialBlurEffect.js +4 -0
  188. package/dist/radialBlurEffect.js.map +1 -0
  189. package/dist/renderEffectDefaults.d.ts +4 -0
  190. package/dist/renderEffectDefaults.d.ts.map +1 -0
  191. package/dist/renderEffectDefaults.js +111 -0
  192. package/dist/renderEffectDefaults.js.map +1 -0
  193. package/dist/renderEffectInputs.d.ts +5 -0
  194. package/dist/renderEffectInputs.d.ts.map +1 -0
  195. package/dist/renderEffectInputs.js +87 -0
  196. package/dist/renderEffectInputs.js.map +1 -0
  197. package/dist/renderEffectInterpolation.d.ts +4 -0
  198. package/dist/renderEffectInterpolation.d.ts.map +1 -0
  199. package/dist/renderEffectInterpolation.js +75 -0
  200. package/dist/renderEffectInterpolation.js.map +1 -0
  201. package/dist/renderEffectValidation.d.ts +3 -0
  202. package/dist/renderEffectValidation.d.ts.map +1 -0
  203. package/dist/renderEffectValidation.js +18 -0
  204. package/dist/renderEffectValidation.js.map +1 -0
  205. package/dist/scanlinesEffect.d.ts +3 -0
  206. package/dist/scanlinesEffect.d.ts.map +1 -0
  207. package/dist/scanlinesEffect.js +4 -0
  208. package/dist/scanlinesEffect.js.map +1 -0
  209. package/dist/screenSpaceFogEffect.d.ts +3 -0
  210. package/dist/screenSpaceFogEffect.d.ts.map +1 -0
  211. package/dist/screenSpaceFogEffect.js +4 -0
  212. package/dist/screenSpaceFogEffect.js.map +1 -0
  213. package/dist/sepiaEffect.d.ts +3 -0
  214. package/dist/sepiaEffect.d.ts.map +1 -0
  215. package/dist/sepiaEffect.js +4 -0
  216. package/dist/sepiaEffect.js.map +1 -0
  217. package/dist/sharpenEffect.d.ts +3 -0
  218. package/dist/sharpenEffect.d.ts.map +1 -0
  219. package/dist/sharpenEffect.js +4 -0
  220. package/dist/sharpenEffect.js.map +1 -0
  221. package/dist/sketchEffect.d.ts +3 -0
  222. package/dist/sketchEffect.d.ts.map +1 -0
  223. package/dist/sketchEffect.js +4 -0
  224. package/dist/sketchEffect.js.map +1 -0
  225. package/dist/smaaEffect.d.ts +3 -0
  226. package/dist/smaaEffect.d.ts.map +1 -0
  227. package/dist/smaaEffect.js +4 -0
  228. package/dist/smaaEffect.js.map +1 -0
  229. package/dist/ssaoEffect.d.ts +3 -0
  230. package/dist/ssaoEffect.d.ts.map +1 -0
  231. package/dist/ssaoEffect.js +4 -0
  232. package/dist/ssaoEffect.js.map +1 -0
  233. package/dist/ssrEffect.d.ts +3 -0
  234. package/dist/ssrEffect.d.ts.map +1 -0
  235. package/dist/ssrEffect.js +4 -0
  236. package/dist/ssrEffect.js.map +1 -0
  237. package/dist/stylizeMath.d.ts +9 -0
  238. package/dist/stylizeMath.d.ts.map +1 -0
  239. package/dist/stylizeMath.js +77 -0
  240. package/dist/stylizeMath.js.map +1 -0
  241. package/dist/taaEffect.d.ts +3 -0
  242. package/dist/taaEffect.d.ts.map +1 -0
  243. package/dist/taaEffect.js +4 -0
  244. package/dist/taaEffect.js.map +1 -0
  245. package/dist/tiltShiftEffect.d.ts +3 -0
  246. package/dist/tiltShiftEffect.d.ts.map +1 -0
  247. package/dist/tiltShiftEffect.js +4 -0
  248. package/dist/tiltShiftEffect.js.map +1 -0
  249. package/dist/toneMapEffect.d.ts +3 -0
  250. package/dist/toneMapEffect.d.ts.map +1 -0
  251. package/dist/toneMapEffect.js +4 -0
  252. package/dist/toneMapEffect.js.map +1 -0
  253. package/dist/toneMapMath.d.ts +12 -0
  254. package/dist/toneMapMath.d.ts.map +1 -0
  255. package/dist/toneMapMath.js +110 -0
  256. package/dist/toneMapMath.js.map +1 -0
  257. package/dist/vignetteEffect.d.ts +3 -0
  258. package/dist/vignetteEffect.d.ts.map +1 -0
  259. package/dist/vignetteEffect.js +4 -0
  260. package/dist/vignetteEffect.js.map +1 -0
  261. package/dist/volumetricLightEffect.d.ts +3 -0
  262. package/dist/volumetricLightEffect.d.ts.map +1 -0
  263. package/dist/volumetricLightEffect.js +4 -0
  264. package/dist/volumetricLightEffect.js.map +1 -0
  265. package/dist/whiteBalanceEffect.d.ts +3 -0
  266. package/dist/whiteBalanceEffect.d.ts.map +1 -0
  267. package/dist/whiteBalanceEffect.js +4 -0
  268. package/dist/whiteBalanceEffect.js.map +1 -0
  269. package/package.json +37 -0
  270. package/src/autoExposureEffect.test.ts +11 -0
  271. package/src/barrelDistortionEffect.test.ts +11 -0
  272. package/src/bloomEffect.test.ts +41 -0
  273. package/src/bokehDepthOfFieldEffect.test.ts +15 -0
  274. package/src/brightnessContrastEffect.test.ts +14 -0
  275. package/src/cameraMotionBlurEffect.test.ts +14 -0
  276. package/src/channelMixerEffect.test.ts +12 -0
  277. package/src/chromaticAberrationEffect.test.ts +14 -0
  278. package/src/colorBlindSimulationEffect.test.ts +13 -0
  279. package/src/colorGradeEffect.test.ts +11 -0
  280. package/src/colorScienceMath.test.ts +160 -0
  281. package/src/colorTemperatureMath.test.ts +67 -0
  282. package/src/contactShadowsEffect.test.ts +14 -0
  283. package/src/crtEffect.test.ts +16 -0
  284. package/src/customShaderEffect.test.ts +14 -0
  285. package/src/depthMath.test.ts +71 -0
  286. package/src/directionalBlurEffect.test.ts +11 -0
  287. package/src/displacementEffect.test.ts +15 -0
  288. package/src/ditherEffect.test.ts +11 -0
  289. package/src/edgeDetectMath.test.ts +84 -0
  290. package/src/exposureEffect.test.ts +7 -0
  291. package/src/filmEmulationEffect.test.ts +14 -0
  292. package/src/filmGrainEffect.test.ts +15 -0
  293. package/src/fxaaEffect.test.ts +14 -0
  294. package/src/gaussianMath.test.ts +93 -0
  295. package/src/glitchEffect.test.ts +16 -0
  296. package/src/godRaysEffect.test.ts +15 -0
  297. package/src/godRaysMath.test.ts +63 -0
  298. package/src/grayscaleEffect.test.ts +11 -0
  299. package/src/halftoneEffect.test.ts +11 -0
  300. package/src/hueSaturationEffect.test.ts +15 -0
  301. package/src/invertEffect.test.ts +11 -0
  302. package/src/kuwaharaEffect.test.ts +11 -0
  303. package/src/kuwaharaMath.test.ts +65 -0
  304. package/src/lensDirtEffect.test.ts +15 -0
  305. package/src/lensDistortionEffect.test.ts +11 -0
  306. package/src/lensFlareEffect.test.ts +16 -0
  307. package/src/liftGammaGainEffect.test.ts +15 -0
  308. package/src/lookupTableGradeEffect.test.ts +11 -0
  309. package/src/lutMath.test.ts +67 -0
  310. package/src/motionBlurEffect.test.ts +11 -0
  311. package/src/outlineEffect.test.ts +15 -0
  312. package/src/panniniProjectionEffect.test.ts +14 -0
  313. package/src/pixelateEffect.test.ts +11 -0
  314. package/src/posterizeEffect.test.ts +11 -0
  315. package/src/radialBlurEffect.test.ts +15 -0
  316. package/src/renderEffectDefaults.test.ts +70 -0
  317. package/src/renderEffectInputs.test.ts +60 -0
  318. package/src/renderEffectInterpolation.test.ts +71 -0
  319. package/src/renderEffectValidation.test.ts +37 -0
  320. package/src/scanlinesEffect.test.ts +11 -0
  321. package/src/screenSpaceFogEffect.test.ts +14 -0
  322. package/src/sepiaEffect.test.ts +11 -0
  323. package/src/sharpenEffect.test.ts +11 -0
  324. package/src/sketchEffect.test.ts +11 -0
  325. package/src/smaaEffect.test.ts +11 -0
  326. package/src/ssaoEffect.test.ts +11 -0
  327. package/src/ssrEffect.test.ts +11 -0
  328. package/src/stylizeMath.test.ts +99 -0
  329. package/src/taaEffect.test.ts +11 -0
  330. package/src/tiltShiftEffect.test.ts +15 -0
  331. package/src/toneMapEffect.test.ts +7 -0
  332. package/src/toneMapMath.test.ts +145 -0
  333. package/src/vignetteEffect.test.ts +16 -0
  334. package/src/volumetricLightEffect.test.ts +14 -0
  335. package/src/whiteBalanceEffect.test.ts +11 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kuwaharaMath.d.ts","sourceRoot":"","sources":["../src/kuwaharaMath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAYtD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAmBxF;AAOD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACpE,IAAI,CAuBN;AAID,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,CAGxF;AAID,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,CAElF"}
@@ -0,0 +1,70 @@
1
+ // Kuwahara filter recipe math. The Kuwahara filter samples four overlapping sectors around each
2
+ // pixel and picks the sector with the lowest variance as the output color, producing a smooth,
3
+ // painting-like result while preserving edges. All functions are alias-safe and zero-allocation
4
+ // (out-param or scalar return).
5
+ // Compute the Gaussian-weighted kernel for a Kuwahara sector of the given radius.
6
+ // The anisotropic Kuwahara filter weights samples within each sector by a Gaussian, which
7
+ // reduces ringing artifacts versus the original flat-weight variant. Writes (radius+1)^2
8
+ // weights into `out` in row-major order; returns the number of weights written.
9
+ // `out` must have capacity >= (radius+1)^2. Alias-safe.
10
+ export function computeKuwaharaGaussianWeights(radius, out) {
11
+ const r = Math.max(1, Math.floor(radius));
12
+ const size = r + 1;
13
+ const sigma = r / 2;
14
+ const twoSigmaSq = 2 * sigma * sigma;
15
+ let sum = 0;
16
+ for (let y = 0; y < size; y++) {
17
+ for (let x = 0; x < size; x++) {
18
+ const d = x * x + y * y;
19
+ out[y * size + x] = Math.exp(-d / twoSigmaSq);
20
+ sum += out[y * size + x];
21
+ }
22
+ }
23
+ // Normalize.
24
+ const invSum = sum > 1e-10 ? 1 / sum : 1;
25
+ for (let i = 0; i < size * size; i++) {
26
+ out[i] *= invSum;
27
+ }
28
+ return size * size;
29
+ }
30
+ // Compute the four sector UV offsets for a Kuwahara filter at the given pixel location.
31
+ // Each sector is a square region: top-left, top-right, bottom-left, bottom-right relative to
32
+ // the center pixel. `out` receives [tlX, tlY, trX, trY, blX, blY, brX, brY] — 8 values —
33
+ // in texel offsets (not normalized UV). radius is the Kuwahara radius in pixels.
34
+ // Alias-safe: computes all scalars before writing.
35
+ export function computeKuwaharaSectorOffsets(radius, out) {
36
+ const r = Math.max(1, Math.floor(radius));
37
+ const half = r;
38
+ // Top-left sector starts at (-r, -r).
39
+ const v0 = -half;
40
+ const v1 = -half;
41
+ // Top-right sector starts at (0, -r).
42
+ const v2 = 0;
43
+ const v3 = -half;
44
+ // Bottom-left sector starts at (-r, 0).
45
+ const v4 = -half;
46
+ const v5 = 0;
47
+ // Bottom-right sector starts at (0, 0).
48
+ const v6 = 0;
49
+ const v7 = 0;
50
+ out[0] = v0;
51
+ out[1] = v1;
52
+ out[2] = v2;
53
+ out[3] = v3;
54
+ out[4] = v4;
55
+ out[5] = v5;
56
+ out[6] = v6;
57
+ out[7] = v7;
58
+ }
59
+ // Compute the number of pixels in one Kuwahara sector (sectorSize × sectorSize).
60
+ // Used by backends to allocate sample kernels.
61
+ export function computeKuwaharaSectorPixelCount(effect) {
62
+ const s = computeKuwaharaSectorSize(effect);
63
+ return s * s;
64
+ }
65
+ // Compute the Kuwahara sector size in pixels from the effect radius.
66
+ // The sector is a square of (radius+1)^2 pixels per quadrant. Minimum 1.
67
+ export function computeKuwaharaSectorSize(effect) {
68
+ return Math.max(1, Math.floor(effect.radius ?? 3)) + 1;
69
+ }
70
+ //# sourceMappingURL=kuwaharaMath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kuwaharaMath.js","sourceRoot":"","sources":["../src/kuwaharaMath.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LensDirtEffect } from '@flighthq/types';
2
+ export declare function createLensDirtEffect(options?: Readonly<Omit<LensDirtEffect, 'kind'>>): LensDirtEffect;
3
+ //# sourceMappingURL=lensDirtEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lensDirtEffect.d.ts","sourceRoot":"","sources":["../src/lensDirtEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAM,GAAG,cAAc,CAEzG"}
@@ -0,0 +1,4 @@
1
+ export function createLensDirtEffect(options = {}) {
2
+ return { kind: 'LensDirtEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=lensDirtEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lensDirtEffect.js","sourceRoot":"","sources":["../src/lensDirtEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAAC,UAAkD,EAAE;IACvF,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,OAAO,EAAE,CAAC;AAChD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LensDistortionEffect } from '@flighthq/types';
2
+ export declare function createLensDistortionEffect(options?: Readonly<Omit<LensDistortionEffect, 'kind'>>): LensDistortionEffect;
3
+ //# sourceMappingURL=lensDistortionEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lensDistortionEffect.d.ts","sourceRoot":"","sources":["../src/lensDistortionEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAM,GACzD,oBAAoB,CAEtB"}
@@ -0,0 +1,4 @@
1
+ export function createLensDistortionEffect(options = {}) {
2
+ return { kind: 'LensDistortionEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=lensDistortionEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lensDistortionEffect.js","sourceRoot":"","sources":["../src/lensDistortionEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,0BAA0B,CACxC,UAAwD,EAAE;IAE1D,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,OAAO,EAAE,CAAC;AACtD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LensFlareEffect } from '@flighthq/types';
2
+ export declare function createLensFlareEffect(options?: Readonly<Omit<LensFlareEffect, 'kind'>>): LensFlareEffect;
3
+ //# sourceMappingURL=lensFlareEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lensFlareEffect.d.ts","sourceRoot":"","sources":["../src/lensFlareEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAM,GAAG,eAAe,CAE5G"}
@@ -0,0 +1,4 @@
1
+ export function createLensFlareEffect(options = {}) {
2
+ return { kind: 'LensFlareEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=lensFlareEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lensFlareEffect.js","sourceRoot":"","sources":["../src/lensFlareEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,UAAmD,EAAE;IACzF,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,EAAE,CAAC;AACjD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LiftGammaGainEffect } from '@flighthq/types';
2
+ export declare function createLiftGammaGainEffect(options?: Readonly<Omit<LiftGammaGainEffect, 'kind'>>): LiftGammaGainEffect;
3
+ //# sourceMappingURL=liftGammaGainEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liftGammaGainEffect.d.ts","sourceRoot":"","sources":["../src/liftGammaGainEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAM,GACxD,mBAAmB,CAErB"}
@@ -0,0 +1,4 @@
1
+ export function createLiftGammaGainEffect(options = {}) {
2
+ return { kind: 'LiftGammaGainEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=liftGammaGainEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liftGammaGainEffect.js","sourceRoot":"","sources":["../src/liftGammaGainEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,yBAAyB,CACvC,UAAuD,EAAE;IAEzD,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,GAAG,OAAO,EAAE,CAAC;AACrD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LookupTableGradeEffect } from '@flighthq/types';
2
+ export declare function createLookupTableGradeEffect(options?: Readonly<Omit<LookupTableGradeEffect, 'kind'>>): LookupTableGradeEffect;
3
+ //# sourceMappingURL=lookupTableGradeEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookupTableGradeEffect.d.ts","sourceRoot":"","sources":["../src/lookupTableGradeEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAM,GAC3D,sBAAsB,CAExB"}
@@ -0,0 +1,4 @@
1
+ export function createLookupTableGradeEffect(options = {}) {
2
+ return { kind: 'LookupTableGradeEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=lookupTableGradeEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookupTableGradeEffect.js","sourceRoot":"","sources":["../src/lookupTableGradeEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,4BAA4B,CAC1C,UAA0D,EAAE;IAE5D,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,GAAG,OAAO,EAAE,CAAC;AACxD,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function computeLookupTableCoord(r: number, // normalized R channel [0..1].
2
+ g: number, // normalized G channel [0..1].
3
+ b: number, // normalized B channel [0..1].
4
+ lutSize: number, // cube size of the LUT (e.g. 16, 32, 64).
5
+ out: [number, number]): void;
6
+ export declare function getLookupTableTileLayout(lutSize: number, out: [number, number]): void;
7
+ //# sourceMappingURL=lutMath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lutMath.d.ts","sourceRoot":"","sources":["../src/lutMath.ts"],"names":[],"mappings":"AASA,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,MAAM,EAAE,+BAA+B;AAC1C,CAAC,EAAE,MAAM,EAAE,+BAA+B;AAC1C,CAAC,EAAE,MAAM,EAAE,+BAA+B;AAC1C,OAAO,EAAE,MAAM,EAAE,0CAA0C;AAC3D,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GACpB,IAAI,CAiBN;AAKD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAIrF"}
@@ -0,0 +1,39 @@
1
+ // LUT (lookup-table) recipe math for LookupTableGradeEffect. Substrate-agnostic helpers for
2
+ // sampling 3D color LUTs stored as 2D strip-encoded textures. All functions are alias-safe.
3
+ // Computes the UV coordinate in the 2D strip-encoded LUT texture that corresponds to an RGB color.
4
+ // A 3D LUT of size N is encoded as a horizontal strip of N² tiles each of size N×1:
5
+ // U encodes the B channel (tile index + R-within-tile).
6
+ // V encodes the G channel (row within the strip, normalized to [0,1]).
7
+ // Writes [u, v] into `out`. Caller applies bilinear filtering.
8
+ // Alias-safe.
9
+ export function computeLookupTableCoord(r, // normalized R channel [0..1].
10
+ g, // normalized G channel [0..1].
11
+ b, // normalized B channel [0..1].
12
+ lutSize, // cube size of the LUT (e.g. 16, 32, 64).
13
+ out) {
14
+ const n = Math.max(1, lutSize);
15
+ const halfTexel = 0.5 / n;
16
+ // Clamp inputs to avoid bleeding at the LUT boundary.
17
+ const rc = Math.max(0, Math.min(1, r));
18
+ const gc = Math.max(0, Math.min(1, g));
19
+ const bc = Math.max(0, Math.min(1, b));
20
+ // B determines which horizontal tile (0..n-1).
21
+ const bSlice = bc * (n - 1);
22
+ const bIndex = Math.floor(bSlice);
23
+ // U: tile offset + R within the tile.
24
+ const u = (bIndex + rc * (1 - 1 / n) + halfTexel) / n;
25
+ // V: G channel (one row per G step, stored bottom-to-top; some encoders are inverted — callers
26
+ // can flip V if needed for their texture's storage convention).
27
+ const v = gc * (1 - 1 / n) + halfTexel;
28
+ out[0] = u;
29
+ out[1] = v;
30
+ }
31
+ // Returns the [width, height] in pixels of the 2D strip texture required to store a 3D LUT of
32
+ // the given cube size. Width = size², height = size (one row of G steps).
33
+ // Writes [width, height] into `out`.
34
+ export function getLookupTableTileLayout(lutSize, out) {
35
+ const n = Math.max(1, lutSize);
36
+ out[0] = n * n; // width: n tiles × n pixels each.
37
+ out[1] = n; // height: one row per G step.
38
+ }
39
+ //# sourceMappingURL=lutMath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lutMath.js","sourceRoot":"","sources":["../src/lutMath.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,4FAA4F;AAE5F,mGAAmG;AACnG,oFAAoF;AACpF,0DAA0D;AAC1D,yEAAyE;AACzE,+DAA+D;AAC/D,cAAc;AACd,MAAM,UAAU,uBAAuB,CACrC,CAAS,EAAE,+BAA+B;AAC1C,CAAS,EAAE,+BAA+B;AAC1C,CAAS,EAAE,+BAA+B;AAC1C,OAAe,EAAE,0CAA0C;AAC3D,GAAqB;IAErB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC;IAC1B,sDAAsD;IACtD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,+CAA+C;IAC/C,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,sCAAsC;IACtC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IACtD,+FAA+F;IAC/F,gEAAgE;IAChE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;IACvC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACb,CAAC;AAED,8FAA8F;AAC9F,0EAA0E;AAC1E,qCAAqC;AACrC,MAAM,UAAU,wBAAwB,CAAC,OAAe,EAAE,GAAqB;IAC7E,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,kCAAkC;IAClD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,8BAA8B;AAC5C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { MotionBlurEffect } from '@flighthq/types';
2
+ export declare function createMotionBlurEffect(options?: Readonly<Omit<MotionBlurEffect, 'kind'>>): MotionBlurEffect;
3
+ //# sourceMappingURL=motionBlurEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motionBlurEffect.d.ts","sourceRoot":"","sources":["../src/motionBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAM,GAAG,gBAAgB,CAE/G"}
@@ -0,0 +1,4 @@
1
+ export function createMotionBlurEffect(options = {}) {
2
+ return { kind: 'MotionBlurEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=motionBlurEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motionBlurEffect.js","sourceRoot":"","sources":["../src/motionBlurEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,UAAoD,EAAE;IAC3F,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,OAAO,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { OutlineEffect } from '@flighthq/types';
2
+ export declare function createOutlineEffect(options?: Readonly<Omit<OutlineEffect, 'kind'>>): OutlineEffect;
3
+ //# sourceMappingURL=outlineEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outlineEffect.d.ts","sourceRoot":"","sources":["../src/outlineEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAM,GAAG,aAAa,CAEtG"}
@@ -0,0 +1,4 @@
1
+ export function createOutlineEffect(options = {}) {
2
+ return { kind: 'OutlineEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=outlineEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outlineEffect.js","sourceRoot":"","sources":["../src/outlineEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,UAAiD,EAAE;IACrF,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PanniniProjectionEffect } from '@flighthq/types';
2
+ export declare function createPanniniProjectionEffect(options?: Readonly<Omit<PanniniProjectionEffect, 'kind'>>): PanniniProjectionEffect;
3
+ //# sourceMappingURL=panniniProjectionEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panniniProjectionEffect.d.ts","sourceRoot":"","sources":["../src/panniniProjectionEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAM,GAC5D,uBAAuB,CAEzB"}
@@ -0,0 +1,4 @@
1
+ export function createPanniniProjectionEffect(options = {}) {
2
+ return { kind: 'PanniniProjectionEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=panniniProjectionEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panniniProjectionEffect.js","sourceRoot":"","sources":["../src/panniniProjectionEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,6BAA6B,CAC3C,UAA2D,EAAE;IAE7D,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,GAAG,OAAO,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PixelateEffect } from '@flighthq/types';
2
+ export declare function createPixelateEffect(options?: Readonly<Omit<PixelateEffect, 'kind'>>): PixelateEffect;
3
+ //# sourceMappingURL=pixelateEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pixelateEffect.d.ts","sourceRoot":"","sources":["../src/pixelateEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAM,GAAG,cAAc,CAEzG"}
@@ -0,0 +1,4 @@
1
+ export function createPixelateEffect(options = {}) {
2
+ return { kind: 'PixelateEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=pixelateEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pixelateEffect.js","sourceRoot":"","sources":["../src/pixelateEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAAC,UAAkD,EAAE;IACvF,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,OAAO,EAAE,CAAC;AAChD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PosterizeEffect } from '@flighthq/types';
2
+ export declare function createPosterizeEffect(options?: Readonly<Omit<PosterizeEffect, 'kind'>>): PosterizeEffect;
3
+ //# sourceMappingURL=posterizeEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posterizeEffect.d.ts","sourceRoot":"","sources":["../src/posterizeEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAM,GAAG,eAAe,CAE5G"}
@@ -0,0 +1,4 @@
1
+ export function createPosterizeEffect(options = {}) {
2
+ return { kind: 'PosterizeEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=posterizeEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posterizeEffect.js","sourceRoot":"","sources":["../src/posterizeEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,UAAmD,EAAE;IACzF,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,EAAE,CAAC;AACjD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { RadialBlurEffect } from '@flighthq/types';
2
+ export declare function createRadialBlurEffect(options?: Readonly<Omit<RadialBlurEffect, 'kind'>>): RadialBlurEffect;
3
+ //# sourceMappingURL=radialBlurEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radialBlurEffect.d.ts","sourceRoot":"","sources":["../src/radialBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAM,GAAG,gBAAgB,CAE/G"}
@@ -0,0 +1,4 @@
1
+ export function createRadialBlurEffect(options = {}) {
2
+ return { kind: 'RadialBlurEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=radialBlurEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radialBlurEffect.js","sourceRoot":"","sources":["../src/radialBlurEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,UAAoD,EAAE;IAC3F,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,OAAO,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { RenderEffect } from '@flighthq/types';
2
+ export declare function getRenderEffectDefaults(kind: string): Record<string, unknown>;
3
+ export declare function normalizeRenderEffect(effect: Readonly<RenderEffect>, out: RenderEffect): boolean;
4
+ //# sourceMappingURL=renderEffectDefaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderEffectDefaults.d.ts","sourceRoot":"","sources":["../src/renderEffectDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAWpD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAI7E;AASD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAiBhG"}
@@ -0,0 +1,111 @@
1
+ // Per-kind default values for every built-in render effect. The table holds only the fields
2
+ // that have documented non-zero defaults (fields that default to 0/false/undefined are omitted).
3
+ // `getRenderEffectDefaults(kind)` returns a copy (so the caller can mutate it freely);
4
+ // `normalizeRenderEffect(effect, out)` merges the table defaults with a partial effect intent,
5
+ // filling in missing fields with their defaults. Both are alias-safe.
6
+ // Returns a fresh object containing the documented default field values for the given effect kind.
7
+ // Returns an empty object if the kind has no default table entry (e.g. user-defined custom effects).
8
+ // The returned object does NOT include `kind`; it is raw defaults that can be spread into an effect.
9
+ export function getRenderEffectDefaults(kind) {
10
+ const entry = DEFAULTS[kind];
11
+ if (!entry)
12
+ return {};
13
+ return { ...entry };
14
+ }
15
+ // Copies `effect` into `out`, filling in missing optional fields from the per-kind default table.
16
+ // `out` must already have `kind` set to the same kind as `effect`. Missing fields (undefined) are
17
+ // replaced with the documented default; fields explicitly set on `effect` (including zero or false)
18
+ // are preserved as-is. Returns true on success; returns false if the kind has no default table entry
19
+ // and leaves `out` unchanged in that case.
20
+ //
21
+ // Alias-safe: reads all fields from `effect` and defaults into locals before writing to `out`.
22
+ export function normalizeRenderEffect(effect, out) {
23
+ const entry = DEFAULTS[effect.kind];
24
+ if (!entry)
25
+ return false;
26
+ // Read snapshot of both sources before writing.
27
+ const effectRec = effect;
28
+ const outRec = out;
29
+ // Write all default keys first, then override with explicit effect values.
30
+ for (const key of Object.keys(entry)) {
31
+ outRec[key] = effectRec[key] !== undefined ? effectRec[key] : entry[key];
32
+ }
33
+ // Carry over any fields set on `effect` that are not in the defaults table.
34
+ for (const key of Object.keys(effectRec)) {
35
+ if (!(key in entry)) {
36
+ outRec[key] = effectRec[key];
37
+ }
38
+ }
39
+ return true;
40
+ }
41
+ // Internal default table. Values match the documented defaults in the type definitions.
42
+ const DEFAULTS = {
43
+ AutoExposureEffect: { adaptationSpeed: 1, exposureCompensation: 0, maxExposure: 2, minExposure: -2 },
44
+ BarrelDistortionEffect: { amount: 0.5, scale: 0.9 },
45
+ BloomEffect: { brightness: 1, mipCount: 0, passes: 1, radius: 8, threshold: 0.8, thresholdKnee: 0.5 },
46
+ BokehDepthOfFieldEffect: { apertureBlades: 6, maxBlurRadius: 16, samples: 16 },
47
+ BrightnessContrastEffect: { brightness: 0, contrast: 0 },
48
+ CameraMotionBlurEffect: { samples: 8 },
49
+ ChromaticAberrationEffect: { fringeStrength: 0.01, radial: true, samples: 3 },
50
+ ColorGradeEffect: {
51
+ brightness: 0,
52
+ contrast: 0,
53
+ exposure: 0,
54
+ highlights: 0x808080ff,
55
+ midtones: 0x808080ff,
56
+ saturation: 1,
57
+ shadows: 0x808080ff,
58
+ temperature: 0,
59
+ tint: 0,
60
+ },
61
+ ColorBlindSimulationEffect: { type: 'deuteranopia' },
62
+ ContactShadowsEffect: { distance: 0.5, opacity: 0.6, samples: 16, smoothness: 0.5 },
63
+ CrtEffect: { curvature: 0.1, scanlineIntensity: 0.5, vignette: 0.4, aberration: 0 },
64
+ DirectionalBlurEffect: { angle: 0, samples: 8 },
65
+ DisplacementEffect: { frequency: 12, intensity: 8 },
66
+ DitherEffect: { levels: 16 },
67
+ ExposureEffect: { exposure: 0 },
68
+ FilmEmulationEffect: { gateWeave: 0, grainIntensity: 0.1, halationRadius: 4, halationStrength: 0.3 },
69
+ FilmGrainEffect: { intensity: 0.2, size: 1, seed: 0 },
70
+ FxaaEffect: { edgeThreshold: 0.0312, subpixel: 0.75 },
71
+ GlitchEffect: { blockSize: 24, colorShift: 8, intensity: 0.5, seed: 0 },
72
+ GodRaysEffect: { centerX: 0.5, centerY: 0.5, decay: 0.96, density: 0.96, exposure: 0.1, samples: 100, weight: 0.4 },
73
+ GrayscaleEffect: { intensity: 1 },
74
+ HalftoneEffect: { angle: 0.785, scale: 8 }, // 0.785 ≈ π/4 = 45°
75
+ HueSaturationEffect: { hue: 0, lightness: 0, saturation: 1 },
76
+ InvertEffect: { intensity: 1 },
77
+ KuwaharaEffect: { radius: 3 },
78
+ LensDirtEffect: { intensity: 1, threshold: 0.55 },
79
+ LensDistortionEffect: { amount: 0.5, scale: 0.9 },
80
+ LensFlareEffect: { ghosts: 4, halo: 0.5, intensity: 1, threshold: 0.9 },
81
+ LiftGammaGainEffect: { gain: 0x808080ff, gamma: 0x808080ff, lift: 0x808080ff },
82
+ LookupTableGradeEffect: { size: 16, strength: 1 },
83
+ MotionBlurEffect: { intensity: 1, samples: 8, shutterAngle: 180, target: 'both' },
84
+ OutlineEffect: { color: 0x000000ff, thickness: 1, threshold: 0.1 },
85
+ PanniniProjectionEffect: { compression: 0.5, crop: 0 },
86
+ PixelateEffect: { size: 8 },
87
+ PosterizeEffect: { levels: 8 },
88
+ RadialBlurEffect: { centerX: 0.5, centerY: 0.5, samples: 8, strength: 0.1 },
89
+ ScanlinesEffect: { count: 480, intensity: 0.25 },
90
+ ScreenSpaceFogEffect: { density: 0.5, far: 1000, near: 10 },
91
+ SepiaEffect: { intensity: 1 },
92
+ SharpenEffect: { amount: 0.5 },
93
+ SketchEffect: { strength: 1 },
94
+ SmaaEffect: { threshold: 0.1 },
95
+ SsaoEffect: { bias: 0.025, intensity: 1, radius: 0.5, samples: 16 },
96
+ SsrEffect: { maxDistance: 100, maxSteps: 64, resolution: 0.5, steps: 64, thickness: 0.1 },
97
+ TaaEffect: { feedback: 0.9 },
98
+ TiltShiftEffect: { blur: 1, center: 0.5, width: 0.2 },
99
+ ToneMapEffect: { exposure: 0, operator: 'aces' },
100
+ VignetteEffect: { color: 0x000000ff, intensity: 0.5, radius: 1, softness: 0.5 },
101
+ VolumetricLightEffect: {
102
+ density: 0.5,
103
+ lightColor: 0xffffffff,
104
+ lightX: 0.5,
105
+ lightY: 0.2,
106
+ samples: 32,
107
+ scattering: 0.7,
108
+ },
109
+ WhiteBalanceEffect: { temperature: 0, tint: 0 },
110
+ };
111
+ //# sourceMappingURL=renderEffectDefaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderEffectDefaults.js","sourceRoot":"","sources":["../src/renderEffectDefaults.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { RenderEffect, RenderEffectInput } from '@flighthq/types';
2
+ export declare function getRenderEffectInputs(effect: Readonly<RenderEffect>): readonly RenderEffectInput[];
3
+ export declare function getRenderEffectKinds(): readonly string[];
4
+ export declare const RENDER_EFFECT_KINDS: readonly string[];
5
+ //# sourceMappingURL=renderEffectInputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderEffectInputs.d.ts","sourceRoot":"","sources":["../src/renderEffectInputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAKvE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,SAAS,iBAAiB,EAAE,CAElG;AAID,wBAAgB,oBAAoB,IAAI,SAAS,MAAM,EAAE,CAExD;AAwBD,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAqDhD,CAAC"}
@@ -0,0 +1,87 @@
1
+ // Returns the required render-target inputs for the given effect. Effects with no requirements
2
+ // (they only need the color buffer) return an empty array. This is the data form of the
3
+ // [HDR]/[DEPTH]/[MOTION]/[TEMPORAL] comment tags in the type definitions.
4
+ export function getRenderEffectInputs(effect) {
5
+ return RENDER_EFFECT_INPUTS[effect.kind] ?? [];
6
+ }
7
+ // Returns the full catalog of known effect kind strings in alphabetical order. Suitable for
8
+ // populating editor dropdowns, validating serialized effect stacks, and tooling enumeration.
9
+ export function getRenderEffectKinds() {
10
+ return RENDER_EFFECT_KINDS;
11
+ }
12
+ // Static per-kind table of required render-target inputs. Promotes the [HDR]/[DEPTH]/[MOTION]/
13
+ // [TEMPORAL] comment tags from the type definitions into queryable data. The pipeline can call
14
+ // getRenderEffectInputs(effect) to validate that a scene target provides the buffers needed before
15
+ // dispatching to a backend. Pure data — no backend knowledge, fully tree-shakable.
16
+ const RENDER_EFFECT_INPUTS = {
17
+ AutoExposureEffect: ['Hdr'],
18
+ BloomEffect: ['Hdr'],
19
+ BokehDepthOfFieldEffect: ['Depth'],
20
+ CameraMotionBlurEffect: ['Motion'],
21
+ ContactShadowsEffect: ['Depth'],
22
+ MotionBlurEffect: ['Motion'],
23
+ ScreenSpaceFogEffect: ['Depth'],
24
+ SsaoEffect: ['Depth'],
25
+ SsrEffect: ['Depth'],
26
+ TaaEffect: ['Temporal'],
27
+ TiltShiftEffect: ['Depth'],
28
+ ToneMapEffect: ['Hdr'],
29
+ VolumetricLightEffect: ['Depth'],
30
+ };
31
+ // The complete set of effect kind strings in alphabetical order. Used for enumeration, editor
32
+ // population, and tooling. Add a new entry when a new effect kind is introduced.
33
+ export const RENDER_EFFECT_KINDS = [
34
+ 'AutoExposureEffect',
35
+ 'BarrelDistortionEffect',
36
+ 'BloomEffect',
37
+ 'BokehDepthOfFieldEffect',
38
+ 'BrightnessContrastEffect',
39
+ 'CameraMotionBlurEffect',
40
+ 'ChannelMixerEffect',
41
+ 'ChromaticAberrationEffect',
42
+ 'ColorBlindSimulationEffect',
43
+ 'ColorGradeEffect',
44
+ 'ContactShadowsEffect',
45
+ 'CrtEffect',
46
+ 'CustomShaderEffect',
47
+ 'DirectionalBlurEffect',
48
+ 'DisplacementEffect',
49
+ 'DitherEffect',
50
+ 'ExposureEffect',
51
+ 'FilmEmulationEffect',
52
+ 'FilmGrainEffect',
53
+ 'FxaaEffect',
54
+ 'GlitchEffect',
55
+ 'GodRaysEffect',
56
+ 'GrayscaleEffect',
57
+ 'HalftoneEffect',
58
+ 'HueSaturationEffect',
59
+ 'InvertEffect',
60
+ 'KuwaharaEffect',
61
+ 'LensDirtEffect',
62
+ 'LensDistortionEffect',
63
+ 'LensFlareEffect',
64
+ 'LiftGammaGainEffect',
65
+ 'LookupTableGradeEffect',
66
+ 'MotionBlurEffect',
67
+ 'OutlineEffect',
68
+ 'PanniniProjectionEffect',
69
+ 'PixelateEffect',
70
+ 'PosterizeEffect',
71
+ 'RadialBlurEffect',
72
+ 'ScanlinesEffect',
73
+ 'ScreenSpaceFogEffect',
74
+ 'SepiaEffect',
75
+ 'SharpenEffect',
76
+ 'SketchEffect',
77
+ 'SmaaEffect',
78
+ 'SsaoEffect',
79
+ 'SsrEffect',
80
+ 'TaaEffect',
81
+ 'TiltShiftEffect',
82
+ 'ToneMapEffect',
83
+ 'VignetteEffect',
84
+ 'VolumetricLightEffect',
85
+ 'WhiteBalanceEffect',
86
+ ];
87
+ //# sourceMappingURL=renderEffectInputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderEffectInputs.js","sourceRoot":"","sources":["../src/renderEffectInputs.ts"],"names":[],"mappings":"AAEA,+FAA+F;AAC/F,wFAAwF;AACxF,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB,CAAC,MAA8B;IAClE,OAAO,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,4FAA4F;AAC5F,6FAA6F;AAC7F,MAAM,UAAU,oBAAoB;IAClC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,+FAA+F;AAC/F,+FAA+F;AAC/F,mGAAmG;AACnG,mFAAmF;AACnF,MAAM,oBAAoB,GAA2D;IACnF,kBAAkB,EAAE,CAAC,KAAK,CAAC;IAC3B,WAAW,EAAE,CAAC,KAAK,CAAC;IACpB,uBAAuB,EAAE,CAAC,OAAO,CAAC;IAClC,sBAAsB,EAAE,CAAC,QAAQ,CAAC;IAClC,oBAAoB,EAAE,CAAC,OAAO,CAAC;IAC/B,gBAAgB,EAAE,CAAC,QAAQ,CAAC;IAC5B,oBAAoB,EAAE,CAAC,OAAO,CAAC;IAC/B,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,SAAS,EAAE,CAAC,OAAO,CAAC;IACpB,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,eAAe,EAAE,CAAC,OAAO,CAAC;IAC1B,aAAa,EAAE,CAAC,KAAK,CAAC;IACtB,qBAAqB,EAAE,CAAC,OAAO,CAAC;CACjC,CAAC;AAEF,8FAA8F;AAC9F,iFAAiF;AACjF,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,oBAAoB;IACpB,wBAAwB;IACxB,aAAa;IACb,yBAAyB;IACzB,0BAA0B;IAC1B,wBAAwB;IACxB,oBAAoB;IACpB,2BAA2B;IAC3B,4BAA4B;IAC5B,kBAAkB;IAClB,sBAAsB;IACtB,WAAW;IACX,oBAAoB;IACpB,uBAAuB;IACvB,oBAAoB;IACpB,cAAc;IACd,gBAAgB;IAChB,qBAAqB;IACrB,iBAAiB;IACjB,YAAY;IACZ,cAAc;IACd,eAAe;IACf,iBAAiB;IACjB,gBAAgB;IAChB,qBAAqB;IACrB,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,iBAAiB;IACjB,qBAAqB;IACrB,wBAAwB;IACxB,kBAAkB;IAClB,eAAe;IACf,yBAAyB;IACzB,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;IACjB,sBAAsB;IACtB,aAAa;IACb,eAAe;IACf,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,uBAAuB;IACvB,oBAAoB;CACrB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { RenderEffect } from '@flighthq/types';
2
+ export declare function canLerpRenderEffects(a: Readonly<RenderEffect>, b: Readonly<RenderEffect>): boolean;
3
+ export declare function lerpRenderEffect(a: Readonly<RenderEffect>, b: Readonly<RenderEffect>, t: number, out: RenderEffect): boolean;
4
+ //# sourceMappingURL=renderEffectInterpolation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderEffectInterpolation.d.ts","sourceRoot":"","sources":["../src/renderEffectInterpolation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAOpD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,OAAO,CAElG;AAWD,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EACzB,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EACzB,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,YAAY,GAChB,OAAO,CAgDT"}