X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Frasterize;a=blobdiff_plain;f=raster.c;h=b4f466fcb0504dfc9b69a7a32e8770e7b01f1b93;hp=2be94da36538c4b31795c9827d5bf6444083e195;hb=95850b98f73ad7033af60a30e324e9c3cda55389;hpb=143da66e7f625b7f195a115b9740a748ee003534 diff --git a/raster.c b/raster.c index 2be94da..b4f466f 100644 --- a/raster.c +++ b/raster.c @@ -334,6 +334,7 @@ color_t _do_phong_lighting(raster_t* p, vert_t vert) { #if LIGHTING color_t color = COLOR_BLACK; + color.a = vert.c.a; for (list_t* i = p->lights; i; i = i->link) { light_t light = *(light_t*)i->val; vec_t mpos = vert.v; @@ -428,18 +429,25 @@ void raster_draw_tri(raster_t* p, const tri_t* triangle) if (S(-1.0) < v.z && v.z < *n) { #endif color_t* c = p->pixels + y * p->w + x; + color_t newC; #if LIGHTING == 2 || (!LIGHTING && SMOOTH_COLOR) - *c = color_interp2(color1, color2, color3, b); + newC = color_interp2(color1, color2, color3, b); #elif LIGHTING == 3 && SMOOTH_COLOR - *c = _do_phong_lighting(p, tri_interp(tl, b)); + newC = _do_phong_lighting(p, tri_interp(tl, b)); #elif LIGHTING == 3 && !SMOOTH_COLOR vert_t d = vert_new(tri_point(t, b)); d.c = tri_color(t); d.n = tri_normal2(t, b); - *c = _do_phong_lighting(p, d); + newC = _do_phong_lighting(p, d); #else - *c = color; + newC = color; +#endif + +#if BLENDING + *c = color_blend(*c, newC); +#else + *c = newC; #endif #if DEPTH_TEST