mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-25 03:08:54 +01:00
Remove shader programColorFinal
This commit is contained in:
parent
2620414409
commit
1663ad2250
@ -47,12 +47,7 @@ func DrawTexture(native gl.Texture, target gl.Texture, projectionMatrix [4][4]fl
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// TODO: Check performance
|
// TODO: Check performance
|
||||||
program := gl.Program(0)
|
program := useProgramColorMatrix(glMatrix(projectionMatrix), geo, color)
|
||||||
if 0 < target {
|
|
||||||
program = useProgramColorMatrix(glMatrix(projectionMatrix), geo, color)
|
|
||||||
} else {
|
|
||||||
program = useProgramColorFinal(glMatrix(projectionMatrix), geo)
|
|
||||||
}
|
|
||||||
|
|
||||||
gl.ActiveTexture(gl.TEXTURE0)
|
gl.ActiveTexture(gl.TEXTURE0)
|
||||||
native.Bind(gl.TEXTURE_2D)
|
native.Bind(gl.TEXTURE_2D)
|
||||||
|
@ -29,10 +29,6 @@ var programColorMatrix = program{
|
|||||||
shaderIds: []shaderId{shaderVertex, shaderColorMatrix},
|
shaderIds: []shaderId{shaderVertex, shaderColorMatrix},
|
||||||
}
|
}
|
||||||
|
|
||||||
var programColorFinal = program{
|
|
||||||
shaderIds: []shaderId{shaderVertex, shaderColorFinal},
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *program) create() {
|
func (p *program) create() {
|
||||||
p.native = gl.CreateProgram()
|
p.native = gl.CreateProgram()
|
||||||
if p.native == 0 {
|
if p.native == 0 {
|
||||||
@ -59,7 +55,6 @@ func initialize() {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
programColorMatrix.create()
|
programColorMatrix.create()
|
||||||
programColorFinal.create()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func getAttributeLocation(program gl.Program, name string) gl.AttribLocation {
|
func getAttributeLocation(program gl.Program, name string) gl.AttribLocation {
|
||||||
@ -119,32 +114,3 @@ func useProgramColorMatrix(projectionMatrix [16]float32, geo Matrix, color Matri
|
|||||||
|
|
||||||
return program.native
|
return program.native
|
||||||
}
|
}
|
||||||
|
|
||||||
func useProgramColorFinal(projectionMatrix [16]float32, geo Matrix) gl.Program {
|
|
||||||
if lastProgram != programColorFinal.native {
|
|
||||||
programColorFinal.native.Use()
|
|
||||||
lastProgram = programColorFinal.native
|
|
||||||
}
|
|
||||||
|
|
||||||
program := programColorFinal
|
|
||||||
|
|
||||||
getUniformLocation(program.native, "projection_matrix").UniformMatrix4fv(false, projectionMatrix)
|
|
||||||
|
|
||||||
a := float32(geo.Element(0, 0))
|
|
||||||
b := float32(geo.Element(0, 1))
|
|
||||||
c := float32(geo.Element(1, 0))
|
|
||||||
d := float32(geo.Element(1, 1))
|
|
||||||
tx := float32(geo.Element(0, 2))
|
|
||||||
ty := float32(geo.Element(1, 2))
|
|
||||||
glModelviewMatrix := [...]float32{
|
|
||||||
a, c, 0, 0,
|
|
||||||
b, d, 0, 0,
|
|
||||||
0, 0, 1, 0,
|
|
||||||
tx, ty, 0, 1,
|
|
||||||
}
|
|
||||||
getUniformLocation(program.native, "modelview_matrix").UniformMatrix4fv(false, glModelviewMatrix)
|
|
||||||
|
|
||||||
getUniformLocation(program.native, "texture").Uniform1i(0)
|
|
||||||
|
|
||||||
return program.native
|
|
||||||
}
|
|
||||||
|
@ -31,9 +31,7 @@ type shaderId int
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
shaderVertex shaderId = iota
|
shaderVertex shaderId = iota
|
||||||
shaderVertexFinal
|
|
||||||
shaderColorMatrix
|
shaderColorMatrix
|
||||||
shaderColorFinal
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var shaders = map[shaderId]*shader{
|
var shaders = map[shaderId]*shader{
|
||||||
@ -62,27 +60,19 @@ varying vec2 vertex_out_tex_coord;
|
|||||||
|
|
||||||
void main(void) {
|
void main(void) {
|
||||||
vec4 color = texture2D(texture, vertex_out_tex_coord);
|
vec4 color = texture2D(texture, vertex_out_tex_coord);
|
||||||
|
|
||||||
|
if (color_matrix != mat4(1.0) || color_matrix_translation != vec4(0.0)) {
|
||||||
// Un-premultiply alpha
|
// Un-premultiply alpha
|
||||||
color.rgb /= color.a;
|
color.rgb /= color.a;
|
||||||
// Apply the color matrix
|
// Apply the color matrix
|
||||||
color = (color_matrix * color) + color_matrix_translation;
|
color = (color_matrix * color) + color_matrix_translation;
|
||||||
// Premultiply alpha
|
|
||||||
color = clamp(color, 0.0, 1.0);
|
color = clamp(color, 0.0, 1.0);
|
||||||
|
// Premultiply alpha
|
||||||
color.rgb *= color.a;
|
color.rgb *= color.a;
|
||||||
|
}
|
||||||
|
|
||||||
gl_FragColor = color;
|
gl_FragColor = color;
|
||||||
}
|
}
|
||||||
`,
|
|
||||||
},
|
|
||||||
shaderColorFinal: {
|
|
||||||
shaderType: gl.FRAGMENT_SHADER,
|
|
||||||
source: `
|
|
||||||
uniform sampler2D texture;
|
|
||||||
varying vec2 vertex_out_tex_coord;
|
|
||||||
|
|
||||||
void main(void) {
|
|
||||||
gl_FragColor = texture2D(texture, vertex_out_tex_coord);
|
|
||||||
}
|
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user