The Decal layer texture that is written during the prepass and used during dbuffer pass has the same format as the gbuffer 4 used for light layers during gbuffer pass
In theory rendergraph should reuse the texture but there are two issues:
- currently decal texture is bound as global and we actually use it during forward opaque if there are decal affecting emissive. Rendergraph is not aware of that which is bad
- decal texture needs enableRandomReadWrite flag, so rendergraph sees a different descriptor than gbuffer4 and doesn't reuse the texture
Proposed fixes:
- DecalSystem should say if there are decals affecting emissive so we can tell rendergraph we use the texture during forward
- if we don't use it, we should reuse the decal texture for gbuffer, either by doing it manually or by requesting a texture with enableRandomReadWrite so that rendergraph gives us the decal texture (not a good solution i thinkà