User-facing facade for WGSL preprocess and composer utilities aligned with naga_oil.
Dependencies
///|
test "configure an immediate specialization" {
let options = {
..WgslComposeOptions::default(),
immediate_specializations: [
WgslImmediateSpecialization("root.wgsl", "constants", {
"max_mip_level": UInt(12),
}),
],
}
assert_eq(options.immediate_specializations.length(), 1)
}///|
test "compose a shader through the facade" {
let composer = Composer::default()
let util_source =
#|#define_import_path test::util
#|
#|fn value() -> u32 {
#| return 1u;
#|}
#|
composer.register_source("util.wgsl", util_source)
let root_source =
#|#import test::util::value
#|
#|fn root() -> u32 {
#| return value();
#|}
#|
composer.register_source("root.wgsl", root_source)
let source = composer.compose("root.wgsl", WgslComposeOptions::default())
assert_true(source.contains("fn root"))
}pub(all) suberror WgslError {
WorkflowFailed(String)
}pub struct Composer {
// private fields
}fn Composer::add_module(self : Composer, descriptor : ComposableModuleDescriptor) -> Unit raise WgslErrorfn Composer::compose(self : Composer, rel_path : String, options : WgslComposeOptions) -> String raise WgslErrorfn Composer::export_wgsl(self : Composer, rel_path : String, compose_options : WgslComposeOptions, export_options : WgslExportOptions) -> WgslExportOutput raise WgslErrorfn Composer::prepare(self : Composer, rel_path : String, options : WgslComposeOptions) -> PreparedWgslSource raise WgslErrorfn apply_wgsl_ifdefs_strict(source : String, shader_defs : Map[String, ShaderDefValue]) -> String raise PreprocessErrorfn apply_wgsl_template_consts(source : String, value_defines : Map[String, ShaderDefValue]) -> Stringfn default_shader_rel_path_for_module_path(module_path : String) -> Stringfn get_preprocessor_metadata(source : String, allow_defines? : Bool, collect_import_uses? : Bool) -> PreprocessorMetaData raise MetadataErrorUser-facing facade for WGSL preprocess and composer utilities aligned with naga_oil.
Dependencies