summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/VertexManager.cpp
diff options
context:
space:
mode:
authorNanoByte011 <nanobyte011@hotmail.com>2015-01-13 02:55:25 -0700
committerScott Mansell <phiren@gmail.com>2015-01-23 03:32:31 +1300
commitadd59b3bea032e331363dcf28361f8e0de65e43d (patch)
treec1cb3a129663f4ec68e6b8f165508ef5e9b5ebc8 /Source/Core/VideoBackends/OGL/VertexManager.cpp
parent6d5065c58d06e14a0c92632ce794958ddff977f3 (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.cpp9
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;