#light #lighting #2d #shadow #webgl2 #game-engine

bevy_light_2d

适用于Bevy游戏引擎的通用2D光照

11次发布

0.3.0 2024年8月6日
0.2.2 2024年7月28日
0.2.0-rc.32024年6月28日
0.1.3 2024年6月2日
0.1.2 2024年5月29日

#196 in 游戏开发

Download history 207/week @ 2024-05-23 143/week @ 2024-05-30 97/week @ 2024-06-06 97/week @ 2024-06-13 20/week @ 2024-06-20 82/week @ 2024-06-27 184/week @ 2024-07-04 55/week @ 2024-07-11 197/week @ 2024-07-18 259/week @ 2024-07-25 182/week @ 2024-08-01 53/week @ 2024-08-08 12/week @ 2024-08-15

518 每月下载量

MIT 许可证

52KB
1K SLoC

Rust 1K SLoC // 0.0% comments WebGPU Shader Language 170 SLoC // 0.1% comments

bevy_light_2d

Discord Crates.io docs license GitHub Actions Workflow Status Crates.io

适用于bevy游戏引擎的通用2D光照。设计简单易用,同时足够灵活以满足各种需求。

特性

  • 组件驱动设计
  • 可配置的点光源
  • 光照遮挡
  • 动态阴影
  • 特定摄像机的环境光
  • 单摄像机渲染
  • 支持WebGL2和WebGPU的Web支持

使用方法

basic示例中,我们只需要插件、摄像机和光源。

# Cargo.toml
[dependencies]
bevy = "0.14"
bevy_light_2d = "0.3"
use bevy::prelude::*;
use bevy_light_2d::prelude::*;

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

fn setup(mut commands: Commands) {
    commands.spawn(Camera2dBundle::default());
    
    commands.spawn(PointLight2dBundle {
        point_light: PointLight2d {
            radius: 100.0,
            intensity: 3.0,
            ..default()
        },
        ..default()
    });
}

要查看深入示例,请使用cargo run --example dungeon

动机

当我最初开始尝试使用Bevy时,缺乏官方2D光照实现让我感到不满意。虽然有一些相当令人印象深刻的实验性2D光照库,但可用的即插即用选项并不多。

我的目标是通过这个库来填补这个空白,优先考虑易用性和通用应用而不是功能深度。

Bevy兼容性

bevy bevy_light_2d
0.14 0.2..0.3
0.13 0.1

感谢

我想感谢以下库的作者;他们是灵感的重要来源。

资产信用

依赖项

~36–74MB
~1.5M SLoC