void WriteRGBA8Encoder(char* p,API_TYPE ApiType) { Write32BitSwizzler(p, GX_TF_RGBA8,ApiType); WRITE(p, " float cl1 = xb - (halfxb * 2);\n"); WRITE(p, " float cl0 = 1.0f - cl1;\n"); WRITE(p, " float4 texSample;\n"); WRITE(p, " float4 color0;\n"); WRITE(p, " float4 color1;\n"); WriteSampleColor(p, "rgba", "texSample",ApiType); WRITE(p, " color0.b = texSample.a;\n"); WRITE(p, " color0.g = texSample.r;\n"); WRITE(p, " color1.b = texSample.g;\n"); WRITE(p, " color1.g = texSample.b;\n"); WriteIncrementSampleX(p,ApiType); WriteSampleColor(p, "rgba", "texSample",ApiType); WRITE(p, " color0.r = texSample.a;\n"); WRITE(p, " color0.a = texSample.r;\n"); WRITE(p, " color1.r = texSample.g;\n"); WRITE(p, " color1.a = texSample.b;\n"); WRITE(p, " ocol0 = (cl0 * color0) + (cl1 * color1);\n"); WriteEncoderEnd(p); }
void WriteRGBA8Encoder(char* p) { Write32BitSwizzler(p, GX_TF_RGBA8); WRITE(p, " float cl1 = xb - (halfxb * 2.0f);\n"); WRITE(p, " float cl0 = 1.0f - cl1;\n"); WRITE(p, " float4 texSample;\n"); WRITE(p, " float4 color0;\n"); WRITE(p, " float4 color1;\n"); WriteSampleColor(p, "rgba", "texSample", 0); WRITE(p, " color0.b = texSample.a;\n"); WRITE(p, " color0.g = texSample.r;\n"); WRITE(p, " color1.b = texSample.g;\n"); WRITE(p, " color1.g = texSample.b;\n"); WriteSampleColor(p, "rgba", "texSample", 1); WRITE(p, " color0.r = texSample.a;\n"); WRITE(p, " color0.a = texSample.r;\n"); WRITE(p, " color1.r = texSample.g;\n"); WRITE(p, " color1.a = texSample.b;\n"); WRITE(p, " ocol0 = (cl0 * color0) + (cl1 * color1);\n"); WriteEncoderEnd(p); }
void WriteZ24Encoder(char* p) { Write32BitSwizzler(p, GX_TF_Z24X8); WRITE(p, " float cl = xb - (halfxb * 2.0f);\n"); WRITE(p, " float depth0;\n"); WRITE(p, " float depth1;\n"); WRITE(p, " float3 expanded0;\n"); WRITE(p, " float3 expanded1;\n"); WriteSampleColor(p, "b", "depth0", 0); WRITE(p, " depth0 = 1.0f - depth0;\n"); WriteSampleColor(p, "b", "depth1", 1); WRITE(p, " depth1 = 1.0f - depth1;\n"); for (int i = 0; i < 2; i++) { WRITE(p, " depth%i *= 16777215.0f;\n", 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.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.0f;\n"); WRITE(p, " ocol0.r = 1.0f;\n"); WRITE(p, " ocol0.a = expanded1.r / 255.0f;\n"); WRITE(p, " }\n"); WriteEncoderEnd(p); }
void WriteZ24Encoder(char* p, API_TYPE ApiType) { Write32BitSwizzler(p, GX_TF_Z24X8,ApiType); WRITE(p, " float cl = xb - (halfxb * 2);\n"); WRITE(p, " float depth0;\n"); WRITE(p, " float depth1;\n"); WRITE(p, " float3 expanded0;\n"); WRITE(p, " float3 expanded1;\n"); WriteSampleColor(p, "b", "depth0",ApiType); WriteIncrementSampleX(p,ApiType); WriteSampleColor(p, "b", "depth1",ApiType); for (int i = 0; i < 2; i++) { 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.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, " } else {\n"); // lower 8 WRITE(p, " ocol0.b = 1.0f;\n"); WRITE(p, " ocol0.g = expanded0.r / 255;\n"); WRITE(p, " ocol0.r = 1.0f;\n"); WRITE(p, " ocol0.a = expanded1.r / 255;\n"); WRITE(p, " }\n"); WriteEncoderEnd(p); }