bevy/docs/cargo_features.md
Carter Anderson 98938a8555 Internal Asset Hot Reloading (#3966)
Adds "hot reloading" of internal assets, which is normally not possible because they are loaded using `include_str` / direct Asset collection access.

This is accomplished via the following:
* Add a new `debug_asset_server` feature flag
* When that feature flag is enabled, create a second App with a second AssetServer that points to a configured location (by default the `crates` folder). Plugins that want to add hot reloading support for their assets can call the new `app.add_debug_asset::<T>()` and `app.init_debug_asset_loader::<T>()` functions.
* Load "internal" assets using the new `load_internal_asset` macro. By default this is identical to the current "include_str + register in asset collection" approach. But if the `debug_asset_server` feature flag is enabled, it will also load the asset dynamically in the debug asset server using the file path. It will then set up a correlation between the "debug asset" and the "actual asset" by listening for asset change events.

This is an alternative to #3673. The goal was to keep the boilerplate and features flags to a minimum for bevy plugin authors, and allow them to home their shaders near relevant code. 

This is a draft because I haven't done _any_ quality control on this yet. I'll probably rename things and remove a bunch of unwraps. I just got it working and wanted to use it to start a conversation.

Fixes #3660
2022-02-18 22:56:57 +00:00

2.1 KiB

Cargo Features

Default Features

feature name description
bevy_audio Audio support. Support for all audio formats depends on this.
bevy_gilrs Adds gamepad support.
bevy_gltf glTF support.
bevy_winit GUI support.
render The render pipeline and all render related plugins.
png PNG picture format support.
hdr HDR support.
vorbis Ogg Vorbis audio format support.
x11 Make GUI applications use X11 protocol. You could enable wayland feature to override this.
filesystem_watcher Enable watching the file system for asset hot reload

Optional Features

feature name description
bevy_dynamic_plugin Plugin for dynamic loading (using libloading).
dynamic Forces bevy to be dynamically linked, which improves iterative compile times.
trace Enables system tracing.
trace_chrome Enables tracing-chrome as bevy_log output. This allows you to visualize system execution.
trace_tracy Enables Tracy as bevy_log output. This allows Tracy to connect to and capture profiling data as well as visualize system execution in real-time, present statistics about system execution times, and more.
wgpu_trace For tracing wgpu.
dds DDS picture format support.
tga TGA picture format support.
jpeg JPEG picture format support.
bmp BMP picture format support.
flac FLAC audio format support. It's included in bevy_audio feature.
mp3 MP3 audio format support.
wav WAV audio format support.
serialize Enables serialization of bevy_input types.
wayland Enable this to use Wayland display server protocol other than X11.
subpixel_glyph_atlas Enable this to cache glyphs using subpixel accuracy. This increases texture memory usage as each position requires a separate sprite in the glyph atlas, but provide more accurate character spacing.
bevy_ci_testing Used for running examples in CI.
debug_asset_server Enabling this turns on "hot reloading" of built in assets, such as shaders.