mirror of
https://github.com/overte-org/overte.git
synced 2025-04-26 01:56:22 +02:00
Adjust sdf frag shader alpha correctly
This commit is contained in:
parent
bdaf8a8a32
commit
ca98b378df
2 changed files with 5 additions and 5 deletions
|
@ -429,8 +429,8 @@ void Font3D::drawString(gpu::Batch& batch, float x, float y, const QString& str,
|
||||||
setupGPU();
|
setupGPU();
|
||||||
batch.setPipeline(_pipeline);
|
batch.setPipeline(_pipeline);
|
||||||
batch.setUniformTexture(_fontLoc, _texture);
|
batch.setUniformTexture(_fontLoc, _texture);
|
||||||
batch._glUniform1f(_outlineLoc, (effectType == TextRenderer3D::OUTLINE_EFFECT) ? 1.0f : 0.0f);
|
|
||||||
batch._glUniform4fv(_colorLoc, 1, (const GLfloat*)&color);
|
batch._glUniform4fv(_colorLoc, 1, (const GLfloat*)&color);
|
||||||
|
batch._glUniform1i(_outlineLoc, (effectType == TextRenderer3D::OUTLINE_EFFECT));
|
||||||
|
|
||||||
batch.setInputFormat(_format);
|
batch.setInputFormat(_format);
|
||||||
batch.setInputBuffer(0, _verticesBuffer, 0, _format->getChannels().at(0)._stride);
|
batch.setInputBuffer(0, _verticesBuffer, 0, _format->getChannels().at(0)._stride);
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
|
||||||
uniform sampler2D Font;
|
uniform sampler2D Font;
|
||||||
uniform float Outline;
|
uniform bool Outline;
|
||||||
uniform vec4 Color;
|
uniform vec4 Color;
|
||||||
|
|
||||||
const float gamma = 2.6;
|
const float gamma = 2.6;
|
||||||
|
@ -22,7 +22,7 @@ const float outlineExpansion = 0.2;
|
||||||
void main() {
|
void main() {
|
||||||
// retrieve signed distance
|
// retrieve signed distance
|
||||||
float sdf = texture2D(Font, gl_TexCoord[0].xy).g;
|
float sdf = texture2D(Font, gl_TexCoord[0].xy).g;
|
||||||
if (Outline == 1.0f) {
|
if (Outline) {
|
||||||
if (sdf > interiorCutoff) {
|
if (sdf > interiorCutoff) {
|
||||||
sdf = 1.0 - sdf;
|
sdf = 1.0 - sdf;
|
||||||
} else {
|
} else {
|
||||||
|
@ -31,7 +31,7 @@ void main() {
|
||||||
}
|
}
|
||||||
// perform adaptive anti-aliasing of the edges
|
// perform adaptive anti-aliasing of the edges
|
||||||
// The larger we're rendering, the less anti-aliasing we need
|
// The larger we're rendering, the less anti-aliasing we need
|
||||||
float s = smoothing * length(fwidth(gl_TexCoord[0]));
|
float s = smoothing * length(fwidth(gl_TexCoord[0].xy));
|
||||||
float w = clamp( s, 0.0, 0.5);
|
float w = clamp( s, 0.0, 0.5);
|
||||||
float a = smoothstep(0.5 - w, 0.5 + w, sdf);
|
float a = smoothstep(0.5 - w, 0.5 + w, sdf);
|
||||||
|
|
||||||
|
@ -43,5 +43,5 @@ void main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// final color
|
// final color
|
||||||
gl_FragColor = vec4(Color.rgb, a);
|
gl_FragColor = vec4(Color.rgb, Color.a * a);
|
||||||
}
|
}
|
Loading…
Reference in a new issue