Add deferred decals
- Dominant language
- Rust
- Stars
- 48.2k
- Forks
- 4.8k
- Avg merge
- 3d 16h
- Merged PRs (30d)
- 171
Description
> Rough plan based on some conversations in discord: https://discord.com/channels/691052431525675048/743663924229963868/1301985754414841918
>
> * ForwardDecal - Upstream bevy_contact_projective_decals. This will reuse most of the transparent rendering infra in bevy. Won't write to prepass/gbuffer texture, so mainly used for forward without TAA, or forward with TAA and only static decals. Easiest one to implement. _Can_ be used with deferred rendering, the same way transparencies run in a forward pass after deferred.
> * DeferredDecal - Write decal info to the gbuffer before shading. Not much more work.
> * ClusteredDecal - A third variant that acts like a clustered light, where during the shading pass of the main geometry, you find which decals apply to the current surface, and fetch their textures via bindless, and then mix it with the current shader. Very similar to light cookies. A lot more work.
_Originally posted by @JMS55 in [#2401](https://github.com/bevyengine/bevy/issues/2401#issuecomment-2452470498)_
Contributor guide
Research direction
Start by reading the linked discussion in Discord and the referenced comment on issue #2401. The issue outlines ForwardDecal, DeferredDecal, and ClusteredDecal as progressively larger options, but does not identify files, tests, a selected variant, or acceptance criteria. Confirm which decal path is in scope and define what completion means before implementation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- computer-graphics, game-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100