gfx: Text: add ability to change font color

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2024-05-22 08:22:20 -07:00
parent f79351ed59
commit 031164d9b5
2 changed files with 6 additions and 5 deletions

View file

@ -274,7 +274,7 @@ fn updatePipeline(
.size = size.divScalar(px_density), .size = size.divScalar(px_density),
.text_index = num_texts, .text_index = num_texts,
.uv_pos = vec2(@floatFromInt(r.x), @floatFromInt(r.y)), .uv_pos = vec2(@floatFromInt(r.x), @floatFromInt(r.y)),
.font_color = font_color, .color = font_color,
}); });
origin_x += glyph.advance.x(); origin_x += glyph.advance.x();
} }

View file

@ -5,7 +5,7 @@ struct VertexOutput {
// Vertex position // Vertex position
@builtin(position) Position : vec4<f32>, @builtin(position) Position : vec4<f32>,
// UV coordinate // UV coordinate into the glyph atlas
@location(0) fragUV : vec2<f32>, @location(0) fragUV : vec2<f32>,
// Color of the glyph // Color of the glyph
@ -90,6 +90,7 @@ fn vertMain(
var output : VertexOutput; var output : VertexOutput;
output.Position = pos; output.Position = pos;
output.fragUV = uv; output.fragUV = uv;
output.color = glyph.color;
return output; return output;
} }
@ -101,12 +102,12 @@ fn vertMain(
@fragment @fragment
fn fragMain( fn fragMain(
@location(0) fragUV: vec2<f32> @location(0) fragUV: vec2<f32>,
@location(1) color: vec4<f32> @location(1) color: vec4<f32>
) -> @location(0) vec4<f32> { ) -> @location(0) vec4<f32> {
var c = textureSample(glyphTexture, glyphSampler, fragUV); var c = textureSample(glyphTexture, glyphSampler, fragUV);
if (c.a <= 0.0) { if (c.a <= 0.0) {
discard; discard;
} }
return c * color; return vec4<f32>(color.rgb * c.a, color.a);
} }