playcanvas / playcanvas/engine

Implement clustered lighting as a main lighting system (Root ticket)

Open
#3,522 6 comments 5 reactions 1 assignee View on GitHub

@mvaligursky is already working on this.

Since Sep 27, 2021.

area: graphics enhancement
Dominant language
JavaScript
Stars
16.8k
Forks
2k
Avg merge
4h 32m
Merged PRs (30d)
222

Description

This is the issue to track progress for the clustered lighting implementation in the engine. Here are the most important steps:

Optional features:

  • Debug rendering of the cells and the number of lights in them https://github.com/playcanvas/engine/pull/3873
  • Single texture slot solution to store prefiltered data for IBL https://github.com/playcanvas/engine/issues/3681
  • Extract the light evaluation fragment function to standalone chunk to allow custom lighting models (cell shading ..)
  • Optimize static light culling of static meshes to avoid shadow rendering if no change
  • Tighter cone / sphere insertion into the cluster cells to limit number of lights in a cell
  • Allow texture atlases for shadows and cookies to use texture array (light would store viewport and additional index)
  • Consider moving parts of the work to compute shaders (filling in the volume texture with lights, and also filling in the lights data textures)

Other related PRs

Public release after rounds of beta testing: https://github.com/playcanvas/engine/pull/4586

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.