mirror of
https://github.com/lihop/godot-xterm.git
synced 2025-05-05 04:34:23 +02:00
Use shader include for fore/background shaders
The two shaders use a lot of common logic for co-ordinate and attribute look up, so it makes sense to use a common include shader for both. Adds support for the inverse and blink attributes to the foreground shader.
This commit is contained in:
parent
a849423096
commit
8b320622f9
5 changed files with 95 additions and 49 deletions
|
@ -332,14 +332,21 @@ void Terminal::update_sizes(bool force)
|
|||
attr_image = Image::create(std::max(cols, 1u), std::max(rows, 1u), false, Image::FORMAT_L8);
|
||||
attr_texture->set_image(attr_image);
|
||||
|
||||
back_material->set_shader_parameter("cols", cols);
|
||||
back_material->set_shader_parameter("rows", rows);
|
||||
back_material->set_shader_parameter("size", size);
|
||||
back_material->set_shader_parameter("cell_size", cell_size);
|
||||
update_shader_parameters(back_material);
|
||||
update_shader_parameters(fore_material);
|
||||
|
||||
refresh();
|
||||
}
|
||||
|
||||
void Terminal::update_shader_parameters(Ref<ShaderMaterial> material)
|
||||
{
|
||||
material->set_shader_parameter("cols", cols);
|
||||
material->set_shader_parameter("rows", rows);
|
||||
material->set_shader_parameter("size", size);
|
||||
material->set_shader_parameter("cell_size", cell_size);
|
||||
material->set_shader_parameter("grid_size", Vector2(cols * cell_size.x, rows * cell_size.y));
|
||||
}
|
||||
|
||||
void Terminal::initialize_rendering() {
|
||||
ResourceLoader* rl = ResourceLoader::get_singleton();
|
||||
|
||||
|
@ -354,7 +361,7 @@ void Terminal::initialize_rendering() {
|
|||
|
||||
back_material.instantiate();
|
||||
back_material->set_shader(back_shader);
|
||||
back_material->set_shader_parameter("cell_colors", back_texture);
|
||||
back_material->set_shader_parameter("background_colors", back_texture);
|
||||
back_material->set_shader_parameter("attributes", attr_texture);
|
||||
|
||||
back_canvas_item = rs->canvas_item_create();
|
||||
|
@ -404,7 +411,7 @@ void Terminal::update_theme() {
|
|||
tsm_vte_color color = static_cast<tsm_vte_color>(i);
|
||||
palette[color] = get_theme_color(String(COLOR_NAMES[i]));
|
||||
}
|
||||
back_material->set_shader_parameter("background", palette[TSM_COLOR_BACKGROUND]);
|
||||
back_material->set_shader_parameter("background_color", palette[TSM_COLOR_BACKGROUND]);
|
||||
|
||||
// TODO: Default to mono font and handle other styles.
|
||||
font = get_theme_font("normal_font");
|
||||
|
|
|
@ -97,6 +97,7 @@ namespace godot
|
|||
void initialize_rendering();
|
||||
void update_theme();
|
||||
void update_sizes(bool force = false);
|
||||
void update_shader_parameters(Ref<ShaderMaterial> material);
|
||||
void draw_screen();
|
||||
void refresh();
|
||||
void cleanup_rendering();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue