diff --git a/plugins/obs-filters/data/color_key_filter_v2.effect b/plugins/obs-filters/data/color_key_filter_v2.effect index 9c079e2d9..1193633eb 100644 --- a/plugins/obs-filters/data/color_key_filter_v2.effect +++ b/plugins/obs-filters/data/color_key_filter_v2.effect @@ -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)