aboutsummaryrefslogtreecommitdiff
path: root/system/shaders
diff options
context:
space:
mode:
authorAnton Fedchin <anightik@gmail.com>2018-02-21 15:08:37 +0300
committerAnton Fedchin <anightik@gmail.com>2018-02-21 15:08:37 +0300
commit01fd374e2d28d9acf8b1129f2503d0ffe92bc760 (patch)
treeb030859c1cd9fd6f61e5b29666a3ac11bdccfa6a /system/shaders
parent5979b136b568d08a616988377e06135f8eef4e52 (diff)
DirectX: fix NaN in shaders
AMD devs don't follow data conversion rules in case of float to unorm. The algo described at https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd607323%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396 there is NaN should be converted to 0. So we have to use this fix for AMD hardware.
Diffstat (limited to 'system/shaders')
-rw-r--r--system/shaders/yuv2rgb_d3d.fx2
1 files changed, 1 insertions, 1 deletions
diff --git a/system/shaders/yuv2rgb_d3d.fx b/system/shaders/yuv2rgb_d3d.fx
index dd75621f08..4eb59dd6f0 100644
--- a/system/shaders/yuv2rgb_d3d.fx
+++ b/system/shaders/yuv2rgb_d3d.fx
@@ -129,7 +129,7 @@ float4 YUV2RGB(VS_OUTPUT In) : SV_TARGET
float4 rgb = mul(YUV, g_ColorMatrix);
#if defined(XBMC_COL_CONVERSION)
- rgb.rgb = pow(mul(pow(rgb, g_gammaSrc), g_primMat), g_gammaDstInv).rgb;
+ rgb.rgb = pow(max(0.0, mul(pow(rgb, g_gammaSrc), g_primMat)), g_gammaDstInv).rgb;
#endif
return output4(rgb, In.TextureY);
}