#bevy #shader #graphics #gamedev

bevy_plane_cut

为 bevy 提供的平面切割材质

2 个不稳定版本

0.2.0 2024 年 7 月 5 日
0.1.0 2024 年 6 月 7 日

306游戏开发

Download history 148/week @ 2024-06-04 14/week @ 2024-06-11 138/week @ 2024-07-02 7/week @ 2024-07-09

145 每月下载次数

MIT/Apache

40KB
154

bevy_plane_cut

Maintenance CI crates-io api-docs

bevy 游戏引擎 提供的平面切割材质。

simple example

安装

安装包。

cargo add bevy_plane_cut

用法

将插件添加到应用

use bevy::prelude::*;
fn main() {
    App::new()
        .add_plugins(bevy_plane_cut::PlaneCutPlugin)
        .run();
}

将材质添加到对象

use bevy::{
    prelude::*,
    color::palettes::basic,
    pbr::ExtendedMaterial,
};
use bevy_plane_cut::*;

fn setup(
    mut commands: Commands,
    mut meshes: ResMut<Assets<Mesh>>,
    mut materials: ResMut<Assets<PlaneCutMaterial>>) {

    commands.spawn(MaterialMeshBundle {
        mesh: meshes.add(Sphere::new(1.0)),
        material: materials.add(ExtendedMaterial {
            base: StandardMaterial {
                base_color: basic::RED.into(),
                ..default()
            },
            extension: PlaneCutExt {
                plane: Vec4::new(-1.0, 1.0, -2.0, 0.0),
                color: Color::linear_rgb(0.0, 0.0, 0.7),
                shaded: true,
                space: Space::World,
            },
        }),
        ..default()
    });
}

示例

运行 "simple" 示例,如下所示

cargo run --example simple

这将显示一个红色的球体,球体周围有一个光在旋转,并且有一个蓝色的平面切割。

  • simple - 一个带有平面切割的红色球体。
  • simple_screenspace - 一个带有屏幕空间平面切割的红色球体。
  • moving_cut - 一个在进出移动的红色球体,带有平面切割。

不工作示例

simple_deferred

  • simple_deferred - 与 simple 相同,但使用延迟渲染器。注意:这个在我的 macOS 机器上看起来不正确。
  • deferred - 使用延迟渲染器渲染的红色球体。它根本没有任何平面切割,并且在我的 macOS 上仍然看起来不正确。我使用 macOS,所以我想知道它在其他平台上是否正确。
  • two_cuts - 这是一个由 PlaneCutExt 扩展了两次的材质。然而,它有一个错误。有关更多详细信息,请参阅 two_cuts.rs 示例。欢迎提交 PR!

兼容性

bevy_plane_cut bevy
0.2 0.14
0.1 0.13

许可证

此包根据 MIT 许可证或 Apache 许可证 2.0 许可。示例根据 CC0 许可证许可。

致谢

依赖

~23MB
~411K SLoC