mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-06 19:03:48 +00:00
Fix issues with software clipping:
* fixed max screen Y calculation. It fixes bug in Top Gear Overdrive, #2450 * fixed typo in rasterise().
This commit is contained in:
parent
e07b09b4d0
commit
92c9bd8408
|
@ -360,17 +360,21 @@ f32 renderAndDrawTriangles(const SPVertex *_pVertices,
|
||||||
int dzdx = calcDzDx(pVtxClip);
|
int dzdx = calcDzDx(pVtxClip);
|
||||||
vertexi vdraw[3];
|
vertexi vdraw[3];
|
||||||
for (u32 k = 0; k < 3; ++k) {
|
for (u32 k = 0; k < 3; ++k) {
|
||||||
for (u32 k = 0; k < 3; ++k) {
|
const u32 idx = clockwise ? k : 3 - k - 1;
|
||||||
const u32 idx = clockwise ? k : 3 - k - 1;
|
maxY = std::max(maxY, pVtxClip[idx].y);
|
||||||
maxY = std::max(maxY, pVtxClip[idx].y);
|
vdraw[k].x = floatToFixed16(pVtxClip[idx].x);
|
||||||
vdraw[k].x = floatToFixed16(pVtxClip[idx].x);
|
vdraw[k].y = floatToFixed16(pVtxClip[idx].y);
|
||||||
vdraw[k].y = floatToFixed16(pVtxClip[idx].y);
|
vdraw[k].z = floatToFixed16(pVtxClip[idx].z);
|
||||||
vdraw[k].z = floatToFixed16(pVtxClip[idx].z);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Rasterize(vdraw, 3, dzdx);
|
Rasterize(vdraw, 3, dzdx);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
auto calcMaxY = [&maxY](const vertexclip* pVtxClip)
|
||||||
|
{
|
||||||
|
for (u32 k = 0; k < 3; ++k)
|
||||||
|
maxY = std::max(maxY, pVtxClip[k].y);
|
||||||
|
};
|
||||||
|
|
||||||
for (u32 i = 0; i < _numElements; i += 3) {
|
for (u32 i = 0; i < _numElements; i += 3) {
|
||||||
u32 orbits = 0;
|
u32 orbits = 0;
|
||||||
u32 modify = 0;
|
u32 modify = 0;
|
||||||
|
@ -402,6 +406,8 @@ f32 renderAndDrawTriangles(const SPVertex *_pVertices,
|
||||||
|
|
||||||
if (needResterise)
|
if (needResterise)
|
||||||
rasterise(vclip, clockwise);
|
rasterise(vclip, clockwise);
|
||||||
|
else
|
||||||
|
calcMaxY(vclip);
|
||||||
} else {
|
} else {
|
||||||
assert(modify == 0);
|
assert(modify == 0);
|
||||||
// No screen space coordinates, so use clipping in homogeneous space.
|
// No screen space coordinates, so use clipping in homogeneous space.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user