Revision: 17714
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17714
Author:   mxcurioni
Date:     2008-12-04 11:57:02 +0100 (Thu, 04 Dec 2008)

Log Message:
-----------
fixed OSA and tile rendering problems

Modified Paths:
--------------
    branches/soc-2008-mxcurioni/source/blender/render/intern/source/rendercore.c

Modified: 
branches/soc-2008-mxcurioni/source/blender/render/intern/source/rendercore.c
===================================================================
--- 
branches/soc-2008-mxcurioni/source/blender/render/intern/source/rendercore.c    
    2008-12-04 09:37:42 UTC (rev 17713)
+++ 
branches/soc-2008-mxcurioni/source/blender/render/intern/source/rendercore.c    
    2008-12-04 10:57:02 UTC (rev 17714)
@@ -901,28 +901,34 @@
        ps->shadfac= 0;
 }
 
-
-
-static void freestyle_enhance_add(RenderPart *pa, float *rectf)
+static void freestyle_enhance_add(RenderPart *pa, RenderLayer *rl)
 {
-       int x, y;
-       float* freestyle;
-       
-       RenderLayer* rl= render_get_active_layer( R.freestyle_render, 
R.freestyle_render->result );
-       if( rl->rectf == NULL)
-               return;
-       
-       
-       for( x = pa->disprect.xmin + pa->crop; x < pa->disprect.xmax - 
pa->crop; x++) {
-               for( y = pa->disprect.ymin + pa->crop; y < pa->disprect.ymax - 
pa->crop; y++) {
-                       
-                       freestyle = rl->rectf + 4 * (R.recty * x + y);          
        
-                       if( freestyle[3] > 0.0)
-                               addAlphaOverFloat(rectf, freestyle);
-                       rectf += 4;     
-
-               }
-       }
+    RenderLayer *freestyle_rl;
+    RenderLayer *rlpp[RE_MAX_OSA];
+    int totsample;
+    int x, y, od;
+    float* freestyle;
+   
+    freestyle_rl = render_get_active_layer( R.freestyle_render, 
R.freestyle_render->result );
+    if( freestyle_rl->rectf == NULL)
+        return;
+   
+    totsample= get_sample_layers(pa, rl, rlpp);
+    od = 0;
+   
+    for( y = pa->disprect.ymin; y < pa->disprect.ymax; y++) {
+        for( x = pa->disprect.xmin; x < pa->disprect.xmax; x++, od++) {
+            int sample;
+           
+            freestyle = freestyle_rl->rectf + 4 * (R.rectx * y + x);
+            if( freestyle[3] > 0.0) {
+                for( sample = 0; sample < totsample; sample++) {
+                    float *rgbrect = rlpp[sample]->rectf + 4*od;
+                    addAlphaOverFloat(rgbrect, freestyle);
+                }
+            }
+        }
+    }
 }
 
 static void edge_enhance_add(RenderPart *pa, float *rectf, float *arect)
@@ -1245,7 +1251,7 @@
                
                if(rl->layflag & SCE_LAY_FRS) 
                        if(R.r.mode & R_EDGE_FRS)
-                               freestyle_enhance_add(pa, rl->rectf);
+                               freestyle_enhance_add(pa, rl);
                                
                if(rl->passflag & SCE_PASS_VECTOR)
                        reset_sky_speed(pa, rl);
@@ -1413,7 +1419,7 @@
                
                if(rl->layflag & SCE_LAY_FRS) 
                        if(R.r.mode & R_EDGE_FRS)
-                               freestyle_enhance_add(pa, rl->rectf);
+                               freestyle_enhance_add(pa, rl);
                
                if(rl->passflag & SCE_PASS_VECTOR)
                        reset_sky_speed(pa, rl);


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

Reply via email to