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

Render graph design #21

Closed
repi opened this issue Aug 20, 2020 · 4 comments
Closed

Render graph design #21

repi opened this issue Aug 20, 2020 · 4 comments
Labels
t: design Design of our rust-gpu language and std

Comments

@repi
Copy link
Contributor

repi commented Aug 20, 2020

A high-level goal for this project is to also design a GPU rendering/compute graph to tie it all together and enable users to to develop small reusable graph components inside crates that contain Rust CPU and GPU code and that can be easily connected and tweaked.

We talked briefly about it today in #15, but will require quite a bit of design and the lower level parts of SPIRV codegeneration and Rust bindings overall (#10) is higher priority

@repi repi added the t: design Design of our rust-gpu language and std label Aug 20, 2020
@repi repi mentioned this issue Aug 20, 2020
@repi
Copy link
Contributor Author

repi commented Nov 13, 2020

As we said in the meeting yesterday (#227) feel free to discuss goals, high-level designs, and gather references from other implementations for this here in the issue. cc @vojd

If it does start getting somewhat extensive, could also just write it up an a markdown file and check in. I think later for the design phase we'll go through MCE / RFCs but also prototypes directly in our engine codebase (Ark)

@tema3210
Copy link

tema3210 commented Apr 7, 2022

Given the scope of project (it's not proposing its own render API (right?)), I think we need to make a mechanism for gathering and exporting information about which resources are acessed by our shaders. This would allow, for example, a wgpu reason about what shaders we passed to it use what data.

The rest of the design of render graph is implementation specific.

My vision of this is that we should assist developers in creating render graph systems, not make yet another one.

@TrueDoctor
Copy link
Contributor

For Graphite we are developing a node based image editor where every node is a rust function that can be executed on the cpu/gpu. The user can then modify the nodegraph visually which is then either dynamically linked or ad hoc compiled and executed. We probably target an even more high level/abstract user experience then you would try to provide, but the issues that come up during our implementation could potentially inform your design.

  • Embark could potentially profit from a software such as graphite because it would be trivial to integrate your own tools as nodes in a graph and use the already provided ui. The project is of course fully open source.

@repi
Copy link
Contributor Author

repi commented Nov 21, 2022

closing this old issue because we already have a GPU render graph in kajiya as well as our own production renderer.

@TrueDoctor I think the type of render node graph you are talking about is a different thing, this was specifically about coordinating GPU rasterization/raytracing/compute passes on the GPU and it is memory management. for early work on it see the FrameGraph in Frostbite

@repi repi closed this as not planned Won't fix, can't repro, duplicate, stale Nov 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
t: design Design of our rust-gpu language and std
Projects
None yet
Development

No branches or pull requests

3 participants