I'm having some issues with color correction using a 3D LUT.
I'm using a neutral LUT 16x16x16 from the UnrealEngine page here: http://udn.epicgames.com/Three/rsrc/Three/ColorGrading/RGBTable16x1.png
I've open it up in photoshop and saved it as a Volume Texture DDS (32bpp unsigned ARGB8) using the nvidia plugin.
And here's my shader:
float4 PS(in VSOutput input) : SV_Target
{
float3 rawColor = InputTexture0.Sample(LinearClampSampler, input.UV).rgb;
float3 scale = (float3(16, 16, 16) - 1.0f) / float3(16, 16, 16);
float3 offset = 1.0f / (2.0f - float3(16, 16, 16));
float3 colorCorrected = LUT.Sample(LinearClampSampler, scale * rawColor + offset).rgb;
return float4(colorCorrected, 1.0f);
}
The code is from this sample here: http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter24.html
Can someone spot the problem ? : /
Not sure if the problem has to do with the order of rendering.
I'm currently tonemapping my linear result to a R8G8B8A8_UNORM_SRGB target, then use this as the input for the color correction which then outputs to my R8G8B8A8_UNORM_SRGB backbuffer.
Here's a screen of what my result looks like:
And here's the original for comparison: