#bevy #shader #zelda #toon #wind-waker

bevy_wind_waker_shader

一个类似于《塞尔达传说:时之笛》中角色使用的卡通着色器

5个版本

0.2.0 2024年7月4日
0.2.0-rc2024年6月11日
0.1.2 2024年2月19日
0.1.1 2024年2月19日
0.1.0 2024年2月19日

游戏开发类别中排名439

Download history 9/week @ 2024-06-03 109/week @ 2024-06-10 7/week @ 2024-06-17 20/week @ 2024-06-24 158/week @ 2024-07-01 8/week @ 2024-07-08 44/week @ 2024-07-29

每月下载量82

MIT/Apache

7.5MB
291

风之笛着色器

crates.io docs.rs

一个类似于《塞尔达传说:时之笛》中角色使用的卡通着色器。主要代码来自这个视频中提出的思想。

展示

球体

Sphere

全天场景

https://github.com/janhohenheim/bevy_wind_waker_shader/assets/9047632/80aa9851-f425-4439-88f1-558918caa9f1

白天场景

Scene in daylight

夜间场景

Scene at night

功能

着色器具有以下属性

  • 它是一个只有两种颜色的卡通着色器:高光和阴影。
  • 两种颜色之间的边缘不是完全硬的,而是有一个非常轻微的渐变。
  • 使用的颜色调色板基于一天中的时间和天气。
  • 模型在边缘有一个轮廓高光,使其更加突出。

所有颜色和纹理遮罩都来自《塞尔达传说:时之笛》。

与《风之笛》的区别

  • 此着色器支持多个光源,如《塞尔达传说:荒野之息》。原始《风之笛》只支持单个光源。
  • 轮廓高光也来自《塞尔达传说:荒野之息》。
  • 《风之笛》使用更多的天气条件,但我认为其中大部分太具体,不适合包含在这个着色器中。

请注意,此着色器仅复制《风之笛》中角色上所见的内容,而不是环境!

示例

use bevy::prelude::*;
use bevy_wind_waker_shader::prelude::*;

fn main() {
    App::new()
        .add_plugins((DefaultPlugins, WindWakerShaderPlugin::default()))
        .add_systems(Startup, spawn_character)
        .run();
}

fn spawn_character(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn((
        SceneBundle {
            scene: asset_server.load("models/Fox.glb"),
            ..default()
        },
        WindWakerShaderBuilder::default()
            .time_of_day(TimeOfDay::Afternoon)
            .weather(Weather::Sunny)
            .build(),
    ));
}

兼容性

bevy bevy_wind_waker_shader
0.14 0.2
0.13 0.1

依赖关系

~38–75MB
~1.5M SLoC