Revision: 16291
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16291
Author:   unclezeiv
Date:     2008-08-28 23:19:25 +0200 (Thu, 28 Aug 2008)

Log Message:
-----------
Added toggles to disable specularity in environment lighting and from indirect 
lighting. Also, the "No specular" toggle from area lights is now honoured, and 
in general "no specular" lights generate "no specular" virtual point lights.

Modified Paths:
--------------
    branches/soc-2008-unclezeiv/source/blender/makesdna/DNA_scene_types.h
    branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c
    branches/soc-2008-unclezeiv/source/blender/src/buttons_scene.c

Modified: branches/soc-2008-unclezeiv/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/makesdna/DNA_scene_types.h       
2008-08-28 19:37:49 UTC (rev 16290)
+++ branches/soc-2008-unclezeiv/source/blender/makesdna/DNA_scene_types.h       
2008-08-28 21:19:25 UTC (rev 16291)
@@ -318,12 +318,12 @@
        int lightcuts_max_cut;
        short lightcuts_env_map;
        short lightcuts_indirect;
+       short lightcuts_color_weight;
+       short lightcuts_pad;
        float lightcuts_indir_fac;
-       short lightcuts_options;
-       short lightcuts_color_weight;
+       int lightcuts_options;
        float lightcuts_indir_dist;
        float lightcuts_env_map_fac;
-       int lightcuts_pad;
        int lightcuts_debug_options;
 } RenderData;
 

Modified: 
branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c 
2008-08-28 19:37:49 UTC (rev 16290)
+++ branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c 
2008-08-28 21:19:25 UTC (rev 16291)
@@ -92,12 +92,14 @@
 #define FALLOFF_MIX    3
 #define FALLOFF_SLIDER 3
 
-#define LC_OPT_FIXED_DIRS  0x01
-#define LC_OPT_ONLY_INDIR  0x02
-#define LC_OPT_2ND_BOUNCE  0x04
-#define LC_OPT_ENV_LIGHT   0x08
-#define LC_OPT_INDIR_MESH  0x10
-#define LC_OPT_NO_CLAMP    0x20
+#define LC_OPT_FIXED_DIRS  0x0001
+#define LC_OPT_ONLY_INDIR  0x0002
+#define LC_OPT_2ND_BOUNCE  0x0004
+#define LC_OPT_ENV_LIGHT   0x0008
+#define LC_OPT_INDIR_MESH  0x0010
+#define LC_OPT_NO_CLAMP    0x0020
+#define LC_OPT_ENV_NOSPEC  0x0040
+#define LC_OPT_IND_NOSPEC  0x0080
 
 #define LC_LAR_INDIR 0x01
 
@@ -876,6 +878,9 @@
        lar->dist= orig->dist;
        lar->distkw= lar->dist * lar->dist; /* who uses this? */
        
+       if (orig->mode & LA_NO_SPEC)
+               lar->mode |= LA_NO_SPEC;
+       
        lar->lay= orig->lay;
        /* same as original area light */
        VECCOPY(lar->vec, orig->vec);
@@ -956,6 +961,9 @@
                lamp_init(re, lar);
                lar->type = LA_SUN;
                
+               if (lcd->options & LC_OPT_ENV_NOSPEC)
+                       lar->mode |= LA_NO_SPEC;
+               
                lar->lay= 0xffffffff; /* XXX: check */
                
                VECCOPY(lar->co, co);
@@ -1406,6 +1414,9 @@
        
        lar->lightcuts_options= LC_LAR_INDIR;
        
+       if (orig->mode & LA_NO_SPEC || lcd->options & LC_OPT_IND_NOSPEC)
+               lar->mode |= LA_NO_SPEC;
+       
        /* lamp is oriented as (negated) face normal */
        VECCOPY(lar->vec, vla->n);
        VECNEG(lar->vec);

