#shader #bevy #outline #pixel-perfect #width #view #color

bevy_outline

适用于Bevy的像素完美轮廓着色器

1个不稳定版本

0.1.0 2022年6月2日

#1714 in 游戏开发

MIT许可协议

200KB
537

适用于Bevy的像素完美轮廓着色器

一个易于使用的像素完美轮廓着色器,使用顶点扩展方法为Bevy开发。灵感来自这篇精彩的教程

功能

  • 像素完美:绘制的轮廓宽度以像素为单位,与我们想要的相同。
  • 消除透视缩短:轮廓的宽度从近视图到远视图是均匀的。
  • 可定制性。宽度和颜色可以由用户决定。

用法

首先,将bevy_outline作为依赖项添加到你的Cargo.toml

[dependencies]
bevy_outline = "0.1.0"

其次,将OutlinePlugin添加到你的应用中,并将Msaa设置为合理的值

App::new()
    .insert_resource(Msaa { samples: 4})
... ...
    .add_plugin(OutlinePlugin)
... ...

第三,将OutlineMaterial用作网格材质

fn setup(
    ...
    mut outlines: ResMut<Assets<OutlineMaterial>>,
    ...
) {
    ...
    commands
        .spawn_bundle(PbrBundle {
            mesh: meshes.add(Mesh::from(shape::Cube { ..default() })),
            material: materials.add(Color::rgb(0.8, 0.7, 0.6).into()),
            transform: Transform::from_translation(translation),
            ..default()
        })
        .insert(outlines.add(OutlineMaterial {
            width: 5.,
            color: Color::rgba(0.2, 0.3, 0.4, 1.0),
        }));
    ...
}

请注意,OutlineMaterialwidth属性的单位是像素

示例

请参阅示例

问题

  • 轮廓的宽度似乎不均匀。
  • 内建环面的轮廓看起来很奇怪(算法错误,将在0.8版本中修复)

Bevy版本支持

我打算跟踪Bevy的main分支。欢迎支持这一点的PR!

bevy bevy_outline
0.7 0.1

许可协议

本项目采用MIT许可协议。

贡献

除非你明确说明,否则你提交的任何旨在包含在bevy_outline中的贡献,均应许可为MIT,不附加任何额外条款或条件。

依赖项

~40–55MB
~800K SLoC