add: vello luminance based clipping

This commit is contained in:
mtvare6
2025-07-15 14:11:06 +05:30
parent 89d6c970d4
commit 9f3a19f648
3 changed files with 9 additions and 9 deletions

8
Cargo.lock generated
View File

@@ -4364,7 +4364,7 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
[[package]]
name = "peniko"
version = "0.2.0"
source = "git+https://github.com/linebender/peniko.git?rev=d114c62#d114c6292dbcfb03e7360692198be423168a0edd"
source = "git+https://github.com/mTvare6/peniko.git?branch=luminance-clip#cd9aa45fe5a5c3070f18311cf33aad9cc83e5863"
dependencies = [
"color 0.1.0",
"kurbo",
@@ -7273,7 +7273,7 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "vello"
version = "0.3.0"
source = "git+https://github.com/linebender/vello.git?rev=3275ec8#3275ec85d831180be81820de06cca29a97a757f5"
source = "git+https://github.com/mTvare6/vello.git?branch=luminance-clip#8af3207bd009da4e893b29f199985924e4a0b696"
dependencies = [
"bytemuck",
"futures-intrusive",
@@ -7291,7 +7291,7 @@ dependencies = [
[[package]]
name = "vello_encoding"
version = "0.3.0"
source = "git+https://github.com/linebender/vello.git?rev=3275ec8#3275ec85d831180be81820de06cca29a97a757f5"
source = "git+https://github.com/mTvare6/vello.git?branch=luminance-clip#8af3207bd009da4e893b29f199985924e4a0b696"
dependencies = [
"bytemuck",
"guillotiere",
@@ -7303,7 +7303,7 @@ dependencies = [
[[package]]
name = "vello_shaders"
version = "0.3.0"
source = "git+https://github.com/linebender/vello.git?rev=3275ec8#3275ec85d831180be81820de06cca29a97a757f5"
source = "git+https://github.com/mTvare6/vello.git?branch=luminance-clip#8af3207bd009da4e893b29f199985924e4a0b696"
dependencies = [
"bytemuck",
"naga",

View File

@@ -114,7 +114,7 @@ web-sys = { version = "=0.3.77", features = [
winit = "0.29"
url = "2.5"
tokio = { version = "1.29", features = ["fs", "macros", "io-std", "rt"] }
vello = { git = "https://github.com/linebender/vello.git", rev = "3275ec8" } # TODO switch back to stable when a release is made
vello = { git = "https://github.com/mTvare6/vello.git", branch = "luminance-clip" } # TODO switch back to stable when a release is made
resvg = "0.44"
usvg = "0.44"
rand = { version = "0.9", default-features = false, features = ["std_rng"] }

View File

@@ -329,7 +329,7 @@ impl GraphicElementRendered for GraphicGroupTable {
scene.push_layer(peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect);
mask.render_to_vello(scene, transform, context, &render_params.for_clipper());
scene.push_layer(peniko::BlendMode::new(peniko::Mix::Clip, peniko::Compose::SrcIn), 1., kurbo::Affine::IDENTITY, &rect);
scene.push_layer(peniko::BlendMode::new(peniko::Mix::LuminanceClip, peniko::Compose::SrcIn), 1., kurbo::Affine::IDENTITY, &rect);
}
}
@@ -593,7 +593,7 @@ impl GraphicElementRendered for VectorDataTable {
scene.push_layer(peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect);
mask.render_to_vello(scene, element_transform, _context, &render_params.for_clipper());
scene.push_layer(peniko::BlendMode::new(peniko::Mix::Clip, peniko::Compose::SrcIn), 1., kurbo::Affine::IDENTITY, &rect);
scene.push_layer(peniko::BlendMode::new(peniko::Mix::LuminanceClip, peniko::Compose::SrcIn), 1., kurbo::Affine::IDENTITY, &rect);
}
}
@@ -1055,7 +1055,7 @@ impl GraphicElementRendered for RasterDataTable<CPU> {
scene.push_layer(peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect);
mask.render_to_vello(scene, transform, _context, &render_params.for_clipper());
scene.push_layer(peniko::BlendMode::new(peniko::Mix::Clip, peniko::Compose::SrcIn), 1., kurbo::Affine::IDENTITY, &rect);
scene.push_layer(peniko::BlendMode::new(peniko::Mix::LuminanceClip, peniko::Compose::SrcIn), 1., kurbo::Affine::IDENTITY, &rect);
}
}
@@ -1354,7 +1354,7 @@ impl SvgRenderAttrs<'_> {
let id = format!("mask-{}", uuid);
write!(&mut self.0.svg_defs, r##"{}"##, svg.svg_defs).unwrap();
write!(&mut self.0.svg_defs, r##"<mask id="{id}" mask-type="lumninance">{}</mask>"##, svg.svg.to_svg_string()).unwrap();
write!(&mut self.0.svg_defs, r##"<mask id="{id}">{}</mask>"##, svg.svg.to_svg_string()).unwrap();
let selector = format!("url(#{id})");