Crates.io | pixelate_mesh |
lib.rs | pixelate_mesh |
version | 0.4.0 |
source | src |
created_at | 2023-03-13 16:27:01.407017 |
updated_at | 2024-07-04 17:36:57.43169 |
description | Apply a pixelation effect to any Bevy mesh or scene without post-processing. |
homepage | |
repository | https://github.com/janhohenheim/pixelate_mesh |
max_upload_size | |
id | 809031 |
size | 152,103 |
Apply a pixelation effect to any Bevy mesh or scene without post-processing.
PixelateMeshPlugin
, where you specify a component that tracks the main camera.Pixelate
component to any entity that you want to pixelate.The tracking component is needed because the plugin draws the textures on 2D canvases that need to rotate to always face the main camera.
bevy | pixelate_mesh |
---|---|
0.14 | 0.4 |
0.13 | 0.3 |
0.12 | 0.2 |
0.10 | 0.1 |
The following is an annotated minimal example. More can be found in the examples folder.
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()
},
));
}
The plugin tries to emulate the effect as seen in Prodeus:
Source