playcanvas / playcanvas/engine
Refactor the main render pass used by the forward renderer
Open
@mvaligursky is already working on this.
Since Sep 28, 2023.
area: graphics
enhancement
- Dominant language
- JavaScript
- Stars
- 16.8k
- Forks
- 2k
- Avg merge
- 4h 32m
- Merged PRs (30d)
- 222
Description
Current situation:
- We have a LayerComposition, which contains an ordered list of layers, and also order list of cameras using those layers. From these lists, a list of render actions is created - each render action representing a camera rendering a single layer to a render target.
- Forward renderer the analyses a list of render actions, and generates render passes for those, where each render pass renders multiple layers into a render target. In between as needed, other render passes are scheduled, for examples shadows, cookie atlas update, color / depth grab pass, post effects and similar.
Goal:
- Main goal is to give users controls over render passes of the whole frame, to enable them also also the engine internally the effects we currently cannot easily do, for example depth pre-pass, SSAO that runs before the main scene, new modular post effects, SSR, TA and anything like this which involves many render passes for the content in the scene.
- In order to do this, we need to make the main render pass more self-contained with a simpler interface, allowing it to be used to build custom render passes for the frame.
Work:
- Refactor the current main forward render pass to be more flexible and self-contained.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.