Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove slots in render graph #7995

Closed
wants to merge 21 commits into from

Conversation

IceSentry
Copy link
Contributor

@IceSentry IceSentry commented Mar 9, 2023

Objective

  • Remove the input/output slot feature of the render graph
    • They aren't used anywhere inside bevy and cause significant boilerplate when creating nodes

Solution

  • Keep the view_entity directly in the RenderGraphContext

Changelog

TODO

Migration Guide

TODO

Notes

This feature was only used to pass the view_entity around and nothing else which was the main reason behind doing this.

Now that Node only have an update and run method it could pave the path towards turning nodes into normal systems.

TODO

  • Fix docs
  • yeet set_view_entity and just pass it to run_sub_graph

@IceSentry IceSentry added A-Rendering Drawing game state to the screen C-Usability A simple quality-of-life change that makes Bevy easier to use X-Controversial There is active debate or serious implications around merging this PR labels Mar 9, 2023
@alice-i-cecile alice-i-cecile added this to the 0.11 milestone Mar 9, 2023
@IceSentry IceSentry force-pushed the render-graph-no-slots branch 2 times, most recently from 4159577 to 9db3a24 Compare March 14, 2023 01:49
@IceSentry
Copy link
Contributor Author

I decided to use a different approach that makes it optional instead of yeeting it completely. I'll submit a PR with the new approach soon.

@IceSentry IceSentry closed this Mar 16, 2023
@IceSentry IceSentry deleted the render-graph-no-slots branch March 16, 2023 22:16
cart added a commit that referenced this pull request Apr 4, 2023
# Objective

- Adding a node to the render_graph can be quite verbose and error prone
because there's a lot of moving parts to it.

## Solution

- Encapsulate this in a simple utility method
	- Mostly intended for optional nodes that have specific ordering
- Requires that the `Node` impl `FromWorld`, but every internal node is
built using a new function taking a `&mut World` so it was essentially
already `FromWorld`
- Use it for the bloom, fxaa and taa, nodes. 
- The main nodes don't use it because they rely more on the order of
many nodes being added

---

## Changelog

- Impl `FromWorld` for `BloomNode`, `FxaaNode` and `TaaNode`
- Added `RenderGraph::add_node_edges()`
- Added `RenderGraph::sub_graph()`
- Added `RenderGraph::sub_graph_mut()`
- Added `RenderGraphApp`, `RenderGraphApp::add_render_graph_node`,
`RenderGraphApp::add_render_graph_edges`,
`RenderGraphApp::add_render_graph_edge`

## Notes

~~This was taken out of #7995
because it works on it's own. Once the linked PR is done, the new
`add_node()` will be simplified a bit since the input/output params
won't be necessary.~~

This feature will be useful in most of the upcoming render nodes so it's
impact will be more relevant at that point.

Partially fixes #7985 

## Future work

* Add a way to automatically label nodes or at least make it part of the
trait. This would remove one more field from the functions added in this
PR
* Use it in the main pass 2d/3d

---------

Co-authored-by: Carter Anderson <mcanders1@gmail.com>
@ickshonpe ickshonpe mentioned this pull request Apr 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Rendering Drawing game state to the screen C-Usability A simple quality-of-life change that makes Bevy easier to use X-Controversial There is active debate or serious implications around merging this PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants