new backend: glx: fix off-by-1 in blur shader generation
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
parent
86f4d73c22
commit
45ead409b5
|
@ -187,9 +187,9 @@ WIDTH,HEIGHT,ELE1,ELE2,ELE3,ELE4,ELE5...
|
||||||
+
|
+
|
||||||
In other words, the matrix is formatted as a list of comma separated numbers. The first two numbers must be integers, which specify the width and height of the matrix. They must be odd numbers. Then, the following 'width * height - 1' numbers specifies the numbers in the matrix, row by row, excluding the center element.
|
In other words, the matrix is formatted as a list of comma separated numbers. The first two numbers must be integers, which specify the width and height of the matrix. They must be odd numbers. Then, the following 'width * height - 1' numbers specifies the numbers in the matrix, row by row, excluding the center element.
|
||||||
+
|
+
|
||||||
The elements are finite floating point numbers. The decimal pointer has to be '.' (a period), and scientific notation is not supported.
|
The elements are finite floating point numbers. The decimal pointer has to be '.' (a period), scientific notation is not supported.
|
||||||
+
|
+
|
||||||
The element in the center will either be 1.0 or changing based on opacity, depending on whether you have `--blur-background-fixed`. Yet the automatic adjustment of blur factor may not work well with a custom blur kernel.
|
The element in the center will either be 1.0 or varying based on opacity, depending on whether you have `--blur-background-fixed`. Yet the automatic adjustment of blur factor may not work well with a custom blur kernel.
|
||||||
+
|
+
|
||||||
A 7x7 Gaussian blur kernel (sigma = 0.84089642) looks like:
|
A 7x7 Gaussian blur kernel (sigma = 0.84089642) looks like:
|
||||||
+
|
+
|
||||||
|
|
|
@ -716,7 +716,7 @@ static bool gl_init_blur(struct gl_data *gd, conv *const *const kernels) {
|
||||||
auto kern = kernels[i];
|
auto kern = kernels[i];
|
||||||
// Build shader
|
// Build shader
|
||||||
int width = kern->w, height = kern->h;
|
int width = kern->w, height = kern->h;
|
||||||
int nele = width * height - 1;
|
int nele = width * height;
|
||||||
size_t body_len = (strlen(shader_add) + 42) * (uint)nele;
|
size_t body_len = (strlen(shader_add) + 42) * (uint)nele;
|
||||||
char *shader_body = ccalloc(body_len, char);
|
char *shader_body = ccalloc(body_len, char);
|
||||||
char *pc = shader_body;
|
char *pc = shader_body;
|
||||||
|
|
Loading…
Reference in New Issue