From: Joshua Simmons Date: Sat, 11 Mar 2023 08:55:36 +0000 (+0100) Subject: Tidy text shader X-Git-Url: https://git.nega.tv//gitweb.cgi?a=commitdiff_plain;h=df3582c4186101acc9cf532bc8c8bb402920b33d;p=josh%2Fnarcissus Tidy text shader --- diff --git a/bins/narcissus/Cargo.toml b/bins/narcissus/Cargo.toml index c17ab4c..03e3395 100644 --- a/bins/narcissus/Cargo.toml +++ b/bins/narcissus/Cargo.toml @@ -6,9 +6,9 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +narcissus-app = { path = "../../libs/narcissus-app" } narcissus-core = { path = "../../libs/narcissus-core" } narcissus-font = { path = "../../libs/narcissus-font" } narcissus-maths = { path = "../../libs/narcissus-maths" } narcissus-image = { path = "../../libs/narcissus-image" } -narcissus-app = { path = "../../libs/narcissus-app" } narcissus-gpu = { path = "../../libs/narcissus-gpu" } \ No newline at end of file diff --git a/bins/narcissus/src/main.rs b/bins/narcissus/src/main.rs index 3cfc546..cfe4e44 100644 --- a/bins/narcissus/src/main.rs +++ b/bins/narcissus/src/main.rs @@ -164,6 +164,8 @@ pub fn main() { } let mut glyph_instances = Vec::new(); + let mut line_glyph_indices = Vec::new(); + let mut line_kern_advances = Vec::new(); let mut align_v = false; let mut kerning = true; @@ -284,9 +286,6 @@ pub fn main() { glyph_instances.clear(); - let mut line_glyph_indices = Vec::new(); - let mut line_kern_advances = Vec::new(); - for line in 0.. { let (font_family, font_size_px, text) = if line & 1 == 0 { (FontFamily::RobotoRegular, 14.0, line0) diff --git a/bins/narcissus/src/shaders/text.frag.glsl b/bins/narcissus/src/shaders/text.frag.glsl index 0163eda..f241618 100644 --- a/bins/narcissus/src/shaders/text.frag.glsl +++ b/bins/narcissus/src/shaders/text.frag.glsl @@ -8,6 +8,6 @@ layout(location = 1) in vec4 color; layout(location = 0) out vec4 outColor; void main() { - float coverage = texture(sampler2D(tex, texSampler), vec2(texcoord.x, texcoord.y)).r; + float coverage = texture(sampler2D(tex, texSampler), texcoord).r; outColor = color * coverage; } diff --git a/bins/narcissus/src/shaders/text.frag.spv b/bins/narcissus/src/shaders/text.frag.spv index c54b727..3bb4aa0 100644 Binary files a/bins/narcissus/src/shaders/text.frag.spv and b/bins/narcissus/src/shaders/text.frag.spv differ diff --git a/bins/narcissus/src/shaders/text.vert.glsl b/bins/narcissus/src/shaders/text.vert.glsl index 26b1e08..dc8ce74 100644 --- a/bins/narcissus/src/shaders/text.vert.glsl +++ b/bins/narcissus/src/shaders/text.vert.glsl @@ -48,6 +48,12 @@ void main() { vec2(cg.offset_x1, cg.offset_y1) }; + vec2 position = positions[gl_VertexIndex]; + vec2 halfScreenSize = vec2(screenWidth, screenHeight) / 2.0; + vec2 glyphPosition = vec2(gi.x, gi.y); + vec2 vertexPosition = (position + glyphPosition) / halfScreenSize - 1.0; + gl_Position = vec4(vertexPosition, 0.0, 1.0); + vec2 texcoords[4] = { vec2(cg.x0, cg.y0), vec2(cg.x0, cg.y1), @@ -55,12 +61,8 @@ void main() { vec2(cg.x1, cg.y1) }; - vec2 halfScreenSize = vec2(screenWidth, screenHeight) / 2.0; - vec2 glyphPosition = vec2(gi.x, gi.y); - vec2 vertexPosition = positions[gl_VertexIndex] + glyphPosition; - vec2 position = vertexPosition / halfScreenSize - 1.0; - gl_Position = vec4(position, 0.0, 1.0); - outTexcoord = texcoords[gl_VertexIndex] / vec2(atlasWidth, atlasHeight); + vec2 texcoord = texcoords[gl_VertexIndex]; + outTexcoord = texcoord / vec2(atlasWidth, atlasHeight); vec4 color = unpackUnorm4x8(gi.color).bgra; outColor = color; diff --git a/bins/narcissus/src/shaders/text.vert.spv b/bins/narcissus/src/shaders/text.vert.spv index c4b15a6..4f9060d 100644 Binary files a/bins/narcissus/src/shaders/text.vert.spv and b/bins/narcissus/src/shaders/text.vert.spv differ