bevy_headless_render

Crates.iobevy_headless_render
lib.rsbevy_headless_render
version
sourcesrc
created_at2024-07-24 15:50:09.274061
updated_at2024-12-10 21:06:48.28501
descriptionA plugin for the bevy engine which enables headless rendering to an image for use in the main world.
homepage
repository
max_upload_size
id1314118
Cargo.toml error:TOML parse error at line 17, column 1 | 17 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
Silas Bartha (exvacuum)

documentation

README

bevy_headless_render

Crates License Tag Docs

A plugin for the Bevy engine which allows for headless rendering.

Every frame will be copied from HeadlessRenderSource render textures into HeadlessRenderDestination images each frame.

Compatibility

Crate Version Bevy Version
0.1 0.14
0.2 0.15

Installation

crates.io

[dependencies]
bevy_headless_render = "0.2"

Using git URL in Cargo.toml

[dependencies.bevy_headless_render]
git = "https://git.exvacuum.dev/bevy_headless_render"

Usage

In main.rs:

use bevy::prelude::*;
use bevy_headless_render;

fn main() {
    App::new()
        .add_plugins((
            DefaultPlugins
            bevy_headless_render::HeadlessRenderPlugin,
        ))
        .run();
}

When spawning a camera:

let size = Extent3d {
    width: 640,
    height: 480,
    depth_or_array_layers: 1,
};

let mut image = Image {
    texture_descriptor: TextureDescriptor {
        label: None,
        size,
        dimension: TextureDimension::D2,
        format: TextureFormat::Rgba8UnormSrgb,
        mip_level_count: 1,
        sample_count: 1,
        usage: TextureUsages::TEXTURE_BINDING
            | TextureUsages::COPY_SRC
            | TextureUsages::RENDER_ATTACHMENT,
        view_formats: &[],
    },
    ..default()
};

image.resize(size);

let image_handle = asset_server.add(image);

commands.spawn((
    HeadlessRenderSource::new(&asset_server, image_handle.clone()),
    Camera3d::default(),
    Camera {
        target: image_handle.into(),
        ..Default::default()
    },
));

The HeadlessRenderDestination component will contain the extracted image which can be used or saved for whatever you need.

License

This crate is licensed under your choice of 0BSD, Apache-2.0, or MIT license.

Commit count: 0

cargo fmt