summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Software/Clipper.cpp
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2021-04-23 14:06:02 -0400
committerGitHub <noreply@github.com>2021-04-23 14:06:02 -0400
commit4ab92d47574aa2388d39d6740ac85cc3324a15b8 (patch)
tree6c3c47fda1e158d2a0c40a02b82e0117ff554265 /Source/Core/VideoBackends/Software/Clipper.cpp
parent4d37dad20d230b003b74e38ff4c5af68e6ed232e (diff)
parent5b1c6328626557bbb25fe290738e7c6e7069af68 (diff)
Merge pull request #9350 from Pokechu22/sw-viewport
Software: Invert backface test when viewport is positive
Diffstat (limited to 'Source/Core/VideoBackends/Software/Clipper.cpp')
-rw-r--r--Source/Core/VideoBackends/Software/Clipper.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/Source/Core/VideoBackends/Software/Clipper.cpp b/Source/Core/VideoBackends/Software/Clipper.cpp
index 417bc63fa3..41a5e07d07 100644
--- a/Source/Core/VideoBackends/Software/Clipper.cpp
+++ b/Source/Core/VideoBackends/Software/Clipper.cpp
@@ -488,6 +488,11 @@ bool CullTest(const OutputVertexData* v0, const OutputVertexData* v1, const Outp
float normalZDir = (x0 * w2 - x2 * w0) * y1 + (x2 * y0 - x0 * y2) * w1 + (y2 * w0 - y0 * w2) * x1;
backface = normalZDir <= 0.0f;
+ // Jimmie Johnson's Anything with an Engine has a positive viewport, while other games have a
+ // negative viewport. The positive viewport does not require vertices to be vertically mirrored,
+ // but the backface test does need to be inverted for things to be drawn.
+ if (xfmem.viewport.ht > 0)
+ backface = !backface;
// TODO: Are these tests / the definition of backface above backwards?
if ((bpmem.genMode.cullmode == CullMode::Back || bpmem.genMode.cullmode == CullMode::All) &&