wlrfx / scenefx Goto Github PK
View Code? Open in Web Editor NEWA drop-in replacement for the wlroots scene API that allows wayland compositors to render surfaces with eye-candy effects
License: MIT License
A drop-in replacement for the wlroots scene API that allows wayland compositors to render surfaces with eye-candy effects
License: MIT License
We need to get tinywl working with our local version of wlr_scene
More or less a tracking issue of https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3393. We should try to solve this upsteam, and then on our end, pass the decoration data the same way that opacity is passed.
If we want scenefx to be adopted by other compositors, we should get some branding and create a README! benchmarks should also be included
Chase the 0.17.0 impl of wlroots for rendering improvements.
Run https://github.com/ErikReider/fx-comp and launch like this fx-comp -s foot
.
The damage is a bit wonky atm due to the old region not being expanded?
Add effects like shadows and rounded corners to wlr_scene_rect
nodes
I may have over trimmed the include/meson.build
file. We should ensure that it is appropriately set up
The flake.nix should be clean + minimal like the swayfx flake.nix. Auto setting up the wlroots subproject is one must here.
Vendor scenefx custom headers to make ffi easier for projects.
A few points from the scenefx patch notes on dwl:
NOTE: Some GTK apps are being cut off when they have shadows enabled. You can use the shadow_ignore_list option to prevent shadows from being rendered on those apps
NOTE: Blur doesn't work on windows with opacity set (opacity_active, opacity_inactive)
NOTE: In DWL's Makefile scenefx must be placed before wlroots, e.g. PKGS = scenefx wlroots wayland-server ...
Hello, it seems shaders.h
is missing (it's included but not installed) from /usr/include/scenefx/render/fx_renderer/fx_renderer.h
. I installed scenefx and check /usr/include/scenefx and the it doesn't exist. Is it normal ?
Hello, I'm interested to try your library, which wlroots version is required ? Is 0.17.x okay ? Thanks.
We could eliminate some complexity (and potentially gain some performance) if we try a shadow matte implementation - similar to hyprland's: https://github.com/hyprwm/Hyprland/blob/main/src/render/OpenGL.cpp#L1040-L1096
This would be dependent on neutral or positive rendering benchmark results
meson.build
is now mostly the default from wlroots. Since scenefx is just a subset of wlroots, we should be able to trim down a lot of the meson.build
file.
This will help in ffi scenarios instead of passing the struct.
Blocker for qtile MR.
Just like wlr_renderer, we should have a vulkan implementation of our fx renderer.
This will be more important to implement once color management / HDR support is available in wlroots, as it looks like the GLES2 renderer there will be soft deprecated:
https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3804
We should add the blur from upstream SwayFX to scenefx
Hello, when I built the example tinywl, it's failed. It seems that there are missing headers.
#include <types/fx/shadow_data.h>
......
#include "types/wlr_scene.h"
#include "render/fx_renderer/fx_renderer.h"
Is it intentional ? Thanks.
The fact that box_shadow color a float *
instead of just a float [4]
is problematic.
Wrapping that in FFI is clunky because essentially in zig I need to wrap it as: *f32[4]
which might as well just be f32[4]
.
Not to mention other languages where that kind of pointer arithmetic is usually not suggested. Eg: Python
Why can't we approach it as just float [4]
?
Found when testing in combination with SwayFX.
Setting blur_saturation 1
seems to resolve that
Blur settings active:
blur enable
blur_passes 3
We should add the box shadows from upstream SwayFX to scenefx
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.