From 4952dec73461732b7e67ecbb5f8f4f7a77df08d4 Mon Sep 17 00:00:00 2001 From: divverent Date: Sun, 7 Dec 2008 19:37:24 +0000 Subject: [PATCH] fix color averaging git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@8582 d7cf8633-e32d-0410-b094-e92efae38249 --- gl_rmain.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/gl_rmain.c b/gl_rmain.c index db2e9da3..193b6565 100644 --- a/gl_rmain.c +++ b/gl_rmain.c @@ -1918,23 +1918,25 @@ skinframe_t *R_SkinFrame_Find(const char *name, int textureflags, int comparewid for(pix = 0; pix < cnt; ++pix) \ { \ w = 0; \ - for(comp = 0; comp < 4; ++comp) \ + for(comp = 0; comp < 3; ++comp) \ w += getpixel; \ if(w) /* ignore perfectly black pixels because that is better for model skins */ \ { \ ++wsum; \ - for(comp = 0; comp < 4; ++comp) \ - avgcolor[comp] += (w = getpixel); \ + /* comp = 3; -- not needed, comp is always 3 when we get here */ \ + w = getpixel; \ + for(comp = 0; comp < 3; ++comp) \ + avgcolor[comp] += getpixel * w; \ + avgcolor[3] += w; \ } \ - avgcolor[4] += w; \ + /* comp = 3; -- not needed, comp is always 3 when we get here */ \ + avgcolor[4] += getpixel; \ } \ - if(avgcolor[3] == 0) /* just fully transparent pixels seen? bad luck... */ \ - avgcolor[3] = 255 * wsum; \ if(avgcolor[3] == 0) /* no pixels seen? even worse */ \ avgcolor[3] = 1; \ - skinframe->avgcolor[0] = avgcolor[2] / (1.0 * avgcolor[3]); \ - skinframe->avgcolor[1] = avgcolor[1] / (1.0 * avgcolor[3]); \ - skinframe->avgcolor[2] = avgcolor[0] / (1.0 * avgcolor[3]); \ + skinframe->avgcolor[0] = avgcolor[2] / (255.0 * avgcolor[3]); \ + skinframe->avgcolor[1] = avgcolor[1] / (255.0 * avgcolor[3]); \ + skinframe->avgcolor[2] = avgcolor[0] / (255.0 * avgcolor[3]); \ skinframe->avgcolor[3] = avgcolor[4] / (255.0 * cnt); \ } -- 2.39.2