Revision: 27672
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27672
Author:   blendix
Date:     2010-03-23 12:38:47 +0100 (Tue, 23 Mar 2010)

Log Message:
-----------
Render Branch: lamp distance drawn in 3d view now takes into account
color management so that the cutoff is really at 0.01 of the intensity.

Modified Paths:
--------------
    branches/render25/source/blender/editors/space_view3d/drawobject.c

Modified: branches/render25/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/render25/source/blender/editors/space_view3d/drawobject.c  
2010-03-23 10:44:20 UTC (rev 27671)
+++ branches/render25/source/blender/editors/space_view3d/drawobject.c  
2010-03-23 11:38:47 UTC (rev 27672)
@@ -852,8 +852,13 @@
        glCullFace(GL_BACK);
 }
 
-static float lamp_half_energy_distance(Lamp *la)
+static float lamp_half_energy_distance(Scene *scene, Lamp *la)
 {
+       float cutoff= 0.01f; /* cutoff intensity */
+
+       if(scene->r.color_mgt_flag & R_COLOR_MANAGEMENT)
+               cutoff= srgb_to_linearrgb(cutoff);
+
        switch(la->type) {
                case LA_SUN:
                case LA_HEMI:
@@ -861,7 +866,7 @@
 
                case LA_AREA:
                        if(!la->mode & LA_MULTI_SHADE)
-                               return sqrtf(100.0f);
+                               return sqrtf(1.0f/cutoff);
                        
                        /* fall through */
                case LA_SPOT:
@@ -870,9 +875,9 @@
                        if(la->falloff_type == LA_FALLOFF_CONSTANT)
                                return 1.0f;
                        else if(la->falloff_type == LA_FALLOFF_INVLINEAR)
-                               return maxf(100.0f - 
la->falloff_smooth*la->power, 0.1f);
+                               return maxf(1.0f/cutoff - 
la->falloff_smooth*la->power, 0.1f);
                        else if(la->falloff_type == LA_FALLOFF_INVSQUARE)
-                               return sqrtf(maxf(100.0f - 
la->falloff_smooth*la->power, 0.1f));
+                               return sqrtf(maxf(1.0f/cutoff - 
la->falloff_smooth*la->power, 0.1f));
                        else if(la->falloff_type == LA_FALLOFF_CURVE)
                                return la->dist;
        }
@@ -897,7 +902,7 @@
        }
 
        /* compute lamp distance */
-       lampdist= lamp_half_energy_distance(la);
+       lampdist= lamp_half_energy_distance(scene, la);
        
        /* we first draw only the screen aligned & fixed scale stuff */
        glPushMatrix();


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

Reply via email to