Modified: branches/soc-2008-unclezeiv/source/blender/src/buttons_scene.c
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/src/buttons_scene.c      
2008-08-28 19:37:49 UTC (rev 16290)
+++ branches/soc-2008-unclezeiv/source/blender/src/buttons_scene.c      
2008-08-28 21:19:25 UTC (rev 16291)
@@ -3447,34 +3447,37 @@
        uiDefButI(block, NUM, B_DIFF, "Max cut:", 97, -22, 95, 20, 
&G.scene->r.lightcuts_max_cut, 0, 5000, 0, 0, "The maximum size of the cut 
(higher values increase rendering times for occluded areas)");
        uiBlockEndAlign(block);
        
+       uiDefButI(block, NUM, B_DIFF, "Area lights:", 0, -54, 192, 20, 
&G.scene->r.lightcuts_area_lights, 0, 100000, 0, 0, "The number of point lights 
generated for all the area lights");
+
        uiBlockBeginAlign(block);
-       uiDefButBitI(block, TOG, SCE_PASS_LCFAUX, B_SET_PASS, "False color", 
200, 0, 48, 20, &srl->passflag, 0, 0, 0, 0, "(Debug option) Deliver false color 
pass");
-       uiDefButI(block, NUM, B_DIFF, "Debug:", 200, -22, 48, 20, 
&G.scene->r.lightcuts_debug_options, 0, 0xffffffff, 0, 0, "(Debug option) 
Slider to select debug prints");
-       uiDefButBitS(block, TOG, 0x10, B_DIFF, "VPL Mesh", 200, -44, 48, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "(Debug option) Creates a mesh to 
visualize indirect light placement");
-       uiDefButBitS(block, TOG, 0x20, B_DIFF, "No clamp", 200, -66, 48, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "(Debug option) Disable clamping 
mechanism for virtual point lights");
+       uiDefButBitI(block, TOG, 0x8, B_DIFF, "Enable", 0, -86, 62, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "Enable environment map lighting");
+       uiDefButS(block, NUM, B_DIFF, "Envmap:", 63, -86, 192-64, 20, 
&G.scene->r.lightcuts_env_map, 0, 20000, 0, 0, "How many point lights are used 
to convert the environment map");
+       uiDefButBitI(block, TOG, 0x0040, B_DIFF, "No spec", 0, -108, 62, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "Disable specular from environment 
mapping");
+       uiDefButF(block, NUM, B_DIFF, "Fac:", 63, -108, 192-64, 20, 
&G.scene->r.lightcuts_env_map_fac, 0.0f, 100.0f, 0, 0, "Intensity of 
environment map");
        uiBlockEndAlign(block);
        
        uiBlockBeginAlign(block);
-       uiDefButI(block, NUM, B_DIFF, "Area lights:", 0, -54, 192, 20, 
&G.scene->r.lightcuts_area_lights, 0, 100000, 0, 0, "The number of point lights 
generated for all the area lights");
-       uiDefButBitS(block, TOG, 0x8, B_DIFF, "Enable", 0, -76, 31, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "Enable environment map lighting");
-       uiDefButS(block, NUM, B_DIFF, "Envmap:", 33, -76, 192-33-64, 20, 
&G.scene->r.lightcuts_env_map, 0, 20000, 0, 0, "How many point lights are used 
to convert the environment map");
-       uiDefButF(block, NUM, B_DIFF, "Fac:", 128, -76, 64, 20, 
&G.scene->r.lightcuts_env_map_fac, 0.0f, 100.0f, 0, 0, "Intensity of 
environment map");
+       uiDefButBitI(block, TOG, 0x2, B_DIFF, "Only", 0, -140, 62, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "Render only indirect lighting");
+       uiDefButS(block, NUM, B_DIFF, "Indirect:", 63, -140, 128, 20, 
&G.scene->r.lightcuts_indirect, 0, 100, 0, 0, "Number of indirect lights per 
each direct light (currently only from area lights)");
+       /* TODO: yep, magic numbers, but they are going to change soon anyway */
+       uiDefButBitI(block, TOG, 0x0080, B_DIFF, "No spec", 0, -162, 62, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "Disable specular from indirect 
lighting");
+       uiDefButF(block, NUM, B_DIFF, "Fac:", 63, -162, 128, 20, 
&G.scene->r.lightcuts_indir_fac, 1.0, 100000.0, 0, 0, "Indirect lighting 
factor");
+       uiDefButBitI(block, TOG, 0x4, B_DIFF, "2nd", 0, -184, 62, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "Enable second bounce for indirect 
lighting");
+       uiDefButF(block, NUM, B_DIFF, "Dist:", 63, -184, 128, 20, 
&G.scene->r.lightcuts_indir_dist, 0.001, 1000.0, 0, 0, "Distance for indirect 
lights");
        uiBlockEndAlign(block);
        
        uiBlockBeginAlign(block);
-       uiDefButS(block, NUM, B_DIFF, "Indirect lights:", 0, -108, 192-65, 20, 
&G.scene->r.lightcuts_indirect, 0, 100, 0, 0, "Number of indirect lights per 
each direct light (currently only from area lights)");
-       /* TODO: yep, magic numbers, but they are going to change soon anyway */
-       uiDefButBitS(block, TOG, 0x1, B_DIFF, "Fixed", 192-63, -108, 63, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "(Debug option) Enable fixed 
directions for indirect lighting");
-       uiDefButBitS(block, TOG, 0x4, B_DIFF, "2nd", 0, -130, 127, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "Enable second bounce for indirect 
lighting");
-       uiDefButBitS(block, TOG, 0x2, B_DIFF, "Only", 129, -130, 192-129, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "Render only indirect lighting");
-       uiDefButF(block, NUM, B_DIFF, "Indirect fac:", 0, -152, 95, 20, 
&G.scene->r.lightcuts_indir_fac, 1.0, 100000.0, 0, 0, "Indirect lighting 
factor");
-       uiDefButF(block, NUM, B_DIFF, "Indirect dist:", 97, -152, 95, 20, 
&G.scene->r.lightcuts_indir_dist, 0.001, 1000.0, 0, 0, "Distance for indirect 
lights");
+       uiDefButBitI(block, TOG, SCE_PASS_LCFAUX, B_SET_PASS, "False color", 
200, 0, 48, 20, &srl->passflag, 0, 0, 0, 0, "(Debug option) Deliver false color 
pass");
+       uiDefButI(block, NUM, B_DIFF, "Debug:", 200, -22, 48, 20, 
&G.scene->r.lightcuts_debug_options, 0, 0xffffffff, 0, 0, "(Debug option) 
Slider to select debug prints");
+       uiDefButBitI(block, TOG, 0x10, B_DIFF, "VPL Mesh", 200, -44, 48, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "(Debug option) Creates a mesh to 
visualize indirect light placement");
+       uiDefButBitI(block, TOG, 0x20, B_DIFF, "No clamp", 200, -66, 48, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "(Debug option) Disable clamping 
mechanism for virtual point lights");
+       uiDefButBitI(block, TOG, 0x01, B_DIFF, "Fixed", 200, -88, 48, 20, 
&G.scene->r.lightcuts_options, 0, 0, 0, 0, "(Debug option) Enable fixed 
directions for indirect lighting");
        uiBlockEndAlign(block);
        
        uiBlockBeginAlign(block);
-       uiDefButS(block, ROW, B_DIFF, "R601", 0, -184, 64, 20, 
&G.scene->r.lightcuts_color_weight, 0, 3, 0, 0, "R601 color weights: 0.299r 
0.587g 0.114");
-       uiDefButS(block, ROW, B_DIFF, "Mid", 64, -184, 64, 20, 
&G.scene->r.lightcuts_color_weight, 0, 1, 0, 0, "Midway color weights: 0.316r 
0.460g 0.224g");
-       uiDefButS(block, ROW, B_DIFF, "Even", 128, -184, 64, 20, 
&G.scene->r.lightcuts_color_weight, 0, 2, 0, 0, "Even color weights: 1/3r 1/3g 
1/3b");
+       uiDefButS(block, ROW, B_DIFF, "R601", 200, -120, 48, 20, 
&G.scene->r.lightcuts_color_weight, 0, 3, 0, 0, "R601 color weights: 0.299r 
0.587g 0.114");
+       uiDefButS(block, ROW, B_DIFF, "Mid", 200, -132, 48, 20, 
&G.scene->r.lightcuts_color_weight, 0, 1, 0, 0, "Midway color weights: 0.316r 
0.460g 0.224g");
+       uiDefButS(block, ROW, B_DIFF, "Even", 200, -154, 48, 20, 
&G.scene->r.lightcuts_color_weight, 0, 2, 0, 0, "Even color weights: 1/3r 1/3g 
1/3b");
        uiBlockEndAlign(block);
 }
 


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to