#bevy-plugin #blur #region #screen #camera #bevy-ui #selectively

bevy_blur_regions

Bevy插件,用于选择性地模糊屏幕区域

3个版本 (破坏性更新)

0.3.0 2024年7月6日
0.2.0 2024年3月31日
0.1.0 2024年3月30日

#512 in 游戏开发

Download history 1/week @ 2024-05-29 2/week @ 2024-06-05 8/week @ 2024-06-26 235/week @ 2024-07-03 157/week @ 2024-07-10 144/week @ 2024-07-17 120/week @ 2024-07-24 182/week @ 2024-07-31 211/week @ 2024-08-07 122/week @ 2024-08-14

每月668次下载

MIT/Apache

390KB
601

Bevy Blur Regions

crates.io

一个用于选择性地模糊屏幕区域的Bevy插件。

screenshot

使用方法

添加插件

use bevy::prelude::*;
use bevy_blur_regions::prelude::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(BlurRegionsPlugin::default())
        .run();
}

BlurRegionsCamera组件添加到输出应该被模糊的3D相机上

commands.spawn((
    BlurRegionsCamera::default(),
    Camera3dBundle::default(),
));

当使用Bevy UI时,将BlurRegion标记组件添加到任何应该有模糊背景的Bevy UI节点上

commands.spawn((
    BlurRegion,
    NodeBundle {
        style: Style {
            width: Val::Percent(50.0),
            height: Val::Percent(50.0),
            left: Val::Percent(25.0),
            top: Val::Percent(25.0),
            ..default()
        },
        ..default()
    },
));

当使用egui时,启用egui功能,然后在将内容添加到egui窗口时使用show_with_blur函数而不是show

fn draw_ui(
    mut contexts: EguiContexts,
    mut blur_region_cameras: Query<&mut bevy_blur_regions::DefaultBlurRegionsCamera>)
{
    let mut blur_regions = blur_region_cameras.single_mut();

    let frame = egui::Frame::window(&contexts.ctx_mut().style())
        .fill(egui::Color32::from_rgba_premultiplied(27, 27, 27, 100))
        .rounding(0.0)
        .shadow(egui::epaint::Shadow::NONE);

    egui::Window::new("Blurry Window")
        .frame(frame)
        .show_with_blur(&mut blur_regions, contexts.ctx_mut(), |ui| {
            ui.label("This window has a nice blurry background.")
        });
}

对于其他用例,可以在每一帧调用即时模式模糊API

fn update(mut blur_region_cameras: Query<&mut BlurRegionsCamera>) {
    let Ok(mut blur_regions) = blur_region_cameras.get_single_mut() else {
        return;
    };
    blur_regions.blur(Rect::from_center_size(vec2(100.0, 100.0), vec2(200.0, 200.0)));
}

请参阅示例以了解上述所有功能的实际实现。

注意事项

模糊区域的数量有限

屏幕上同时存在的模糊区域数量限制为20。

兼容性

bevy_blur_regions bevy bevy_egui
0.3.0 0.14 0.28
0.2.0 0.13 0.26
0.1.0 0.13 N/A

许可证

此仓库中的所有代码都根据您的选择采用双重许可

MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)

这意味着您可以选择您喜欢的许可证。

依赖项

~33–71MB
~1M SLoC