playcanvas / playcanvas/engine

Refactor the main render pass used by the forward renderer

Open
#5,686 1 comment 3 reactions 1 assignee View on GitHub

@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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.