Skip to content

自定义 Material 与 Shader

前面的章节里,你一直在用 StandardMaterial——它是 Bevy 为 PBR 渲染预制的"万能材质"。颜色、金属度、法线贴图、透明度,全靠它一个结构体搞定。但总有些效果是 PBR 公式给不了的:卡通着色、溶解消失、扫描线、全息投影……这时候你需要自己写 Shader,自己定义 Material。

这一章你会从零搭建一个自定义材质的完整链路:用 Rust 结构体描述 GPU 数据布局,用 WGSL 编写着色器程序,把两者通过 Material trait 对接起来。最后用一个溶解特效把所有知识点串在一起。

本章的配套代码在 code/ch36-shaders。各阶段版本这样运行:

console
cargo run -p ch36-shaders --example listing-36-01   # 最简材质
cargo run -p ch36-shaders --example listing-36-02   # 自定义顶点着色器
cargo run -p ch36-shaders                           # 最终版:溶解效果

本章内容:

0.19 模块化变更Shader 资产和 ShaderRef 现在由独立的 bevy_shader crate 提供;材质抽象层(AlphaMode、绑定组布局、特化函数)现在由独立的 bevy_material crate 承载。这些类型此前分散在 bevy_renderbevy_pbr 中,拆分后提升了模块化程度。详见 Material trait 一节末尾的说明。