reduced the maximum shadow blur size to avoid running into some gpu limitations for now
This commit is contained in:
parent
6f74599567
commit
a01a6799f1
5 changed files with 767 additions and 767 deletions
|
@ -220,7 +220,7 @@ var (
|
||||||
ir *imageShader
|
ir *imageShader
|
||||||
gauss15r *gaussianShader
|
gauss15r *gaussianShader
|
||||||
gauss63r *gaussianShader
|
gauss63r *gaussianShader
|
||||||
gauss255r *gaussianShader
|
gauss127r *gaussianShader
|
||||||
offscr1 offscreenBuffer
|
offscr1 offscreenBuffer
|
||||||
offscr2 offscreenBuffer
|
offscr2 offscreenBuffer
|
||||||
glChan = make(chan func())
|
glChan = make(chan func())
|
||||||
|
@ -354,7 +354,7 @@ func LoadGL(glimpl GL) (err error) {
|
||||||
}
|
}
|
||||||
gauss63r = (*gaussianShader)(gauss63s)
|
gauss63r = (*gaussianShader)(gauss63s)
|
||||||
|
|
||||||
gauss255s, err := loadGaussian255Shader()
|
gauss127s, err := loadGaussian127Shader()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -362,7 +362,7 @@ func LoadGL(glimpl GL) (err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
gauss255r = (*gaussianShader)(gauss255s)
|
gauss127r = (*gaussianShader)(gauss127s)
|
||||||
|
|
||||||
gli.GenBuffers(1, &buf)
|
gli.GenBuffers(1, &buf)
|
||||||
err = glError()
|
err = glError()
|
||||||
|
|
1510
made_shaders.go
1510
made_shaders.go
File diff suppressed because it is too large
Load diff
12
shaders.go
12
shaders.go
|
@ -327,7 +327,7 @@ _SUM_
|
||||||
gl_FragColor = color;
|
gl_FragColor = color;
|
||||||
}`
|
}`
|
||||||
|
|
||||||
var gaussian255VS = `
|
var gaussian127VS = `
|
||||||
attribute vec2 vertex, texCoord;
|
attribute vec2 vertex, texCoord;
|
||||||
uniform vec2 canvasSize;
|
uniform vec2 canvasSize;
|
||||||
varying vec2 v_texCoord;
|
varying vec2 v_texCoord;
|
||||||
|
@ -336,14 +336,14 @@ void main() {
|
||||||
vec2 glp = vertex * 2.0 / canvasSize - 1.0;
|
vec2 glp = vertex * 2.0 / canvasSize - 1.0;
|
||||||
gl_Position = vec4(glp.x, -glp.y, 0.0, 1.0);
|
gl_Position = vec4(glp.x, -glp.y, 0.0, 1.0);
|
||||||
}`
|
}`
|
||||||
var gaussian255FS = `
|
var gaussian127FS = `
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
#endif
|
#endif
|
||||||
varying vec2 v_texCoord;
|
varying vec2 v_texCoord;
|
||||||
uniform vec2 kernelScale;
|
uniform vec2 kernelScale;
|
||||||
uniform sampler2D image;
|
uniform sampler2D image;
|
||||||
uniform float kernel[255];
|
uniform float kernel[127];
|
||||||
void main() {
|
void main() {
|
||||||
vec4 color = vec4(0.0, 0.0, 0.0, 0.0);
|
vec4 color = vec4(0.0, 0.0, 0.0, 0.0);
|
||||||
_SUM_
|
_SUM_
|
||||||
|
@ -353,11 +353,11 @@ _SUM_
|
||||||
func init() {
|
func init() {
|
||||||
fstr := "\tcolor += texture2D(image, v_texCoord + vec2(%.1f * kernelScale.x, %.1f * kernelScale.y)) * kernel[%d];\n"
|
fstr := "\tcolor += texture2D(image, v_texCoord + vec2(%.1f * kernelScale.x, %.1f * kernelScale.y)) * kernel[%d];\n"
|
||||||
bb := bytes.Buffer{}
|
bb := bytes.Buffer{}
|
||||||
for i := 0; i < 255; i++ {
|
for i := 0; i < 127; i++ {
|
||||||
off := float64(i) - 127
|
off := float64(i) - 63
|
||||||
fmt.Fprintf(&bb, fstr, off, off, i)
|
fmt.Fprintf(&bb, fstr, off, off, i)
|
||||||
}
|
}
|
||||||
gaussian255FS = strings.Replace(gaussian255FS, "_SUM_", bb.String(), -1)
|
gaussian127FS = strings.Replace(gaussian127FS, "_SUM_", bb.String(), -1)
|
||||||
bb.Reset()
|
bb.Reset()
|
||||||
for i := 0; i < 63; i++ {
|
for i := 0; i < 63; i++ {
|
||||||
off := float64(i) - 31
|
off := float64(i) - 31
|
||||||
|
|
|
@ -128,8 +128,8 @@ func (cv *Canvas) drawBlurredShadow() {
|
||||||
gs = gauss63r
|
gs = gauss63r
|
||||||
kernel = kernelBuf[:63]
|
kernel = kernelBuf[:63]
|
||||||
} else {
|
} else {
|
||||||
gs = gauss255r
|
gs = gauss127r
|
||||||
kernel = kernelBuf[:255]
|
kernel = kernelBuf[:127]
|
||||||
}
|
}
|
||||||
|
|
||||||
gaussianKernel(cv.state.shadowBlur, kernel)
|
gaussianKernel(cv.state.shadowBlur, kernel)
|
||||||
|
|
2
text.go
2
text.go
|
@ -405,7 +405,7 @@ func (cv *Canvas) MeasureText(str string) TextMetrics {
|
||||||
}
|
}
|
||||||
|
|
||||||
return TextMetrics{
|
return TextMetrics{
|
||||||
Width: x,
|
Width: x,
|
||||||
ActualBoundingBoxAscent: -minY,
|
ActualBoundingBoxAscent: -minY,
|
||||||
ActualBoundingBoxDescent: +maxY,
|
ActualBoundingBoxDescent: +maxY,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue