summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorTony Wasserka <NeoBrainX@gmail.com>2013-12-30 20:17:56 +0100
committerTony Wasserka <NeoBrainX@gmail.com>2013-12-30 20:18:53 +0100
commitbbde0754207c1a5dbb39f0b4fc32cbdd66d66400 (patch)
tree2c32ef13e83bf5adf468cd1185a0552c4356a732 /Source/Core
parenta5bfdbf6cd32a66a0b45d9af11b6037137500fd5 (diff)
Software renderer: Add a zfreeze related TODO.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/VideoBackends/Software/Src/Rasterizer.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/Source/Core/VideoBackends/Software/Src/Rasterizer.cpp b/Source/Core/VideoBackends/Software/Src/Rasterizer.cpp
index fa10ac38af..377a437c64 100644
--- a/Source/Core/VideoBackends/Software/Src/Rasterizer.cpp
+++ b/Source/Core/VideoBackends/Software/Src/Rasterizer.cpp
@@ -385,6 +385,10 @@ void DrawTriangleFrontFace(OutputVertexData *v0, OutputVertexData *v1, OutputVer
float w[3] = { 1.0f / v0->projectedPosition.w, 1.0f / v1->projectedPosition.w, 1.0f / v2->projectedPosition.w };
InitSlope(&WSlope, w[0], w[1], w[2], fltdx31, fltdx12, fltdy12, fltdy31);
+ // TODO: The zfreeze emulation is not quite correct, yet!
+ // Many things might prevent us from reaching this line (culling, clipping, scissoring).
+ // However, the zslope is always guaranteed to be calculated unless all vertices are trivially rejected during clipping!
+ // We're currently sloppy at this since we abort early if any of the culling/clipping/scissoring tests fail.
if (!bpmem.genMode.zfreeze || !g_SWVideoConfig.bZFreeze)
InitSlope(&ZSlope, v0->screenPosition[2], v1->screenPosition[2], v2->screenPosition[2], fltdx31, fltdx12, fltdy12, fltdy31);