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
diff options
context:
space:
mode:
authorHamed Zaghaghi <hamed.zaghaghi@gmail.com>2008-07-16 12:10:23 +0400
committerHamed Zaghaghi <hamed.zaghaghi@gmail.com>2008-07-16 12:10:23 +0400
commit3b8ed8910a74c72d16e76f10e2e62693bb0cc6d2 (patch)
tree4edd8509647c64495f1242fe4747e54c3663d65f /source/blender/render
parent7afacb6ea86ffd3de726f93086ba3fedca428352 (diff)
Bug Fix #17337, now atmosphere works correctly with FSA enabled
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/intern/source/rendercore.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c
index 67be0ce4c00..4520e4c10bb 100644
--- a/source/blender/render/intern/source/rendercore.c
+++ b/source/blender/render/intern/source/rendercore.c
@@ -671,8 +671,10 @@ static void atm_tile(RenderPart *pa, RenderLayer *rl)
RenderPass *zpass;
GroupObject *go;
LampRen *lar;
-
- int x, y;
+ RenderLayer *rlpp[RE_MAX_OSA];
+
+ int totsample, fullsample, sample;
+ int x, y,od;
short first_lamp;
float *zrect;
float *rgbrect;
@@ -683,7 +685,10 @@ static void atm_tile(RenderPart *pa, RenderLayer *rl)
fac = 0.5;
facm = 1.0 - fac;
-
+
+ totsample= get_sample_layers(pa, rl, rlpp);
+ fullsample= (totsample > 1);
+
/* check that z pass is enabled */
if(pa->rectz==NULL) return;
for(zpass= rl->passes.first; zpass; zpass= zpass->next)
@@ -708,9 +713,10 @@ static void atm_tile(RenderPart *pa, RenderLayer *rl)
zrect = zpass->rect;
rgbrect = rl->rectf;
+ od=0;
/* for each x,y and sun lamp*/
for(y=pa->disprect.ymin; y<pa->disprect.ymax; y++) {
- for(x=pa->disprect.xmin; x<pa->disprect.xmax; x++, zrect++, rgbrect+=4) {
+ for(x=pa->disprect.xmin; x<pa->disprect.xmax; x++, zrect++, od++) {
first_lamp = 1;
for(go=R.lights.first; go; go= go->next) {
@@ -724,7 +730,7 @@ static void atm_tile(RenderPart *pa, RenderLayer *rl)
}
if(lar->sunsky->effect_type & LA_SUN_EFFECT_AP){
- VECCOPY(tmp_rgb, rgbrect);
+ VECCOPY(tmp_rgb, (float*)(rgbrect+4*od));
shadeAtmPixel(lar->sunsky, tmp_rgb, x, y, *zrect);
@@ -743,7 +749,16 @@ static void atm_tile(RenderPart *pa, RenderLayer *rl)
/* if at least for one sun lamp aerial perspective was applied*/
if(first_lamp==0)
- VECCOPY(rgbrect, rgb);
+ {
+ if(fullsample) {
+ for(sample=0; sample<totsample; sample++) {
+ VECCOPY((float*)(rlpp[sample]->rectf + od*4), rgb);
+ }
+ }
+ else {
+ VECCOPY((float*)(rgbrect+4*od), rgb);
+ }
+ }
}
}
}