From 16561908a5e0e9bbef2aa11c9cdc3a27aeb1bd54 Mon Sep 17 00:00:00 2001 From: "Eunki, Hong" Date: Wed, 8 Jun 2022 21:05:13 +0900 Subject: [PATCH] Make visualOffset as Absolute scale. offset / uSize.xy might make some precision issue. For example, tiling use TRANSFORM_OFFSET. If tiling has some high value, vertex position might missmatched. This patch will reduce precision. Change-Id: I185595680c882d75e989d864053079f801d14440 Signed-off-by: Eunki, Hong --- .../internal/graphics/shaders/animated-gradient-visual-shader.vert | 6 +++--- dali-toolkit/internal/graphics/shaders/arc-visual-shader.vert | 6 +++--- dali-toolkit/internal/graphics/shaders/border-visual-shader.vert | 6 +++--- dali-toolkit/internal/graphics/shaders/color-visual-shader.vert | 6 +++--- dali-toolkit/internal/graphics/shaders/gradient-visual-shader.vert | 6 +++--- dali-toolkit/internal/graphics/shaders/image-visual-shader.vert | 6 +++--- .../internal/graphics/shaders/mesh-visual-normal-map-shader.vert | 6 +++--- dali-toolkit/internal/graphics/shaders/mesh-visual-shader.vert | 4 ++-- .../internal/graphics/shaders/mesh-visual-simple-shader.vert | 4 ++-- .../internal/graphics/shaders/npatch-visual-3x3-shader.vert | 6 +++--- dali-toolkit/internal/graphics/shaders/npatch-visual-shader.vert | 6 +++--- dali-toolkit/internal/graphics/shaders/primitive-visual-shader.vert | 4 ++-- dali-toolkit/internal/graphics/shaders/text-scroller-shader.vert | 6 +++--- dali-toolkit/internal/graphics/shaders/text-visual-shader.vert | 6 +++--- dali-toolkit/internal/graphics/shaders/wireframe-visual-shader.vert | 6 +++--- 15 files changed, 42 insertions(+), 42 deletions(-) diff --git a/dali-toolkit/internal/graphics/shaders/animated-gradient-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/animated-gradient-visual-shader.vert index e5cbaa7..5faf423 100644 --- a/dali-toolkit/internal/graphics/shaders/animated-gradient-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/animated-gradient-visual-shader.vert @@ -36,9 +36,9 @@ uniform mediump vec2 anchorPoint; vec4 ComputeVertexPosition() { - vec2 visualSize = mix( uSize.xy*size, size, offsetSizeMode.zw ); - vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy ); - return vec4( (aPosition + anchorPoint)*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 ); + vec2 visualSize = mix(size * uSize.xy, size, offsetSizeMode.zw ); + vec2 visualOffset = mix(offset * uSize.xy, offset, offsetSizeMode.xy ); + return vec4( (aPosition + anchorPoint)*visualSize + visualOffset + origin * uSize.xy, 0.0, 1.0 ); } void main() diff --git a/dali-toolkit/internal/graphics/shaders/arc-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/arc-visual-shader.vert index e063d81..4f6dab5 100644 --- a/dali-toolkit/internal/graphics/shaders/arc-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/arc-visual-shader.vert @@ -13,10 +13,10 @@ uniform mediump vec2 anchorPoint; vec4 ComputeVertexPosition() { - vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw ); - vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy); + vec2 visualSize = mix(size * uSize.xy, size, offsetSizeMode.zw ); + vec2 visualOffset = mix(offset * uSize.xy, offset, offsetSizeMode.xy); vPosition = aPosition* visualSize; - return vec4( vPosition + anchorPoint*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 ); + return vec4( vPosition + anchorPoint*visualSize + visualOffset + origin * uSize.xy, 0.0, 1.0 ); } void main() diff --git a/dali-toolkit/internal/graphics/shaders/border-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/border-visual-shader.vert index 6dc0721..6bf08fa 100644 --- a/dali-toolkit/internal/graphics/shaders/border-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/border-visual-shader.vert @@ -14,9 +14,9 @@ uniform mediump vec2 anchorPoint; vec2 ComputeVertexPosition() { - vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw ); - vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy); - return (aPosition + anchorPoint)*visualSize + (visualOffset + origin)*uSize.xy; + vec2 visualSize = mix(size * uSize.xy, size, offsetSizeMode.zw ); + vec2 visualOffset = mix(offset * uSize.xy, offset, offsetSizeMode.xy); + return (aPosition + anchorPoint)*visualSize + visualOffset + origin * uSize.xy; } void main() diff --git a/dali-toolkit/internal/graphics/shaders/color-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/color-visual-shader.vert index ea72bab..f1688da 100644 --- a/dali-toolkit/internal/graphics/shaders/color-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/color-visual-shader.vert @@ -32,8 +32,8 @@ uniform mediump vec2 extraSize; vec4 ComputeVertexPosition() { - vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw ) + extraSize; - vec2 visualOffset = mix(offset, offset/uSize.xy, offsetSizeMode.xy); + vec2 visualSize = mix(size * uSize.xy, size, offsetSizeMode.zw ) + extraSize; + vec2 visualOffset = mix(offset * uSize.xy, offset, offsetSizeMode.xy); #if defined(IS_REQUIRED_ROUNDED_CORNER) || defined(IS_REQUIRED_BORDERLINE) || defined(IS_REQUIRED_BLUR) vRectSize = visualSize * 0.5; @@ -64,7 +64,7 @@ vec4 ComputeVertexPosition() #else mediump vec2 vPosition = aPosition * visualSize; #endif - return vec4(vPosition + anchorPoint * visualSize + (visualOffset + origin) * uSize.xy, 0.0, 1.0); + return vec4(vPosition + anchorPoint * visualSize + visualOffset + origin * uSize.xy, 0.0, 1.0); } void main() diff --git a/dali-toolkit/internal/graphics/shaders/gradient-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/gradient-visual-shader.vert index 9ea1a17..68179ab 100644 --- a/dali-toolkit/internal/graphics/shaders/gradient-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/gradient-visual-shader.vert @@ -30,8 +30,8 @@ uniform mediump float cornerRadiusPolicy; vec4 ComputeVertexPosition() { - vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw ); - vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy); + vec2 visualSize = mix(size * uSize.xy, size, offsetSizeMode.zw ); + vec2 visualOffset = mix(offset * uSize.xy, offset, offsetSizeMode.xy); #if defined(IS_REQUIRED_ROUNDED_CORNER) || defined(IS_REQUIRED_BORDERLINE) vRectSize = visualSize * 0.5; @@ -68,7 +68,7 @@ vec4 ComputeVertexPosition() vTexCoord = (uAlignmentMatrix*vertexPosition.xyw).xy; - return vec4(vPosition + anchorPoint * visualSize + (visualOffset + origin) * uSize.xy, 0.0, 1.0); + return vec4(vPosition + anchorPoint * visualSize + visualOffset + origin * uSize.xy, 0.0, 1.0); } void main() diff --git a/dali-toolkit/internal/graphics/shaders/image-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/image-visual-shader.vert index e4db9ee..7443aa1 100644 --- a/dali-toolkit/internal/graphics/shaders/image-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/image-visual-shader.vert @@ -36,8 +36,8 @@ uniform mediump vec2 extraSize; vec4 ComputeVertexPosition() { - vec2 visualSize = mix(uSize.xy * size, size, offsetSizeMode.zw) + extraSize; - vec2 visualOffset = mix(offset, offset/uSize.xy, offsetSizeMode.xy); + vec2 visualSize = mix(size * uSize.xy, size, offsetSizeMode.zw) + extraSize; + vec2 visualOffset = mix(offset * uSize.xy, offset, offsetSizeMode.xy); #if defined(IS_REQUIRED_ROUNDED_CORNER) || defined(IS_REQUIRED_BORDERLINE) vRectSize = visualSize * 0.5; @@ -78,7 +78,7 @@ vec4 ComputeVertexPosition() #endif vTexCoord = finalPixelArea.xy + finalPixelArea.zw * (vPosition.xy / max(vec2(1.0), visualSize) + vec2(0.5)); - return vec4(vPosition + anchorPoint * visualSize + (visualOffset + origin) * uSize.xy, 0.0, 1.0); + return vec4(vPosition + anchorPoint * visualSize + visualOffset + origin * uSize.xy, 0.0, 1.0); } void main() diff --git a/dali-toolkit/internal/graphics/shaders/mesh-visual-normal-map-shader.vert b/dali-toolkit/internal/graphics/shaders/mesh-visual-normal-map-shader.vert index c25a1bb..bc9ac8a 100644 --- a/dali-toolkit/internal/graphics/shaders/mesh-visual-normal-map-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/mesh-visual-normal-map-shader.vert @@ -24,12 +24,12 @@ uniform mediump vec2 anchorPoint; vec4 ComputeVertexPosition() { - vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw ); + vec2 visualSize = mix(size * uSize.xy, size, offsetSizeMode.zw ); float scaleFactor = min( visualSize.x, visualSize.y ); vec3 originFlipY =vec3(origin.x, -origin.y, 0.0); vec3 anchorPointFlipY = vec3( anchorPoint.x, -anchorPoint.y, 0.0); - vec3 offset = vec3( ( offset / uSize.xy ) * offsetSizeMode.xy + offset * (1.0-offsetSizeMode.xy), 0.0) * vec3(1.0,-1.0,1.0); - return vec4( (aPosition + anchorPointFlipY)*scaleFactor + (offset + originFlipY)*uSize, 1.0 ); + vec3 visualOffset = vec3( offset * offsetSizeMode.xy + offset * uSize.xy * (1.0 - offsetSizeMode.xy), 0.0) * vec3(1.0,-1.0,1.0); + return vec4( (aPosition + anchorPointFlipY)*scaleFactor + visualOffset + originFlipY * uSize, 1.0 ); } void main() diff --git a/dali-toolkit/internal/graphics/shaders/mesh-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/mesh-visual-shader.vert index 05b90ce..858c92d 100644 --- a/dali-toolkit/internal/graphics/shaders/mesh-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/mesh-visual-shader.vert @@ -26,8 +26,8 @@ vec4 ComputeVertexPosition() float scaleFactor = min( visualSize.x, visualSize.y ); vec3 originFlipY =vec3(origin.x, -origin.y, 0.0); vec3 anchorPointFlipY = vec3( anchorPoint.x, -anchorPoint.y, 0.0); - vec3 offset = vec3( ( offset / uSize.xy ) * offsetSizeMode.xy + offset * (1.0-offsetSizeMode.xy), 0.0) * vec3(1.0,-1.0,1.0); - return vec4( (aPosition + anchorPointFlipY)*scaleFactor + (offset + originFlipY)*uSize, 1.0 ); + vec3 visualOffset = vec3( offset * offsetSizeMode.xy + offset * uSize.xy * (1.0-offsetSizeMode.xy), 0.0) * vec3(1.0,-1.0,1.0); + return vec4( (aPosition + anchorPointFlipY)*scaleFactor + visualOffset + originFlipY * uSize, 1.0 ); } void main() diff --git a/dali-toolkit/internal/graphics/shaders/mesh-visual-simple-shader.vert b/dali-toolkit/internal/graphics/shaders/mesh-visual-simple-shader.vert index 2a4b704..0541a16 100644 --- a/dali-toolkit/internal/graphics/shaders/mesh-visual-simple-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/mesh-visual-simple-shader.vert @@ -23,8 +23,8 @@ vec4 ComputeVertexPosition() float scaleFactor = min( visualSize.x, visualSize.y ); vec3 originFlipY =vec3(origin.x, -origin.y, 0.0); vec3 anchorPointFlipY = vec3( anchorPoint.x, -anchorPoint.y, 0.0); - vec3 offset = vec3( ( offset / uSize.xy ) * offsetSizeMode.xy + offset * (1.0-offsetSizeMode.xy), 0.0) * vec3(1.0,-1.0,1.0); - return vec4( (aPosition + anchorPointFlipY)*scaleFactor + (offset + originFlipY)*uSize, 1.0 ); + vec3 visualOffset = vec3( offset * offsetSizeMode.xy + offset * uSize.xy * (1.0-offsetSizeMode.xy), 0.0) * vec3(1.0,-1.0,1.0); + return vec4( (aPosition + anchorPointFlipY)*scaleFactor + visualOffset + originFlipY * uSize, 1.0 ); } void main() diff --git a/dali-toolkit/internal/graphics/shaders/npatch-visual-3x3-shader.vert b/dali-toolkit/internal/graphics/shaders/npatch-visual-3x3-shader.vert index c7b8a9f..4625b3c 100644 --- a/dali-toolkit/internal/graphics/shaders/npatch-visual-3x3-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/npatch-visual-3x3-shader.vert @@ -16,8 +16,8 @@ uniform mediump vec2 extraSize; void main() { - vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw ) + extraSize; - vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy); + vec2 visualSize = mix(size * uSize.xy, size, offsetSizeMode.zw ) + extraSize; + vec2 visualOffset = mix(offset * uSize.xy, offset, offsetSizeMode.xy); mediump vec2 size = visualSize.xy; @@ -31,7 +31,7 @@ void main() mediump vec4 gridPosition = vec4( fixedFactor * fixedScaleDownRate + ( size - fixedTotal * fixedScaleDownRate ) * stretch, 0.0, 1.0 ); mediump vec4 vertexPosition = gridPosition; vertexPosition.xy -= size * vec2( 0.5, 0.5 ); - vertexPosition.xy += anchorPoint*size + (visualOffset + origin)*uSize.xy; + vertexPosition.xy += anchorPoint*size + visualOffset + origin * uSize.xy; vertexPosition = uMvpMatrix * vertexPosition; diff --git a/dali-toolkit/internal/graphics/shaders/npatch-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/npatch-visual-shader.vert index 4cd84bc..01f6138 100644 --- a/dali-toolkit/internal/graphics/shaders/npatch-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/npatch-visual-shader.vert @@ -22,8 +22,8 @@ void main() mediump vec2 fixedTotal = vec2( uNinePatchFactorsX[ FACTOR_SIZE_X - 1 ].x, uNinePatchFactorsY[ FACTOR_SIZE_Y - 1 ].x ); mediump vec2 stretchTotal = vec2( uNinePatchFactorsX[ FACTOR_SIZE_X - 1 ].y, uNinePatchFactorsY[ FACTOR_SIZE_Y - 1 ].y ); - vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw ) + extraSize; - vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy); + vec2 visualSize = mix(size * uSize.xy, size, offsetSizeMode.zw ) + extraSize; + vec2 visualOffset = mix(offset * uSize.xy, offset, offsetSizeMode.xy); // Scale down if fixedTotal is bigger than visualSize mediump float fixedScaleDownRate = min(1.0, min(visualSize.x / fixedTotal.x, visualSize.y / fixedTotal.y)); @@ -31,7 +31,7 @@ void main() mediump vec4 gridPosition = vec4( fixedFactor * fixedScaleDownRate + ( visualSize.xy - fixedTotal * fixedScaleDownRate ) * stretch / stretchTotal, 0.0, 1.0 ); mediump vec4 vertexPosition = gridPosition; vertexPosition.xy -= visualSize.xy * vec2( 0.5, 0.5 ); - vertexPosition.xy += anchorPoint*visualSize + (visualOffset + origin)*uSize.xy; + vertexPosition.xy += anchorPoint*visualSize + visualOffset + origin * uSize.xy; vertexPosition = uMvpMatrix * vertexPosition; vTexCoord = ( fixedFactor + stretch ) / ( fixedTotal + stretchTotal ); diff --git a/dali-toolkit/internal/graphics/shaders/primitive-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/primitive-visual-shader.vert index 6a1b758..1200294 100644 --- a/dali-toolkit/internal/graphics/shaders/primitive-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/primitive-visual-shader.vert @@ -27,9 +27,9 @@ vec4 ComputeVertexPosition() float scaleFactor = min( visualSize.x / uObjectDimensions.x, visualSize.y / uObjectDimensions.y ); vec3 originFlipY =vec3(origin.x, -origin.y, 0.0); vec3 anchorPointFlipY = vec3( anchorPoint.x, -anchorPoint.y, 0.0); - vec3 offset = vec3( ( offset / uSize.xy ) * offsetSizeMode.xy + offset * (1.0-offsetSizeMode.xy), 0.0) * vec3(1.0,-1.0,1.0); + vec3 visualOffset = vec3( offset * offsetSizeMode.xy + offset * uSize.xy * (1.0-offsetSizeMode.xy), 0.0) * vec3(1.0,-1.0,1.0); - return vec4( (aPosition + anchorPointFlipY)*scaleFactor + (offset + originFlipY)*uSize, 1.0 ); + return vec4( (aPosition + anchorPointFlipY)*scaleFactor + visualOffset + originFlipY * uSize, 1.0 ); } void main() diff --git a/dali-toolkit/internal/graphics/shaders/text-scroller-shader.vert b/dali-toolkit/internal/graphics/shaders/text-scroller-shader.vert index 6ea160a..c152b5e 100644 --- a/dali-toolkit/internal/graphics/shaders/text-scroller-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/text-scroller-shader.vert @@ -18,13 +18,13 @@ uniform mediump vec2 anchorPoint; void main() { - highp vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy ); - highp vec2 visualSize = mix( uSize.xy * size, size, offsetSizeMode.zw ); + highp vec2 visualSize = mix(size * uSize.xy, size, offsetSizeMode.zw); + highp vec2 visualOffset = mix(offset * uSize.xy, offset, offsetSizeMode.xy); vTexCoord.x = ( uDelta + uHorizontalAlign * ( uTextureSize.x - visualSize.x - uGap ) + aPosition.x * visualSize.x - uGap * 0.5 ) / uTextureSize.x + 0.5; vTexCoord.y = ( uVerticalAlign * ( uTextureSize.y - visualSize.y ) + aPosition.y * visualSize.y ) / ( uTextureSize.y ) + 0.5; - highp vec4 vertexPosition = vec4( ( aPosition + anchorPoint ) * visualSize + ( visualOffset + origin ) * uSize.xy, 0.0, 1.0 ); + highp vec4 vertexPosition = vec4( ( aPosition + anchorPoint ) * visualSize + visualOffset + origin * uSize.xy, 0.0, 1.0 ); gl_Position = uMvpMatrix * vertexPosition; } \ No newline at end of file diff --git a/dali-toolkit/internal/graphics/shaders/text-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/text-visual-shader.vert index 893d075..4cc1212 100644 --- a/dali-toolkit/internal/graphics/shaders/text-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/text-visual-shader.vert @@ -14,9 +14,9 @@ uniform mediump vec2 anchorPoint; vec4 ComputeVertexPosition() { - vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw ); - vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy); - return vec4( (aPosition + anchorPoint)*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 ); + vec2 visualSize = mix(size * uSize.xy, size, offsetSizeMode.zw ); + vec2 visualOffset = mix(offset * uSize.xy, offset, offsetSizeMode.xy); + return vec4( (aPosition + anchorPoint) * visualSize + visualOffset + origin * uSize.xy, 0.0, 1.0 ); } void main() diff --git a/dali-toolkit/internal/graphics/shaders/wireframe-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/wireframe-visual-shader.vert index 5e0bfb0..9a9975c 100644 --- a/dali-toolkit/internal/graphics/shaders/wireframe-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/wireframe-visual-shader.vert @@ -11,9 +11,9 @@ uniform mediump vec2 anchorPoint; vec4 ComputeVertexPosition() { - vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw ); - vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy); - return vec4( (aPosition + anchorPoint)*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 ); + vec2 visualSize = mix(size * uSize.xy, size, offsetSizeMode.zw ); + vec2 visualOffset = mix(offset * uSize.xy, offset, offsetSizeMode.xy); + return vec4( (aPosition + anchorPoint)*visualSize + visualOffset + origin * uSize.xy, 0.0, 1.0 ); } void main() -- 2.7.4