2个不稳定版本
0.2.0 | 2023年3月8日 |
---|---|
0.1.0 | 2022年11月13日 |
#300 in 渲染
17MB
2K SLoC
Bevy视觉特效袋
这个crate包含了一系列用于Bevy应用程序的效果。
以下是一个通过添加一些视觉特效到Bevy的breakout示例来制作的展示。请注意,游戏本身除了视觉上之外没有进行修改。
上述添加的效果包括:
- 雨滴效果(由于在此之后应用的效果,它给屏幕上带来了静态噪音的印象)。
- 色差。
- 波浪。这种效果引起了“波浪”以及碰撞震动效果。
- CRT屏蔽。这改变了屏幕的边缘,使其看起来像CRT。
- 像素化。这使图像像素化。演示在每次碰撞发生时略微增加此效果,但由于视频的短时间长度,难以察觉。
- 色彩分级。应用了颜色查找纹理,相应地更改颜色输出。
向下滚动以查看包含在此仓库中的示例的视频。
Bevy兼容性
当将此crate作为项目依赖项添加时,您使用的Bevy版本需要根据以下表格匹配
bevy-vfx-bag | bevy |
---|---|
0.2.0 | 0.10.0 |
0.1.0 | 0.9.0 |
入门指南
一般的策略是
- 添加主要插件:
BevyVfxBagPlugin
。 - 在您想要应用效果的相机(s)上添加后处理效果组件。
- 添加任何系统以在运行时更改效果。
// See the examples folder for fleshed out examples,
// this just shows the general strategy.
fn main(){
App::new()
.add_plugins(DefaultPlugins)
.add_plugin(BevyVfxBagPlugin::default()) // This needs to be added for any effect to work
.add_startup_system(setup)
.add_system(update)
.run();
}
fn setup(mut commands: Commands) {
commands.spawn((
Camera3dBundle { ... },
Blur::default()
));
}
fn update(mut blur: Query<&mut Blur>) {
// Here I can change the parameters of this effect at runtime.
}
示例
以下所有视频都是从运行示例捕获的。
在此仓库中运行cargo r --example
以获取可以运行的示例列表。一些示例还使用键盘/鼠标输入在运行时更改参数。
模糊
显示图像模糊。
模糊的强度和半径被更改。
半径指的是相对于起始像素,采样到的像素距离。
色差
显示色差。红色、绿色和蓝色通道相对于图像中的原始位置偏移。
这些偏移的方向以及它们的幅度是可控制的。示例中,这些方向随时间以不同的速度动画化。用户控制幅度。
翻转
允许水平、垂直或同时翻转输入图像。
LUT
允许通过查找纹理进行颜色分级。还有一个示例生成中性LUT,cargo r --example make-neutral-lut
。然后可以在任何图像编辑器中修改此文件,以复制所需的视觉/感觉。
该插件允许垂直分割图像(如视频中所示),这可以用于比较颜色分级前后的外观。
像素化
像素化屏幕。用户控制“像素”的方块大小。
雨滴
显示屏幕上的雨滴。用户控制雨滴的缩放,这会影响它们在屏幕上的大小。
强度决定了雨滴将如何扭曲采样原始图像。这实际上就是“光线通过雨滴弯曲的程度”。
一些雨滴是动画的。这个重复动画的速度也可以控制。
晕影
显示晕影效果。
示例显示了改变效果的“羽化”。这意味着原始图像和晕影之间的平滑过渡区域有多大。
未显示的是改变半径和改变晕影的颜色。
霸王龙
显示波纹效果的另一种应用。通过使用剧烈的波纹效果,我们可以通过切换效果的间隔来模拟由于大物接近引起的地球震动。
水下
类似水下效果。将大多数效果压缩到一个示例中,以显示它们可能如何堆叠。
波纹
显示在屏幕上波纹中的原始图像采样。
可以分别对水平轴和垂直轴单独控制波纹的数量、它们的传播速度(它们是正弦波)和振幅。
这非常灵活,可以创建有趣的效果。
视频中未显示的一种可能性是相机抖动效果,这可能是通过具有高速高振幅的多个波纹,并迅速将这些参数降至零来实现,从而使效果结束。
依赖项
~31–65MB
~1M SLoC