obs-filters: Fix color key distance

Was incorrectly computing distance between linear color and nonlinear
key. Make color nonlinear to match previous behavior.
This commit is contained in:
jpark37 2021-05-11 16:19:50 -07:00 committed by Jim
parent fa3d87b770
commit 9e092bf28e

View File

@ -34,9 +34,19 @@ float4 CalcColor(float4 rgba)
return float4(pow(rgba.rgb, float3(gamma, gamma, gamma)) * contrast + brightness, rgba.a);
}
float GetNonlinearChannel(float u)
{
return (u <= 0.0031308) ? (12.92 * u) : ((1.055 * pow(u, 1.0 / 2.4)) - 0.055);
}
float3 GetNonlinearColor(float3 rgb)
{
return float3(GetNonlinearChannel(rgb.r), GetNonlinearChannel(rgb.g), GetNonlinearChannel(rgb.b));
}
float GetColorDist(float3 rgb)
{
return distance(key_color.rgb, rgb);
return distance(key_color.rgb, GetNonlinearColor(rgb));
}
float4 ProcessColorKey(float4 rgba, VertData v_in)