X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosdemo;a=blobdiff_plain;f=src%2Fpolyfill.h;h=86c794739e8649d9f7a119d2efc1227eb94c4cfe;hp=57f0dc46624887634a83baa714b7994fb118e596;hb=d956a9d9273eebfacfda58cb3bafff017269d5dc;hpb=921c229affb2b1da97d7be21d5c86ad045a6fcc3 diff --git a/src/polyfill.h b/src/polyfill.h index 57f0dc4..86c7947 100644 --- a/src/polyfill.h +++ b/src/polyfill.h @@ -2,23 +2,61 @@ #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 */ - unsigned char r, g, b; + int32_t r, g, b, a; /* int 0-255 */ }; +struct pimage { + g3d_pixel *pixels; + int width, height; + + int xshift, yshift; + unsigned int xmask, ymask; +}; + +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_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_ */