diff options
author | Ton Roosendaal <ton@blender.org> | 2004-07-16 00:03:35 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-07-16 00:03:35 +0400 |
commit | f7a4b6f1d7ce47a21b7c8db9c81a0d1ced93f1bd (patch) | |
tree | ba5e087605aa46011ffc6cab707e4be24efd0716 /source | |
parent | ce51ed822ddd4d32d12b8724ac3b53bbd39c7a3f (diff) |
Shadow buffer render wasn't corrected yet for OSA reconstruction of long
ago... samples where offsetted half a pixel, causing banding in render.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/render/intern/source/shadbuf.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/source/blender/render/intern/source/shadbuf.c b/source/blender/render/intern/source/shadbuf.c index 1abb5a796dc..cf7b81835b7 100644 --- a/source/blender/render/intern/source/shadbuf.c +++ b/source/blender/render/intern/source/shadbuf.c @@ -443,10 +443,6 @@ float testshadowbuf(struct ShadBuf *shb, float *rco, float inp) /* return 1.0: int xs,ys, zs; short a,num; -#ifdef RE_NO_SHADOWS - return 1.0; -#endif - /* if(inp <= 0.0) return 1.0; */ /* rotate renderco en osaco */ @@ -456,8 +452,8 @@ float testshadowbuf(struct ShadBuf *shb, float *rco, float inp) /* return 1.0: MTC_Mat4MulVec4fl(shb->persmat, co); /* rational hom co */ - xs1= siz*(1.0+co[0]/co[3]); - ys1= siz*(1.0+co[1]/co[3]); + xs1= siz*(0.5+co[0]/co[3]); + ys1= siz*(0.5+co[1]/co[3]); /* Clip for z: near and far clip values of the shadow buffer. We * can test for -1.0/1.0 because of the properties of the @@ -488,16 +484,16 @@ float testshadowbuf(struct ShadBuf *shb, float *rco, float inp) /* return 1.0: co[2]= rco[2]+O.dxco[2]; co[3]= 1.0; 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]= xs1- siz*(0.5+co[0]/co[3]); + dx[1]= ys1- siz*(0.5+co[1]/co[3]); co[0]= rco[0]+O.dyco[0]; co[1]= rco[1]+O.dyco[1]; co[2]= rco[2]+O.dyco[2]; co[3]= 1.0; 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]= xs1- siz*(0.5+co[0]/co[3]); + dy[1]= ys1- siz*(0.5+co[1]/co[3]); xres= fac*( fabs(dx[0])+fabs(dy[0]) ); yres= fac*( fabs(dx[1])+fabs(dy[1]) ); @@ -626,8 +622,8 @@ float shadow_halo(LampRen *lar, float *p1, float *p2) co[2]= p1[2]/lar->sh_zfac; co[3]= 1.0; MTC_Mat4MulVec4fl(shb->winmat, co); /* rational hom co */ - xf1= siz*(1.0+co[0]/co[3]); - yf1= siz*(1.0+co[1]/co[3]); + xf1= siz*(0.5+co[0]/co[3]); + yf1= siz*(0.5+co[1]/co[3]); zf1= (co[2]/co[3]); @@ -636,8 +632,8 @@ float shadow_halo(LampRen *lar, float *p1, float *p2) co[2]= p2[2]/lar->sh_zfac; co[3]= 1.0; MTC_Mat4MulVec4fl(shb->winmat, co); /* rational hom co */ - xf2= siz*(1.0+co[0]/co[3]); - yf2= siz*(1.0+co[1]/co[3]); + xf2= siz*(0.5+co[0]/co[3]); + yf2= siz*(0.5+co[1]/co[3]); zf2= (co[2]/co[3]); /* the 2dda (a pixel line formula) */ |