Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2004-07-16 00:03:35 +0400
committerTon Roosendaal <ton@blender.org>2004-07-16 00:03:35 +0400
commitf7a4b6f1d7ce47a21b7c8db9c81a0d1ced93f1bd (patch)
treeba5e087605aa46011ffc6cab707e4be24efd0716 /source
parentce51ed822ddd4d32d12b8724ac3b53bbd39c7a3f (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.c24
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) */