User-facing facade for WGSL preprocessing, composition, and WESL compilation.
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"))
}///|
test "compile WESL through the facade" {
let composer = Composer::default()
let util_source =
#|fn double(value: f32) -> f32 {
#| return value * 2.0;
#|}
#|
composer.register_source("shaders/util.wgsl", util_source)
let root_source =
#|import super::util::double;
#|
#|@fragment
#|fn fragment(value: f32) -> f32 {
#| return double(value);
#|}
#|
composer.register_source("shaders/root.wesl", root_source)
let source = composer.compile_wesl(
"shaders/root.wesl",
CompileOptions::default(),
)
assert_true(source.contains("fn fragment"))
}pub(all) suberror WgslError {
WorkflowFailed(String)
}pub struct Composer {
// private fields
}fn Composer::add_module(self : Composer, descriptor : ComposableModuleDescriptor) -> Unit raise WgslErrorfn Composer::compile_wesl(self : Composer, root_rel_path : String, options : CompileOptions) -> String 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 MetadataErrorInstall
Download zipUser-facing facade for WGSL preprocessing, composition, and WESL compilation.
Dependencies