VideoCommon: Clamp integer conversions.
This commit is contained in:
parent
b0770e2a0c
commit
0f2c72f0f8
|
@ -146,7 +146,7 @@ const char depth_matrix_program[] = {
|
||||||
" in float4 pos : SV_Position,\n"
|
" in float4 pos : SV_Position,\n"
|
||||||
" in float3 uv0 : TEXCOORD0){\n"
|
" in float3 uv0 : TEXCOORD0){\n"
|
||||||
" float4 texcol = Tex0.Sample(samp0,uv0);\n"
|
" float4 texcol = Tex0.Sample(samp0,uv0);\n"
|
||||||
" int depth = int(floor(texcol.x * 16777216.0));\n"
|
" int depth = clamp(int(texcol.x * 16777216.0), 0, 0xFFFFFF);\n"
|
||||||
|
|
||||||
// Convert to Z24 format
|
// Convert to Z24 format
|
||||||
" int4 workspace;\n"
|
" int4 workspace;\n"
|
||||||
|
@ -180,7 +180,7 @@ const char depth_matrix_program_msaa[] = {
|
||||||
" for(int i = 0; i < SAMPLES; ++i)\n"
|
" for(int i = 0; i < SAMPLES; ++i)\n"
|
||||||
" texcol += Tex0.Load(int3(uv0.x*(width), uv0.y*(height), uv0.z), i);\n"
|
" texcol += Tex0.Load(int3(uv0.x*(width), uv0.y*(height), uv0.z), i);\n"
|
||||||
" texcol /= SAMPLES;\n"
|
" texcol /= SAMPLES;\n"
|
||||||
" int depth = int(floor(texcol.x * 16777216.0));\n"
|
" int depth = clamp(int(texcol.x * 16777216.0), 0, 0xFFFFFF);\n"
|
||||||
|
|
||||||
// Convert to Z24 format
|
// Convert to Z24 format
|
||||||
" int4 workspace;\n"
|
" int4 workspace;\n"
|
||||||
|
|
|
@ -294,7 +294,7 @@ void TextureCache::CompileShaders()
|
||||||
"\n"
|
"\n"
|
||||||
"void main(){\n"
|
"void main(){\n"
|
||||||
" vec4 texcol = texture(samp9, vec3(f_uv0.xy, %s));\n"
|
" vec4 texcol = texture(samp9, vec3(f_uv0.xy, %s));\n"
|
||||||
" int depth = int(floor(texcol.x * 16777216.0));\n"
|
" int depth = clamp(int(texcol.x * 16777216.0), 0, 0xFFFFFF);\n"
|
||||||
|
|
||||||
// Convert to Z24 format
|
// Convert to Z24 format
|
||||||
" ivec4 workspace;\n"
|
" ivec4 workspace;\n"
|
||||||
|
|
|
@ -487,7 +487,7 @@ static void WriteZ16Encoder(char*& p,API_TYPE ApiType)
|
||||||
|
|
||||||
WriteSampleColor(p, "r", "depth", 0, 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, " expanded.r = floor(depth / (256.0 * 256.0));\n");
|
||||||
WRITE(p, " depth -= expanded.r * 256.0 * 256.0;\n");
|
WRITE(p, " depth -= expanded.r * 256.0 * 256.0;\n");
|
||||||
WRITE(p, " expanded.g = floor(depth / 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);
|
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, " expanded.r = floor(depth / (256.0 * 256.0));\n");
|
||||||
WRITE(p, " depth -= expanded.r * 256.0 * 256.0;\n");
|
WRITE(p, " depth -= expanded.r * 256.0 * 256.0;\n");
|
||||||
WRITE(p, " expanded.g = floor(depth / 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);
|
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, " expanded.r = floor(depth / (256.0 * 256.0));\n");
|
||||||
WRITE(p, " depth -= expanded.r * 256.0 * 256.0;\n");
|
WRITE(p, " depth -= expanded.r * 256.0 * 256.0;\n");
|
||||||
WRITE(p, " expanded.g = floor(depth / 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);
|
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, " expanded.r = floor(depth / (256.0 * 256.0));\n");
|
||||||
WRITE(p, " depth -= expanded.r * 256.0 * 256.0;\n");
|
WRITE(p, " depth -= expanded.r * 256.0 * 256.0;\n");
|
||||||
WRITE(p, " expanded.g = floor(depth / 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++)
|
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, " 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);
|
WRITE(p, " depth%i -= expanded%i.r * 256.0 * 256.0;\n", i, i);
|
||||||
|
|
Loading…
Reference in New Issue