diff options
author | Ton Roosendaal <ton@blender.org> | 2006-12-22 15:43:40 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2006-12-22 15:43:40 +0300 |
commit | 080ecf33c1fb13f88c51e2540cf531cce2d79c3c (patch) | |
tree | e03b73d30ea1fe0b468e90b20b2ed3d34f94421e /source | |
parent | fcd3ea7875d3a8bde7dc642b7c45d5ba806c94e2 (diff) |
Bugfix #5491
Ztransp Mask issue: now I did all this work to solve the exceptions, but
forgot the most simple case: regular alpha-over :)
This solves for example AA issues in ztransp-hair over solid faces.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/render/intern/source/rendercore.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index e6ace571156..4efa8bcc844 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -913,10 +913,16 @@ void zbufshadeDA_tile(RenderPart *pa) if(ztramask && solidmask) { unsigned short *sps= solidmask, *spz= ztramask; + unsigned short fullmask= (1<<R.osa)-1; float *fcol= rl->rectf; float *acol= rl->acolrect; int x; - for(x=pa->rectx*pa->recty; x>0; x--, acol+=4, fcol+=4, sps++, spz++) - addAlphaOverFloatMask(fcol, acol, *sps, *spz); + + for(x=pa->rectx*pa->recty; x>0; x--, acol+=4, fcol+=4, sps++, spz++) { + if(*sps == fullmask) + addAlphaOverFloat(fcol, acol); + else + addAlphaOverFloatMask(fcol, acol, *sps, *spz); + } } else { float *fcol= rl->rectf; float *acol= rl->acolrect; |