wlrfx / scenefx

A drop-in replacement for the wlroots scene API that allows wayland compositors to render surfaces with eye-candy effects
MIT License
81 stars 8 forks source link

Settle on a per-corner rounding impl #72

Open WillPower3309 opened 3 weeks ago

WillPower3309 commented 3 weeks ago

Right now we have two different ways to round specific corners. One is used in rects where we have a different shader for each corner, and the other is in the tex shader where we do some step magic. We should settle on one impl for all corners.

One alternative idea I have is to completely remove the round_rect shader and the corner rounding logic in the tex shader, and damage everything EXCEPT the corners. Then we could damage the corners and have a shader for each corner. We'd need to do some benchmarking here, because this could either improve or decrease perf depending on how expensive damaging is vs saving the extra GPU instructions in the tex and rect shaders would be

WillPower3309 commented 3 weeks ago

related to #70

ErikReider commented 3 weeks ago

One alternative idea I have is to completely remove the round_rect shader and the corner rounding logic in the tex shader, and damage everything EXCEPT the corners. Then we could damage the corners and have a shader for each corner.

So it's either increase the CPU calls or increase the work of the GPU right. My gut feeling would be to go with the method we have now, but let's benchmark this! :D

WillPower3309 commented 3 weeks ago

One alternative idea I have is to completely remove the round_rect shader and the corner rounding logic in the tex shader, and damage everything EXCEPT the corners. Then we could damage the corners and have a shader for each corner.

So it's either increase the CPU calls or increase the work of the GPU right. My gut feeling would be to go with the method we have now, but let's benchmark this! :D

Exactly! At the end of the day it'd probably be so minimal that the simplest option is the best one, which is likely what we do now

WillPower3309 commented 3 weeks ago

At the end of the day this is primarily tracking the rect rounding impl matching the tex one