- Home /
Sampling Diffuse GBuffer in Deferred HDRP Post Process
Hi, I really need to be able to read diffuse buffer for the post-process effect I'm working on with HDRP Deferred rendering.
I'm implementing SSAO+SSGI (screen space global illumination) and I need to be able to bounce light even at surfaces that are fully shadowed/black in the scene. And to properly light them up this way, I need to know their (diffuse) color.
Sadly I have no luck accessing it, the buffer is fully black and I have no idea why, what else should I include (.hlsl) or how else to sample it in the .shader. I've had some luck with this: "TEXTURE2D_X(_GBufferTexture0); + LOAD_TEXTURE2D_X(_GBufferTexture0, positionSS);" , but only when reading _GBufferTexture1. Which I believe is supposed to be specular color, while I need to be able to read _GBufferTexture0 - diffuse, which returns nothing.
I have also tried using macros I found in the DebugViewMaterialGBuffer.shader and/or Lit.hlsl
float4 GetDiffuseColor(float2 positionSS) {
BSDFData bsdfData;
BuiltinData builtinData;
DECODE_FROM_GBUFFER(positionSS, UINT_MAX, bsdfData, builtinData);
return float4(GetDiffuseOrDefaultColor(bsdfData, 1).rgb, 1);
}
But same result -> all black. So I'd like to know, how can I actually sample diffuse buffer in HDRP PostProcess when using Deferred shading? Currently I can only work with the colors from source RT, which is fine for well lit scenes but not when trying to light up dark areas, there you lose a lot of color info, making the effect very dull and ineffective. Currently I can only achieve the middle image, which does not really make it look like the light is actually bouncing and lighting other surfaces. The 3rd image is "artifically boosted" to resemble what I think it should approximately look like, but for now I'm just adding a bit of white to any sampled color so even black surfaces show up. Wouldn't make sense for example to fully shadowed green surface, that would look like the original color is dark grey (even the blue cylinder is obviously not color correct in the darker places) :/
Really hoping I could get some help on this because no help in unity forum, nor unity support email. I'm starting to think it's a bug and the gbuffer0 is not available for hdrp post processes :-| though I still hope I'm just missing something...