From fc46ca46ea867895ec0de5d59c4250bc85aa7bc8 Mon Sep 17 00:00:00 2001 From: "Eunki, Hong" Date: Thu, 18 Aug 2022 14:10:52 +0900 Subject: [PATCH] Let CornerRadius / Borderline works on very small visual We setup the range of anti-alias as fixed value; 1.0. It cause we only assume that user will use this visual at pixel-unit. But if we try to use ImageView / Control in 3D world, The size of visual can be smaller than 1.0. In this case, CornerRadius / Borderline break down. This patch make the range of anti-alias relative with visual size. So even if we setup the view size smaller than 1.0, it will show the result like 50x50 size of visual. Change-Id: I17614783c2ec8c4a38b51330ba166160d7d4db16 Signed-off-by: Eunki, Hong --- dali-toolkit/internal/graphics/shaders/color-visual-shader.frag | 5 +++-- dali-toolkit/internal/graphics/shaders/gradient-visual-shader.frag | 5 +++-- dali-toolkit/internal/graphics/shaders/image-visual-shader.frag | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/dali-toolkit/internal/graphics/shaders/color-visual-shader.frag b/dali-toolkit/internal/graphics/shaders/color-visual-shader.frag index 36a4104..662121e 100644 --- a/dali-toolkit/internal/graphics/shaders/color-visual-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/color-visual-shader.frag @@ -71,7 +71,8 @@ void calculatePotential() void setupMinMaxPotential() { - gPotentialRange = 1.0; + // Set soft anti-alias range at most 2% of visual size + gPotentialRange = min(1.0, max(vRectSize.x, vRectSize.y) * 0.02); gMaxOutlinePotential = gRadius + gPotentialRange; gMinOutlinePotential = gRadius - gPotentialRange; @@ -118,7 +119,7 @@ lowp vec4 convertBorderlineColor(lowp vec4 textureColor) borderlineOpacity = smoothstep(gMinInlinePotential, gMaxInlinePotential, potential); // Muliply borderlineWidth to resolve very thin borderline - borderlineOpacity *= min(1.0, borderlineWidth); + borderlineOpacity *= min(1.0, borderlineWidth / gPotentialRange); } lowp vec3 borderlineColorRGB = borderlineColor.rgb * uActorColor.rgb; diff --git a/dali-toolkit/internal/graphics/shaders/gradient-visual-shader.frag b/dali-toolkit/internal/graphics/shaders/gradient-visual-shader.frag index 1812cd3..0d24481 100644 --- a/dali-toolkit/internal/graphics/shaders/gradient-visual-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/gradient-visual-shader.frag @@ -69,7 +69,8 @@ void calculatePotential() void setupMinMaxPotential() { - gPotentialRange = 1.0; + // Set soft anti-alias range at most 2% of visual size + gPotentialRange = min(1.0, max(vRectSize.x, vRectSize.y) * 0.02); gMaxOutlinePotential = gRadius + gPotentialRange; gMinOutlinePotential = gRadius - gPotentialRange; @@ -113,7 +114,7 @@ lowp vec4 convertBorderlineColor(lowp vec4 textureColor) borderlineOpacity = smoothstep(gMinInlinePotential, gMaxInlinePotential, potential); // Muliply borderlineWidth to resolve very thin borderline - borderlineOpacity *= min(1.0, borderlineWidth); + borderlineOpacity *= min(1.0, borderlineWidth / gPotentialRange); } lowp vec3 borderlineColorRGB = borderlineColor.rgb * uActorColor.rgb; diff --git a/dali-toolkit/internal/graphics/shaders/image-visual-shader.frag b/dali-toolkit/internal/graphics/shaders/image-visual-shader.frag index a0f39d9..cb5e765 100644 --- a/dali-toolkit/internal/graphics/shaders/image-visual-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/image-visual-shader.frag @@ -99,7 +99,8 @@ void calculatePotential() void setupMinMaxPotential() { - gPotentialRange = 1.0; + // Set soft anti-alias range at most 2% of visual size + gPotentialRange = min(1.0, max(vRectSize.x, vRectSize.y) * 0.02); gMaxOutlinePotential = gRadius + gPotentialRange; gMinOutlinePotential = gRadius - gPotentialRange; @@ -142,7 +143,7 @@ lowp vec4 convertBorderlineColor(lowp vec4 textureColor) borderlineOpacity = smoothstep(gMinInlinePotential, gMaxInlinePotential, potential); // Muliply borderlineWidth to resolve very thin borderline - borderlineOpacity *= min(1.0, borderlineWidth); + borderlineOpacity *= min(1.0, borderlineWidth / gPotentialRange); } lowp vec3 borderlineColorRGB = borderlineColor.rgb * uActorColor.rgb; -- 2.7.4