DS GX: Only recalculate W coordinate if it changes

This commit is contained in:
Vicki Pfau 2020-07-28 03:30:48 -07:00
parent 206ba1129d
commit 30268324e8
1 changed files with 4 additions and 2 deletions

View File

@ -398,8 +398,10 @@ static void _stepEndpoint(struct DSGXSoftwareSpan* span) {
int32_t nextX = (span->ep[0].coord[0] & ~0xFFF) + 0x1000;
span->ep[0].coord[0] = nextX;
span->ep[0].wRecip += span->step.stepW;
span->ep[0].coord[3] = (0x7FFFFFFFFFFFFFFF / span->ep[0].wRecip) + 1;
if (span->step.stepW) {
span->ep[0].wRecip += span->step.stepW;
span->ep[0].coord[3] = (0x7FFFFFFFFFFFFFFF / span->ep[0].wRecip) + 1;
}
span->ep[0].stepZ += span->step.stepZ;
span->ep[0].coord[2] = _divideBy(span->ep[0].stepZ, span->ep[0].coord[3]);