bevyengine / bevyengine/bevy

Pipeline hot-reloading

Open
#11,471 0 comments 0 reactions 0 assignees View on GitHub
A-Rendering C-Feature
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 22h
Merged PRs (30d)
161

Description

## What problem does this solve or what need does it fill?

Ability to reload the rendering pipeline without restarting the application.

Similar as what has been done for assets.

For example, add a HSV adjust shader at the end of the pipeline, by editing the Rust code, without restarting the application, keeping both CPU and GPU memory state.

## What solution would you like?

Bevy detects the pipeline Rust code has changed, recompile it and reload the pipeline while keeping everything else running.

## What alternative(s) have you considered?

Other solution would be to store memory on disk, but for CPU/GPU memory intensive workload, it would be too much data to transfer back and forth and would probably be slow, defeating one of the purposes of hot-reloading.

Another solution would be to describe the pipeline in a text file and find a way for Bevy to reload the pipeline based on the text file (not sure if this is even possible in the current state).

But I'd rather see a solution where it is the Rust code that is being re-compiled and re-loaded. Using an external DSL is tedious to implement and use and is less flexible in terms of coding abilities.

## Additional context

A feature like that would allow Bevy to match real-time gaming and artistic IDE such as TouchDesigner.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.