6个版本 (3个破坏性更新)
0.4.0 | 2024年7月4日 |
---|---|
0.4.0-rc.2 | 2024年6月11日 |
0.3.0 | 2024年2月18日 |
0.2.0 | 2024年1月22日 |
0.1.0 | 2023年3月13日 |
#212 in 渲染
每月下载量:155
38KB
579 行
像素化网格
在不进行后期处理的情况下,将像素化效果应用于任何Bevy网格或场景。
使用方法
- 添加
PixelateMeshPlugin
,指定一个跟踪主相机的组件。 - 将此跟踪组件添加到您的相机中。
- 将
Pixelate
组件添加到您想要像素化的任何实体。
需要跟踪组件,因为插件在2D画布上绘制纹理,这些纹理需要旋转以始终面向主相机。
兼容性
bevy | pixelate_mesh |
---|---|
0.14 | 0.4 |
0.13 | 0.3 |
0.12 | 0.2 |
0.10 | 0.1 |
示例
以下是一个带注释的简化示例。更多示例可以在示例文件夹中找到。
use bevy::prelude::*;
use pixelate_mesh::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
// Add the plugin
.add_plugin(PixelateMeshPlugin::<MainCamera>::default())
.add_systems(Startupsetup)
.run();
}
// Create a component for the main camera
#[derive(Component)]
struct MainCamera;
fn setup(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
commands.spawn((
// This cube will render at 64x64 pixels
Pixelate::splat(64),
PbrBundle {
mesh: meshes.add(Mesh::from(shape::Cube { size: 1.0 })),
material: materials.add(Color::WHITE.into()),
..default()
},
));
commands.spawn((
// Add the tracking component to the camera
MainCamera,
Camera3dBundle {
transform: Transform::from_xyz(-2.0, 2.5, 5.0).looking_at(Vec3::ZERO, Vec3::Y),
..default()
},
));
}
灵感来源
插件尝试模仿Prodeus中看到的效果
来源
不足之处
- 当前的设置不支持多个主相机。如果您有解决此问题的想法,请随意在问题上评论!
- 插件全局禁用MSAA。
依赖项
~41–79MB
~1.5M SLoC