Two fixes for yesterday commit, new Mist pass:

- non OSA case didn't work
- ztransp adding was accidentally using an incorrect alpha value

NOTE: allmost all pass types rendered in OSA with a filter (not box!) were
incorrectly added on solid layers. Like diffuse, AO, etc.
This commit is contained in:
Ton Roosendaal 2008-01-20 14:50:30 +00:00
parent 8ded57d236
commit 518d3b2c36
2 changed files with 11 additions and 2 deletions

@ -484,6 +484,10 @@ static void add_passes(RenderLayer *rl, int offset, ShadeInput *shi, ShadeResult
*fp= (float)shi->obr->ob->index;
}
break;
case SCE_PASS_MIST:
fp= rpass->rect + offset;
*fp= shr->mist;
break;
}
if(col) {
fp= rpass->rect + pixsize*offset;

@ -3790,6 +3790,7 @@ unsigned short *zbuffer_transp_shade(RenderPart *pa, RenderLayer *rl, float *pas
add_transp_speed(rl, od, ssamp.shr[0].winspeed, pass[3], rdrect);
}
else {
float alpha= 0.0f;
short filled, *sp= (short *)(ztramask+od);
/* for each mask-sample we alpha-under colors. then in end it's added using filter */
@ -3812,17 +3813,21 @@ unsigned short *zbuffer_transp_shade(RenderPart *pa, RenderLayer *rl, float *pas
}
}
/* note; cannot use pass[3] for alpha due to filtermask */
for(a=0; a<R.osa; a++) {
add_filt_fmask(1<<a, samp_shr[a].combined, pass, rr->rectx);
alpha+= samp_shr[a].combined[3];
}
if(addpassflag) {
alpha*= sampalpha;
/* merge all in one, and then add */
merge_transp_passes(rl, samp_shr);
add_transp_passes(rl, od, samp_shr, pass[3]);
add_transp_passes(rl, od, samp_shr, alpha);
if(addpassflag & SCE_PASS_VECTOR)
add_transp_speed(rl, od, samp_shr[0].winspeed, pass[3], rdrect);
add_transp_speed(rl, od, samp_shr[0].winspeed, alpha, rdrect);
}
}
}