Skip to content

Commit

Permalink
There. Fix all the issues where we are using integers when we should …
Browse files Browse the repository at this point in the history
…be using floats in the texture conversion shaders.
  • Loading branch information
Sonicadvance1 committed Jul 21, 2013
1 parent 83a79c2 commit 82f7b20
Showing 1 changed file with 35 additions and 35 deletions.
70 changes: 35 additions & 35 deletions Source/Core/VideoCommon/Src/TextureConversionShader.cpp
Expand Up @@ -204,14 +204,14 @@ void Write32BitSwizzler(char*& p, u32 format, API_TYPE ApiType)
WRITE(p, " float yb = yl * %f;\n", blkH);
WRITE(p, " float yoff = uv1.y - yb;\n");
WRITE(p, " float xp = uv1.x + (yoff * " I_COLORS"[1].x);\n");
WRITE(p, " float xel = floor(xp / 2);\n");
WRITE(p, " float xel = floor(xp / 2.0f);\n");
WRITE(p, " float xb = floor(xel / %f);\n", blkH);
WRITE(p, " float xoff = xel - (xb * %f);\n", blkH);

WRITE(p, " float x2 = uv1.x * 2;\n");
WRITE(p, " float x2 = uv1.x * 2.0f;\n");
WRITE(p, " float xl = floor(x2 / %f);\n", blkW);
WRITE(p, " float xib = x2 - (xl * %f);\n", blkW);
WRITE(p, " float halfxb = floor(xb / 2);\n");
WRITE(p, " float halfxb = floor(xb / 2.0f);\n");

WRITE(p, " sampleUv.x = xib + (halfxb * %f);\n", blkW);
WRITE(p, " sampleUv.y = yb + xoff;\n");
Expand Down Expand Up @@ -541,7 +541,7 @@ void WriteRGBA8Encoder(char* p,API_TYPE ApiType)
{
Write32BitSwizzler(p, GX_TF_RGBA8, ApiType);

WRITE(p, " float cl1 = xb - (halfxb * 2);\n");
WRITE(p, " float cl1 = xb - (halfxb * 2.0f);\n");
WRITE(p, " float cl0 = 1.0f - cl1;\n");

WRITE(p, " float4 texSample;\n");
Expand Down Expand Up @@ -702,24 +702,24 @@ void WriteZ16Encoder(char* p,API_TYPE ApiType)
WriteSampleColor(p, "b", "depth", ApiType);

WRITE(p, " depth *= 16777215.0f;\n");
WRITE(p, " expanded.r = floor(depth / (256 * 256));\n");
WRITE(p, " depth -= expanded.r * 256 * 256;\n");
WRITE(p, " expanded.g = floor(depth / 256);\n");
WRITE(p, " expanded.r = floor(depth / (256.0f * 256.0f));\n");
WRITE(p, " depth -= expanded.r * 256.0f * 256.0f;\n");
WRITE(p, " expanded.g = floor(depth / 256.0f);\n");

WRITE(p, " ocol0.b = expanded.g / 255;\n");
WRITE(p, " ocol0.g = expanded.r / 255;\n");
WRITE(p, " ocol0.b = expanded.g / 255.0f;\n");
WRITE(p, " ocol0.g = expanded.r / 255.0f;\n");

WriteIncrementSampleX(p, ApiType);

WriteSampleColor(p, "b", "depth", ApiType);

WRITE(p, " depth *= 16777215.0f;\n");
WRITE(p, " expanded.r = floor(depth / (256 * 256));\n");
WRITE(p, " depth -= expanded.r * 256 * 256;\n");
WRITE(p, " expanded.g = floor(depth / 256);\n");
WRITE(p, " expanded.r = floor(depth / (256.0f * 256.0f));\n");
WRITE(p, " depth -= expanded.r * 256.0f * 256.0f;\n");
WRITE(p, " expanded.g = floor(depth / 256.0f);\n");

WRITE(p, " ocol0.r = expanded.g / 255;\n");
WRITE(p, " ocol0.a = expanded.r / 255;\n");
WRITE(p, " ocol0.r = expanded.g / 255.0f;\n");
WRITE(p, " ocol0.a = expanded.r / 255.0f;\n");

WriteEncoderEnd(p, ApiType);
}
Expand All @@ -736,24 +736,24 @@ void WriteZ16LEncoder(char* p,API_TYPE ApiType)
WriteSampleColor(p, "b", "depth", ApiType);

