@flighthq/effects 0.3.0-next.906.07cea63 → 0.3.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 (108) hide show
  1. package/dist/bevelEffect.d.ts +3 -1
  2. package/dist/bevelEffect.d.ts.map +1 -1
  3. package/dist/bevelEffect.js +12 -0
  4. package/dist/bevelEffect.js.map +1 -1
  5. package/dist/blendModeMath.d.ts.map +1 -1
  6. package/dist/blendModeMath.js +4 -0
  7. package/dist/blendModeMath.js.map +1 -1
  8. package/dist/bloomEffect.d.ts +3 -1
  9. package/dist/bloomEffect.d.ts.map +1 -1
  10. package/dist/bloomEffect.js +11 -0
  11. package/dist/bloomEffect.js.map +1 -1
  12. package/dist/blurEffect.d.ts +3 -1
  13. package/dist/blurEffect.d.ts.map +1 -1
  14. package/dist/blurEffect.js +10 -0
  15. package/dist/blurEffect.js.map +1 -1
  16. package/dist/bokehDepthOfFieldEffect.d.ts +3 -1
  17. package/dist/bokehDepthOfFieldEffect.d.ts.map +1 -1
  18. package/dist/bokehDepthOfFieldEffect.js +11 -0
  19. package/dist/bokehDepthOfFieldEffect.js.map +1 -1
  20. package/dist/contactShadowsEffect.d.ts +3 -1
  21. package/dist/contactShadowsEffect.d.ts.map +1 -1
  22. package/dist/contactShadowsEffect.js +11 -0
  23. package/dist/contactShadowsEffect.js.map +1 -1
  24. package/dist/contract.d.ts +1 -0
  25. package/dist/contract.d.ts.map +1 -1
  26. package/dist/contract.js +1 -0
  27. package/dist/contract.js.map +1 -1
  28. package/dist/convolutionEffect.d.ts +3 -1
  29. package/dist/convolutionEffect.d.ts.map +1 -1
  30. package/dist/convolutionEffect.js +17 -0
  31. package/dist/convolutionEffect.js.map +1 -1
  32. package/dist/directionalBlurEffect.d.ts +3 -1
  33. package/dist/directionalBlurEffect.d.ts.map +1 -1
  34. package/dist/directionalBlurEffect.js +16 -0
  35. package/dist/directionalBlurEffect.js.map +1 -1
  36. package/dist/displacementEffect.d.ts +3 -1
  37. package/dist/displacementEffect.d.ts.map +1 -1
  38. package/dist/displacementEffect.js +13 -0
  39. package/dist/displacementEffect.js.map +1 -1
  40. package/dist/dropShadowEffect.d.ts +3 -1
  41. package/dist/dropShadowEffect.d.ts.map +1 -1
  42. package/dist/dropShadowEffect.js +12 -0
  43. package/dist/dropShadowEffect.js.map +1 -1
  44. package/dist/glitchEffect.d.ts +3 -1
  45. package/dist/glitchEffect.d.ts.map +1 -1
  46. package/dist/glitchEffect.js +13 -0
  47. package/dist/glitchEffect.js.map +1 -1
  48. package/dist/gradientBevelEffect.d.ts +3 -1
  49. package/dist/gradientBevelEffect.d.ts.map +1 -1
  50. package/dist/gradientBevelEffect.js +12 -0
  51. package/dist/gradientBevelEffect.js.map +1 -1
  52. package/dist/gradientGlowEffect.d.ts +3 -1
  53. package/dist/gradientGlowEffect.d.ts.map +1 -1
  54. package/dist/gradientGlowEffect.js +10 -0
  55. package/dist/gradientGlowEffect.js.map +1 -1
  56. package/dist/index.d.ts +1 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +1 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/innerGlowEffect.d.ts +3 -1
  61. package/dist/innerGlowEffect.d.ts.map +1 -1
  62. package/dist/innerGlowEffect.js +10 -0
  63. package/dist/innerGlowEffect.js.map +1 -1
  64. package/dist/innerShadowEffect.d.ts +3 -1
  65. package/dist/innerShadowEffect.d.ts.map +1 -1
  66. package/dist/innerShadowEffect.js +12 -0
  67. package/dist/innerShadowEffect.js.map +1 -1
  68. package/dist/medianEffect.d.ts +3 -1
  69. package/dist/medianEffect.d.ts.map +1 -1
  70. package/dist/medianEffect.js +11 -0
  71. package/dist/medianEffect.js.map +1 -1
  72. package/dist/outerGlowEffect.d.ts +3 -1
  73. package/dist/outerGlowEffect.d.ts.map +1 -1
  74. package/dist/outerGlowEffect.js +10 -0
  75. package/dist/outerGlowEffect.js.map +1 -1
  76. package/dist/outlineEffect.d.ts +3 -1
  77. package/dist/outlineEffect.d.ts.map +1 -1
  78. package/dist/outlineEffect.js +11 -0
  79. package/dist/outlineEffect.js.map +1 -1
  80. package/dist/renderEffectPadding.d.ts +7 -0
  81. package/dist/renderEffectPadding.d.ts.map +1 -0
  82. package/dist/renderEffectPadding.js +70 -0
  83. package/dist/renderEffectPadding.js.map +1 -0
  84. package/dist/tiltShiftEffect.d.ts +3 -1
  85. package/dist/tiltShiftEffect.d.ts.map +1 -1
  86. package/dist/tiltShiftEffect.js +11 -0
  87. package/dist/tiltShiftEffect.js.map +1 -1
  88. package/package.json +6 -2
  89. package/src/bevelEffect.test.ts +24 -1
  90. package/src/blendModeMath.test.ts +15 -0
  91. package/src/bloomEffect.test.ts +31 -1
  92. package/src/blurEffect.test.ts +26 -1
  93. package/src/bokehDepthOfFieldEffect.test.ts +28 -1
  94. package/src/contactShadowsEffect.test.ts +28 -1
  95. package/src/convolutionEffect.test.ts +28 -1
  96. package/src/directionalBlurEffect.test.ts +28 -1
  97. package/src/displacementEffect.test.ts +28 -1
  98. package/src/dropShadowEffect.test.ts +28 -1
  99. package/src/glitchEffect.test.ts +24 -1
  100. package/src/gradientBevelEffect.test.ts +32 -1
  101. package/src/gradientGlowEffect.test.ts +27 -1
  102. package/src/innerGlowEffect.test.ts +28 -1
  103. package/src/innerShadowEffect.test.ts +30 -1
  104. package/src/medianEffect.test.ts +24 -1
  105. package/src/outerGlowEffect.test.ts +28 -1
  106. package/src/outlineEffect.test.ts +24 -1
  107. package/src/renderEffectPadding.test.ts +114 -0
  108. package/src/tiltShiftEffect.test.ts +28 -1
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { blendNonSeparableRgb, canLerpRenderEffects, computeAcesToneMap, computeAgxToneMap, computeBloomBlurRadius, computeBloomIntensity, computeBloomThreshold, computeBoxBlurPassRadius, computeBoxBlurRadius, computeColorTemperatureRgb, computeCrtMaskParams, computeDepthOfFieldCoc, computeExposureScale, computeFilmicToneMap, computeGaussianKernelWeights, computeGaussianRadiusFromSigma, computeGaussianSigmaForBlurRadius, computeGaussianSigmaFromRadius, computeGodRaysAccumulationScale, computeGodRaysLightCenter, computeGodRaysSampleWeight, computeGodRaysStepSize, computeHalftoneCellParams, computeKuwaharaGaussianWeights, computeKuwaharaSectorOffsets, computeKuwaharaSectorPixelCount, computeKuwaharaSectorSize, computeLinearDepthFromNonlinear, computeLinearSampledGaussian, computeOutlineEdgeParams, computeOutlineThicknessPx, computeReinhardExtendedToneMap, computeReinhardToneMap, computeScanlineParams, computeSeparableBlurPassCount, computeSketchEdgeParams, computeSsaoSampleKernel, computeUncharted2ToneMap, computeWhiteBalanceMultipliers, createAutoExposureEffect, createBarrelDistortionEffect, createBayerMatrix, createBevelEffect, createBlendEffect, createBloomEffect, createBlurEffect, createBokehDepthOfFieldEffect, createCameraMotionBlurEffect, createChromaticAberrationEffect, createCompositeEffect, createContactShadowsEffect, createConvolutionEffect, createCrtEffect, createCustomShaderEffect, createDirectionalBlurEffect, createDisplacementEffect, createDitherEffect, createDropShadowEffect, createFilmEmulationEffect, createFilmGrainEffect, createFxaaEffect, createGaussianKernelWeights, createGlitchEffect, createGodRaysEffect, createGradientBevelEffect, createGradientGlowEffect, createHalftoneEffect, createInnerGlowEffect, createInnerShadowEffect, createKuwaharaEffect, createLensDirtEffect, createLensDistortionEffect, createLensFlareEffect, createMedianEffect, createMotionBlurEffect, createOuterGlowEffect, createOutlineEffect, createPanniniProjectionEffect, createPixelateEffect, createPosterizeEffect, createRadialBlurEffect, createScanlinesEffect, createScreenSpaceFogEffect, createSharpenEffect, createSketchEffect, createSmaaEffect, createSsaoEffect, createSsrEffect, createTaaEffect, createTiltShiftEffect, createToneMapEffect, createVignetteEffect, createVolumetricLightEffect, createWhiteBalanceEffect, getAcesInputMatrix, getAcesOutputMatrix, getAdvancedBlendRgb, getBlurDownsampleLevel, getBlurResidualSigma, getCompositeOperatorFactors, getGaussianKernelSize, getLinearSampledGaussianTapCount, getRenderEffectDefaults, getRenderEffectInputs, getRenderEffectKinds, getSeparableBlendChannel, getSobelKernelCoefficients, isNonSeparableBlendMode, lerpRenderEffect, normalizeRenderEffect, validateRenderEffectList, } from './contract';
1
+ export { blendNonSeparableRgb, canLerpRenderEffects, computeRenderEffectPadding, computeAcesToneMap, computeAgxToneMap, computeBloomBlurRadius, computeBloomIntensity, computeBloomThreshold, computeBoxBlurPassRadius, computeBoxBlurRadius, computeColorTemperatureRgb, computeCrtMaskParams, computeDepthOfFieldCoc, computeExposureScale, computeFilmicToneMap, computeGaussianKernelWeights, computeGaussianRadiusFromSigma, computeGaussianSigmaForBlurRadius, computeGaussianSigmaFromRadius, computeGodRaysAccumulationScale, computeGodRaysLightCenter, computeGodRaysSampleWeight, computeGodRaysStepSize, computeHalftoneCellParams, computeKuwaharaGaussianWeights, computeKuwaharaSectorOffsets, computeKuwaharaSectorPixelCount, computeKuwaharaSectorSize, computeLinearDepthFromNonlinear, computeLinearSampledGaussian, computeOutlineEdgeParams, computeOutlineThicknessPx, computeReinhardExtendedToneMap, computeReinhardToneMap, computeScanlineParams, computeSeparableBlurPassCount, computeSketchEdgeParams, computeSsaoSampleKernel, computeUncharted2ToneMap, computeWhiteBalanceMultipliers, createAutoExposureEffect, createBarrelDistortionEffect, createBayerMatrix, createBevelEffect, createBlendEffect, createBloomEffect, createBlurEffect, createBokehDepthOfFieldEffect, createCameraMotionBlurEffect, createChromaticAberrationEffect, createCompositeEffect, createContactShadowsEffect, createConvolutionEffect, createCrtEffect, createCustomShaderEffect, createDirectionalBlurEffect, createDisplacementEffect, createDitherEffect, createDropShadowEffect, createFilmEmulationEffect, createFilmGrainEffect, createFxaaEffect, createGaussianKernelWeights, createGlitchEffect, createGodRaysEffect, createGradientBevelEffect, createGradientGlowEffect, createHalftoneEffect, createInnerGlowEffect, createInnerShadowEffect, createKuwaharaEffect, createLensDirtEffect, createLensDistortionEffect, createLensFlareEffect, createMedianEffect, createMotionBlurEffect, createOuterGlowEffect, createOutlineEffect, createPanniniProjectionEffect, createPixelateEffect, createPosterizeEffect, createRadialBlurEffect, createScanlinesEffect, createScreenSpaceFogEffect, createSharpenEffect, createSketchEffect, createSmaaEffect, createSsaoEffect, createSsrEffect, createTaaEffect, createTiltShiftEffect, createToneMapEffect, createVignetteEffect, createVolumetricLightEffect, createWhiteBalanceEffect, explainRenderEffectPadding, getAcesInputMatrix, getAcesOutputMatrix, getAdvancedBlendRgb, getBevelEffectPadding, getBloomEffectPadding, getBokehDepthOfFieldEffectPadding, getBlurEffectPadding, getBlurDownsampleLevel, getBlurResidualSigma, getCompositeOperatorFactors, getContactShadowsEffectPadding, getConvolutionEffectPadding, getDirectionalBlurEffectPadding, getDisplacementEffectPadding, getDropShadowEffectPadding, getGaussianKernelSize, getGradientGlowEffectPadding, getGlitchEffectPadding, getGradientBevelEffectPadding, getInnerGlowEffectPadding, getInnerShadowEffectPadding, getLinearSampledGaussianTapCount, getMedianEffectPadding, getOuterGlowEffectPadding, getOutlineEffectPadding, getRenderEffectDefaults, getRenderEffectInputs, getDirectionalRenderEffectPadding, getGaussianRenderEffectPadding, getRenderEffectKinds, getSeparableBlendChannel, getTiltShiftEffectPadding, getSobelKernelCoefficients, isNonSeparableBlendMode, lerpRenderEffect, normalizeRenderEffect, registerBlurEffectPaddingResolver, registerBevelEffectPaddingResolver, registerBloomEffectPaddingResolver, registerBokehDepthOfFieldEffectPaddingResolver, registerContactShadowsEffectPaddingResolver, registerConvolutionEffectPaddingResolver, registerDirectionalBlurEffectPaddingResolver, registerDisplacementEffectPaddingResolver, registerDropShadowEffectPaddingResolver, registerGradientBevelEffectPaddingResolver, registerGradientGlowEffectPaddingResolver, registerGlitchEffectPaddingResolver, registerInnerGlowEffectPaddingResolver, registerInnerShadowEffectPaddingResolver, registerMedianEffectPaddingResolver, registerOuterGlowEffectPaddingResolver, registerOutlineEffectPaddingResolver, registerRenderEffectPaddingResolver, registerTiltShiftEffectPaddingResolver, validateRenderEffectList, } from './contract';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,8BAA8B,EAC9B,iCAAiC,EACjC,8BAA8B,EAC9B,+BAA+B,EAC/B,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,4BAA4B,EAC5B,+BAA+B,EAC/B,yBAAyB,EACzB,+BAA+B,EAC/B,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,EACrB,6BAA6B,EAC7B,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,6BAA6B,EAC7B,4BAA4B,EAC5B,+BAA+B,EAC/B,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,qBAAqB,EACrB,gCAAgC,EAChC,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,8BAA8B,EAC9B,iCAAiC,EACjC,8BAA8B,EAC9B,+BAA+B,EAC/B,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,4BAA4B,EAC5B,+BAA+B,EAC/B,yBAAyB,EACzB,+BAA+B,EAC/B,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,EACrB,6BAA6B,EAC7B,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,6BAA6B,EAC7B,4BAA4B,EAC5B,+BAA+B,EAC/B,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,iCAAiC,EACjC,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,8BAA8B,EAC9B,2BAA2B,EAC3B,+BAA+B,EAC/B,4BAA4B,EAC5B,0BAA0B,EAC1B,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EACtB,6BAA6B,EAC7B,yBAAyB,EACzB,2BAA2B,EAC3B,gCAAgC,EAChC,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,iCAAiC,EACjC,8BAA8B,EAC9B,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,iCAAiC,EACjC,kCAAkC,EAClC,kCAAkC,EAClC,8CAA8C,EAC9C,2CAA2C,EAC3C,wCAAwC,EACxC,4CAA4C,EAC5C,yCAAyC,EACzC,uCAAuC,EACvC,0CAA0C,EAC1C,yCAAyC,EACzC,mCAAmC,EACnC,sCAAsC,EACtC,wCAAwC,EACxC,mCAAmC,EACnC,sCAAsC,EACtC,oCAAoC,EACpC,mCAAmC,EACnC,sCAAsC,EACtC,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { blendNonSeparableRgb, canLerpRenderEffects, computeAcesToneMap, computeAgxToneMap, computeBloomBlurRadius, computeBloomIntensity, computeBloomThreshold, computeBoxBlurPassRadius, computeBoxBlurRadius, computeColorTemperatureRgb, computeCrtMaskParams, computeDepthOfFieldCoc, computeExposureScale, computeFilmicToneMap, computeGaussianKernelWeights, computeGaussianRadiusFromSigma, computeGaussianSigmaForBlurRadius, computeGaussianSigmaFromRadius, computeGodRaysAccumulationScale, computeGodRaysLightCenter, computeGodRaysSampleWeight, computeGodRaysStepSize, computeHalftoneCellParams, computeKuwaharaGaussianWeights, computeKuwaharaSectorOffsets, computeKuwaharaSectorPixelCount, computeKuwaharaSectorSize, computeLinearDepthFromNonlinear, computeLinearSampledGaussian, computeOutlineEdgeParams, computeOutlineThicknessPx, computeReinhardExtendedToneMap, computeReinhardToneMap, computeScanlineParams, computeSeparableBlurPassCount, computeSketchEdgeParams, computeSsaoSampleKernel, computeUncharted2ToneMap, computeWhiteBalanceMultipliers, createAutoExposureEffect, createBarrelDistortionEffect, createBayerMatrix, createBevelEffect, createBlendEffect, createBloomEffect, createBlurEffect, createBokehDepthOfFieldEffect, createCameraMotionBlurEffect, createChromaticAberrationEffect, createCompositeEffect, createContactShadowsEffect, createConvolutionEffect, createCrtEffect, createCustomShaderEffect, createDirectionalBlurEffect, createDisplacementEffect, createDitherEffect, createDropShadowEffect, createFilmEmulationEffect, createFilmGrainEffect, createFxaaEffect, createGaussianKernelWeights, createGlitchEffect, createGodRaysEffect, createGradientBevelEffect, createGradientGlowEffect, createHalftoneEffect, createInnerGlowEffect, createInnerShadowEffect, createKuwaharaEffect, createLensDirtEffect, createLensDistortionEffect, createLensFlareEffect, createMedianEffect, createMotionBlurEffect, createOuterGlowEffect, createOutlineEffect, createPanniniProjectionEffect, createPixelateEffect, createPosterizeEffect, createRadialBlurEffect, createScanlinesEffect, createScreenSpaceFogEffect, createSharpenEffect, createSketchEffect, createSmaaEffect, createSsaoEffect, createSsrEffect, createTaaEffect, createTiltShiftEffect, createToneMapEffect, createVignetteEffect, createVolumetricLightEffect, createWhiteBalanceEffect, getAcesInputMatrix, getAcesOutputMatrix, getAdvancedBlendRgb, getBlurDownsampleLevel, getBlurResidualSigma, getCompositeOperatorFactors, getGaussianKernelSize, getLinearSampledGaussianTapCount, getRenderEffectDefaults, getRenderEffectInputs, getRenderEffectKinds, getSeparableBlendChannel, getSobelKernelCoefficients, isNonSeparableBlendMode, lerpRenderEffect, normalizeRenderEffect, validateRenderEffectList, } from './contract';
1
+ export { blendNonSeparableRgb, canLerpRenderEffects, computeRenderEffectPadding, computeAcesToneMap, computeAgxToneMap, computeBloomBlurRadius, computeBloomIntensity, computeBloomThreshold, computeBoxBlurPassRadius, computeBoxBlurRadius, computeColorTemperatureRgb, computeCrtMaskParams, computeDepthOfFieldCoc, computeExposureScale, computeFilmicToneMap, computeGaussianKernelWeights, computeGaussianRadiusFromSigma, computeGaussianSigmaForBlurRadius, computeGaussianSigmaFromRadius, computeGodRaysAccumulationScale, computeGodRaysLightCenter, computeGodRaysSampleWeight, computeGodRaysStepSize, computeHalftoneCellParams, computeKuwaharaGaussianWeights, computeKuwaharaSectorOffsets, computeKuwaharaSectorPixelCount, computeKuwaharaSectorSize, computeLinearDepthFromNonlinear, computeLinearSampledGaussian, computeOutlineEdgeParams, computeOutlineThicknessPx, computeReinhardExtendedToneMap, computeReinhardToneMap, computeScanlineParams, computeSeparableBlurPassCount, computeSketchEdgeParams, computeSsaoSampleKernel, computeUncharted2ToneMap, computeWhiteBalanceMultipliers, createAutoExposureEffect, createBarrelDistortionEffect, createBayerMatrix, createBevelEffect, createBlendEffect, createBloomEffect, createBlurEffect, createBokehDepthOfFieldEffect, createCameraMotionBlurEffect, createChromaticAberrationEffect, createCompositeEffect, createContactShadowsEffect, createConvolutionEffect, createCrtEffect, createCustomShaderEffect, createDirectionalBlurEffect, createDisplacementEffect, createDitherEffect, createDropShadowEffect, createFilmEmulationEffect, createFilmGrainEffect, createFxaaEffect, createGaussianKernelWeights, createGlitchEffect, createGodRaysEffect, createGradientBevelEffect, createGradientGlowEffect, createHalftoneEffect, createInnerGlowEffect, createInnerShadowEffect, createKuwaharaEffect, createLensDirtEffect, createLensDistortionEffect, createLensFlareEffect, createMedianEffect, createMotionBlurEffect, createOuterGlowEffect, createOutlineEffect, createPanniniProjectionEffect, createPixelateEffect, createPosterizeEffect, createRadialBlurEffect, createScanlinesEffect, createScreenSpaceFogEffect, createSharpenEffect, createSketchEffect, createSmaaEffect, createSsaoEffect, createSsrEffect, createTaaEffect, createTiltShiftEffect, createToneMapEffect, createVignetteEffect, createVolumetricLightEffect, createWhiteBalanceEffect, explainRenderEffectPadding, getAcesInputMatrix, getAcesOutputMatrix, getAdvancedBlendRgb, getBevelEffectPadding, getBloomEffectPadding, getBokehDepthOfFieldEffectPadding, getBlurEffectPadding, getBlurDownsampleLevel, getBlurResidualSigma, getCompositeOperatorFactors, getContactShadowsEffectPadding, getConvolutionEffectPadding, getDirectionalBlurEffectPadding, getDisplacementEffectPadding, getDropShadowEffectPadding, getGaussianKernelSize, getGradientGlowEffectPadding, getGlitchEffectPadding, getGradientBevelEffectPadding, getInnerGlowEffectPadding, getInnerShadowEffectPadding, getLinearSampledGaussianTapCount, getMedianEffectPadding, getOuterGlowEffectPadding, getOutlineEffectPadding, getRenderEffectDefaults, getRenderEffectInputs, getDirectionalRenderEffectPadding, getGaussianRenderEffectPadding, getRenderEffectKinds, getSeparableBlendChannel, getTiltShiftEffectPadding, getSobelKernelCoefficients, isNonSeparableBlendMode, lerpRenderEffect, normalizeRenderEffect, registerBlurEffectPaddingResolver, registerBevelEffectPaddingResolver, registerBloomEffectPaddingResolver, registerBokehDepthOfFieldEffectPaddingResolver, registerContactShadowsEffectPaddingResolver, registerConvolutionEffectPaddingResolver, registerDirectionalBlurEffectPaddingResolver, registerDisplacementEffectPaddingResolver, registerDropShadowEffectPaddingResolver, registerGradientBevelEffectPaddingResolver, registerGradientGlowEffectPaddingResolver, registerGlitchEffectPaddingResolver, registerInnerGlowEffectPaddingResolver, registerInnerShadowEffectPaddingResolver, registerMedianEffectPaddingResolver, registerOuterGlowEffectPaddingResolver, registerOutlineEffectPaddingResolver, registerRenderEffectPaddingResolver, registerTiltShiftEffectPaddingResolver, validateRenderEffectList, } from './contract';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,8BAA8B,EAC9B,iCAAiC,EACjC,8BAA8B,EAC9B,+BAA+B,EAC/B,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,4BAA4B,EAC5B,+BAA+B,EAC/B,yBAAyB,EACzB,+BAA+B,EAC/B,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,EACrB,6BAA6B,EAC7B,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,6BAA6B,EAC7B,4BAA4B,EAC5B,+BAA+B,EAC/B,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,qBAAqB,EACrB,gCAAgC,EAChC,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,8BAA8B,EAC9B,iCAAiC,EACjC,8BAA8B,EAC9B,+BAA+B,EAC/B,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,4BAA4B,EAC5B,+BAA+B,EAC/B,yBAAyB,EACzB,+BAA+B,EAC/B,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,EACrB,6BAA6B,EAC7B,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,6BAA6B,EAC7B,4BAA4B,EAC5B,+BAA+B,EAC/B,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,iCAAiC,EACjC,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,8BAA8B,EAC9B,2BAA2B,EAC3B,+BAA+B,EAC/B,4BAA4B,EAC5B,0BAA0B,EAC1B,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EACtB,6BAA6B,EAC7B,yBAAyB,EACzB,2BAA2B,EAC3B,gCAAgC,EAChC,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,iCAAiC,EACjC,8BAA8B,EAC9B,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,iCAAiC,EACjC,kCAAkC,EAClC,kCAAkC,EAClC,8CAA8C,EAC9C,2CAA2C,EAC3C,wCAAwC,EACxC,4CAA4C,EAC5C,yCAAyC,EACzC,uCAAuC,EACvC,0CAA0C,EAC1C,yCAAyC,EACzC,mCAAmC,EACnC,sCAAsC,EACtC,wCAAwC,EACxC,mCAAmC,EACnC,sCAAsC,EACtC,oCAAoC,EACpC,mCAAmC,EACnC,sCAAsC,EACtC,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
@@ -1,3 +1,5 @@
1
- import type { InnerGlowEffect } from '@flighthq/types/contract';
1
+ import type { InnerGlowEffect, RenderEffectPadding, RenderState } from '@flighthq/types/contract';
2
2
  export declare function createInnerGlowEffect(options?: Readonly<Omit<InnerGlowEffect, 'kind'>>): InnerGlowEffect;
