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

Rendering summary #1080

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

Conversation

NthTensor
Copy link
Contributor

@NthTensor NthTensor commented Mar 8, 2024

This PR adds a summary of the bevy's rendering crates as of 0.13. It is a work in progress, and absolutely contains omissions and mistakes. Please let me know if you find any. Feedback on both content and presentation is welcome!

The goal is to cover the most important aspects of bevy_render, bevy_core_pipeline and bevy_pbr in order. Each crate is discussed in isolation, using only concepts introduced by it's dependencies. When this is complete (hopefully well before 0.14), I'd like to split this content up between the bevy book and the module docs of the relevant crates.

RENDERED

@NthTensor NthTensor changed the title Add current working draft of rendering summary Rendering summary Mar 8, 2024
@BD103
Copy link
Member

BD103 commented Mar 8, 2024

Though the check passed, could you fix the mega-linter Markdown warnings?

https://github.com/bevyengine/bevy-website/actions/runs/8197688024/job/22420021368?pr=1080#step:4:80

@NthTensor
Copy link
Contributor Author

Do docs editors have a preference on filled vs unfilled paragraphs?

@alice-i-cecile
Copy link
Member

Overall feelings: really useful, not particularly user-approachable. I'll chew on the best way to digest this information into a format that matches the rest of the book.

Do docs editors have a preference on filled vs unfilled paragraphs?

Not currently no.

@andriyDev
Copy link

Ahhhh so sorry for the spam, I intended to start a review! 🤦‍♂️

@NthTensor
Copy link
Contributor Author

Ahhhh so sorry for the spam

I appreciate the help no matter the format!

Copy link

@andriyDev andriyDev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok I've now finished my first pass. I've of course ignored all the TODO sections.

@NthTensor
Copy link
Contributor Author

Thank you so much! I've addressed your feedback. Going to start filling in some more of the TODO sections, and making notes for new topics to cover for the 0.14 release.

Copy link
Contributor

@SIGSTACKFAULT SIGSTACKFAULT left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Obligatory half of these are IMHO


#### Shaders
Shaders are small highly-specialized programs that run on the GPU within the
programmable stages of pipelines. They are written in a language `WGSL`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"They are written in the WGSL language"

link to https://www.w3.org/TR/WGSL/ or maybe the book page on it

Communication between the CPU and the GPU is asyncronuous; the CPU dispatches
commands to the GPU and must wait for the GPU to finish it's workload and
transmit a response. We'll reffer to these as GPU commands to differentiate them
from bevy ECS commands.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"bevy ECS commands" needs link. also Bevy should be capitalized.

### Commands and Passes
Communication between the CPU and the GPU is asyncronuous; the CPU dispatches
commands to the GPU and must wait for the GPU to finish it's workload and
transmit a response. We'll reffer to these as GPU commands to differentiate them
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

put "GPU commands" in quotes or italics maybe.

[`TrackedRenderPass`]: https://docs.rs/bevy/latest/bevy/render/render_phase/struct.TrackedRenderPass.html

#### Parallel Command Encoding
As covered in the `wgpu` preliminary, rendering involves queuing render commands
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add internal link back to the wgpu preliminary header

main app or the render sub app. It effectively locks both worlds, and is the
only part of bevy that can bottleneck both game logic and rendering. Bevy takes
great pains to keep the extract schedule as slim and efficient as possible, and
users should attempt to keep systems the extract schedule small.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missing an "in"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants