Skip to content

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 targeted 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
@james7132 james7132 requested review from cart, robtfm and superdump March 9, 2023 09:06
@IceSentry IceSentry force-pushed the render-graph-no-slots branch from c37af2b to 73a8b72 Compare March 9, 2023 20:23
@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 IceSentry force-pushed the render-graph-no-slots branch from 9db3a24 to bbc8a09 Compare March 16, 2023 05:42
@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 <[email protected]>
@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 targeted 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.

2 participants