[Bf-blender-cvs] [17c3110ae57] blender2.8: Fix large font drawing blurriness in a better way.

Brecht Van Lommel noreply at git.blender.org
Mon Jul 23 16:17:08 CEST 2018


Commit: 17c3110ae5776bb4bfb11e240d4623ea9a80e073
Author: Brecht Van Lommel
Date:   Mon Jul 23 16:10:46 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB17c3110ae5776bb4bfb11e240d4623ea9a80e073

Fix large font drawing blurriness in a better way.

GPU_LINEAR is there for shadow font blurring, the real issue was lack of
rounding for the batch offset.

===================================================================

M	source/blender/blenfont/intern/blf_font.c
M	source/blender/blenfont/intern/blf_glyph.c

===================================================================

diff --git a/source/blender/blenfont/intern/blf_font.c b/source/blender/blenfont/intern/blf_font.c
index ea81106e60f..f7a926275a9 100644
--- a/source/blender/blenfont/intern/blf_font.c
+++ b/source/blender/blenfont/intern/blf_font.c
@@ -133,7 +133,8 @@ void blf_batch_draw_begin(FontBLF *font)
 
 	if (simple_shader) {
 		/* Offset is applied to each glyph. */
-		copy_v2_v2(g_batch.ofs, font->pos);
+		g_batch.ofs[0] = floorf(font->pos[0]);
+		g_batch.ofs[1] = floorf(font->pos[1]);
 	}
 	else {
 		/* Offset is baked in modelview mat. */
diff --git a/source/blender/blenfont/intern/blf_glyph.c b/source/blender/blenfont/intern/blf_glyph.c
index 99be8539d24..f7f1e10a480 100644
--- a/source/blender/blenfont/intern/blf_glyph.c
+++ b/source/blender/blenfont/intern/blf_glyph.c
@@ -244,7 +244,7 @@ static void blf_glyph_cache_texture(FontBLF *font, GlyphCacheBLF *gc)
 	gc->textures[gc->texture_current] = tex;
 	GPU_texture_bind(tex, 0);
 	GPU_texture_wrap_mode(tex, false);
-	GPU_texture_filters(tex, GPU_NEAREST, GPU_NEAREST);
+	GPU_texture_filters(tex, GPU_NEAREST, GPU_LINEAR);
 	GPU_texture_unbind(tex);
 }
 
@@ -427,8 +427,8 @@ static void blf_glyph_calc_rect(rctf *rect, GlyphBLF *g, float x, float y)
 {
 	rect->xmin = floorf(x + g->pos_x);
 	rect->xmax = rect->xmin + (float)g->width;
-	rect->ymin = y + g->pos_y;
-	rect->ymax = y + g->pos_y - (float)g->height;
+	rect->ymin = floorf(y + g->pos_y);
+	rect->ymax = rect->ymin - (float)g->height;
 }
 
 void blf_glyph_render(FontBLF *font, GlyphBLF *g, float x, float y)



More information about the Bf-blender-cvs mailing list