Software: Invert backface test when viewport is positive
Fixes Jimmie Johnson's Anything with an Engine.
This commit is contained in:
parent
089250fde6
commit
5b1c632862
|
@ -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;
|
float normalZDir = (x0 * w2 - x2 * w0) * y1 + (x2 * y0 - x0 * y2) * w1 + (y2 * w0 - y0 * w2) * x1;
|
||||||
|
|
||||||
backface = normalZDir <= 0.0f;
|
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?
|
// TODO: Are these tests / the definition of backface above backwards?
|
||||||
if ((bpmem.genMode.cullmode == CullMode::Back || bpmem.genMode.cullmode == CullMode::All) &&
|
if ((bpmem.genMode.cullmode == CullMode::Back || bpmem.genMode.cullmode == CullMode::All) &&
|
||||||
|
|
Loading…
Reference in New Issue