There. Fix all the issues where we are using integers when we should be using floats in the texture conversion shaders.

This commit is contained in:
Ryan Houdek 2013-07-21 12:00:20 +00:00
parent 83a79c28ca
commit 82f7b20b91
1 changed files with 35 additions and 35 deletions

View File

@ -204,14 +204,14 @@ void Write32BitSwizzler(char*& p, u32 format, API_TYPE ApiType)
WRITE(p, " float yb = yl * %f;\n", blkH); WRITE(p, " float yb = yl * %f;\n", blkH);
WRITE(p, " float yoff = uv1.y - yb;\n"); WRITE(p, " float yoff = uv1.y - yb;\n");
WRITE(p, " float xp = uv1.x + (yoff * " I_COLORS"[1].x);\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 xb = floor(xel / %f);\n", blkH);
WRITE(p, " float xoff = xel - (xb * %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 xl = floor(x2 / %f);\n", blkW);
WRITE(p, " float xib = x2 - (xl * %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.x = xib + (halfxb * %f);\n", blkW);
WRITE(p, " sampleUv.y = yb + xoff;\n"); WRITE(p, " sampleUv.y = yb + xoff;\n");
@ -541,7 +541,7 @@ void WriteRGBA8Encoder(char* p,API_TYPE ApiType)
{ {
Write32BitSwizzler(p, GX_TF_RGBA8, 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, " float cl0 = 1.0f - cl1;\n");
WRITE(p, " float4 texSample;\n"); WRITE(p, " float4 texSample;\n");
@ -702,24 +702,24 @@ void WriteZ16Encoder(char* p,API_TYPE ApiType)
WriteSampleColor(p, "b", "depth", ApiType); WriteSampleColor(p, "b", "depth", ApiType);
WRITE(p, " depth *= 16777215.0f;\n"); WRITE(p, " depth *= 16777215.0f;\n");
WRITE(p, " expanded.r = floor(depth / (256 * 256));\n"); WRITE(p, " expanded.r = floor(depth / (256.0f * 256.0f));\n");
WRITE(p, " depth -= expanded.r * 256 * 256;\n"); WRITE(p, " depth -= expanded.r * 256.0f * 256.0f;\n");
WRITE(p, " expanded.g = floor(depth / 256);\n"); WRITE(p, " expanded.g = floor(depth / 256.0f);\n");
WRITE(p, " ocol0.b = expanded.g / 255;\n"); WRITE(p, " ocol0.b = expanded.g / 255.0f;\n");
WRITE(p, " ocol0.g = expanded.r / 255;\n"); WRITE(p, " ocol0.g = expanded.r / 255.0f;\n");
WriteIncrementSampleX(p, ApiType); WriteIncrementSampleX(p, ApiType);
WriteSampleColor(p, "b", "depth", ApiType); WriteSampleColor(p, "b", "depth", ApiType);
WRITE(p, " depth *= 16777215.0f;\n"); WRITE(p, " depth *= 16777215.0f;\n");
WRITE(p, " expanded.r = floor(depth / (256 * 256));\n"); WRITE(p, " expanded.r = floor(depth / (256.0f * 256.0f));\n");
WRITE(p, " depth -= expanded.r * 256 * 256;\n"); WRITE(p, " depth -= expanded.r * 256.0f * 256.0f;\n");
WRITE(p, " expanded.g = floor(depth / 256);\n"); WRITE(p, " expanded.g = floor(depth / 256.0f);\n");
WRITE(p, " ocol0.r = expanded.g / 255;\n"); WRITE(p, " ocol0.r = expanded.g / 255.0f;\n");
WRITE(p, " ocol0.a = expanded.r / 255;\n"); WRITE(p, " ocol0.a = expanded.r / 255.0f;\n");
WriteEncoderEnd(p, ApiType); WriteEncoderEnd(p, ApiType);
} }
@ -736,24 +736,24 @@ void WriteZ16LEncoder(char* p,API_TYPE ApiType)
WriteSampleColor(p, "b", "depth", ApiType); WriteSampleColor(p, "b", "depth", ApiType);
WRITE(p, " depth *= 16777215.0f;\n"); WRITE(p, " depth *= 16777215.0f;\n");
WRITE(p, " expanded.r = floor(depth / (256 * 256));\n"); WRITE(p, " expanded.r = floor(depth / (256.0f * 256.0f));\n");
WRITE(p, " depth -= expanded.r * 256 * 256;\n"); WRITE(p, " depth -= expanded.r * 256.0f * 256.0f;\n");
WRITE(p, " expanded.g = floor(depth / 256);\n"); WRITE(p, " expanded.g = floor(depth / 256.0f);\n");
WRITE(p, " depth -= expanded.g * 256;\n"); WRITE(p, " depth -= expanded.g * 256.0f;\n");
WRITE(p, " expanded.b = depth;\n"); WRITE(p, " expanded.b = depth;\n");
WRITE(p, " ocol0.b = expanded.b / 255;\n"); WRITE(p, " ocol0.b = expanded.b / 255.0f;\n");
WRITE(p, " ocol0.g = expanded.g / 255;\n"); WRITE(p, " ocol0.g = expanded.g / 255.0f;\n");
WriteIncrementSampleX(p, ApiType); WriteIncrementSampleX(p, ApiType);
WriteSampleColor(p, "b", "depth", ApiType); WriteSampleColor(p, "b", "depth", ApiType);
WRITE(p, " depth *= 16777215.0f;\n"); WRITE(p, " depth *= 16777215.0f;\n");
WRITE(p, " expanded.r = floor(depth / (256 * 256));\n"); WRITE(p, " expanded.r = floor(depth / (256.0f * 256.0f));\n");
WRITE(p, " depth -= expanded.r * 256 * 256;\n"); WRITE(p, " depth -= expanded.r * 256.0f * 256.0f;\n");
WRITE(p, " expanded.g = floor(depth / 256);\n"); WRITE(p, " expanded.g = floor(depth / 256.0f);\n");
WRITE(p, " depth -= expanded.g * 256;\n"); WRITE(p, " depth -= expanded.g * 256.0f;\n");
WRITE(p, " expanded.b = depth;\n"); WRITE(p, " expanded.b = depth;\n");
WRITE(p, " ocol0.r = expanded.b;\n"); WRITE(p, " ocol0.r = expanded.b;\n");
@ -766,7 +766,7 @@ void WriteZ24Encoder(char* p, API_TYPE ApiType)
{ {
Write32BitSwizzler(p, GX_TF_Z24X8, 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 depth0;\n");
WRITE(p, " float depth1;\n"); WRITE(p, " float depth1;\n");
@ -781,25 +781,25 @@ void WriteZ24Encoder(char* p, API_TYPE ApiType)
{ {
WRITE(p, " depth%i *= 16777215.0f;\n", i); WRITE(p, " depth%i *= 16777215.0f;\n", i);
WRITE(p, " expanded%i.r = floor(depth%i / (256 * 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 * 256;\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);\n", i, i); WRITE(p, " expanded%i.g = floor(depth%i / 256.0f);\n", i, i);
WRITE(p, " depth%i -= expanded%i.g * 256;\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, " expanded%i.b = depth%i;\n", i, i);
} }
WRITE(p, " if(cl > 0.5f) {\n"); WRITE(p, " if(cl > 0.5f) {\n");
// upper 16 // upper 16
WRITE(p, " ocol0.b = expanded0.g / 255;\n"); WRITE(p, " ocol0.b = expanded0.g / 255.0f;\n");
WRITE(p, " ocol0.g = expanded0.b / 255;\n"); WRITE(p, " ocol0.g = expanded0.b / 255.0f;\n");
WRITE(p, " ocol0.r = expanded1.g / 255;\n"); WRITE(p, " ocol0.r = expanded1.g / 255.0f;\n");
WRITE(p, " ocol0.a = expanded1.b / 255;\n"); WRITE(p, " ocol0.a = expanded1.b / 255.0f;\n");
WRITE(p, " } else {\n"); WRITE(p, " } else {\n");
// lower 8 // lower 8
WRITE(p, " ocol0.b = 1.0f;\n"); 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.r = 1.0f;\n");
WRITE(p, " ocol0.a = expanded1.r / 255;\n"); WRITE(p, " ocol0.a = expanded1.r / 255.0f;\n");
WRITE(p, " }\n"); WRITE(p, " }\n");
WriteEncoderEnd(p, ApiType); WriteEncoderEnd(p, ApiType);