Skip to content

Commit c1fea26

Browse files
committed
renderer: Implement fractional-correct rendering
renderer: Implement fog support renderer: Implement correct Zbuffer sampling
1 parent 3e2d8d8 commit c1fea26

File tree

3 files changed

+435
-374
lines changed

3 files changed

+435
-374
lines changed

src/gs/gs.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,8 @@ void gs_start_primitive(struct ps2_gs* gs) {
169169
}
170170

171171
static inline void gs_unpack_vertex(struct ps2_gs* gs, struct gs_vertex* v) {
172-
v->x = (v->xyz & 0xffff) >> 4;
173-
v->y = ((v->xyz >> 16) & 0xffff) >> 4;
172+
v->x = v->xyz & 0xffff;
173+
v->y = (v->xyz >> 16) & 0xffff;
174174
v->z = v->xyz >> 32;
175175
v->r = v->rgbaq & 0xff;
176176
v->g = (v->rgbaq >> 8) & 0xff;
@@ -198,6 +198,7 @@ void gs_write_vertex(struct ps2_gs* gs, uint64_t data, int discard) {
198198
gs->vq[gs->vqi].st = gs->st;
199199
gs->vq[gs->vqi].uv = gs->uv;
200200
gs->vq[gs->vqi].rgbaq = gs->rgbaq;
201+
201202
gs->attr = (gs->prmodecont & 1) ? gs->prim : gs->prmode;
202203

203204
// Cache PRIM/PRMODE fields
@@ -217,8 +218,8 @@ void gs_write_vertex(struct ps2_gs* gs, uint64_t data, int discard) {
217218
// for (int c = 0; c < 2; c++) {
218219
// uint32_t fbp = (gs->context[c].frame & 0x1ff) << 11;
219220
// uint32_t fbw = ((gs->context[c].frame >> 16) & 0x3f) << 6;
220-
// uint32_t xoff = (gs->context[c].xyoffset & 0xffff) >> 4;
221-
// uint32_t yoff = ((gs->context[c].xyoffset >> 32) & 0xffff) >> 4;
221+
// uint32_t xoff = (gs->context[c].xyoffset & 0xffff);
222+
// uint32_t yoff = ((gs->context[c].xyoffset >> 32) & 0xffff);
222223
// int scax0 = gs->context[c].scissor & 0x3ff;
223224
// int scay0 = (gs->context[c].scissor >> 32) & 0x3ff;
224225
// int scax1 = (gs->context[c].scissor >> 16) & 0x3ff;
@@ -496,8 +497,8 @@ static inline void gs_unpack_tex2(struct ps2_gs* gs, int i) {
496497
}
497498

498499
static inline void gs_unpack_xyoffset(struct ps2_gs* gs, int i) {
499-
gs->context[i].ofx = (gs->context[i].xyoffset & 0xffff) >> 4;
500-
gs->context[i].ofy = ((gs->context[i].xyoffset >> 32) & 0xffff) >> 4;
500+
gs->context[i].ofx = gs->context[i].xyoffset & 0xffff;
501+
gs->context[i].ofy = (gs->context[i].xyoffset >> 32) & 0xffff;
501502
}
502503

503504
static inline void gs_unpack_miptbp1(struct ps2_gs* gs, int i) {

src/gs/gs.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,8 @@ struct gs_vertex {
148148
uint32_t g;
149149
uint32_t b;
150150
uint32_t a;
151-
int16_t x;
152-
int16_t y;
151+
int32_t x;
152+
int32_t y;
153153
uint32_t z;
154154
uint32_t u;
155155
uint32_t v;

0 commit comments

Comments
 (0)