notes on rendering transparent polys: the "has_transparency" flag for textures are ignored in the new rasterizer. There are 2 transparent primitives: submit_alt_tp, and submit_plt_tp rather than calling submit_alt() with a texture that has its tranparent flag set, you must call: submit_alt_tp() This is because the _tp() primitives are not rendered in a standard manner, and the functions take extra arguments. These arguments are the verts of the polygon, which must be in ccw order. Transparency polys must be horizontally convex. You do not submit edges for transparency polys. Transparency polys do not share edges. If you are drawing a mesh with edge sharing and some transparency polys, always mark these polys as null for the purpose of edge sharing. when you are finished drawing a frame, call: raster::draw_transparent_polys(); this draws all of the transparency polys back to front. e.g. draw batch raster::sweep_and_draw(); draw batch raster::sweep_and_draw(); draw batch raster::sweep_and_draw(); raster::draw_transparent_polys(); to draw a transparency triangle you might use: vert_3s v0, v1, v2; .. set up verts .. const vert_3s * verts[3] = { &v0, &v1, &v2 }; submit_plt_tp(v0,v1,v2, tmap, uvs[iv0], uvs[iv1], uvs[iv2],verts,3 );