#shader #bevy #graphics #toon #gamedev #game-engine

bevy_toon_shader

Bevy游戏引擎的卡通着色器

3个版本 (破坏性更新)

0.3.0 2023年12月3日
0.2.0 2023年7月16日
0.1.0 2023年4月19日

#310 in 渲染

MIT/Apache

34KB
137

Bevy Toon Shader

Crates.io MIT/Apache 2.0

Bevy游戏引擎提供的卡通着色器

bevy_toon_shader

特性

  • "太阳"颜色 & 方向
  • 镜面高光
  • 光带
  • 投影阴影
  • 反射率图(基础颜色纹理)

不支持(尚不支持)

  • 动态颜色带量
  • 接收阴影
  • 边缘照明

安装

cargo add bevy_toon_shader
use bevy::prelude::*;
use bevy_toon_shader::{ToonShaderMainCamera, ToonShaderMaterial, ToonShaderPlugin, ToonShaderSun};

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugin(ToonShaderPlugin)
        .add_systems(Startup, setup)
        .run();
}

fn setup(
    mut commands: Commands,
    mut meshes: ResMut<Assets<Mesh>>,
    mut toon_materials: ResMut<Assets<ToonShaderMaterial>>,
) {
    // Camera
    commands.spawn((
        Camera3dBundle { /* ... */ },
        ToonShaderMainCamera,
    ));

    // Sun
    commands.spawn((
        DirectionalLightBundle { /* ... */ },
        ToonShaderSun,
    ));

    // Ambient light
    commands.insert_resource(AmbientLight {
        color: Color::GRAY * 0.2,
        ..default()
    });

    let material = toon_materials.add(ToonShaderMaterial::default());

    // 3D object
    commands.spawn(MaterialMeshBundle {
        mesh: meshes.add(Mesh::try_from(shape::Torus::default()).unwrap()),
        transform: Transform::from_xyz(0., 2., 0.),
        material: toon_material,
        ..default()
    });
}

运行示例

git clone https://github.com/tbillington/bevy_toon_shader.git
cd bevy_toon_shader
cargo run --example scene

Bevy支持表

bevy bevy_toon_shader
0.12 0.3
0.11 0.2
0.10 0.1

致谢

代码最初改编自Roystan的这篇出色的Unity教程

许可证

除非另有说明,本存储库中除注明外的所有代码均根据您的选择在以下许可证下双授权:

这意味着您可以选择您喜欢的许可证!这种双授权方法是Rust生态系统中的事实标准,并且包含两个许可证有很好的理由。原因在这里

您的贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交的工作将根据上述双授权进行授权,不附加任何额外的条款或条件。

依赖关系

~45–79MB
~1M SLoC