diff options
author | Anton Fedchin <anightik@gmail.com> | 2018-02-21 15:08:37 +0300 |
---|---|---|
committer | Anton Fedchin <anightik@gmail.com> | 2018-02-21 15:08:37 +0300 |
commit | 01fd374e2d28d9acf8b1129f2503d0ffe92bc760 (patch) | |
tree | b030859c1cd9fd6f61e5b29666a3ac11bdccfa6a /system/shaders | |
parent | 5979b136b568d08a616988377e06135f8eef4e52 (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.fx | 2 |
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); } |