#descriptor-set #layout #pipeline #dsl #vulkan #macro #playout

nightly macro playout_macro

用于创建Vulkan管道布局和描述符集布局的DSL

1个不稳定版本

0.1.0 2024年7月27日

#1156 in 过程宏

Download history 19/week @ 2024-07-21 105/week @ 2024-07-28

每月124次下载

MIT/Apache

74KB
1.5K SLoC

Playout

playout是一个Rust库,实现了用于定义管道布局和描述符集布局的领域特定语言(DSL),这些布局以共享格式存在,可用于着色语言和宿主端编程语言。

目前,playout支持为GLSL和Rust生成代码。

优点

  • 共享格式:一次定义管道和描述符集布局,然后在着色语言和宿主端代码中使用。
  • 提高可读性:以可读的格式编写布局,而不是样板代码。
  • 减少错误:通过在单个位置定义布局来避免拼写错误和不一致性。

将playout编译为GLSL

let playout_str = "...";
let module = PlayoutModule::try_from(playout_str).unwrap();


let mut writer = String::new();
module.show(&mut writer);
println!("{}", writer)

将playout编译为Rust作为过程宏

use ash::vk;
// Extract descriptor set 3 from the playout file
let out = playout_macro::layout!("./example.playout", 3);

依赖项

~1–1.4MB
~31K SLoC