3
+ export declare function getInnerGlowEffectPadding(effect: Readonly<InnerGlowEffect>): RenderEffectPadding;
4
+ export declare function registerInnerGlowEffectPaddingResolver(state: RenderState): void;
3
5
  //# sourceMappingURL=innerGlowEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"innerGlowEffect.d.ts","sourceRoot":"","sources":["../src/innerGlowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAM,GAAG,eAAe,CAE5G"}
1
+ {"version":3,"file":"innerGlowEffect.d.ts","sourceRoot":"","sources":["../src/innerGlowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgB,mBAAmB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAKhH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAM,GAAG,eAAe,CAE5G;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,mBAAmB,CAEhG;AAED,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAE/E"}
@@ -1,5 +1,15 @@
1
+ import { getGaussianRenderEffectPadding, registerRenderEffectPaddingResolver } from './renderEffectPadding';
1
2
  // Inner-glow composite effect: tint the inverted silhouette, blur inward, clip to the source alpha, then draw or hide the source.
2
3
  export function createInnerGlowEffect(options = {}) {
3
4
  return { kind: 'InnerGlowEffect', ...options };
4
5
  }
6
+ export function getInnerGlowEffectPadding(effect) {
7
+ return getGaussianRenderEffectPadding(effect.blurX ?? 6, effect.blurY ?? 6);
8
+ }
9
+ export function registerInnerGlowEffectPaddingResolver(state) {
10
+ registerRenderEffectPaddingResolver(state, 'InnerGlowEffect', resolveInnerGlowEffectPadding);
11
+ }
12
+ function resolveInnerGlowEffectPadding(effect) {
13
+ return getInnerGlowEffectPadding(effect);
14
+ }
5
15
  //# sourceMappingURL=innerGlowEffect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"innerGlowEffect.js","sourceRoot":"","sources":["../src/innerGlowEffect.ts"],"names":[],"mappings":"AAEA,kIAAkI;AAClI,MAAM,UAAU,qBAAqB,CAAC,UAAmD,EAAE;IACzF,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,EAAE,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"innerGlowEffect.js","sourceRoot":"","sources":["../src/innerGlowEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8BAA8B,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AAE5G,kIAAkI;AAClI,MAAM,UAAU,qBAAqB,CAAC,UAAmD,EAAE;IACzF,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAiC;IACzE,OAAO,8BAA8B,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,KAAkB;IACvE,mCAAmC,CAAC,KAAK,EAAE,iBAAiB,EAAE,6BAA6B,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,6BAA6B,CAAC,MAA8B;IACnE,OAAO,yBAAyB,CAAC,MAAmC,CAAC,CAAC;AACxE,CAAC"}
@@ -1,3 +1,5 @@
1
- import type { InnerShadowEffect } from '@flighthq/types/contract';
1
+ import type { InnerShadowEffect, RenderEffectPadding, RenderState } from '@flighthq/types/contract';
2
2
  export declare function createInnerShadowEffect(options?: Readonly<Omit<InnerShadowEffect, 'kind'>>): InnerShadowEffect;
3
+ export declare function getInnerShadowEffectPadding(effect: Readonly<InnerShadowEffect>): RenderEffectPadding;
4
+ export declare function registerInnerShadowEffectPaddingResolver(state: RenderState): void;
3
5
  //# sourceMappingURL=innerShadowEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"innerShadowEffect.d.ts","sourceRoot":"","sources":["../src/innerShadowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAM,GAAG,iBAAiB,CAElH"}
1
+ {"version":3,"file":"innerShadowEffect.d.ts","sourceRoot":"","sources":["../src/innerShadowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAgB,mBAAmB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAKlH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAM,GAAG,iBAAiB,CAElH;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,mBAAmB,CASpG;AAED,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAEjF"}
@@ -1,5 +1,17 @@
1
+ import { getDirectionalRenderEffectPadding, registerRenderEffectPaddingResolver } from './renderEffectPadding';
1
2
  // Inner-shadow composite effect: tint the inverted silhouette, blur, offset by angle/distance, clip to the source alpha, then draw or hide the source.
2
3
  export function createInnerShadowEffect(options = {}) {
3
4
  return { kind: 'InnerShadowEffect', ...options };
4
5
  }
6
+ export function getInnerShadowEffectPadding(effect) {
7
+ const angle = ((effect.angle ?? 45) * Math.PI) / 180;
8
+ const distance = effect.distance ?? 4;
9
+ return getDirectionalRenderEffectPadding(effect.blurX ?? 4, effect.blurY ?? 4, Math.cos(angle) * distance, Math.sin(angle) * distance);
10
+ }
11
+ export function registerInnerShadowEffectPaddingResolver(state) {
12
+ registerRenderEffectPaddingResolver(state, 'InnerShadowEffect', resolveInnerShadowEffectPadding);
13
+ }
14
+ function resolveInnerShadowEffectPadding(effect) {
15
+ return getInnerShadowEffectPadding(effect);
16
+ }
5
17
  //# sourceMappingURL=innerShadowEffect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"innerShadowEffect.js","sourceRoot":"","sources":["../src/innerShadowEffect.ts"],"names":[],"mappings":"AAEA,uJAAuJ;AACvJ,MAAM,UAAU,uBAAuB,CAAC,UAAqD,EAAE;IAC7F,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,OAAO,EAAE,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"innerShadowEffect.js","sourceRoot":"","sources":["../src/innerShadowEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AAE/G,uJAAuJ;AACvJ,MAAM,UAAU,uBAAuB,CAAC,UAAqD,EAAE;IAC7F,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,OAAO,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAmC;IAC7E,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACtC,OAAO,iCAAiC,CACtC,MAAM,CAAC,KAAK,IAAI,CAAC,EACjB,MAAM,CAAC,KAAK,IAAI,CAAC,EACjB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,EAC1B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,CAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wCAAwC,CAAC,KAAkB;IACzE,mCAAmC,CAAC,KAAK,EAAE,mBAAmB,EAAE,+BAA+B,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,+BAA+B,CAAC,MAA8B;IACrE,OAAO,2BAA2B,CAAC,MAAqC,CAAC,CAAC;AAC5E,CAAC"}
@@ -1,3 +1,5 @@
1
- import type { MedianEffect } from '@flighthq/types/contract';
1
+ import type { MedianEffect, RenderEffectPadding, RenderState } from '@flighthq/types/contract';
2
2
  export declare function createMedianEffect(options?: Readonly<Omit<MedianEffect, 'kind'>>): MedianEffect;
3
+ export declare function getMedianEffectPadding(effect: Readonly<MedianEffect>): RenderEffectPadding;
4
+ export declare function registerMedianEffectPaddingResolver(state: RenderState): void;
3
5
  //# sourceMappingURL=medianEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"medianEffect.d.ts","sourceRoot":"","sources":["../src/medianEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAM,GAAG,YAAY,CAEnG"}
1
+ {"version":3,"file":"medianEffect.d.ts","sourceRoot":"","sources":["../src/medianEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAgB,mBAAmB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI7G,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAM,GAAG,YAAY,CAEnG;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,mBAAmB,CAG1F;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAE5E"}
@@ -1,4 +1,15 @@
1
+ import { registerRenderEffectPaddingResolver } from './renderEffectPadding';
1
2
  export function createMedianEffect(options = {}) {
2
3
  return { kind: 'MedianEffect', ...options };
3
4
  }
5
+ export function getMedianEffectPadding(effect) {
6
+ const radius = Math.max(0, Math.round(effect.radius ?? 1));
7
+ return { bottom: radius, left: radius, right: radius, top: radius };
8
+ }
9
+ export function registerMedianEffectPaddingResolver(state) {
10
+ registerRenderEffectPaddingResolver(state, 'MedianEffect', resolveMedianEffectPadding);
11
+ }
12
+ function resolveMedianEffectPadding(effect) {
13
+ return getMedianEffectPadding(effect);
14
+ }
4
15
  //# sourceMappingURL=medianEffect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"medianEffect.js","sourceRoot":"","sources":["../src/medianEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,UAAgD,EAAE;IACnF,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"medianEffect.js","sourceRoot":"","sources":["../src/medianEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AAE5E,MAAM,UAAU,kBAAkB,CAAC,UAAgD,EAAE;IACnF,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAA8B;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,KAAkB;IACpE,mCAAmC,CAAC,KAAK,EAAE,cAAc,EAAE,0BAA0B,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,0BAA0B,CAAC,MAA8B;IAChE,OAAO,sBAAsB,CAAC,MAAgC,CAAC,CAAC;AAClE,CAAC"}
@@ -1,3 +1,5 @@
1
- import type { OuterGlowEffect } from '@flighthq/types/contract';
1
+ import type { OuterGlowEffect, RenderEffectPadding, RenderState } from '@flighthq/types/contract';
2
2
  export declare function createOuterGlowEffect(options?: Readonly<Omit<OuterGlowEffect, 'kind'>>): OuterGlowEffect;
3
+ export declare function getOuterGlowEffectPadding(effect: Readonly<OuterGlowEffect>): RenderEffectPadding;
4
+ export declare function registerOuterGlowEffectPaddingResolver(state: RenderState): void;
3
5
  //# sourceMappingURL=outerGlowEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"outerGlowEffect.d.ts","sourceRoot":"","sources":["../src/outerGlowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAM,GAAG,eAAe,CAE5G"}
1
+ {"version":3,"file":"outerGlowEffect.d.ts","sourceRoot":"","sources":["../src/outerGlowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgB,mBAAmB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAKhH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAM,GAAG,eAAe,CAE5G;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,mBAAmB,CAEhG;AAED,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAE/E"}
@@ -1,5 +1,15 @@
1
+ import { getGaussianRenderEffectPadding, registerRenderEffectPaddingResolver } from './renderEffectPadding';
1
2
  // Outer-glow composite effect: tint the scene silhouette, blur it centered (no offset), then apply sourceMode compositing.
2
3
  export function createOuterGlowEffect(options = {}) {
3
4
  return { kind: 'OuterGlowEffect', ...options };
4
5
  }
6
+ export function getOuterGlowEffectPadding(effect) {
7
+ return getGaussianRenderEffectPadding(effect.blurX ?? 6, effect.blurY ?? 6);
8
+ }
9
+ export function registerOuterGlowEffectPaddingResolver(state) {
10
+ registerRenderEffectPaddingResolver(state, 'OuterGlowEffect', resolveOuterGlowEffectPadding);
11
+ }
12
+ function resolveOuterGlowEffectPadding(effect) {
13
+ return getOuterGlowEffectPadding(effect);
14
+ }
5
15
  //# sourceMappingURL=outerGlowEffect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"outerGlowEffect.js","sourceRoot":"","sources":["../src/outerGlowEffect.ts"],"names":[],"mappings":"AAEA,2HAA2H;AAC3H,MAAM,UAAU,qBAAqB,CAAC,UAAmD,EAAE;IACzF,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,EAAE,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"outerGlowEffect.js","sourceRoot":"","sources":["../src/outerGlowEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8BAA8B,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AAE5G,2HAA2H;AAC3H,MAAM,UAAU,qBAAqB,CAAC,UAAmD,EAAE;IACzF,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAiC;IACzE,OAAO,8BAA8B,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,KAAkB;IACvE,mCAAmC,CAAC,KAAK,EAAE,iBAAiB,EAAE,6BAA6B,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,6BAA6B,CAAC,MAA8B;IACnE,OAAO,yBAAyB,CAAC,MAAmC,CAAC,CAAC;AACxE,CAAC"}
@@ -1,3 +1,5 @@
1
- import type { OutlineEffect } from '@flighthq/types/contract';
1
+ import type { OutlineEffect, RenderEffectPadding, RenderState } from '@flighthq/types/contract';
2
2
  export declare function createOutlineEffect(options?: Readonly<Omit<OutlineEffect, 'kind'>>): OutlineEffect;
3
+ export declare function getOutlineEffectPadding(effect: Readonly<OutlineEffect>): RenderEffectPadding;
4
+ export declare function registerOutlineEffectPaddingResolver(state: RenderState): void;
3
5
  //# sourceMappingURL=outlineEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"outlineEffect.d.ts","sourceRoot":"","sources":["../src/outlineEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAM,GAAG,aAAa,CAEtG"}
1
+ {"version":3,"file":"outlineEffect.d.ts","sourceRoot":"","sources":["../src/outlineEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAgB,mBAAmB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI9G,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAM,GAAG,aAAa,CAEtG;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,mBAAmB,CAG5F;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAE7E"}
@@ -1,4 +1,15 @@
1
+ import { registerRenderEffectPaddingResolver } from './renderEffectPadding';
1
2
  export function createOutlineEffect(options = {}) {
2
3
  return { kind: 'OutlineEffect', ...options };
3
4
  }
5
+ export function getOutlineEffectPadding(effect) {
6
+ const thickness = Math.ceil(Math.max(0, effect.thickness ?? 1));
7
+ return { bottom: thickness, left: thickness, right: thickness, top: thickness };
8
+ }
9
+ export function registerOutlineEffectPaddingResolver(state) {
10
+ registerRenderEffectPaddingResolver(state, 'OutlineEffect', resolveOutlineEffectPadding);
11
+ }
12
+ function resolveOutlineEffectPadding(effect) {
13
+ return getOutlineEffectPadding(effect);
14
+ }
4
15
  //# sourceMappingURL=outlineEffect.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"outlineEffect.js","sourceRoot":"","sources":["../src/outlineEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AAE5E,MAAM,UAAU,mBAAmB,CAAC,UAAiD,EAAE;IACrF,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAA+B;IACrE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,KAAkB;IACrE,mCAAmC,CAAC,KAAK,EAAE,eAAe,EAAE,2BAA2B,CAAC,CAAC;AAC3F,CAAC;AAED,SAAS,2BAA2B,CAAC,MAA8B;IACjE,OAAO,uBAAuB,CAAC,MAAiC,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Kind, RenderEffect, RenderEffectPadding, RenderEffectPaddingExplanation, RenderEffectPaddingResolver, RenderState } from '@flighthq/types/contract';
2
+ export declare function computeRenderEffectPadding(state: RenderState, effects: Readonly<RenderEffect> | ReadonlyArray<Readonly<RenderEffect>>): RenderEffectPadding;
3
+ export declare function explainRenderEffectPadding(state: RenderState, effects: Readonly<RenderEffect> | ReadonlyArray<Readonly<RenderEffect>>): RenderEffectPaddingExplanation;
4
+ export declare function getDirectionalRenderEffectPadding(blurX: number, blurY: number, offsetX: number, offsetY: number): RenderEffectPadding;
5
+ export declare function getGaussianRenderEffectPadding(blurX: number, blurY: number): RenderEffectPadding;
6
+ export declare function registerRenderEffectPaddingResolver(state: RenderState, kind: Kind, resolver: RenderEffectPaddingResolver | null): void;
7
+ //# sourceMappingURL=renderEffectPadding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderEffectPadding.d.ts","sourceRoot":"","sources":["../src/renderEffectPadding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EACJ,YAAY,EACZ,mBAAmB,EACnB,8BAA8B,EAC9B,2BAA2B,EAC3B,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAMlC,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GACtE,mBAAmB,CAOrB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GACtE,8BAA8B,CAyBhC;AAGD,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,mBAAmB,CAUrB;AAGD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAIhG;AAED,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,2BAA2B,GAAG,IAAI,GAC3C,IAAI,CAIN"}
@@ -0,0 +1,70 @@
1
+ import { getRenderStateRuntime } from '@flighthq/render/contract';
2
+ import { RenderRegistry } from '@flighthq/types/contract';
3
+ // Computes the footprint of one effect or a sequential effect chain. Spatial effects add their
4
+ // directional footprints per side; pointwise effects register the zero resolver. An unregistered kind
5
+ // contributes the silent zero sentinel and emits only through the opt-in shared registry-miss signal.
6
+ export function computeRenderEffectPadding(state, effects) {
7
+ const list = Array.isArray(effects) ? effects : [effects];
8
+ const explanation = explainRenderEffectPadding(state, list);
9
+ const emitMiss = getRenderStateRuntime(state).registryMiss;
10
+ if (emitMiss !== null)
11
+ for (const kind of explanation.missingKinds)
12
+ emitMiss(RenderRegistry.EffectPaddingResolver, kind);
13
+ return explanation.padding;
14
+ }
15
+ export function explainRenderEffectPadding(state, effects) {
16
+ const list = Array.isArray(effects) ? effects : [effects];
17
+ const registry = getRenderStateRuntime(state).renderEffectPaddingResolverRegistry;
18
+ let bottom = 0;
19
+ let left = 0;
20
+ let right = 0;
21
+ let top = 0;
22
+ const missingKinds = [];
23
+ for (const effect of list) {
24
+ const resolver = registry?.get(effect.kind);
25
+ if (resolver === undefined) {
26
+ if (!missingKinds.includes(effect.kind))
27
+ missingKinds.push(effect.kind);
28
+ continue;
29
+ }
30
+ const padding = resolver(effect);
31
+ bottom += sanitizePadding(padding.bottom);
32
+ left += sanitizePadding(padding.left);
33
+ right += sanitizePadding(padding.right);
34
+ top += sanitizePadding(padding.top);
35
+ }
36
+ return {
37
+ missingKinds,
38
+ padding: { bottom, left, right, top },
39
+ status: missingKinds.length === 0 ? 'complete' : 'missing-resolver',
40
+ };
41
+ }
42
+ // Adds a screen-space Y-down offset to a Gaussian footprint without wasting the opposite inset.
43
+ export function getDirectionalRenderEffectPadding(blurX, blurY, offsetX, offsetY) {
44
+ const gaussian = getGaussianRenderEffectPadding(blurX, blurY);
45
+ const dx = Math.abs(offsetX) < 1e-10 ? 0 : offsetX;
46
+ const dy = Math.abs(offsetY) < 1e-10 ? 0 : offsetY;
47
+ return {
48
+ bottom: Math.ceil(gaussian.bottom + Math.max(0, dy)),
49
+ left: Math.ceil(gaussian.left + Math.max(0, -dx)),
50
+ right: Math.ceil(gaussian.right + Math.max(0, dx)),
51
+ top: Math.ceil(gaussian.top + Math.max(0, -dy)),
52
+ };
53
+ }
54
+ // Converts Gaussian standard deviations into the three-sigma footprint used by the per-node lane.
55
+ export function getGaussianRenderEffectPadding(blurX, blurY) {
56
+ const horizontal = Math.ceil(Math.max(0, blurX) * 3);
57
+ const vertical = Math.ceil(Math.max(0, blurY) * 3);
58
+ return { bottom: vertical, left: horizontal, right: horizontal, top: vertical };
59
+ }
60
+ export function registerRenderEffectPaddingResolver(state, kind, resolver) {
61
+ const runtime = getRenderStateRuntime(state);
62
+ if (resolver === null)
63
+ runtime.renderEffectPaddingResolverRegistry?.delete(kind);
64
+ else
65
+ (runtime.renderEffectPaddingResolverRegistry ??= new Map()).set(kind, resolver);
66
+ }
67
+ function sanitizePadding(value) {
68
+ return Number.isFinite(value) ? Math.max(0, value) : 0;
69
+ }
70
+ //# sourceMappingURL=renderEffectPadding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderEffectPadding.js","sourceRoot":"","sources":["../src/renderEffectPadding.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
- import type { TiltShiftEffect } from '@flighthq/types/contract';
1
+ import type { RenderEffectPadding, RenderState, TiltShiftEffect } from '@flighthq/types/contract';
2
2
  export declare function createTiltShiftEffect(options?: Readonly<Omit<TiltShiftEffect, 'kind'>>): TiltShiftEffect;
3
+ export declare function getTiltShiftEffectPadding(effect: Readonly<TiltShiftEffect>): RenderEffectPadding;
4
+ export declare function registerTiltShiftEffectPaddingResolver(state: RenderState): void;
3
5
  //# sourceMappingURL=tiltShiftEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tiltShiftEffect.d.ts","sourceRoot":"","sources":["../src/tiltShiftEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAM,GAAG,eAAe,CAE5G"}
1
+ {"version":3,"file":"tiltShiftEffect.d.ts","sourceRoot":"","sources":["../src/tiltShiftEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAIhH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAM,GAAG,eAAe,CAE5G;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,mBAAmB,CAGhG;AAED,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAE/E"}
@@ -1,4 +1,15 @@
1
+ import { registerRenderEffectPaddingResolver } from './renderEffectPadding';
1
2
  export function createTiltShiftEffect(options = {}) {
2
3
  return { kind: 'TiltShiftEffect', ...options };
3
4
  }
5
+ export function getTiltShiftEffectPadding(effect) {
6
+ const vertical = Math.ceil(Math.max(0, effect.blur ?? 4) * 3);
7
+ return { bottom: vertical, left: 0, right: 0, top: vertical };
8
+ }
9
+ export function registerTiltShiftEffectPaddingResolver(state) {
10
+ registerRenderEffectPaddingResolver(state, 'TiltShiftEffect', resolveTiltShiftEffectPadding);
11
+ }
12
+ function resolveTiltShiftEffectPadding(effect) {
13
+ return getTiltShiftEffectPadding(effect);
14
+ }
4
15
  //# sourceMappingURL=tiltShiftEffect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tiltShiftEffect.js","sourceRoot":"","sources":["../src/tiltShiftEffect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,UAAmD,EAAE;IACzF,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,EAAE,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"tiltShiftEffect.js","sourceRoot":"","sources":["../src/tiltShiftEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AAE5E,MAAM,UAAU,qBAAqB,CAAC,UAAmD,EAAE;IACzF,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAiC;IACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,KAAkB;IACvE,mCAAmC,CAAC,KAAK,EAAE,iBAAiB,EAAE,6BAA6B,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,6BAA6B,CAAC,MAA8B;IACnE,OAAO,yBAAyB,CAAC,MAAmC,CAAC,CAAC;AACxE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "name": "@flighthq/effects",
3
- "version": "0.3.0-next.906.07cea63",
3
+ "version": "0.3.0",
4
+ "author": "Joshua Granick and other contributors",
5
+ "license": "MIT",
4
6
  "repository": {
5
7
  "type": "git",
6
8
  "url": "https://github.com/flighthq/flight.git",
@@ -36,7 +38,9 @@
36
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
37
39
  },
38
40
  "dependencies": {
39
- "@flighthq/types": "0.3.0-next.906.07cea63"
41
+ "@flighthq/render": "0.3.0",
42
+ "@flighthq/signals": "0.3.0",
43
+ "@flighthq/types": "0.3.0"
40
44
  },
41
45
  "devDependencies": {
42
46
  "typescript": "^5.3.0"
@@ -1,4 +1,6 @@
1
- import { createBevelEffect } from './bevelEffect';
1
+ import { createRenderState, getRenderStateRuntime } from '@flighthq/render/contract';
2
+
3
+ import { createBevelEffect, getBevelEffectPadding, registerBevelEffectPaddingResolver } from './bevelEffect';
2
4
 
3
5
  describe('createBevelEffect', () => {
4
6
  it('tags the intent type', () => {
@@ -12,3 +14,24 @@ describe('createBevelEffect', () => {
12
14
  });
13
15
  });
14
16
  });
17
+
18
+ describe('getBevelEffectPadding', () => {
19
+ it('adds the directional offset only to the reached sides of the Gaussian footprint', () => {
20
+ expect(getBevelEffectPadding(createBevelEffect({ angle: 180, blurX: 2, blurY: 3, distance: 5 }))).toEqual({
21
+ bottom: 9,
22
+ left: 11,
23
+ right: 6,
24
+ top: 9,
25
+ });
26
+ });
27
+ });
28
+
29
+ describe('registerBevelEffectPaddingResolver', () => {
30
+ it('registers the bevel footprint on only the supplied state', () => {
31
+ const state = createRenderState();
32
+ const other = createRenderState();
33
+ registerBevelEffectPaddingResolver(state);
34
+ expect(getRenderStateRuntime(state).renderEffectPaddingResolverRegistry?.has('BevelEffect')).toBe(true);
35
+ expect(getRenderStateRuntime(other).renderEffectPaddingResolverRegistry).toBeNull();
36
+ });
37
+ });
@@ -88,6 +88,21 @@ describe('getAdvancedBlendRgb', () => {
88
88
  });
89
89
 
90
90
  describe('getSeparableBlendChannel', () => {
91
+ // The faithful twins of the fixed-function BlendMode.Darken/Lighten. The channel function is the same
92
+ // W3C min/max; what the effect path adds is the (1-a)*dst + a*B(src,dst) coverage term that MIN/MAX
93
+ // blend state cannot carry — which is the whole reason both tiers carry these two.
94
+ it('Darken and Lighten are the W3C per-channel min and max', () => {
95
+ expect(getSeparableBlendChannel(AdvancedBlendMode.Darken, 0.6, 0.3)).toBeCloseTo(0.3, 6);
96
+ expect(getSeparableBlendChannel(AdvancedBlendMode.Darken, 0.2, 0.9)).toBeCloseTo(0.2, 6);
97
+ expect(getSeparableBlendChannel(AdvancedBlendMode.Lighten, 0.6, 0.3)).toBeCloseTo(0.6, 6);
98
+ expect(getSeparableBlendChannel(AdvancedBlendMode.Lighten, 0.2, 0.9)).toBeCloseTo(0.9, 6);
99
+ });
100
+
101
+ it('Darken and Lighten are separable, not HSL', () => {
102
+ expect(isNonSeparableBlendMode(AdvancedBlendMode.Darken)).toBe(false);
103
+ expect(isNonSeparableBlendMode(AdvancedBlendMode.Lighten)).toBe(false);
104
+ });
105
+
91
106
  it('Overlay equals HardLight with operands swapped', () => {
92
107
  const cb = 0.6;
93
108
  const cs = 0.3;
@@ -1,4 +1,13 @@
1
- import { computeBloomBlurRadius, computeBloomIntensity, computeBloomThreshold, createBloomEffect } from './bloomEffect';
1
+ import { createRenderState, getRenderStateRuntime } from '@flighthq/render/contract';
2
+
3
+ import {
4
+ computeBloomBlurRadius,
5
+ computeBloomIntensity,
6
+ computeBloomThreshold,
7
+ createBloomEffect,
8
+ getBloomEffectPadding,
9
+ registerBloomEffectPaddingResolver,
10
+ } from './bloomEffect';
2
11
 
3
12
  describe('computeBloomBlurRadius', () => {
4
13
  it('defaults to 8 when radius is unset', () => {
@@ -39,3 +48,24 @@ describe('createBloomEffect', () => {
39
48
  expect(createBloomEffect({ threshold: 0.5, intensity: 2 })).toMatchObject({ threshold: 0.5, intensity: 2 });
40
49
  });
41
50
  });
51
+
52
+ describe('getBloomEffectPadding', () => {
53
+ it('uses a three-sigma footprint for the blurred bright branch', () => {
54
+ expect(getBloomEffectPadding(createBloomEffect({ radius: 2 }))).toEqual({
55
+ bottom: 6,
56
+ left: 6,
57
+ right: 6,
58
+ top: 6,
59
+ });
60
+ });
61
+ });
62
+
63
+ describe('registerBloomEffectPaddingResolver', () => {
64
+ it('registers the bloom footprint on only the supplied state', () => {
65
+ const state = createRenderState();
66
+ const other = createRenderState();
67
+ registerBloomEffectPaddingResolver(state);
68
+ expect(getRenderStateRuntime(state).renderEffectPaddingResolverRegistry?.has('BloomEffect')).toBe(true);
69
+ expect(getRenderStateRuntime(other).renderEffectPaddingResolverRegistry).toBeNull();
70
+ });
71
+ });
@@ -1,4 +1,6 @@
1
- import { createBlurEffect } from './blurEffect';
1
+ import { createRenderState, getRenderStateRuntime } from '@flighthq/render/contract';
2
+
3
+ import { createBlurEffect, getBlurEffectPadding, registerBlurEffectPaddingResolver } from './blurEffect';
2
4
 
3
5
  describe('createBlurEffect', () => {
4
6
  it('sets the kind', () => {
@@ -15,3 +17,26 @@ describe('createBlurEffect', () => {
15
17
  expect(effect.blurY).toBe(3);
16
18
  });
17
19
  });
20
+
21
+ describe('getBlurEffectPadding', () => {
22
+ it('derives directional Gaussian footprint from ceil(3 * sigma) on each axis', () => {
23
+ expect(getBlurEffectPadding(createBlurEffect({ blurX: 2.1, blurY: 3.2 }))).toEqual({
24
+ bottom: 10,
25
+ left: 7,
26
+ right: 7,
27
+ top: 10,
28
+ });
29
+ });
30
+ });
31
+
32
+ describe('registerBlurEffectPaddingResolver', () => {
33
+ it('registers the blur resolver on only the supplied state', () => {
34
+ const state = createRenderState();
35
+ const other = createRenderState();
36
+
37
+ registerBlurEffectPaddingResolver(state);
38
+
39
+ expect(getRenderStateRuntime(state).renderEffectPaddingResolverRegistry?.has('BlurEffect')).toBe(true);
40
+ expect(getRenderStateRuntime(other).renderEffectPaddingResolverRegistry).toBeNull();
41
+ });
42
+ });
@@ -1,4 +1,10 @@
1
- import { createBokehDepthOfFieldEffect } from './bokehDepthOfFieldEffect';
1
+ import { createRenderState, getRenderStateRuntime } from '@flighthq/render/contract';
2
+
3
+ import {
4
+ createBokehDepthOfFieldEffect,
5
+ getBokehDepthOfFieldEffectPadding,
6
+ registerBokehDepthOfFieldEffectPaddingResolver,
7
+ } from './bokehDepthOfFieldEffect';
2
8
 
3
9
  describe('createBokehDepthOfFieldEffect', () => {
4
10
  it('tags the intent type', () => {
@@ -13,3 +19,24 @@ describe('createBokehDepthOfFieldEffect', () => {
13
19
  });
14
20
  });
15
21
  });
22
+
23
+ describe('getBokehDepthOfFieldEffectPadding', () => {
24
+ it('uses the maximum disc radius on every side', () => {
25
+ expect(getBokehDepthOfFieldEffectPadding(createBokehDepthOfFieldEffect({ maxBlur: 4.2 }))).toEqual({
26
+ bottom: 5,
27
+ left: 5,
28
+ right: 5,
29
+ top: 5,
30
+ });
31
+ });
32
+ });
33
+
34
+ describe('registerBokehDepthOfFieldEffectPaddingResolver', () => {
35
+ it('registers the bokeh footprint on only the supplied state', () => {
36
+ const state = createRenderState();
37
+ const other = createRenderState();
38
+ registerBokehDepthOfFieldEffectPaddingResolver(state);
39
+ expect(getRenderStateRuntime(state).renderEffectPaddingResolverRegistry?.has('BokehDepthOfFieldEffect')).toBe(true);
40
+ expect(getRenderStateRuntime(other).renderEffectPaddingResolverRegistry).toBeNull();
41
+ });
42
+ });
@@ -1,4 +1,10 @@
1
- import { createContactShadowsEffect } from './contactShadowsEffect';
1
+ import { createRenderState, getRenderStateRuntime } from '@flighthq/render/contract';
2
+
3
+ import {
4
+ createContactShadowsEffect,
5
+ getContactShadowsEffectPadding,
6
+ registerContactShadowsEffectPaddingResolver,
7
+ } from './contactShadowsEffect';
2
8
 
3
9
  describe('createContactShadowsEffect', () => {
4
10
  it('carries options', () => {
@@ -12,3 +18,24 @@ describe('createContactShadowsEffect', () => {
12
18
  expect(createContactShadowsEffect().kind).toBe('ContactShadowsEffect');
13
19
  });
14
20
  });
21
+
22
+ describe('getContactShadowsEffectPadding', () => {
23
+ it('keeps the screen-space depth treatment inside the current target', () => {
24
+ expect(getContactShadowsEffectPadding(createContactShadowsEffect({ distance: 8 }))).toEqual({
25
+ bottom: 0,
26
+ left: 0,
27
+ right: 0,
28
+ top: 0,
29
+ });
30
+ });
31
+ });
32
+
33
+ describe('registerContactShadowsEffectPaddingResolver', () => {
34
+ it('registers the explicit zero footprint on only the supplied state', () => {
35
+ const state = createRenderState();
36
+ const other = createRenderState();
37
+ registerContactShadowsEffectPaddingResolver(state);
38
+ expect(getRenderStateRuntime(state).renderEffectPaddingResolverRegistry?.has('ContactShadowsEffect')).toBe(true);
39
+ expect(getRenderStateRuntime(other).renderEffectPaddingResolverRegistry).toBeNull();
40
+ });
41
+ });