aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/renderer/text/glsl3.rs
diff options
context:
space:
mode:
Diffstat (limited to 'alacritty/src/renderer/text/glsl3.rs')
-rw-r--r--alacritty/src/renderer/text/glsl3.rs25
1 files changed, 14 insertions, 11 deletions
diff --git a/alacritty/src/renderer/text/glsl3.rs b/alacritty/src/renderer/text/glsl3.rs
index 917a5fb5..d5413d32 100644
--- a/alacritty/src/renderer/text/glsl3.rs
+++ b/alacritty/src/renderer/text/glsl3.rs
@@ -15,12 +15,12 @@ use crate::renderer::{cstr, Error};
use super::atlas::{Atlas, ATLAS_SIZE};
use super::{
- Glyph, LoadGlyph, LoaderApi, RenderingGlyphFlags, TextRenderApi, TextRenderBatch, TextRenderer,
- TextShader,
+ Glyph, LoadGlyph, LoaderApi, RenderingGlyphFlags, RenderingPass, TextRenderApi,
+ TextRenderBatch, TextRenderer, TextShader,
};
// Shader source.
-static TEXT_SHADER_F: &str = include_str!("../../../res/glsl3/text.f.glsl");
+pub static TEXT_SHADER_F: &str = include_str!("../../../res/glsl3/text.f.glsl");
static TEXT_SHADER_V: &str = include_str!("../../../res/glsl3/text.v.glsl");
/// Maximum items to be drawn in a batch.
@@ -240,7 +240,7 @@ impl<'a> TextRenderApi<Batch> for RenderApi<'a> {
}
unsafe {
- self.program.set_background_pass(true);
+ self.program.set_rendering_pass(RenderingPass::Background);
gl::DrawElementsInstanced(
gl::TRIANGLES,
6,
@@ -248,7 +248,7 @@ impl<'a> TextRenderApi<Batch> for RenderApi<'a> {
ptr::null(),
self.batch.len() as GLsizei,
);
- self.program.set_background_pass(false);
+ self.program.set_rendering_pass(RenderingPass::SubpixelPass1);
gl::DrawElementsInstanced(
gl::TRIANGLES,
6,
@@ -419,8 +419,8 @@ pub struct TextShaderProgram {
/// Background pass flag.
///
- /// Rendering is split into two passes; 1 for backgrounds, and one for text.
- u_background: GLint,
+ /// Rendering is split into two passes; one for backgrounds, and one for text.
+ u_rendering_pass: GLint,
}
impl TextShaderProgram {
@@ -429,7 +429,7 @@ impl TextShaderProgram {
Ok(Self {
u_projection: program.get_uniform_location(cstr!("projection"))?,
u_cell_dim: program.get_uniform_location(cstr!("cellDim"))?,
- u_background: program.get_uniform_location(cstr!("backgroundPass"))?,
+ u_rendering_pass: program.get_uniform_location(cstr!("renderingPass"))?,
program,
})
}
@@ -440,11 +440,14 @@ impl TextShaderProgram {
}
}
- fn set_background_pass(&self, background_pass: bool) {
- let value = if background_pass { 1 } else { 0 };
+ fn set_rendering_pass(&self, rendering_pass: RenderingPass) {
+ let value = match rendering_pass {
+ RenderingPass::Background | RenderingPass::SubpixelPass1 => rendering_pass as i32,
+ _ => unreachable!("provided pass is not supported in GLSL3 renderer"),
+ };
unsafe {
- gl::Uniform1i(self.u_background, value);
+ gl::Uniform1i(self.u_rendering_pass, value);
}
}
}