diff options
| author | Jules Blok <jules.blok@gmail.com> | 2015-05-06 22:42:06 +0200 |
|---|---|---|
| committer | Jules Blok <jules.blok@gmail.com> | 2015-05-08 14:32:16 +0200 |
| commit | 0f2c72f0f844c219e168faa7de8dd515f8723fdc (patch) | |
| tree | 5b05c1fc8ea173688cf0a2945dc1cc5c9743fe2d /Source/Core/VideoCommon/TextureConversionShader.cpp | |
| parent | b0770e2a0c2e391139db1365ca3658ada0f87da0 (diff) | |
VideoCommon: Clamp integer conversions.
Diffstat (limited to 'Source/Core/VideoCommon/TextureConversionShader.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/TextureConversionShader.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/Source/Core/VideoCommon/TextureConversionShader.cpp b/Source/Core/VideoCommon/TextureConversionShader.cpp index 18e5c258c0..844710c3ee 100644 --- a/Source/Core/VideoCommon/TextureConversionShader.cpp +++ b/Source/Core/VideoCommon/TextureConversionShader.cpp @@ -487,7 +487,7 @@ static void WriteZ16Encoder(char*& p,API_TYPE ApiType) WriteSampleColor(p, "r", "depth", 0, ApiType); - WRITE(p, " depth *= 16777216.0;\n"); + WRITE(p, " depth = clamp(depth * 16777216.0, 0, 0xFFFFFF);\n"); WRITE(p, " expanded.r = floor(depth / (256.0 * 256.0));\n"); WRITE(p, " depth -= expanded.r * 256.0 * 256.0;\n"); WRITE(p, " expanded.g = floor(depth / 256.0);\n"); @@ -497,7 +497,7 @@ static void WriteZ16Encoder(char*& p,API_TYPE ApiType) WriteSampleColor(p, "r", "depth", 1, ApiType); - WRITE(p, " depth *= 16777216.0;\n"); + WRITE(p, " depth = clamp(depth * 16777216.0, 0, 0xFFFFFF);\n"); WRITE(p, " expanded.r = floor(depth / (256.0 * 256.0));\n"); WRITE(p, " depth -= expanded.r * 256.0 * 256.0;\n"); WRITE(p, " expanded.g = floor(depth / 256.0);\n"); @@ -519,7 +519,7 @@ static void WriteZ16LEncoder(char*& p,API_TYPE ApiType) WriteSampleColor(p, "r", "depth", 0, ApiType); - WRITE(p, " depth *= 16777216.0;\n"); + WRITE(p, " depth = clamp(depth * 16777216.0, 0, 0xFFFFFF);\n"); WRITE(p, " expanded.r = floor(depth / (256.0 * 256.0));\n"); WRITE(p, " depth -= expanded.r * 256.0 * 256.0;\n"); WRITE(p, " expanded.g = floor(depth / 256.0);\n"); @@ -531,7 +531,7 @@ static void WriteZ16LEncoder(char*& p,API_TYPE ApiType) WriteSampleColor(p, "r", "depth", 1, ApiType); - WRITE(p, " depth *= 16777216.0;\n"); + WRITE(p, " depth = clamp(depth * 16777216.0, 0, 0xFFFFFF);\n"); WRITE(p, " expanded.r = floor(depth / (256.0 * 256.0));\n"); WRITE(p, " depth -= expanded.r * 256.0 * 256.0;\n"); WRITE(p, " expanded.g = floor(depth / 256.0);\n"); @@ -558,7 +558,7 @@ static void WriteZ24Encoder(char*& p, API_TYPE ApiType) for (int i = 0; i < 2; i++) { - WRITE(p, " depth%i *= 16777216.0;\n", i); + WRITE(p, " depth%i = clamp(depth%i * 16777216.0, 0, 0xFFFFFF);\n", i, i); WRITE(p, " expanded%i.r = floor(depth%i / (256.0 * 256.0));\n", i, i); WRITE(p, " depth%i -= expanded%i.r * 256.0 * 256.0;\n", i, i); |
