[GPU] Cleanup TEV shader code to be less redundant

This commit is contained in:
fleroviux 2023-06-17 01:35:35 +02:00
parent c3acf2b393
commit aef808cdfc

View file

@ -167,35 +167,26 @@ const char* fragmentShader = R"(
void main() { void main() {
if ((u_textureConfig & 1u) != 0u) tev_texture_sources[0] = texture(u_tex0, tex0_UVs); if ((u_textureConfig & 1u) != 0u) tev_texture_sources[0] = texture(u_tex0, tex0_UVs);
// TODO: make TEV logic less redundant
tev_previous_buffer[0] = vec4(0.0); tev_previous_buffer[0] = vec4(0.0);
tev_previous_buffer[1] = u_textureEnvBufferColor; tev_previous_buffer[1] = u_textureEnvBufferColor;
tev_previous = tev_combine(0); for (int i = 0; i < 6; i++) {
tev_previous_buffer[0] = tev_previous_buffer[1]; tev_previous = tev_combine(i);
if ((u_textureEnvUpdateBuffer & 0x100u) != 0u) tev_previous_buffer[1].rgb = tev_previous.rgb;
if ((u_textureEnvUpdateBuffer & 0x1000u) != 0u) tev_previous_buffer[1].a = tev_previous.a;
tev_previous = tev_combine(1); tev_previous_buffer[0] = tev_previous_buffer[1];
tev_previous_buffer[0] = tev_previous_buffer[1];
if ((u_textureEnvUpdateBuffer & 0x200u) != 0u) tev_previous_buffer[1].rgb = tev_previous.rgb;
if ((u_textureEnvUpdateBuffer & 0x2000u) != 0u) tev_previous_buffer[1].a = tev_previous.a;
tev_previous = tev_combine(2); if (i < 4) {
tev_previous_buffer[0] = tev_previous_buffer[1]; if ((u_textureEnvUpdateBuffer & (0x100u << i)) != 0u) {
if ((u_textureEnvUpdateBuffer & 0x400u) != 0u) tev_previous_buffer[1].rgb = tev_previous.rgb; tev_previous_buffer[1].rgb = tev_previous.rgb;
if ((u_textureEnvUpdateBuffer & 0x4000u) != 0u) tev_previous_buffer[1].a = tev_previous.a; }
tev_previous = tev_combine(3); if ((u_textureEnvUpdateBuffer & (0x1000u << i)) != 0u) {
tev_previous_buffer[0] = tev_previous_buffer[1]; tev_previous_buffer[1].a = tev_previous.a;
if ((u_textureEnvUpdateBuffer & 0x800u) != 0u) tev_previous_buffer[1].rgb = tev_previous.rgb; }
if ((u_textureEnvUpdateBuffer & 0x8000u) != 0u) tev_previous_buffer[1].a = tev_previous.a; }
}
tev_previous = tev_combine(4); fragColour = tev_previous;
tev_previous_buffer[0] = tev_previous_buffer[1];
fragColour = tev_combine(5);
if (tev_unimplemented_source) { if (tev_unimplemented_source) {
// fragColour = vec4(1.0, 0.0, 1.0, 1.0); // fragColour = vec4(1.0, 0.0, 1.0, 1.0);