Shadowbuffer "soft" option got totally messed up by a commit done 3 months
ago. You could still get soft shadow, but the values to be used had to be
scaled tenfold.

Too bad this now will mean our movie DVD will not render with official
cvs or release... I'll think over some patch to scale down 'soft' values
in certain conditions.
This commit is contained in:
Ton Roosendaal 2006-05-14 10:13:58 +00:00
parent bee09fc6ce
commit 425dc54834

@ -478,20 +478,22 @@ float testshadowbuf(ShadBuf *shb, float *rco, float *dxco, float *dyco, float in
}
/* calculate filter size */
VECCOPY(co, dxco);
co[0]= rco[0]+dxco[0];
co[1]= rco[1]+dxco[1];
co[2]= rco[2]+dxco[2];
co[3]= 1.0;
MTC_Mat4Mul3Vecfl(shb->persmat, co);
MTC_Mat4MulVec4fl(shb->persmat,co); /* rational hom co */
dx[0]= xs1- siz*(1.0+co[0]/co[3]);
dx[1]= ys1- siz*(1.0+co[1]/co[3]);
dx[0]= co[0]/co[3];
dx[1]= co[1]/co[3];
VECCOPY(co, dyco);
co[0]= rco[0]+dyco[0];
co[1]= rco[1]+dyco[1];
co[2]= rco[2]+dyco[2];
co[3]= 1.0;
MTC_Mat4Mul3Vecfl(shb->persmat, co);
MTC_Mat4MulVec4fl(shb->persmat,co); /* rational hom co */
dy[0]= xs1- siz*(1.0+co[0]/co[3]);
dy[1]= ys1- siz*(1.0+co[1]/co[3]);
dy[0]= co[0]/co[3];
dy[1]= co[1]/co[3];
xres= fac*( fabs(dx[0])+fabs(dy[0]) );
yres= fac*( fabs(dx[1])+fabs(dy[1]) );
if(xres<fac) xres= fac;