Shaders: rust-gpu integration to compile shader nodes to WGSL (#3097)

* shaders: shader compilation setup

* nix: use rustc_codegen_spirv.so from nix

* shaders: codegen for per_pixel_adjust shader nodes

* shaders: disable nodes needing bool

* shaders: `#[repr(u32)]` some enums

* shaders: add lint ignores from rust-gpu

* shaders: fix node-macro tests

* gcore-shaders: toml cleanup

* shader-nodes feature: put rust-gpu to wgsl compile behind feature gate

* shaders: fix use TokenStream2

* shaders: allow providing shader externally

* Update iai runner in workflow

---------

Co-authored-by: Timon Schelling <me@timon.zip>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
This commit is contained in:
Firestar99
2025-09-02 14:10:32 +00:00
committed by GitHub
co-authored by Timon Schelling Dennis Kobert
parent 083dfa5f49
commit a10103311e
21 changed files with 717 additions and 20 deletions
+12 -2
View File
@@ -6,8 +6,18 @@ description = "graphene raster data format"
authors = ["Graphite Authors <contact@graphite.rs>"]
license = "MIT OR Apache-2.0"
[lib]
crate-type = ["rlib", "dylib"]
[lints]
workspace = true
[features]
default = ["std"]
shader-nodes = [
"std",
"dep:graphene-raster-nodes-shaders",
]
std = [
"dep:graphene-core",
"dep:dyn-any",
@@ -19,8 +29,6 @@ std = [
"dep:serde",
"dep:specta",
"dep:kurbo",
"glam/debug-glam-assert",
"glam/serde",
]
[dependencies]
@@ -31,10 +39,12 @@ node-macro = { workspace = true }
# Local std dependencies
dyn-any = { workspace = true, optional = true }
graphene-core = { workspace = true, optional = true }
graphene-raster-nodes-shaders = { path = "./shaders", optional = true }
# Workspace dependencies
bytemuck = { workspace = true }
glam = { workspace = true }
spirv-std = { workspace = true }
num-traits = { workspace = true }
# Workspace std dependencies