diff options
| author | NanoByte011 <nanobyte011@hotmail.com> | 2015-01-13 02:55:25 -0700 |
|---|---|---|
| committer | Scott Mansell <phiren@gmail.com> | 2015-01-23 03:32:31 +1300 |
| commit | add59b3bea032e331363dcf28361f8e0de65e43d (patch) | |
| tree | c1cb3a129663f4ec68e6b8f165508ef5e9b5ebc8 /Source/Core/VideoBackends/OGL/VertexManager.cpp | |
| parent | 6d5065c58d06e14a0c92632ce794958ddff977f3 (diff) | |
Fixes Mario Tennis Gimmick Courts and adds support for FastDepthCalc
- Calculate ZSlope every flush but only set PixelShader Constant on Reset Buffer when zfreeze
- Fixed another Pixel Shader bug in D3D that was giving me grief
Diffstat (limited to 'Source/Core/VideoBackends/OGL/VertexManager.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/VertexManager.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/Source/Core/VideoBackends/OGL/VertexManager.cpp b/Source/Core/VideoBackends/OGL/VertexManager.cpp index 859a3b8db4..81c377fd02 100644 --- a/Source/Core/VideoBackends/OGL/VertexManager.cpp +++ b/Source/Core/VideoBackends/OGL/VertexManager.cpp @@ -89,6 +89,9 @@ void VertexManager::ResetBuffer(u32 stride) buffer = s_indexBuffer->Map(MAXIBUFFERSIZE * sizeof(u16)); IndexGenerator::Start((u16*)buffer.first); s_index_offset = buffer.second; + + if (bpmem.genMode.zfreeze) + PixelShaderManager::SetZSlope(ZSlope.dfdx, ZSlope.dfdy, ZSlope.f0); } void VertexManager::Draw(u32 stride) @@ -140,12 +143,10 @@ void VertexManager::vFlush(bool useDstAlpha) PrepareDrawBuffers(stride); - if (!bpmem.genMode.zfreeze && IndexGenerator::GetIndexLen() >= 3) - { + if (!bpmem.genMode.zfreeze) CalculateZSlope(stride); - } - // if cull mode is CULL_ALL, ignore triangles and quads + // If cull mode is CULL_ALL, do not render these triangles if (bpmem.genMode.cullmode == GenMode::CULL_ALL && current_primitive_type == PRIMITIVE_TRIANGLES) return; |
