[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51385] trunk/blender: Render: local light group option for materials, blender internal feature from

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Oct 17 15:32:43 CEST 2012


Revision: 51385
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51385
Author:   blendix
Date:     2012-10-17 13:32:43 +0000 (Wed, 17 Oct 2012)
Log Message:
-----------
Render: local light group option for materials, blender internal feature from
the render branch.

When a material is linked in and has a light group override, this can now use
a local group in the scene file, by replacing the linked light group with a
local group that has the same name. A use case might be controlling the specular
highlight on linked character's eyes per scene.

Patch from render branch by Pablo Vazquez.

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/properties_material.py
    trunk/blender/source/blender/blenkernel/intern/material.c
    trunk/blender/source/blender/makesdna/DNA_material_types.h
    trunk/blender/source/blender/makesrna/intern/rna_material.c

Modified: trunk/blender/release/scripts/startup/bl_ui/properties_material.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/properties_material.py	2012-10-17 12:55:23 UTC (rev 51384)
+++ trunk/blender/release/scripts/startup/bl_ui/properties_material.py	2012-10-17 13:32:43 UTC (rev 51385)
@@ -753,6 +753,7 @@
         row = sub.row()
         row.active = bool(mat.light_group)
         row.prop(mat, "use_light_group_exclusive", text="Exclusive")
+        row.prop(mat, "use_light_group_local", text="Local")
 
         col = split.column()
         col.prop(mat, "use_face_texture")

Modified: trunk/blender/source/blender/blenkernel/intern/material.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/material.c	2012-10-17 12:55:23 UTC (rev 51384)
+++ trunk/blender/source/blender/blenkernel/intern/material.c	2012-10-17 13:32:43 UTC (rev 51385)
@@ -38,6 +38,7 @@
 
 #include "DNA_anim_types.h"
 #include "DNA_curve_types.h"
+#include "DNA_group_types.h"
 #include "DNA_material_types.h"
 #include "DNA_mesh_types.h"
 #include "DNA_meshdata_types.h"
@@ -980,6 +981,15 @@
 	/* parses the geom+tex nodes */
 	if (ma->nodetree && ma->use_nodes)
 		ntreeShaderGetTexcoMode(ma->nodetree, r_mode, &ma->texco, &ma->mode_l);
+
+    /* local group override */
+    if((ma->shade_flag & MA_GROUP_LOCAL) && ma->id.lib && ma->group && ma->group->id.lib) {
+        Group *group;
+
+        for(group= G.main->group.first; group; group= group->id.next)
+            if(!group->id.lib && strcmp(group->id.name, ma->group->id.name) == 0)
+                ma->group = group;
+    }
 }
 
 static void init_render_nodetree(bNodeTree *ntree, Material *basemat, int r_mode, float *amb)

Modified: trunk/blender/source/blender/makesdna/DNA_material_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_material_types.h	2012-10-17 12:55:23 UTC (rev 51384)
+++ trunk/blender/source/blender/makesdna/DNA_material_types.h	2012-10-17 13:32:43 UTC (rev 51385)
@@ -292,6 +292,7 @@
 #define MA_CUBIC			1
 #define MA_OBCOLOR			2
 #define MA_APPROX_OCCLUSION	4
+#define MA_GROUP_LOCAL      8
 
 /* diff_shader */
 #define MA_DIFF_LAMBERT		0

Modified: trunk/blender/source/blender/makesrna/intern/rna_material.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_material.c	2012-10-17 12:55:23 UTC (rev 51384)
+++ trunk/blender/source/blender/makesrna/intern/rna_material.c	2012-10-17 13:32:43 UTC (rev 51385)
@@ -1823,7 +1823,12 @@
 	                         "Material uses the light group exclusively - these lamps are excluded "
 	                         "from other scene lighting");
 	RNA_def_property_update(prop, 0, "rna_Material_update");
-	
+
+    prop= RNA_def_property(srna, "use_light_group_local", PROP_BOOLEAN, PROP_NONE);
+    RNA_def_property_boolean_sdna(prop, NULL, "shade_flag", MA_GROUP_LOCAL);
+    RNA_def_property_ui_text(prop, "Light Group Local", "When linked in, Material uses local light group with the same name");
+    RNA_def_property_update(prop, 0, "rna_Material_update");
+
 	prop = RNA_def_property(srna, "use_raytrace", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_TRACEBLE);
 	RNA_def_property_ui_text(prop, "Traceable",




More information about the Bf-blender-cvs mailing list