bevyengine / bevyengine/bevy

Add deferred decals

Open
#18,756 1 comment 0 reactions 0 assignees View on GitHub
A-Rendering C-Feature D-Modest S-Ready-For-Implementation X-Uncontroversial
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.