关于 bevy-pbr-materials
面向使用 Bevy 0.19 的开发者,介绍 PBR 材质、光照和网格图元的实现要点,并整理自定义材质及版本迁移注意事项。
主要功能
- 01使用 StandardMaterial 着色
- 02实现自定义 Material
- 03配置光照与阴影
- 04设置 Atmosphere 和相机
- 05使用网格图元
适用场景
- 01为网格添加 PBR 材质
- 02实现风格化或溶解着色
- 03为场景配置接触阴影
- 04创建大气效果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ chrisgliddon/ bevy-skills --skill bevy-pbr-materials安装后在 Claude Code 中输入/bevy-pbr-materials确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/custom-material.mdlighting.mdmesh-primitives.md详细介绍
Bevy 0.19 — PBR 材质
何时使用此技能
- 使用内置的基于物理的着色器为网格添加纹理。
- 编写自定义
Material(例如用于风格化着色、溶解效果、世界空间着色器)。 - 启用阴影贴图或 Bevy 0.19 接触阴影。
- 生成
Atmosphere实体并在摄像机上启用它。 AsBindGroup::label()编译错误(现在是必需项)。MaterialPlugin::<M> { prepass_enabled: ... }编译错误(这些字段已在 0.18 中移除)。
规范用法 — StandardMaterial
use bevy::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_systems(Startup, setup)
.run();
}
fn setup(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
let mesh = meshes.add(Cuboid::new(1.0, 1.0, 1.0));
let material = materials.add(StandardMaterial {
base_color: Color::srgb(0.8, 0.3, 0.2),
perceptual_roughness: 0.4,
metallic: 0.1,
..default()
});
commands.spawn((
Mesh3d(mesh),
MeshMaterial3d(material),
Transform::from_xyz(0.0, 0.5, 0.0),
));
commands.spawn((
Camera3d::default(),
Transform::from_xyz(0.0, 2.0, 4.0).looking_at(Vec3::ZERO, Vec3::Y),
));
commands.spawn((
DirectionalLight::default(),
Transform::from_xyz(2.0, 4.0, 2.0).looking_at(Vec3::ZERO, Vec3::Y),
));
}
自定义材质 — Bevy 0.19 形式
使用 Material 特征和 AsBindGroup 的自定义材质详见
references/custom-material.md。
主题
| 主题 | 参考 |
|---|---|
PointLight、DirectionalLight、SpotLight;GlobalAmbientLight;阴影贴图、接触阴影、大气 | references/lighting.md |
Plane3d、Cuboid、Sphere、Circle、Cylinder、Capsule3d、Torus 构造函数及方向相关注意事项 | references/mesh-primitives.md |
Material 特征方法、AsBindGroup 属性、ShaderRef 变体、MaterialPlugin 配置 | references/custom-material.md |
Bevy 0.19 注意事项
MaterialPlugin::<M> { prepass_enabled, shadows_enabled, ..default() }已移除。 改为重载Material特征方法 — 参见 references/custom-material.md。- 光源字段使用
shadow_maps_enabled。shadows_enabled已重命名,因为 Bevy 0.19 新增了独立的contact_shadows_enabled控制项。 - 接触阴影需要两端都进行设置。 将
ContactShadows添加到摄像机,并在参与的光源上设置contact_shadows_enabled: true。 Atmosphere是独立实体。 将AtmosphereSettings保留在摄像机上,并单独生成bevy::light::Atmosphere。- glTF 材质标签已更改。
#Material0会加载GltfMaterial;只有在明确需要Handle<StandardMaterial>时才使用#Material0/std。 AsBindGroup::label()是必需的。#[derive(AsBindGroup)]宏会自动生成它;手写实现必须添加该方法。- 网格组件包装器。 使用
Mesh3d(handle)和MeshMaterial3d(material_handle)— 渲染器会查询这些包装器。 Plane3d::new的half_size参数接受Vec2,而非标量 — 参见 references/mesh-primitives.md。Color::rgb(...)已移除 — 改用Color::srgb(...)或Color::linear_rgb(...)。- 方向光的位置会被忽略 — 只有旋转会产生影响。参见 references/lighting.md。
另请参阅
bevy-rendering— 内置渲染器、正向/延迟渲染、自定义通道及替换渲染器的边界。bevy-cameras— 视图、HDR 和渲染目标。bevy-migration-0-18-to-0-19— 光源、大气、glTF 材质和渲染系统迁移。
评论
支持 Markdown