WRITE(p, " depth *= 16777215.0f;\n");
WRITE(p, " expanded.r = floor(depth / (256 * 256));\n");
WRITE(p, " depth -= expanded.r * 256 * 256;\n");
WRITE(p, " expanded.g = floor(depth / 256);\n");
WRITE(p, " depth -= expanded.g * 256;\n");
WRITE(p, " expanded.r = floor(depth / (256.0f * 256.0f));\n");
WRITE(p, " depth -= expanded.r * 256.0f * 256.0f;\n");
WRITE(p, " expanded.g = floor(depth / 256.0f);\n");
WRITE(p, " depth -= expanded.g * 256.0f;\n");
WRITE(p, " expanded.b = depth;\n");

WRITE(p, " ocol0.b = expanded.b / 255;\n");
WRITE(p, " ocol0.g = expanded.g / 255;\n");
WRITE(p, " ocol0.b = expanded.b / 255.0f;\n");
WRITE(p, " ocol0.g = expanded.g / 255.0f;\n");

WriteIncrementSampleX(p, ApiType);

WriteSampleColor(p, "b", "depth", ApiType);

WRITE(p, " depth *= 16777215.0f;\n");
WRITE(p, " expanded.r = floor(depth / (256 * 256));\n");
WRITE(p, " depth -= expanded.r * 256 * 256;\n");
WRITE(p, " expanded.g = floor(depth / 256);\n");
WRITE(p, " depth -= expanded.g * 256;\n");
WRITE(p, " expanded.r = floor(depth / (256.0f * 256.0f));\n");
WRITE(p, " depth -= expanded.r * 256.0f * 256.0f;\n");
WRITE(p, " expanded.g = floor(depth / 256.0f);\n");
WRITE(p, " depth -= expanded.g * 256.0f;\n");
WRITE(p, " expanded.b = depth;\n");

WRITE(p, " ocol0.r = expanded.b;\n");
Expand All @@ -766,7 +766,7 @@ void WriteZ24Encoder(char* p, API_TYPE ApiType)
{
Write32BitSwizzler(p, GX_TF_Z24X8, ApiType);

WRITE(p, " float cl = xb - (halfxb * 2);\n");
WRITE(p, " float cl = xb - (halfxb * 2.0f);\n");

WRITE(p, " float depth0;\n");
WRITE(p, " float depth1;\n");
Expand All @@ -781,25 +781,25 @@ void WriteZ24Encoder(char* p, API_TYPE ApiType)
{
WRITE(p, " depth%i *= 16777215.0f;\n", i);

WRITE(p, " expanded%i.r = floor(depth%i / (256 * 256));\n", i, i);
WRITE(p, " depth%i -= expanded%i.r * 256 * 256;\n", i, i);
WRITE(p, " expanded%i.g = floor(depth%i / 256);\n", i, i);
WRITE(p, " depth%i -= expanded%i.g * 256;\n", i, i);
WRITE(p, " expanded%i.r = floor(depth%i / (256.0f * 256.0f));\n", i, i);
WRITE(p, " depth%i -= expanded%i.r * 256.0f * 256.0f;\n", i, i);
WRITE(p, " expanded%i.g = floor(depth%i / 256.0f);\n", i, i);
WRITE(p, " depth%i -= expanded%i.g * 256.0f;\n", i, i);
WRITE(p, " expanded%i.b = depth%i;\n", i, i);
}

WRITE(p, " if(cl > 0.5f) {\n");
// upper 16
WRITE(p, " ocol0.b = expanded0.g / 255;\n");
WRITE(p, " ocol0.g = expanded0.b / 255;\n");
WRITE(p, " ocol0.r = expanded1.g / 255;\n");
WRITE(p, " ocol0.a = expanded1.b / 255;\n");
WRITE(p, " ocol0.b = expanded0.g / 255.0f;\n");
WRITE(p, " ocol0.g = expanded0.b / 255.0f;\n");
WRITE(p, " ocol0.r = expanded1.g / 255.0f;\n");
WRITE(p, " ocol0.a = expanded1.b / 255.0f;\n");
WRITE(p, " } else {\n");
// lower 8
WRITE(p, " ocol0.b = 1.0f;\n");
WRITE(p, " ocol0.g = expanded0.r / 255;\n");
WRITE(p, " ocol0.g = expanded0.r / 255.0f;\n");
WRITE(p, " ocol0.r = 1.0f;\n");
WRITE(p, " ocol0.a = expanded1.r / 255;\n");
WRITE(p, " ocol0.a = expanded1.r / 255.0f;\n");
WRITE(p, " }\n");

WriteEncoderEnd(p, ApiType);
Expand Down

0 comments on commit 82f7b20

Please sign in to comment.