X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosdemo;a=blobdiff_plain;f=src%2Fpolyfill.h;h=86c794739e8649d9f7a119d2efc1227eb94c4cfe;hp=2a6b42de0ddd1c5eee65f57cf5dc7e107097e386;hb=d956a9d9273eebfacfda58cb3bafff017269d5dc;hpb=07ce18b114e1e01b2a85a04079128f3eb754de1d diff --git a/src/polyfill.h b/src/polyfill.h index 2a6b42d..86c7947 100644 --- a/src/polyfill.h +++ b/src/polyfill.h @@ -2,24 +2,39 @@ #define POLYFILL_H_ #include "inttypes.h" +#include "3dgfx.h" + +#define POLYFILL_MODE_MASK 0x03 +#define POLYFILL_TEX_BIT 0x04 +#define POLYFILL_BLEND_BIT 0x08 enum { - POLYFILL_WIRE, + POLYFILL_WIRE = 0, POLYFILL_FLAT, POLYFILL_GOURAUD, - POLYFILL_TEX, - POLYFILL_TEX_GOURAUD + + POLYFILL_TEX_WIRE = 4, + POLYFILL_TEX_FLAT, + POLYFILL_TEX_GOURAUD, + + POLYFILL_BLEND_WIRE = 8, + POLYFILL_BLEND_FLAT, + POLYFILL_BLEND_GOURAUD, + + POLYFILL_BLEND_TEX_WIRE = 12, + POLYFILL_BLEND_TEX_FLAT, + POLYFILL_BLEND_TEX_GOURAUD }; /* projected vertices for the rasterizer */ struct pvertex { int32_t x, y; /* 24.8 fixed point */ int32_t u, v; /* 16.16 fixed point */ - int32_t r, g, b; /* int 0-255 */ + int32_t r, g, b, a; /* int 0-255 */ }; struct pimage { - uint16_t *pixels; + g3d_pixel *pixels; int width, height; int xshift, yshift; @@ -30,10 +45,18 @@ extern struct pimage pfill_fb; extern struct pimage pfill_tex; void polyfill(int mode, struct pvertex *verts, int nverts); + void polyfill_wire(struct pvertex *verts, int nverts); void polyfill_flat(struct pvertex *verts, int nverts); void polyfill_gouraud(struct pvertex *verts, int nverts); -void polyfill_tex(struct pvertex *verts, int nverts); +void polyfill_tex_wire(struct pvertex *verts, int nverts); +void polyfill_tex_flat(struct pvertex *verts, int nverts); void polyfill_tex_gouraud(struct pvertex *verts, int nverts); +void polyfill_blend_wire(struct pvertex *verts, int nverts); +void polyfill_blend_flat(struct pvertex *verts, int nverts); +void polyfill_blend_gouraud(struct pvertex *verts, int nverts); +void polyfill_blend_tex_wire(struct pvertex *verts, int nverts); +void polyfill_blend_tex_flat(struct pvertex *verts, int nverts); +void polyfill_blend_tex_gouraud(struct pvertex *verts, int nverts); #endif /* POLYFILL_H_ */