Change destination alpha handling. The blending method introduced in rev 1921 was not the correct way to do it. This way was suggested by hrydgard in October and I should have listened. A simple pixel shader as hrydgard suggested cannot be used because the alpha is not set if the pixel is discarded due to failing depth (after z texture) or alpha (result of tev stages) tests. There is a bit of a performance hit so there should be an option to disable the second render pass which sets the alpha because it is probably not needed most of the time.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2662 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
donkopunchstania
2009-03-16 02:47:48 +00:00
parent b1b2868c8b
commit 90254bd924
8 changed files with 59 additions and 65 deletions

View File

@ -67,7 +67,7 @@ void PixelShaderCache::SetShader()
DVSTARTPROFILE();
PIXELSHADERUID uid;
GetPixelShaderId(uid, PixelShaderManager::GetTextureMask(), false, false);
GetPixelShaderId(uid, PixelShaderManager::GetTextureMask(), false, false, false);
PSCache::iterator iter;
iter = PixelShaders.find(uid);
@ -85,7 +85,7 @@ void PixelShaderCache::SetShader()
}
bool HLSL = false;
const char *code = GeneratePixelShader(PixelShaderManager::GetTextureMask(), false, false, HLSL);
const char *code = GeneratePixelShader(PixelShaderManager::GetTextureMask(), false, false, false, HLSL);
LPDIRECT3DPIXELSHADER9 shader = HLSL ? D3D::CompilePixelShader(code, (int)strlen(code), false) : CompileCgShader(code);
if (shader)
{