|
|
@@ -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)
|