Saturate RGB values in non-PQ shaders to improve SDR streams of HDR displays
This avoids color shift caused by RGB values > 1.0f.
This commit is contained in:
@@ -19,8 +19,8 @@ cbuffer ColorMatrix : register(b0) {
|
|||||||
//--------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------
|
||||||
float2 main_ps(FragTexWide input) : SV_Target
|
float2 main_ps(FragTexWide input) : SV_Target
|
||||||
{
|
{
|
||||||
float3 rgb_left = image.Sample(def_sampler, input.uuv.xz).rgb;
|
float3 rgb_left = saturate(image.Sample(def_sampler, input.uuv.xz)).rgb;
|
||||||
float3 rgb_right = image.Sample(def_sampler, input.uuv.yz).rgb;
|
float3 rgb_right = saturate(image.Sample(def_sampler, input.uuv.yz)).rgb;
|
||||||
float3 rgb = (rgb_left + rgb_right) * 0.5;
|
float3 rgb = (rgb_left + rgb_right) * 0.5;
|
||||||
|
|
||||||
float u = dot(color_vec_u.xyz, rgb) + color_vec_u.w;
|
float u = dot(color_vec_u.xyz, rgb) + color_vec_u.w;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ struct PS_INPUT
|
|||||||
|
|
||||||
float main_ps(PS_INPUT frag_in) : SV_Target
|
float main_ps(PS_INPUT frag_in) : SV_Target
|
||||||
{
|
{
|
||||||
float3 rgb = image.Sample(def_sampler, frag_in.tex, 0).rgb;
|
float3 rgb = saturate(image.Sample(def_sampler, frag_in.tex, 0)).rgb;
|
||||||
float y = dot(color_vec_y.xyz, rgb) + color_vec_y.w;
|
float y = dot(color_vec_y.xyz, rgb) + color_vec_y.w;
|
||||||
|
|
||||||
return y * range_y.x + range_y.y;
|
return y * range_y.x + range_y.y;
|
||||||
|
|||||||
Reference in New Issue
Block a user