I generate a normal GBuffer in my engine, and I store it using a R16G16B16A16_SNORM format like this:
input.normal = normalize(input.normal);
input.tangent = normalize(input.tangent);
float3 binormal = normalize(cross(input.tangent, input.normal));
float3 normal = (normalMap.Sample(SampleType, input.tex).rgb * 2.0) - 1.0f;
float3x3 texSpace = float3x3(input.tangent, binormal, input.normal);
float3 finalNormal = normalize(mul(normal, texSpace));
output.normals = float4(finalNormal.rgb, 1.0f);
But when debugging the frame in RenderDoc, I notice that the 3rd component of the frame (Z, or blue channel) is always 0.0
As you can see, both the blue and alpha components come back as zero, even though the alpha is explicitly set to 1.0 in the shader. The frame visually contains information in the blue channel, so why is it coming up as 0.0?