diff options
| author | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2022-08-12 14:03:28 +0300 | 
|---|---|---|
| committer | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2022-08-23 08:47:21 +0300 | 
| commit | bcc3643989762a6814f1f0c5a4b63a0e66d6286c (patch) | |
| tree | 186cddd06e0dcadddc04214954fe8e19f6f3f2ba /servers/rendering/renderer_rd/shaders | |
| parent | 230225d360ee152e9ed6120b62af915e9a844d04 (diff) | |
Add font LCD sub-pixel anti-aliasing support.
Diffstat (limited to 'servers/rendering/renderer_rd/shaders')
| -rw-r--r-- | servers/rendering/renderer_rd/shaders/canvas.glsl | 8 | ||||
| -rw-r--r-- | servers/rendering/renderer_rd/shaders/canvas_uniforms_inc.glsl | 1 | 
2 files changed, 8 insertions, 1 deletions
diff --git a/servers/rendering/renderer_rd/shaders/canvas.glsl b/servers/rendering/renderer_rd/shaders/canvas.glsl index f8e9020f9f..459d798a80 100644 --- a/servers/rendering/renderer_rd/shaders/canvas.glsl +++ b/servers/rendering/renderer_rd/shaders/canvas.glsl @@ -509,7 +509,13 @@ void main() {  			float a = clamp(d * px_size + 0.5, 0.0, 1.0);  			color.a = a * color.a;  		} - +	} else if (bool(draw_data.flags & FLAGS_USE_LCD)) { +		vec4 lcd_sample = texture(sampler2D(color_texture, texture_sampler), uv); +		if (lcd_sample.a == 1.0) { +			color.rgb = lcd_sample.rgb * color.a; +		} else { +			color = vec4(0.0, 0.0, 0.0, 0.0); +		}  	} else {  #else  	{ diff --git a/servers/rendering/renderer_rd/shaders/canvas_uniforms_inc.glsl b/servers/rendering/renderer_rd/shaders/canvas_uniforms_inc.glsl index 2ea6965c09..1b627a3e81 100644 --- a/servers/rendering/renderer_rd/shaders/canvas_uniforms_inc.glsl +++ b/servers/rendering/renderer_rd/shaders/canvas_uniforms_inc.glsl @@ -25,6 +25,7 @@  #define FLAGS_DEFAULT_SPECULAR_MAP_USED (1 << 27)  #define FLAGS_USE_MSDF (1 << 28) +#define FLAGS_USE_LCD (1 << 29)  #define SAMPLER_NEAREST_CLAMP 0  #define SAMPLER_LINEAR_CLAMP 1  |