Yuxuan Shui
a29caeaf3d
ackend: gl: implement shadow_from_mask
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-31 07:00:41 +01:00
Yuxuan Shui
9ac046c2ba
backend, win: create shadows with shadow_from_mask
...
Do this for shaped, and rounded windows.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-26 05:43:19 +01:00
Yuxuan Shui
a9ec614286
backend: add shadow_from_mask based implementation of render_shadow
...
If the backend implements shadow_from_mask then it doesn't need to
implement render_shadow.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-26 05:43:17 +01:00
Yuxuan Shui
de209fd52c
backend: gl: fix x_rect_to_coords when y_inverted is false
...
Since image_dst is in X coordinates, after flipping Y, we need to
subtract the height of the drawing area, to make it the bottom right
corner for OpenGL.
However, this breaks blur. Because we assumed the drawing area is the
same size as the texture, which is not the case for blur. So add the
height of the drawing area as another parameter.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-26 05:43:12 +01:00
Yuxuan Shui
94e3d4d483
kernel: be more conservative when estimating deviation
...
Using integral to estimate the sum of the kernel will overestimate a
little bit.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-26 05:42:58 +01:00
Yuxuan Shui
84407099a9
backend: give backends more flexibility regarding shadow creation
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-26 05:42:51 +01:00
Yuxuan Shui
e942f253f7
backend: gl: make blur take a source texture and a target fbo
...
Instead of always using the back texture/fbo. Also use the size of the
source texture, instead of hard coded back buffer size.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-25 18:07:57 +01:00
Yuxuan Shui
e2d990dc3d
backend: gl: split code into multiple files
...
gl_common.c is getting too big.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-25 13:31:54 +01:00
Yuxuan Shui
137a47261c
backend: xrender: handle blur mask
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-25 03:47:22 +01:00
Yuxuan Shui
6b7a5dd6cf
backend: gl: handle blur mask
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-25 03:47:15 +01:00
Yuxuan Shui
e680e8b30d
backend: gl: clear up textures
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-25 02:59:06 +01:00
Yuxuan Shui
b9d4b8a851
backend: gl: factor out shader code for masking
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-25 02:59:05 +01:00
Yuxuan Shui
9e8373e3e0
backend: add mask parameter to blur
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-25 02:59:01 +01:00
Yuxuan Shui
e4221e0787
backend: don't clip corners when painting shadow
...
When removing shadow behind a window with rounded corners, keep the
corner part - those parts will be removed using the mask instead.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-25 02:51:03 +01:00
Yuxuan Shui
4bf7669ec3
backend: xrender: handle masks
...
There are some complications, when sampling pixels outside a
xrender picture, xrender doesn't support a behaviour similar to OpenGL's
clamp to border. So we give the masks an extra 1-pixel outer rim, so
we can control what color the outside pixels would be, by using the
"Pad" repeat mode.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-25 02:50:57 +01:00
Yuxuan Shui
56a733840c
backend: glx: handle masks
...
Use masks in compose.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-24 08:39:26 +01:00
Yuxuan Shui
9b419504e8
backend: add the make_mask interface
...
This is used to create image masks that can be used to mask out
`compose` regions. For example, this can be used to mask out window body
so shadow won't be painted on them.
This could be more efficient than using rectangular regions for masking,
when there are a large number of rectangles; or more flexible, in the
case of window with rounded corners.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-24 08:39:21 +01:00
Yuxuan Shui
e0758eb5e5
backends: glx: fix apply alpha of non y inverted images
...
This does not ever happen in practice. But conceptually, the GL backend
holds 2 kinds of images: those in GL coordinate system, and those in X
coordinate system. They are differentiated by the `y_inverted` variable,
and applying alpha to them needs differs in whether y needs to be
inverted. Right now we never invert y, because we only ever call apply
alpha on images in the X coordinate system.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-23 10:06:27 +01:00
Yuxuan Shui
a252cbf028
clang-tidy: disable some noisy warnings
...
Also fix some of the warnings
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-23 05:19:06 +01:00
Yuxuan Shui
748cd665f4
backend: glx: fix glx vendor check
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-22 10:41:16 +01:00
Yuxuan Shui
9f01d0dfbe
Merge pull request #875 from yshui/legacy-backend
2022-08-21 23:05:42 +01:00
Yuxuan Shui
5d6326ae28
meson.build: autostart picom
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-21 06:25:55 +01:00
Yuxuan Shui
b0fbfec4f0
man: fix typos
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-21 06:13:24 +01:00
Yuxuan Shui
7e607bfe81
Make experimental backends the new default
...
Experimental no longer.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-21 06:09:27 +01:00
Yuxuan Shui
3dfc422edf
Merge pull request #851 from yshui/507
...
Closes #386 #507
2022-08-21 05:46:56 +01:00
Yuxuan Shui
35b403ac9c
man: describe where to put a shader file
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-21 05:43:33 +01:00
Yuxuan Shui
fcaf0f993e
man: include a default shader
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-21 05:37:59 +01:00
Yuxuan Shui
1de1d67126
picom.sample.conf: add window-shader-fg and window-shader-fg-rule
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-21 05:37:28 +01:00
Yuxuan Shui
19c852b3ae
options: mention the "default" shader
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-21 05:22:15 +01:00
Yuxuan Shui
affe408d76
meson: fix meson warnings
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-17 17:55:53 +00:00
Yuxuan Shui
4e0fad5880
man: define the custom shader interface
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-12 14:27:05 +01:00
Yuxuan Shui
32478df27c
core: force redraw if animated shader is in-use
...
I also noticed there is an opportunity to unify fades, animated shaders,
and the benchmark mode. We should be able to get rid of the fade timer.
A TODO for the future.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-12 13:45:30 +01:00
Yuxuan Shui
ec9243cf3c
issue_template: suggest uploading OpenGL traces
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-12 11:19:47 +01:00
Yuxuan Shui
83e1cd9a19
backend: add and implement get_shader_attributes
...
Used for passing back information about whether a shader needs to be
re-rendered every frame.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-11 04:53:14 +01:00
Yuxuan Shui
eb54974ac0
core: init/deinit shaders when init/deinit-ing the backend
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-11 04:41:47 +01:00
Yuxuan Shui
a1f4cafda4
backend: gl: improve error reporting when creating shaders
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-11 04:41:44 +01:00
Yuxuan Shui
eeabf5807e
backend: gl: handle custom shader image property
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-11 04:41:20 +01:00
Bernd Busse
c95152e83e
backend: gl_common: add time uniform to (custom) window shader
2022-08-11 04:41:17 +01:00
Yuxuan Shui
81768f4a11
backend: gl: implement create_shader/destroy_shader
2022-08-11 04:41:12 +01:00
Yuxuan Shui
947077f329
backend: add custom shader image property
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-11 04:40:43 +01:00
Yuxuan Shui
f5b40ba10e
backend: add shader related APIs
...
Current this API can only create shader from a single source file. This
could be changed in the future.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-11 04:29:50 +01:00
Bernd Busse
5577363aaf
win: keep track of window specific shader in managed_win
2022-08-11 04:29:47 +01:00
Yuxuan Shui
654772b8cf
config: add options window-shader-fg and window-shader-fg-rules
...
Used for setting custom window shaders and rules for choosing custom
window shaders.
Added a "c2_userdata_free" parameter to c2_list_free, so allocated userdata
stored in nodes can be freed.
Signed-off-by: Bernd Busse <bernd@busse-net.de >
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-08-11 04:28:48 +01:00
Yuxuan Shui
896acabab1
doc: remove mention of raw string pattern
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-07-18 19:04:50 +01:00
Yuxuan Shui
db6f11624b
c2: fix typo
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-07-17 18:15:09 +01:00
Yuxuan Shui
5d79da6387
c2: return if foreach function returned early
...
Useful for error handling.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-07-17 18:09:20 +01:00
Yuxuan Shui
23c56ab328
c2: add list iterating functions
...
Also renames free_wincondlst to c2_list_free and move it to c2.h.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-07-17 17:48:13 +01:00
Yuxuan Shui
7e833744b7
string_utils: add trim_both
...
trim_both removes whitespaces from both side of a string.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-07-17 15:43:47 +01:00
Yuxuan Shui
e757a6461d
test.h: update to upstream 368c467
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-07-17 15:39:50 +01:00
Yuxuan Shui
cb0b846dbe
test.h: update to upstream ee49b276a3
...
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com >
2022-07-17 15:29:10 +01:00