[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