mInternalRoot(Actor::New()),
mDownscaleFactor(BLUR_EFFECT_DOWNSCALE_FACTOR),
mPixelRadius(BLUR_EFFECT_PIXEL_RADIUS),
+ mDownscaledPixelRadius(static_cast<uint32_t>(BLUR_EFFECT_PIXEL_RADIUS * BLUR_EFFECT_DOWNSCALE_FACTOR)),
mBellCurveWidth(Math::MACHINE_EPSILON_1),
mSkipBlur(false),
mIsBackground(isBackground)
mInternalRoot(Actor::New()),
mDownscaleFactor(downscaleFactor),
mPixelRadius(blurRadius),
+ mDownscaledPixelRadius(BLUR_EFFECT_PIXEL_RADIUS),
mBellCurveWidth(Math::MACHINE_EPSILON_1),
mSkipBlur(false),
mIsBackground(isBackground)
mPixelRadius = fixedBlurRadius;
}
- mPixelRadius = static_cast<uint32_t>(mPixelRadius * mDownscaleFactor);
+ mDownscaledPixelRadius = static_cast<uint32_t>(mPixelRadius * mDownscaleFactor);
- if(DALI_UNLIKELY((mPixelRadius >> 1) < MINIMUM_GPU_ARRAY_SIZE))
+ if(DALI_UNLIKELY((mDownscaledPixelRadius >> 1) < MINIMUM_GPU_ARRAY_SIZE))
{
mSkipBlur = true;
DALI_LOG_ERROR("Blur radius is too small. This blur will be ignored.\n");
// Calculate bell curve width
{
- const float epsilon = 1e-2f / (mPixelRadius * 2);
- const float localOffset = (mPixelRadius * 2) - 1;
+ const float epsilon = 1e-2f / (mDownscaledPixelRadius * 2);
+ const float localOffset = (mDownscaledPixelRadius * 2) - 1;
float lowerBoundBellCurveWidth = Math::MACHINE_EPSILON_10000;
float upperBoundBellCurveWidth = MAXIMUM_BELL_CURVE_WIDTH;
// shader
std::ostringstream fragmentStringStream;
- fragmentStringStream << "#define NUM_SAMPLES " << (mPixelRadius >> 1) << "\n";
+ fragmentStringStream << "#define NUM_SAMPLES " << (mDownscaledPixelRadius >> 1) << "\n";
fragmentStringStream << SHADER_BLUR_EFFECT_FRAG;
std::string fragmentSource(fragmentStringStream.str());
void BlurEffectImpl::SetShaderConstants(uint32_t downsampledWidth, uint32_t downsampledHeight)
{
- const uint32_t sampleCount = mPixelRadius >> 1; // compression
+ const uint32_t sampleCount = mDownscaledPixelRadius >> 1; // compression
const uint32_t kernelSize = sampleCount * 4 - 1;
const uint32_t halfKernelSize = kernelSize / 2 + 1; // Gaussian curve is symmetric