Revision: 15598
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15598
Author:   zaghaghi
Date:     2008-07-16 10:10:23 +0200 (Wed, 16 Jul 2008)

Log Message:
-----------
Bug Fix #17337, now atmosphere works correctly with FSA enabled

Modified Paths:
--------------
    trunk/blender/source/blender/render/intern/source/rendercore.c

Modified: trunk/blender/source/blender/render/intern/source/rendercore.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/rendercore.c      
2008-07-16 07:10:33 UTC (rev 15597)
+++ trunk/blender/source/blender/render/intern/source/rendercore.c      
2008-07-16 08:10:23 UTC (rev 15598)
@@ -671,8 +671,10 @@
        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 @@
        
        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 @@
        
        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 @@
                                        }
 
                                        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 @@
 
                        /* 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);
+                               }
+                       }
                }
        }
 }


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to