Skip to content

Commit 3cbf936

Browse files
committed
light tiling min max depth
1 parent 7c21245 commit 3cbf936

12 files changed

+1810
-1569
lines changed

crates/renderling-build/src/lib.rs

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
#![allow(unexpected_cfgs)]
2+
use naga::{
3+
back::wgsl::WriterFlags,
4+
valid::{ValidationFlags, Validator},
5+
};
26
use quote::quote;
37

48
#[derive(Debug, serde::Deserialize)]
@@ -91,19 +95,35 @@ fn wgsl(spv_filepath: impl AsRef<std::path::Path>, destination: impl AsRef<std::
9195
});
9296
let opts = naga::front::spv::Options::default();
9397
let module = naga::front::spv::parse_u8_slice(&bytes, &opts).unwrap();
94-
let mut validator =
95-
naga::valid::Validator::new(Default::default(), naga::valid::Capabilities::empty());
96-
let info = validator.validate(&module).unwrap_or_else(|e| {
97-
panic!(
98-
"Could not validate '{}': {e}",
99-
spv_filepath.as_ref().display(),
100-
)
101-
});
102-
let wgsl =
103-
naga::back::wgsl::write_string(&module, &info, naga::back::wgsl::WriterFlags::empty())
104-
.unwrap();
98+
let mut wgsl = String::new();
99+
let mut panic_msg: Option<String> = None;
100+
for (vflags, name) in [
101+
(ValidationFlags::empty(), "empty"),
102+
(ValidationFlags::all(), "all"),
103+
] {
104+
let mut validator = Validator::new(vflags, Default::default());
105+
match validator.validate(&module) {
106+
Err(e) => {
107+
panic_msg = Some(format!(
108+
"Could not validate '{}' with WGSL validation flags {name}: {}",
109+
spv_filepath.as_ref().display(),
110+
e.emit_to_string(&wgsl)
111+
));
112+
}
113+
Ok(i) => {
114+
wgsl = naga::back::wgsl::write_string(&module, &i, WriterFlags::empty()).unwrap();
115+
}
116+
};
117+
}
118+
105119
let destination = destination.as_ref().with_extension("wgsl");
106120
std::fs::write(destination, wgsl).unwrap();
121+
if let Some(msg) = panic_msg {
122+
panic!(
123+
"{msg}\nWGSL was written to {}",
124+
spv_filepath.as_ref().display()
125+
);
126+
}
107127
}
108128

109129
pub struct RenderlingPaths {
Binary file not shown.

crates/renderling/shaders/light-light_tiling_compute_tiles.wgsl

Lines changed: 73 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Binary file not shown.

0 commit comments

Comments
 (0)