fix replace blend mode on citra (which also fixes the clearing workaround)

...also, actually disable depth testing instead of just thinking I did
This commit is contained in:
zetaPRIME 2017-05-03 09:10:02 -04:00
parent 5577b5a6a8
commit 2d93b903e4
2 changed files with 4 additions and 3 deletions

View File

@ -120,7 +120,7 @@ void RenderCore::Open() {
// set up mode defaults
C3D_AlphaBlend(GPU_BLEND_ADD, GPU_BLEND_ADD, GPU_ONE, GPU_ONE_MINUS_SRC_ALPHA, GPU_ONE, GPU_ONE_MINUS_SRC_ALPHA); // premult
C3D_DepthTest(true, GPU_GEQUAL, GPU_WRITE_ALL); // hmm.
C3D_DepthTest(false, GPU_GEQUAL, GPU_WRITE_ALL); // hmm.
C3D_CullFace(GPU_CULL_NONE);
}
@ -160,7 +160,7 @@ namespace {
break;
case BlendMode::Replace:
C3D_AlphaBlend(GPU_BLEND_MAX, GPU_BLEND_MAX, GPU_ONE, GPU_ZERO, GPU_ONE, GPU_ZERO); // flat replace
C3D_AlphaBlend(GPU_BLEND_ADD, GPU_BLEND_ADD, GPU_ONE, GPU_ZERO, GPU_ONE, GPU_ZERO); // flat replace
C3D_TexEnvOp(env, C3D_RGB, 0, 0, 0);
C3D_TexEnvOp(env, C3D_Alpha, GPU_TEVOP_A_SRC_ALPHA, GPU_TEVOP_A_SRC_ALPHA, 0);
C3D_TexEnvFunc(env, C3D_RGB, GPU_REPLACE);

View File

@ -4,7 +4,8 @@
roadmap to v0.5.1 {
- clear bug workaround implemented
^ maybe replace clearing with the workaround entirely?
try to figure out why the workaround doesn't work in citra
- try to figure out why the workaround doesn't work in citra (it was a difference between openGL and PICA blend operations!)
https://github.com/citra-emu/citra/issues/2684
implement more blend modes {
- flat replace
masking