#mesh #bevy #scene #graphics #pixelation #pixelate

pixelate_mesh

在不进行后期处理的情况下,将像素化效果应用于任何Bevy网格或场景

6个版本 (3个破坏性更新)

0.4.0 2024年7月4日
0.4.0-rc.22024年6月11日
0.3.0 2024年2月18日
0.2.0 2024年1月22日
0.1.0 2023年3月13日

#212 in 渲染

Download history 4/week @ 2024-05-21 192/week @ 2024-06-11 4/week @ 2024-06-18 139/week @ 2024-07-02 16/week @ 2024-07-09

每月下载量:155

MIT/Apache

38KB
579

像素化网格

crates.io docs.rs

在不进行后期处理的情况下,将像素化效果应用于任何Bevy网格或场景。

Pixelated foxes

使用方法

  • 添加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