diff options
author | Jere Tuliniemi <jere.tuliniemi@qt.io> | 2019-04-01 15:08:11 +0300 |
---|---|---|
committer | Jere Tuliniemi <jere.tuliniemi@qt.io> | 2019-04-16 09:16:37 +0000 |
commit | c6edb9c7d15843e8ab965d365099ace29e2d2049 (patch) | |
tree | 0a24f87676d342c69254e9baeedadaaf4a70e5e5 /src/Runtime/res/effectlib/distancefieldtext_dropshadow.frag | |
parent | 156910d1df8d3f11b72664cf0bf6b7fe800b53cf (diff) |
Add distance field rendering to OpenGL runtime
The old text rendering remains in the background and is used to render
clipped text, since that feature is not yet implemented for distance
field fonts. Building the runtime with Qt version older than 5.12.2 also
causes a fallback to the old text rendering.
Depth pass rendering also needs to be redone in the future to avoid
another full render pass.
Task-number: QT3DS-3210
Change-Id: Ib7666c437d23ae25e1872682f010df3721476a14
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/Runtime/res/effectlib/distancefieldtext_dropshadow.frag')
-rw-r--r-- | src/Runtime/res/effectlib/distancefieldtext_dropshadow.frag | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/Runtime/res/effectlib/distancefieldtext_dropshadow.frag b/src/Runtime/res/effectlib/distancefieldtext_dropshadow.frag new file mode 100644 index 00000000..da51c5c2 --- /dev/null +++ b/src/Runtime/res/effectlib/distancefieldtext_dropshadow.frag @@ -0,0 +1,29 @@ +varying highp vec2 sampleCoord; +varying highp vec2 alphas; +varying highp vec2 shadowSampleCoord; +varying highp vec4 normalizedTextureBounds; + +uniform sampler2D _qt_texture; +uniform highp vec4 color; +uniform highp vec4 shadowColor; + +void main() +{ + highp float shadowAlpha = smoothstep(alphas.x, + alphas.y, + texture2D(_qt_texture, + clamp(shadowSampleCoord, + normalizedTextureBounds.xy, + normalizedTextureBounds.zw)).a); + highp vec4 shadowPixel = shadowColor * shadowAlpha; + + highp float textAlpha = smoothstep(alphas.x, + alphas.y, + texture2D(_qt_texture, + clamp(sampleCoord, + normalizedTextureBounds.xy, + normalizedTextureBounds.zw)).a); + highp vec4 textPixel = color * textAlpha; + + gl_FragColor = mix(shadowPixel, textPixel, textPixel.a); +} |