@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,3 @@
1
+ import type { AutoExposureEffect } from '@flighthq/types';
2
+ export declare function createAutoExposureEffect(options?: Readonly<Omit<AutoExposureEffect, 'kind'>>): AutoExposureEffect;
3
+ //# sourceMappingURL=autoExposureEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoExposureEffect.d.ts","sourceRoot":"","sources":["../src/autoExposureEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAM,GAAG,kBAAkB,CAErH"}
@@ -0,0 +1,4 @@
1
+ export function createAutoExposureEffect(options = {}) {
2
+ return { kind: 'AutoExposureEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=autoExposureEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoExposureEffect.js","sourceRoot":"","sources":["../src/autoExposureEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CAAC,UAAsD,EAAE;IAC/F,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;AACpD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BarrelDistortionEffect } from '@flighthq/types';
2
+ export declare function createBarrelDistortionEffect(options?: Readonly<Omit<BarrelDistortionEffect, 'kind'>>): BarrelDistortionEffect;
3
+ //# sourceMappingURL=barrelDistortionEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barrelDistortionEffect.d.ts","sourceRoot":"","sources":["../src/barrelDistortionEffect.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 createBarrelDistortionEffect(options = {}) {
2
+ return { kind: 'BarrelDistortionEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=barrelDistortionEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barrelDistortionEffect.js","sourceRoot":"","sources":["../src/barrelDistortionEffect.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,6 @@
1
+ import type { BloomEffect } from '@flighthq/types';
2
+ export declare function computeBloomBlurRadius(effect: Readonly<BloomEffect>): number;
3
+ export declare function computeBloomIntensity(effect: Readonly<BloomEffect>): number;
4
+ export declare function computeBloomThreshold(effect: Readonly<BloomEffect>): number;
5
+ export declare function createBloomEffect(options?: Readonly<Omit<BloomEffect, 'kind'>>): BloomEffect;
6
+ //# sourceMappingURL=bloomEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bloomEffect.d.ts","sourceRoot":"","sources":["../src/bloomEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAMnD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAE5E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAE3E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAE3E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAM,GAAG,WAAW,CAEhG"}
@@ -0,0 +1,16 @@
1
+ // HDR bloom intent and its shared recipe math. The parameter math is substrate-agnostic so the Gl and
2
+ // Wgpu bloom recipes derive identical bright-pass cutoff, additive strength, and blur radius from the
3
+ // same intent.
4
+ export function computeBloomBlurRadius(effect) {
5
+ return Math.max(0, effect.radius ?? 8);
6
+ }
7
+ export function computeBloomIntensity(effect) {
8
+ return effect.intensity ?? 1;
9
+ }
10
+ export function computeBloomThreshold(effect) {
11
+ return effect.threshold ?? 0.8;
12
+ }
13
+ export function createBloomEffect(options = {}) {
14
+ return { kind: 'BloomEffect', ...options };
15
+ }
16
+ //# sourceMappingURL=bloomEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bloomEffect.js","sourceRoot":"","sources":["../src/bloomEffect.ts"],"names":[],"mappings":"AAEA,sGAAsG;AACtG,sGAAsG;AACtG,eAAe;AAEf,MAAM,UAAU,sBAAsB,CAAC,MAA6B;IAClE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IACjE,OAAO,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IACjE,OAAO,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAA+C,EAAE;IACjF,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BokehDepthOfFieldEffect } from '@flighthq/types';
2
+ export declare function createBokehDepthOfFieldEffect(options?: Readonly<Omit<BokehDepthOfFieldEffect, 'kind'>>): BokehDepthOfFieldEffect;
3
+ //# sourceMappingURL=bokehDepthOfFieldEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bokehDepthOfFieldEffect.d.ts","sourceRoot":"","sources":["../src/bokehDepthOfFieldEffect.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 createBokehDepthOfFieldEffect(options = {}) {
2
+ return { kind: 'BokehDepthOfFieldEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=bokehDepthOfFieldEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bokehDepthOfFieldEffect.js","sourceRoot":"","sources":["../src/bokehDepthOfFieldEffect.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 { BrightnessContrastEffect } from '@flighthq/types';
2
+ export declare function createBrightnessContrastEffect(options?: Readonly<Omit<BrightnessContrastEffect, 'kind'>>): BrightnessContrastEffect;
3
+ //# sourceMappingURL=brightnessContrastEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brightnessContrastEffect.d.ts","sourceRoot":"","sources":["../src/brightnessContrastEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,wBAAgB,8BAA8B,CAC5C,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAM,GAC7D,wBAAwB,CAE1B"}
@@ -0,0 +1,4 @@
1
+ export function createBrightnessContrastEffect(options = {}) {
2
+ return { kind: 'BrightnessContrastEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=brightnessContrastEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brightnessContrastEffect.js","sourceRoot":"","sources":["../src/brightnessContrastEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,8BAA8B,CAC5C,UAA4D,EAAE;IAE9D,OAAO,EAAE,IAAI,EAAE,0BAA0B,EAAE,GAAG,OAAO,EAAE,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CameraMotionBlurEffect } from '@flighthq/types';
2
+ export declare function createCameraMotionBlurEffect(options?: Readonly<Omit<CameraMotionBlurEffect, 'kind'>>): CameraMotionBlurEffect;
3
+ //# sourceMappingURL=cameraMotionBlurEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cameraMotionBlurEffect.d.ts","sourceRoot":"","sources":["../src/cameraMotionBlurEffect.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 createCameraMotionBlurEffect(options = {}) {
2
+ return { kind: 'CameraMotionBlurEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=cameraMotionBlurEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cameraMotionBlurEffect.js","sourceRoot":"","sources":["../src/cameraMotionBlurEffect.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,3 @@
1
+ import type { ChannelMixerEffect } from '@flighthq/types';
2
+ export declare function createChannelMixerEffect(options: Readonly<Omit<ChannelMixerEffect, 'kind'>>): ChannelMixerEffect;
3
+ //# sourceMappingURL=channelMixerEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelMixerEffect.d.ts","sourceRoot":"","sources":["../src/channelMixerEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,GAAG,kBAAkB,CAEhH"}
@@ -0,0 +1,4 @@
1
+ export function createChannelMixerEffect(options) {
2
+ return { kind: 'ChannelMixerEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=channelMixerEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelMixerEffect.js","sourceRoot":"","sources":["../src/channelMixerEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CAAC,OAAmD;IAC1F,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;AACpD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ChromaticAberrationEffect } from '@flighthq/types';
2
+ export declare function createChromaticAberrationEffect(options?: Readonly<Omit<ChromaticAberrationEffect, 'kind'>>): ChromaticAberrationEffect;
3
+ //# sourceMappingURL=chromaticAberrationEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromaticAberrationEffect.d.ts","sourceRoot":"","sources":["../src/chromaticAberrationEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEjE,wBAAgB,+BAA+B,CAC7C,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAM,GAC9D,yBAAyB,CAE3B"}
@@ -0,0 +1,4 @@
1
+ export function createChromaticAberrationEffect(options = {}) {
2
+ return { kind: 'ChromaticAberrationEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=chromaticAberrationEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromaticAberrationEffect.js","sourceRoot":"","sources":["../src/chromaticAberrationEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,+BAA+B,CAC7C,UAA6D,EAAE;IAE/D,OAAO,EAAE,IAAI,EAAE,2BAA2B,EAAE,GAAG,OAAO,EAAE,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ColorBlindSimulationEffect } from '@flighthq/types';
2
+ export declare function createColorBlindSimulationEffect(options?: Readonly<Omit<ColorBlindSimulationEffect, 'kind'>>): ColorBlindSimulationEffect;
3
+ //# sourceMappingURL=colorBlindSimulationEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorBlindSimulationEffect.d.ts","sourceRoot":"","sources":["../src/colorBlindSimulationEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAElE,wBAAgB,gCAAgC,CAC9C,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAM,GAC/D,0BAA0B,CAE5B"}
@@ -0,0 +1,4 @@
1
+ export function createColorBlindSimulationEffect(options = {}) {
2
+ return { kind: 'ColorBlindSimulationEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=colorBlindSimulationEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorBlindSimulationEffect.js","sourceRoot":"","sources":["../src/colorBlindSimulationEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gCAAgC,CAC9C,UAA8D,EAAE;IAEhE,OAAO,EAAE,IAAI,EAAE,4BAA4B,EAAE,GAAG,OAAO,EAAE,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ColorGradeEffect } from '@flighthq/types';
2
+ export declare function createColorGradeEffect(options?: Readonly<Omit<ColorGradeEffect, 'kind'>>): ColorGradeEffect;
3
+ //# sourceMappingURL=colorGradeEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorGradeEffect.d.ts","sourceRoot":"","sources":["../src/colorGradeEffect.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 createColorGradeEffect(options = {}) {
2
+ return { kind: 'ColorGradeEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=colorGradeEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorGradeEffect.js","sourceRoot":"","sources":["../src/colorGradeEffect.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,9 @@
1
+ export declare function computeHslToRgb(h: number, s: number, l: number, out: [number, number, number]): void;
2
+ export declare function computeLinearToSrgb(x: number): number;
3
+ export declare function computeOklabToRgb(L: number, a: number, b: number, out: [number, number, number]): void;
4
+ export declare function computeRgbToHsl(r: number, g: number, b: number, out: [number, number, number]): void;
5
+ export declare function computeRgbToOklab(r: number, g: number, b: number, out: [number, number, number]): void;
6
+ export declare function computeSrgbToLinear(x: number): number;
7
+ export declare function getRec2020LuminanceWeights(out: [number, number, number]): void;
8
+ export declare function getRec709LuminanceWeights(out: [number, number, number]): void;
9
+ //# sourceMappingURL=colorScienceMath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorScienceMath.d.ts","sourceRoot":"","sources":["../src/colorScienceMath.ts"],"names":[],"mappings":"AAMA,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAoCpG;AAID,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrD;AAGD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAatG;AAID,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAwBpG;AAKD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAatG;AAID,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrD;AAID,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAI9E;AAID,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAI7E"}
@@ -0,0 +1,135 @@
1
+ // Color-science recipe math. Complete working-space functions for HDR rendering, color grading,
2
+ // and perceptual operations. All functions are alias-safe and zero-allocation (out-param pattern).
3
+ // These are the substrate-agnostic primitives shared across all backends.
4
+ // Converts HSL [h∈[0..360), s∈[0..1], l∈[0..1]] to sRGB [0..1]. Writes into `out`.
5
+ // Alias-safe.
6
+ export function computeHslToRgb(h, s, l, out) {
7
+ const c = (1 - Math.abs(2 * l - 1)) * s;
8
+ const hh = (((h % 360) + 360) % 360) / 60;
9
+ const x = c * (1 - Math.abs((hh % 2) - 1));
10
+ let r1;
11
+ let g1;
12
+ let b1;
13
+ if (hh < 1) {
14
+ r1 = c;
15
+ g1 = x;
16
+ b1 = 0;
17
+ }
18
+ else if (hh < 2) {
19
+ r1 = x;
20
+ g1 = c;
21
+ b1 = 0;
22
+ }
23
+ else if (hh < 3) {
24
+ r1 = 0;
25
+ g1 = c;
26
+ b1 = x;
27
+ }
28
+ else if (hh < 4) {
29
+ r1 = 0;
30
+ g1 = x;
31
+ b1 = c;
32
+ }
33
+ else if (hh < 5) {
34
+ r1 = x;
35
+ g1 = 0;
36
+ b1 = c;
37
+ }
38
+ else {
39
+ r1 = c;
40
+ g1 = 0;
41
+ b1 = x;
42
+ }
43
+ const m = l - c / 2;
44
+ out[0] = r1 + m;
45
+ out[1] = g1 + m;
46
+ out[2] = b1 + m;
47
+ }
48
+ // sRGB transfer function: converts a single linear-light channel value to gamma-encoded sRGB.
49
+ // The piecewise IEC 61966-2-1 formula. Input in [0..∞], output in [0..1].
50
+ export function computeLinearToSrgb(x) {
51
+ const v = Math.max(0, x);
52
+ return v <= 0.0031308 ? 12.92 * v : 1.055 * Math.pow(v, 1 / 2.4) - 0.055;
53
+ }
54
+ // Converts Oklab back to linear sRGB [0..1]. Alias-safe.
55
+ export function computeOklabToRgb(L, a, b, out) {
56
+ // Oklab → LMS.
57
+ const lc = L + 0.3963377774 * a + 0.2158037573 * b;
58
+ const mc = L - 0.1055613458 * a - 0.0638541728 * b;
59
+ const sc = L - 0.0894841775 * a - 1.291485548 * b;
60
+ // Cube.
61
+ const l = lc * lc * lc;
62
+ const m = mc * mc * mc;
63
+ const s = sc * sc * sc;
64
+ // LMS → linear sRGB.
65
+ out[0] = Math.max(0, 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s);
66
+ out[1] = Math.max(0, -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s);
67
+ out[2] = Math.max(0, -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s);
68
+ }
69
+ // Converts sRGB [0..1] to HSL [h∈[0..360), s∈[0..1], l∈[0..1]]. Writes into `out`.
70
+ // Alias-safe: reads all inputs before writing.
71
+ export function computeRgbToHsl(r, g, b, out) {
72
+ const rc = Math.max(0, Math.min(1, r));
73
+ const gc = Math.max(0, Math.min(1, g));
74
+ const bc = Math.max(0, Math.min(1, b));
75
+ const max = Math.max(rc, gc, bc);
76
+ const min = Math.min(rc, gc, bc);
77
+ const d = max - min;
78
+ const l = (max + min) / 2;
79
+ let h = 0;
80
+ let s = 0;
81
+ if (d > 1e-10) {
82
+ s = d / (1 - Math.abs(2 * l - 1));
83
+ if (max === rc) {
84
+ h = ((gc - bc) / d + 6) % 6;
85
+ }
86
+ else if (max === gc) {
87
+ h = (bc - rc) / d + 2;
88
+ }
89
+ else {
90
+ h = (rc - gc) / d + 4;
91
+ }
92
+ h *= 60;
93
+ }
94
+ out[0] = h;
95
+ out[1] = s;
96
+ out[2] = l;
97
+ }
98
+ // Converts linear sRGB [0..1] to Oklab [L∈[0..1], a∈~[-0.5..0.5], b∈~[-0.5..0.5]].
99
+ // Oklab is a perceptually uniform space; changes in L, a, b produce visually equal steps.
100
+ // Reference: Ottosson 2020. Alias-safe.
101
+ export function computeRgbToOklab(r, g, b, out) {
102
+ // sRGB (linear) → LMS via a 3×3 matrix.
103
+ const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;
104
+ const m = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;
105
+ const s = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;
106
+ // Cube-root compress.
107
+ const lc = Math.cbrt(Math.max(0, l));
108
+ const mc = Math.cbrt(Math.max(0, m));
109
+ const sc = Math.cbrt(Math.max(0, s));
110
+ // LMS → Oklab.
111
+ out[0] = 0.2104542553 * lc + 0.793617785 * mc - 0.0040720468 * sc;
112
+ out[1] = 1.9779984951 * lc - 2.428592205 * mc + 0.4505937099 * sc;
113
+ out[2] = 0.0259040371 * lc + 0.7827717662 * mc - 0.808675766 * sc;
114
+ }
115
+ // sRGB transfer function: converts a gamma-encoded sRGB channel to linear light.
116
+ // The piecewise IEC 61966-2-1 inverse. Input in [0..1], output in [0..∞).
117
+ export function computeSrgbToLinear(x) {
118
+ const v = Math.max(0, x);
119
+ return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
120
+ }
121
+ // Rec. 2020 luminance weights (ITU-R BT.2020). Writes [r, g, b] weights into `out`.
122
+ // L = 0.2627 * R + 0.6780 * G + 0.0593 * B.
123
+ export function getRec2020LuminanceWeights(out) {
124
+ out[0] = 0.2627;
125
+ out[1] = 0.678;
126
+ out[2] = 0.0593;
127
+ }
128
+ // Rec. 709 / sRGB luminance weights (ITU-R BT.709). Writes [r, g, b] weights into `out`.
129
+ // L = 0.2126 * R + 0.7152 * G + 0.0722 * B.
130
+ export function getRec709LuminanceWeights(out) {
131
+ out[0] = 0.2126;
132
+ out[1] = 0.7152;
133
+ out[2] = 0.0722;
134
+ }
135
+ //# sourceMappingURL=colorScienceMath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorScienceMath.js","sourceRoot":"","sources":["../src/colorScienceMath.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function computeColorTemperatureRgb(kelvin: number, out: [number, number, number]): void;
2
+ export declare function computeWhiteBalanceMultipliers(temperature: number, // [-1..1]. Negative = cool (bluish), positive = warm (yellowish).
3
+ tint: number, // [-1..1]. Negative = green, positive = magenta.
4
+ out: [number, number, number]): void;
5
+ //# sourceMappingURL=colorTemperatureMath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorTemperatureMath.d.ts","sourceRoot":"","sources":["../src/colorTemperatureMath.ts"],"names":[],"mappings":"AASA,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAiB9F;AAMD,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,EAAE,kEAAkE;AACvF,IAAI,EAAE,MAAM,EAAE,iDAAiD;AAC/D,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC5B,IAAI,CAUN"}
@@ -0,0 +1,45 @@
1
+ // Color-temperature recipe math. Substrate-agnostic helpers shared by WhiteBalanceEffect and
2
+ // ColorGradeEffect backends so temperature/tint handling is one implementation, not re-derived per
3
+ // backend. All functions are alias-safe.
4
+ // Converts a color temperature in Kelvin to approximate linear-light RGB multipliers using the
5
+ // Tanner-Helland approximation (widely used in real-time; accurate to within ~1 % over 1000–40000 K).
6
+ // Writes [r, g, b] into `out` (values near 1). The returned multipliers are un-normalized — the
7
+ // green channel is pinned to 1.0 so the result is a tint rather than a luminance change.
8
+ // Alias-safe: writes each channel after computing all inputs.
9
+ export function computeColorTemperatureRgb(kelvin, out) {
10
+ const temp = Math.max(1000, Math.min(40000, kelvin)) / 100;
11
+ let r;
12
+ let g;
13
+ let b;
14
+ if (temp <= 66) {
15
+ r = 1.0;
16
+ g = (99.4708025861 * Math.log(temp) - 161.1195681661) / 255;
17
+ b = temp <= 19 ? 0 : (138.5177312231 * Math.log(temp - 10) - 305.0447927307) / 255;
18
+ }
19
+ else {
20
+ r = (329.698727446 * Math.pow(temp - 60, -0.1332047592)) / 255;
21
+ g = (288.1221695283 * Math.pow(temp - 60, -0.0755148492)) / 255;
22
+ b = 1.0;
23
+ }
24
+ out[0] = Math.max(0, Math.min(1, r));
25
+ out[1] = Math.max(0, Math.min(1, g));
26
+ out[2] = Math.max(0, Math.min(1, b));
27
+ }
28
+ // Derives per-channel [r, g, b] white-balance multipliers from a normalized temperature and tint
29
+ // offset (both in [-1, 1] as used by WhiteBalanceEffect). Maps the offsets to Kelvin deviations
30
+ // around a daylight reference (6500 K) and adds a chromatic tint on the green-magenta axis.
31
+ // Writes [r, g, b] into `out`. Alias-safe.
32
+ export function computeWhiteBalanceMultipliers(temperature, // [-1..1]. Negative = cool (bluish), positive = warm (yellowish).
33
+ tint, // [-1..1]. Negative = green, positive = magenta.
34
+ out) {
35
+ // Map [-1..1] temperature to [2000..11000] K centered at 6500 K daylight.
36
+ // Positive = warm = lower K (toward incandescent 2700 K); negative = cool = higher K (toward 11000 K).
37
+ const kelvin = 6500 - temperature * 4500;
38
+ computeColorTemperatureRgb(kelvin, out);
39
+ // Apply tint: positive tint adds magenta (boosts R/B, reduces G); negative adds green (boosts G).
40
+ const greenShift = -tint * 0.1;
41
+ out[0] = Math.max(0, out[0]);
42
+ out[1] = Math.max(0, out[1] + greenShift);
43
+ out[2] = Math.max(0, out[2]);
44
+ }
45
+ //# sourceMappingURL=colorTemperatureMath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorTemperatureMath.js","sourceRoot":"","sources":["../src/colorTemperatureMath.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,mGAAmG;AACnG,yCAAyC;AAEzC,+FAA+F;AAC/F,sGAAsG;AACtG,gGAAgG;AAChG,yFAAyF;AACzF,8DAA8D;AAC9D,MAAM,UAAU,0BAA0B,CAAC,MAAc,EAAE,GAA6B;IACtF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;IAC3D,IAAI,CAAS,CAAC;IACd,IAAI,CAAS,CAAC;IACd,IAAI,CAAS,CAAC;IACd,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QACf,CAAC,GAAG,GAAG,CAAC;QACR,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC;QAC5D,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC;IACrF,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC;QAC/D,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC;QAChE,CAAC,GAAG,GAAG,CAAC;IACV,CAAC;IACD,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,iGAAiG;AACjG,gGAAgG;AAChG,4FAA4F;AAC5F,2CAA2C;AAC3C,MAAM,UAAU,8BAA8B,CAC5C,WAAmB,EAAE,kEAAkE;AACvF,IAAY,EAAE,iDAAiD;AAC/D,GAA6B;IAE7B,0EAA0E;IAC1E,uGAAuG;IACvG,MAAM,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC;IACzC,0BAA0B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,kGAAkG;IAClG,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;IAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;IAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ContactShadowsEffect } from '@flighthq/types';
2
+ export declare function createContactShadowsEffect(options?: Readonly<Omit<ContactShadowsEffect, 'kind'>>): ContactShadowsEffect;
3
+ //# sourceMappingURL=contactShadowsEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contactShadowsEffect.d.ts","sourceRoot":"","sources":["../src/contactShadowsEffect.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 createContactShadowsEffect(options = {}) {
2
+ return { kind: 'ContactShadowsEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=contactShadowsEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contactShadowsEffect.js","sourceRoot":"","sources":["../src/contactShadowsEffect.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 { CrtEffect } from '@flighthq/types';
2
+ export declare function createCrtEffect(options?: Readonly<Omit<CrtEffect, 'kind'>>): CrtEffect;
3
+ //# sourceMappingURL=crtEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crtEffect.d.ts","sourceRoot":"","sources":["../src/crtEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,wBAAgB,eAAe,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAM,GAAG,SAAS,CAE1F"}
@@ -0,0 +1,4 @@
1
+ export function createCrtEffect(options = {}) {
2
+ return { kind: 'CrtEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=crtEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crtEffect.js","sourceRoot":"","sources":["../src/crtEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,UAA6C,EAAE;IAC7E,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CustomShaderEffect } from '@flighthq/types';
2
+ export declare function createCustomShaderEffect(options: Readonly<Omit<CustomShaderEffect, 'kind'>>): CustomShaderEffect;
3
+ //# sourceMappingURL=customShaderEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customShaderEffect.d.ts","sourceRoot":"","sources":["../src/customShaderEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,GAAG,kBAAkB,CAEhH"}
@@ -0,0 +1,4 @@
1
+ export function createCustomShaderEffect(options) {
2
+ return { kind: 'CustomShaderEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=customShaderEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customShaderEffect.js","sourceRoot":"","sources":["../src/customShaderEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CAAC,OAAmD;IAC1F,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;AACpD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function computeDepthOfFieldCoc(depth: number, focusDistance: number, aperture: number, focalLength: number): number;
2
+ export declare function computeLinearDepthFromNonlinear(depth: number, near: number, far: number): number;
3
+ export declare function computeSsaoSampleKernel(samples: number, out: Float32Array): number;
4
+ //# sourceMappingURL=depthMath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depthMath.d.ts","sourceRoot":"","sources":["../src/depthMath.ts"],"names":[],"mappings":"AAQA,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM,CAOR;AAID,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhG;AAMD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAiBlF"}
@@ -0,0 +1,55 @@
1
+ // Screen-space depth recipe math. Substrate-agnostic helpers shared by depth-dependent effects
2
+ // (SSAO, SSR, depth-of-field, screen-space fog). All functions are alias-safe.
3
+ // Computes the circle-of-confusion (CoC) radius in normalized image-space for a depth-of-field
4
+ // effect, using the thin-lens formula. Returns a signed value; positive = behind focus.
5
+ // focusDistance: distance to the in-focus plane (same units as depth).
6
+ // aperture: lens aperture diameter (f-number denominator, e.g. 1.4 for f/1.4).
7
+ // focalLength: lens focal length in mm (for a 35 mm sensor equivalent).
8
+ export function computeDepthOfFieldCoc(depth, focusDistance, aperture, focalLength) {
9
+ // Thin lens: CoC = |focalLength * aperture * (depth - focusDistance)| / (depth * (focusDistance - focalLength)).
10
+ const fd = Math.max(1e-5, focusDistance);
11
+ const fl = Math.max(1e-5, focalLength) / 1000; // mm → m
12
+ const d = Math.max(1e-5, depth);
13
+ const a = fl / Math.max(1e-5, aperture);
14
+ return (a * (d - fd)) / (d * (fd - fl));
15
+ }
16
+ // Converts a nonlinear (hyperbolic) depth buffer value [0..1] to a linear eye-space depth.
17
+ // The standard projection formula: linear = (near * far) / (far - depth * (far - near)).
18
+ export function computeLinearDepthFromNonlinear(depth, near, far) {
19
+ return (near * far) / (far - depth * (far - near));
20
+ }
21
+ // Generates a hemisphere SSAO sample kernel and writes the samples (xyz triplets) into `out`.
22
+ // Samples are distributed in a unit hemisphere oriented along +Z, with more samples near the
23
+ // origin for better occlusion at small radii. Returns the number of samples written.
24
+ // `out` must have capacity >= samples * 3. Alias-safe (no shared mutable state).
25
+ export function computeSsaoSampleKernel(samples, out) {
26
+ const n = Math.max(1, Math.round(samples));
27
+ // Deterministic Halton-like distribution (no Math.random) so results are reproducible.
28
+ for (let i = 0; i < n; i++) {
29
+ // Spread samples over the hemisphere using a Halton-2 (x) and Halton-3 (y) sequence.
30
+ const h2 = halton(i + 1, 2);
31
+ const h3 = halton(i + 1, 3);
32
+ const theta = h2 * 2 * Math.PI; // azimuth.
33
+ const phi = Math.acos(1 - h3); // polar angle, biased toward origin.
34
+ // Apply a lerp-based distance falloff: samples close to origin get more weight.
35
+ const scale = i / n;
36
+ const dist = 0.1 + 0.9 * scale * scale; // accelerating lerp.
37
+ out[i * 3 + 0] = Math.sin(phi) * Math.cos(theta) * dist;
38
+ out[i * 3 + 1] = Math.sin(phi) * Math.sin(theta) * dist;
39
+ out[i * 3 + 2] = Math.cos(phi) * dist;
40
+ }
41
+ return n;
42
+ }
43
+ // Halton low-discrepancy sequence for a given index and base.
44
+ function halton(index, base) {
45
+ let result = 0;
46
+ let f = 1;
47
+ let i = index;
48
+ while (i > 0) {
49
+ f /= base;
50
+ result += f * (i % base);
51
+ i = Math.floor(i / base);
52
+ }
53
+ return result;
54
+ }
55
+ //# sourceMappingURL=depthMath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depthMath.js","sourceRoot":"","sources":["../src/depthMath.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { DirectionalBlurEffect } from '@flighthq/types';
2
+ export declare function createDirectionalBlurEffect(options?: Readonly<Omit<DirectionalBlurEffect, 'kind'>>): DirectionalBlurEffect;
3
+ //# sourceMappingURL=directionalBlurEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directionalBlurEffect.d.ts","sourceRoot":"","sources":["../src/directionalBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,wBAAgB,2BAA2B,CACzC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAM,GAC1D,qBAAqB,CAEvB"}
@@ -0,0 +1,4 @@
1
+ export function createDirectionalBlurEffect(options = {}) {
2
+ return { kind: 'DirectionalBlurEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=directionalBlurEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directionalBlurEffect.js","sourceRoot":"","sources":["../src/directionalBlurEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,2BAA2B,CACzC,UAAyD,EAAE;IAE3D,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,GAAG,OAAO,EAAE,CAAC;AACvD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DisplacementEffect } from '@flighthq/types';
2
+ export declare function createDisplacementEffect(options?: Readonly<Omit<DisplacementEffect, 'kind'>>): DisplacementEffect;
3
+ //# sourceMappingURL=displacementEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"displacementEffect.d.ts","sourceRoot":"","sources":["../src/displacementEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAM,GAAG,kBAAkB,CAErH"}
@@ -0,0 +1,4 @@
1
+ export function createDisplacementEffect(options = {}) {
2
+ return { kind: 'DisplacementEffect', ...options };
3
+ }
4
+ //# sourceMappingURL=displacementEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"displacementEffect.js","sourceRoot":"","sources":["../src/displacementEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CAAC,UAAsD,EAAE;IAC/F,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;AACpD,CAAC"}