mirror of https://github.com/mgba-emu/mgba.git
DS GX: Clean up box test
This commit is contained in:
parent
68a0b5f48e
commit
938c2f84b8
33
src/ds/gx.c
33
src/ds/gx.c
|
@ -539,35 +539,12 @@ static void _flushOutstanding(struct DSGX* gx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool _boxTestVertex(struct DSGX* gx, struct DSGXVertex* vertex) {
|
static bool _boxTestVertex(struct DSGX* gx, struct DSGXVertex* vertex) {
|
||||||
int32_t vx = _dotViewport(vertex, &gx->clipMatrix.m[0]);
|
vertex->viewCoord[0] = _dotViewport(vertex, &gx->clipMatrix.m[0]);
|
||||||
int32_t vy = _dotViewport(vertex, &gx->clipMatrix.m[1]);
|
vertex->viewCoord[1] = _dotViewport(vertex, &gx->clipMatrix.m[1]);
|
||||||
int32_t vz = _dotViewport(vertex, &gx->clipMatrix.m[2]);
|
vertex->viewCoord[2] = _dotViewport(vertex, &gx->clipMatrix.m[2]);
|
||||||
int32_t vw = _dotViewport(vertex, &gx->clipMatrix.m[3]);
|
vertex->viewCoord[3] = _dotViewport(vertex, &gx->clipMatrix.m[3]);
|
||||||
|
|
||||||
vx = (vx + vw) * (int64_t) (gx->viewportWidth << 12) / (vw * 2) + (gx->viewportX1 << 12);
|
return !_cohenSutherlandCode(vertex);
|
||||||
vy = (vy + vw) * (int64_t) (gx->viewportHeight << 12) / (vw * 2) + (gx->viewportY1 << 12);
|
|
||||||
vx >>= 12;
|
|
||||||
vy >>= 12;
|
|
||||||
|
|
||||||
if (vx < gx->viewportX1) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (vx > gx->viewportX2) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (vy < gx->viewportY1) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (vy > gx->viewportY2) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (vz < -vw) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (vz > vw) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool _boxTest(struct DSGX* gx) {
|
static bool _boxTest(struct DSGX* gx) {
|
||||||
|
|
Loading…
Reference in New Issue