Correct alpha handling in glyph shader

This commit is contained in:
bloeys
2022-07-04 01:56:47 +04:00
parent 3d7d09744d
commit c82fd6aac7
2 changed files with 14 additions and 19 deletions

27
main.go
View File

@ -10,10 +10,8 @@ import (
"github.com/bloeys/nmage/materials" "github.com/bloeys/nmage/materials"
"github.com/bloeys/nmage/meshes" "github.com/bloeys/nmage/meshes"
"github.com/bloeys/nmage/renderer/rend3dgl" "github.com/bloeys/nmage/renderer/rend3dgl"
"github.com/bloeys/nmage/timing"
nmageimgui "github.com/bloeys/nmage/ui/imgui" nmageimgui "github.com/bloeys/nmage/ui/imgui"
"github.com/bloeys/nterm/glyphs" "github.com/bloeys/nterm/glyphs"
"github.com/go-gl/gl/v4.1-core/gl"
"github.com/golang/freetype/truetype" "github.com/golang/freetype/truetype"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"golang.org/x/image/font" "golang.org/x/image/font"
@ -73,7 +71,6 @@ func main() {
}) })
//Don't flash white //Don't flash white
gl.ClearColor(0, 0, 0, 0)
p.win.SDLWin.GLSwap() p.win.SDLWin.GLSwap()
engine.Run(p, p.win, p.imguiInfo) engine.Run(p, p.win, p.imguiInfo)
@ -156,12 +153,8 @@ func (p *program) Update() {
if input.KeyClicked(sdl.K_SPACE) { if input.KeyClicked(sdl.K_SPACE) {
p.shouldDrawGrid = !p.shouldDrawGrid p.shouldDrawGrid = !p.shouldDrawGrid
} }
fmt.Println("FPS:", int(timing.GetAvgFPS()), "; Draws per frame:", charsPerFrame/16384)
} }
const charsPerFrame = 100_000
var xOff float32 = 0 var xOff float32 = 0
var yOff float32 = 0 var yOff float32 = 0
@ -172,8 +165,13 @@ var b = rand.Float32()
func (p *program) Render() { func (p *program) Render() {
const colorSpd = 0.005 const colorSpd = 0.005
// const charsPerFrame = 100_000
defer p.GlyphRend.Draw() defer p.GlyphRend.Draw()
if p.shouldDrawGrid {
p.drawGrid()
}
r += colorSpd r += colorSpd
if r > 1 { if r > 1 {
r = 0 r = 0
@ -190,17 +188,16 @@ func (p *program) Render() {
} }
textColor := gglm.NewVec4(r, g, b, 1) textColor := gglm.NewVec4(r, g, b, 1)
str := " ijojo\n\n Hello there, friend|. pq?\n ABCDEFGHIJKLMNOPQRSTUVWXYZ" str := " ijojo\n\n Hello there, friend|. pq?\n ABCDEFGHIJKLMNOPQRSTUVWXYZ"
strLen := len(str)
for i := 0; i < charsPerFrame/strLen; i++ { p.GlyphRend.DrawTextOpenGLAbs(str, gglm.NewVec3(xOff, float32(p.GlyphRend.Atlas.LineHeight)*5+yOff, 0), textColor)
p.GlyphRend.DrawTextOpenGLAbs(str, gglm.NewVec3(xOff, float32(p.GlyphRend.Atlas.LineHeight)*5+yOff, 0), textColor)
}
if p.shouldDrawGrid { // strLen := len(str)
p.drawGrid() // for i := 0; i < charsPerFrame/strLen; i++ {
} // p.GlyphRend.DrawTextOpenGLAbs(str, gglm.NewVec3(xOff, float32(p.GlyphRend.Atlas.LineHeight)*5+yOff, 0), textColor)
// }
// fmt.Println("FPS:", int(timing.GetAvgFPS()), "; Draws per frame:", charsPerFrame/16384)
} }
func (p *program) drawGrid() { func (p *program) drawGrid() {

View File

@ -29,7 +29,6 @@ void main()
v2fUV0 = aUV0 + aVertPos.xy * sizeUV; v2fUV0 = aUV0 + aVertPos.xy * sizeUV;
v2fColor = aVertColor; v2fColor = aVertColor;
v2fFragPos = vec3(modelMat * vec4(aVertPos, 1.0));
gl_Position = projViewMat * modelMat * vec4(aVertPos, 1.0); gl_Position = projViewMat * modelMat * vec4(aVertPos, 1.0);
} }
@ -37,9 +36,8 @@ void main()
//shader:fragment //shader:fragment
#version 410 #version 410
in vec4 v2fColor;
in vec2 v2fUV0; in vec2 v2fUV0;
in vec3 v2fFragPos; in vec4 v2fColor;
out vec4 fragColor; out vec4 fragColor;
@ -54,6 +52,6 @@ void main()
// } // }
// else // else
{ {
fragColor = vec4(v2fColor.rgb, texColor.r); fragColor = vec4(v2fColor.rgb, texColor.r*v2fColor.a);
} }
} }