no longer using TEXTURE_1D since it is not available on GL ES
This commit is contained in:
parent
06267645f6
commit
54e97761de
6 changed files with 714 additions and 764 deletions
|
@ -81,17 +81,27 @@ func (_ GLImpl) GetAttribLocation(program uint32, name string) int32 {
|
||||||
func (_ GLImpl) GetError() uint32 {
|
func (_ GLImpl) GetError() uint32 {
|
||||||
return gl.GetError()
|
return gl.GetError()
|
||||||
}
|
}
|
||||||
func (_ GLImpl) GetProgramInfoLog(program uint32, bufSize int32) string {
|
func (_ GLImpl) GetProgramInfoLog(program uint32) string {
|
||||||
log := strings.Repeat("\x00", int(bufSize+1))
|
var length int32
|
||||||
gl.GetProgramInfoLog(program, bufSize, nil, gl.Str(log))
|
gl.GetProgramiv(program, gl.INFO_LOG_LENGTH, &length)
|
||||||
|
if length == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
log := strings.Repeat("\x00", int(length+1))
|
||||||
|
gl.GetProgramInfoLog(program, length, nil, gl.Str(log))
|
||||||
return log
|
return log
|
||||||
}
|
}
|
||||||
func (_ GLImpl) GetProgramiv(program uint32, pname uint32, params *int32) {
|
func (_ GLImpl) GetProgramiv(program uint32, pname uint32, params *int32) {
|
||||||
gl.GetProgramiv(program, pname, params)
|
gl.GetProgramiv(program, pname, params)
|
||||||
}
|
}
|
||||||
func (_ GLImpl) GetShaderInfoLog(program uint32, bufSize int32) string {
|
func (_ GLImpl) GetShaderInfoLog(program uint32) string {
|
||||||
log := strings.Repeat("\x00", int(bufSize+1))
|
var length int32
|
||||||
gl.GetShaderInfoLog(program, bufSize, nil, gl.Str(log))
|
gl.GetShaderiv(program, gl.INFO_LOG_LENGTH, &length)
|
||||||
|
if length == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
log := strings.Repeat("\x00", int(length+1))
|
||||||
|
gl.GetShaderInfoLog(program, length, nil, gl.Str(log))
|
||||||
return log
|
return log
|
||||||
}
|
}
|
||||||
func (_ GLImpl) GetShaderiv(shader uint32, pname uint32, params *int32) {
|
func (_ GLImpl) GetShaderiv(shader uint32, pname uint32, params *int32) {
|
||||||
|
@ -123,9 +133,6 @@ func (_ GLImpl) StencilMask(mask uint32) {
|
||||||
func (_ GLImpl) StencilOp(fail uint32, zfail uint32, zpass uint32) {
|
func (_ GLImpl) StencilOp(fail uint32, zfail uint32, zpass uint32) {
|
||||||
gl.StencilOp(fail, zfail, zpass)
|
gl.StencilOp(fail, zfail, zpass)
|
||||||
}
|
}
|
||||||
func (_ GLImpl) TexImage1D(target uint32, level int32, internalformat int32, width int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
|
|
||||||
gl.TexImage1D(target, level, internalformat, width, border, format, xtype, pixels)
|
|
||||||
}
|
|
||||||
func (_ GLImpl) TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
|
func (_ GLImpl) TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
|
||||||
gl.TexImage2D(target, level, internalformat, width, height, border, format, xtype, pixels)
|
gl.TexImage2D(target, level, internalformat, width, height, border, format, xtype, pixels)
|
||||||
}
|
}
|
||||||
|
|
22
gradients.go
22
gradients.go
|
@ -42,10 +42,11 @@ func NewLinearGradient(x0, y0, x1, y1 float64) *LinearGradient {
|
||||||
lg := &LinearGradient{gradient: gradient{from: vec{x0, y0}, to: vec{x1, y1}}}
|
lg := &LinearGradient{gradient: gradient{from: vec{x0, y0}, to: vec{x1, y1}}}
|
||||||
gli.GenTextures(1, &lg.tex)
|
gli.GenTextures(1, &lg.tex)
|
||||||
gli.ActiveTexture(gl_TEXTURE0)
|
gli.ActiveTexture(gl_TEXTURE0)
|
||||||
gli.BindTexture(gl_TEXTURE_1D, lg.tex)
|
gli.BindTexture(gl_TEXTURE_2D, lg.tex)
|
||||||
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
|
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
|
||||||
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
|
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
|
||||||
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE)
|
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE)
|
||||||
|
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_T, gl_CLAMP_TO_EDGE)
|
||||||
runtime.SetFinalizer(lg, func(lg *LinearGradient) {
|
runtime.SetFinalizer(lg, func(lg *LinearGradient) {
|
||||||
glChan <- func() {
|
glChan <- func() {
|
||||||
gli.DeleteTextures(1, &lg.tex)
|
gli.DeleteTextures(1, &lg.tex)
|
||||||
|
@ -62,10 +63,11 @@ func NewRadialGradient(x0, y0, r0, x1, y1, r1 float64) *RadialGradient {
|
||||||
rg := &RadialGradient{gradient: gradient{from: vec{x0, y0}, to: vec{x1, y1}}, radFrom: r0, radTo: r1}
|
rg := &RadialGradient{gradient: gradient{from: vec{x0, y0}, to: vec{x1, y1}}, radFrom: r0, radTo: r1}
|
||||||
gli.GenTextures(1, &rg.tex)
|
gli.GenTextures(1, &rg.tex)
|
||||||
gli.ActiveTexture(gl_TEXTURE0)
|
gli.ActiveTexture(gl_TEXTURE0)
|
||||||
gli.BindTexture(gl_TEXTURE_1D, rg.tex)
|
gli.BindTexture(gl_TEXTURE_2D, rg.tex)
|
||||||
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
|
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
|
||||||
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
|
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
|
||||||
gli.TexParameteri(gl_TEXTURE_1D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE)
|
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE)
|
||||||
|
gli.TexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_T, gl_CLAMP_TO_EDGE)
|
||||||
runtime.SetFinalizer(rg, func(rg *RadialGradient) {
|
runtime.SetFinalizer(rg, func(rg *RadialGradient) {
|
||||||
glChan <- func() {
|
glChan <- func() {
|
||||||
gli.DeleteTextures(1, &rg.tex)
|
gli.DeleteTextures(1, &rg.tex)
|
||||||
|
@ -86,7 +88,7 @@ func (g *gradient) load() {
|
||||||
}
|
}
|
||||||
|
|
||||||
gli.ActiveTexture(gl_TEXTURE0)
|
gli.ActiveTexture(gl_TEXTURE0)
|
||||||
gli.BindTexture(gl_TEXTURE_1D, g.tex)
|
gli.BindTexture(gl_TEXTURE_2D, g.tex)
|
||||||
var pixels [2048 * 4]byte
|
var pixels [2048 * 4]byte
|
||||||
pp := 0
|
pp := 0
|
||||||
for i := 0; i < 2048; i++ {
|
for i := 0; i < 2048; i++ {
|
||||||
|
@ -97,7 +99,7 @@ func (g *gradient) load() {
|
||||||
pixels[pp+3] = byte(math.Floor(c.a*255 + 0.5))
|
pixels[pp+3] = byte(math.Floor(c.a*255 + 0.5))
|
||||||
pp += 4
|
pp += 4
|
||||||
}
|
}
|
||||||
gli.TexImage1D(gl_TEXTURE_1D, 0, gl_RGBA, 2048, 0, gl_RGBA, gl_UNSIGNED_BYTE, gli.Ptr(&pixels[0]))
|
gli.TexImage2D(gl_TEXTURE_2D, 0, gl_RGBA, 2048, 1, 0, gl_RGBA, gl_UNSIGNED_BYTE, gli.Ptr(&pixels[0]))
|
||||||
g.loaded = true
|
g.loaded = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
1398
made_shaders.go
1398
made_shaders.go
File diff suppressed because it is too large
Load diff
|
@ -204,10 +204,8 @@ const compilePart = `
|
||||||
gli.ShaderSource(SHADER_VAR, SHADER_SRC)
|
gli.ShaderSource(SHADER_VAR, SHADER_SRC)
|
||||||
gli.CompileShader(SHADER_VAR)
|
gli.CompileShader(SHADER_VAR)
|
||||||
|
|
||||||
var logLength int32
|
shLog := gli.GetShaderInfoLog(SHADER_VAR)
|
||||||
gli.GetShaderiv(SHADER_VAR, gl_INFO_LOG_LENGTH, &logLength)
|
if len(shLog) > 0 {
|
||||||
if logLength > 0 {
|
|
||||||
shLog := gli.GetShaderInfoLog(SHADER_VAR, logLength)
|
|
||||||
fmt.Printf("SHADER_TYPE compilation log for SHADER_SRC:\n\n%s\n", shLog)
|
fmt.Printf("SHADER_TYPE compilation log for SHADER_SRC:\n\n%s\n", shLog)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,10 +227,8 @@ const linkPart = `
|
||||||
gli.AttachShader(program, fs)
|
gli.AttachShader(program, fs)
|
||||||
gli.LinkProgram(program)
|
gli.LinkProgram(program)
|
||||||
|
|
||||||
var logLength int32
|
shLog := gli.GetProgramInfoLog(program)
|
||||||
gli.GetProgramiv(program, gl_INFO_LOG_LENGTH, &logLength)
|
if len(shLog) > 0 {
|
||||||
if logLength > 0 {
|
|
||||||
shLog := gli.GetProgramInfoLog(program, logLength)
|
|
||||||
fmt.Printf("Shader link log for SHADER_SRC:\n\n%s\n", shLog)
|
fmt.Printf("Shader link log for SHADER_SRC:\n\n%s\n", shLog)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -816,9 +816,9 @@ type GL interface {
|
||||||
GenerateMipmap(target uint32)
|
GenerateMipmap(target uint32)
|
||||||
GetAttribLocation(program uint32, name string) int32
|
GetAttribLocation(program uint32, name string) int32
|
||||||
GetError() uint32
|
GetError() uint32
|
||||||
GetProgramInfoLog(program uint32, bufSize int32) string
|
GetProgramInfoLog(program uint32) string
|
||||||
GetProgramiv(program uint32, pname uint32, params *int32)
|
GetProgramiv(program uint32, pname uint32, params *int32)
|
||||||
GetShaderInfoLog(shader uint32, bufSize int32) string
|
GetShaderInfoLog(shader uint32) string
|
||||||
GetShaderiv(shader uint32, pname uint32, params *int32)
|
GetShaderiv(shader uint32, pname uint32, params *int32)
|
||||||
GetUniformLocation(program uint32, name string) int32
|
GetUniformLocation(program uint32, name string) int32
|
||||||
LinkProgram(program uint32)
|
LinkProgram(program uint32)
|
||||||
|
@ -828,7 +828,6 @@ type GL interface {
|
||||||
StencilFunc(xfunc uint32, ref int32, mask uint32)
|
StencilFunc(xfunc uint32, ref int32, mask uint32)
|
||||||
StencilMask(mask uint32)
|
StencilMask(mask uint32)
|
||||||
StencilOp(fail uint32, zfail uint32, zpass uint32)
|
StencilOp(fail uint32, zfail uint32, zpass uint32)
|
||||||
TexImage1D(target uint32, level int32, internalformat int32, width int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer)
|
|
||||||
TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer)
|
TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer)
|
||||||
TexParameteri(target uint32, pname uint32, param int32)
|
TexParameteri(target uint32, pname uint32, param int32)
|
||||||
TexSubImage2D(target uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, xtype uint32, pixels unsafe.Pointer)
|
TexSubImage2D(target uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, xtype uint32, pixels unsafe.Pointer)
|
||||||
|
|
16
shaders.go
16
shaders.go
|
@ -56,7 +56,7 @@ precision mediump float;
|
||||||
#endif
|
#endif
|
||||||
varying vec2 v_cp;
|
varying vec2 v_cp;
|
||||||
uniform mat3 invmat;
|
uniform mat3 invmat;
|
||||||
uniform sampler1D gradient;
|
uniform sampler2D gradient;
|
||||||
uniform vec2 from, dir;
|
uniform vec2 from, dir;
|
||||||
uniform float len;
|
uniform float len;
|
||||||
uniform float globalAlpha;
|
uniform float globalAlpha;
|
||||||
|
@ -65,7 +65,7 @@ void main() {
|
||||||
vec2 v = untf.xy - from;
|
vec2 v = untf.xy - from;
|
||||||
float r = dot(v, dir) / len;
|
float r = dot(v, dir) / len;
|
||||||
r = clamp(r, 0.0, 1.0);
|
r = clamp(r, 0.0, 1.0);
|
||||||
vec4 col = texture1D(gradient, r);
|
vec4 col = texture2D(gradient, vec2(r, 0.0));
|
||||||
col.a *= globalAlpha;
|
col.a *= globalAlpha;
|
||||||
gl_FragColor = col;
|
gl_FragColor = col;
|
||||||
}`
|
}`
|
||||||
|
@ -85,7 +85,7 @@ precision mediump float;
|
||||||
#endif
|
#endif
|
||||||
varying vec2 v_cp;
|
varying vec2 v_cp;
|
||||||
uniform mat3 invmat;
|
uniform mat3 invmat;
|
||||||
uniform sampler1D gradient;
|
uniform sampler2D gradient;
|
||||||
uniform vec2 from, to, dir;
|
uniform vec2 from, to, dir;
|
||||||
uniform float radFrom, radTo;
|
uniform float radFrom, radTo;
|
||||||
uniform float len;
|
uniform float len;
|
||||||
|
@ -110,7 +110,7 @@ void main() {
|
||||||
}
|
}
|
||||||
float o = max(o1, o2);
|
float o = max(o1, o2);
|
||||||
//float r = radFrom + o * (radTo - radFrom);
|
//float r = radFrom + o * (radTo - radFrom);
|
||||||
vec4 col = texture1D(gradient, o);
|
vec4 col = texture2D(gradient, vec2(o, 0.0));
|
||||||
col.a *= globalAlpha;
|
col.a *= globalAlpha;
|
||||||
gl_FragColor = col;
|
gl_FragColor = col;
|
||||||
}`
|
}`
|
||||||
|
@ -182,7 +182,7 @@ varying vec2 v_cp;
|
||||||
varying vec2 v_atc;
|
varying vec2 v_atc;
|
||||||
varying vec2 v_texCoord;
|
varying vec2 v_texCoord;
|
||||||
uniform mat3 invmat;
|
uniform mat3 invmat;
|
||||||
uniform sampler1D gradient;
|
uniform sampler2D gradient;
|
||||||
uniform vec2 from, dir;
|
uniform vec2 from, dir;
|
||||||
uniform float len;
|
uniform float len;
|
||||||
uniform sampler2D alphaTex;
|
uniform sampler2D alphaTex;
|
||||||
|
@ -192,7 +192,7 @@ void main() {
|
||||||
vec2 v = untf.xy - from;
|
vec2 v = untf.xy - from;
|
||||||
float r = dot(v, dir) / len;
|
float r = dot(v, dir) / len;
|
||||||
r = clamp(r, 0.0, 1.0);
|
r = clamp(r, 0.0, 1.0);
|
||||||
vec4 col = texture1D(gradient, r);
|
vec4 col = texture2D(gradient, vec2(r, 0.0));
|
||||||
col.a *= texture2D(alphaTex, v_atc).a * globalAlpha;
|
col.a *= texture2D(alphaTex, v_atc).a * globalAlpha;
|
||||||
gl_FragColor = col;
|
gl_FragColor = col;
|
||||||
}`
|
}`
|
||||||
|
@ -215,7 +215,7 @@ precision mediump float;
|
||||||
varying vec2 v_cp;
|
varying vec2 v_cp;
|
||||||
varying vec2 v_atc;
|
varying vec2 v_atc;
|
||||||
uniform mat3 invmat;
|
uniform mat3 invmat;
|
||||||
uniform sampler1D gradient;
|
uniform sampler2D gradient;
|
||||||
uniform vec2 from, to, dir;
|
uniform vec2 from, to, dir;
|
||||||
uniform float radFrom, radTo;
|
uniform float radFrom, radTo;
|
||||||
uniform float len;
|
uniform float len;
|
||||||
|
@ -241,7 +241,7 @@ void main() {
|
||||||
}
|
}
|
||||||
float o = max(o1, o2);
|
float o = max(o1, o2);
|
||||||
float r = radFrom + o * (radTo - radFrom);
|
float r = radFrom + o * (radTo - radFrom);
|
||||||
vec4 col = texture1D(gradient, o);
|
vec4 col = texture2D(gradient, vec2(o, 0.0));
|
||||||
col.a *= texture2D(alphaTex, v_atc).a * globalAlpha;
|
col.a *= texture2D(alphaTex, v_atc).a * globalAlpha;
|
||||||
gl_FragColor = col;
|
gl_FragColor = col;
|
||||||
}`
|
}`
|
||||||
|
|
Loading…
Reference in a new issue