From add59b3bea032e331363dcf28361f8e0de65e43d Mon Sep 17 00:00:00 2001 From: NanoByte011 Date: Tue, 13 Jan 2015 02:55:25 -0700 Subject: 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 --- Source/Core/VideoBackends/OGL/VertexManager.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'Source/Core/VideoBackends/OGL/VertexManager.cpp') 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; -- cgit v1.2.3