mirror of
https://github.com/wez/wezterm.git
synced 2024-12-25 14:22:37 +03:00
pass has_color flag through to fragment shader
This commit is contained in:
parent
8d6950f586
commit
6f6622c659
19
src/xwin.rs
19
src/xwin.rs
@ -76,9 +76,11 @@ struct Vertex {
|
|||||||
fg_color: (f32, f32, f32, f32),
|
fg_color: (f32, f32, f32, f32),
|
||||||
bg_color: (f32, f32, f32, f32),
|
bg_color: (f32, f32, f32, f32),
|
||||||
// TODO: underline, strikethrough, cursor, selected
|
// TODO: underline, strikethrough, cursor, selected
|
||||||
|
/// Nominally a boolean, but the shader compiler hated it
|
||||||
|
has_color: f32,
|
||||||
}
|
}
|
||||||
|
|
||||||
implement_vertex!(Vertex, position, adjust, tex, fg_color, bg_color);
|
implement_vertex!(Vertex, position, adjust, tex, fg_color, bg_color, has_color);
|
||||||
|
|
||||||
const VERTEX_SHADER: &str = r#"
|
const VERTEX_SHADER: &str = r#"
|
||||||
#version 300 es
|
#version 300 es
|
||||||
@ -87,6 +89,7 @@ in vec2 adjust;
|
|||||||
in vec2 tex;
|
in vec2 tex;
|
||||||
in vec4 fg_color;
|
in vec4 fg_color;
|
||||||
in vec4 bg_color;
|
in vec4 bg_color;
|
||||||
|
in float has_color;
|
||||||
|
|
||||||
uniform mat4 projection;
|
uniform mat4 projection;
|
||||||
uniform mat4 translation;
|
uniform mat4 translation;
|
||||||
@ -109,7 +112,7 @@ void main() {
|
|||||||
tex_coords = tex;
|
tex_coords = tex;
|
||||||
o_fg_color = fg_color;
|
o_fg_color = fg_color;
|
||||||
o_bg_color = bg_color;
|
o_bg_color = bg_color;
|
||||||
o_has_color = 0.0;
|
o_has_color = has_color;
|
||||||
|
|
||||||
gl_Position = projection * cell_pos();
|
gl_Position = projection * cell_pos();
|
||||||
}
|
}
|
||||||
@ -1061,14 +1064,26 @@ impl<'a> TerminalWindow<'a> {
|
|||||||
|
|
||||||
vert[V_BOT_RIGHT].tex = texture.bottom_right(&slice);
|
vert[V_BOT_RIGHT].tex = texture.bottom_right(&slice);
|
||||||
vert[V_BOT_RIGHT].adjust = Point::new(right, bottom);
|
vert[V_BOT_RIGHT].adjust = Point::new(right, bottom);
|
||||||
|
|
||||||
|
let has_color = if glyph.has_color { 1.0 } else { 0.0 };
|
||||||
|
vert[V_TOP_LEFT].has_color = has_color;
|
||||||
|
vert[V_TOP_RIGHT].has_color = has_color;
|
||||||
|
vert[V_BOT_LEFT].has_color = has_color;
|
||||||
|
vert[V_BOT_RIGHT].has_color = has_color;
|
||||||
}
|
}
|
||||||
&None => {
|
&None => {
|
||||||
// Whitespace; no texture to render
|
// Whitespace; no texture to render
|
||||||
let zero = (0.0, 0.0f32);
|
let zero = (0.0, 0.0f32);
|
||||||
|
|
||||||
vert[V_TOP_LEFT].tex = zero;
|
vert[V_TOP_LEFT].tex = zero;
|
||||||
vert[V_TOP_RIGHT].tex = zero;
|
vert[V_TOP_RIGHT].tex = zero;
|
||||||
vert[V_BOT_LEFT].tex = zero;
|
vert[V_BOT_LEFT].tex = zero;
|
||||||
vert[V_BOT_RIGHT].tex = zero;
|
vert[V_BOT_RIGHT].tex = zero;
|
||||||
|
|
||||||
|
vert[V_TOP_LEFT].has_color = 0.0;
|
||||||
|
vert[V_TOP_RIGHT].has_color = 0.0;
|
||||||
|
vert[V_BOT_LEFT].has_color = 0.0;
|
||||||
|
vert[V_BOT_RIGHT].has_color = 0.0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user