[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30894] trunk/blender/source/blender: Fix #23103:
Brecht Van Lommel
brecht at blender.org
Fri Jul 30 12:44:01 CEST 2010
Revision: 30894
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30894
Author: blendix
Date: 2010-07-30 12:44:00 +0200 (Fri, 30 Jul 2010)
Log Message:
-----------
Fix #23103:
* missing glsl update when changing color management setting
* disable glsl lamps only when disabling them for render
Modified Paths:
--------------
trunk/blender/source/blender/editors/render/render_shading.c
trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
trunk/blender/source/blender/gpu/intern/gpu_material.c
trunk/blender/source/blender/makesrna/intern/rna_scene.c
Modified: trunk/blender/source/blender/editors/render/render_shading.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_shading.c 2010-07-30 09:55:01 UTC (rev 30893)
+++ trunk/blender/source/blender/editors/render/render_shading.c 2010-07-30 10:44:00 UTC (rev 30894)
@@ -209,6 +209,21 @@
texture_changed(bmain, tex);
}
+static void scene_changed(Main *bmain, Scene *sce)
+{
+ Object *ob;
+ Material *ma;
+
+ /* glsl */
+ for(ob=bmain->object.first; ob; ob=ob->id.next)
+ if(ob->gpulamp.first)
+ GPU_lamp_free(ob);
+
+ for(ma=bmain->mat.first; ma; ma=ma->id.next)
+ if(ma->gpumaterial.first)
+ GPU_material_free(ma);
+}
+
void ED_render_id_flush_update(Main *bmain, ID *id)
{
if(!id)
@@ -230,6 +245,9 @@
case ID_IM:
image_changed(bmain, (Image*)id);
break;
+ case ID_SCE:
+ scene_changed(bmain, (Scene*)id);
+ break;
default:
break;
}
Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c 2010-07-30 09:55:01 UTC (rev 30893)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c 2010-07-30 10:44:00 UTC (rev 30894)
@@ -1807,7 +1807,7 @@
lamp = GPU_lamp_from_blender(scene, ob, par);
if(lamp) {
- GPU_lamp_update(lamp, ob->lay, (ob->restrictflag & OB_RESTRICT_VIEW), obmat);
+ GPU_lamp_update(lamp, ob->lay, (ob->restrictflag & OB_RESTRICT_RENDER), obmat);
GPU_lamp_update_colors(lamp, la->r, la->g, la->b, la->energy);
if((ob->lay & v3d->lay) && GPU_lamp_has_shadow_buffer(lamp)) {
Modified: trunk/blender/source/blender/gpu/intern/gpu_material.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_material.c 2010-07-30 09:55:01 UTC (rev 30893)
+++ trunk/blender/source/blender/gpu/intern/gpu_material.c 2010-07-30 10:44:00 UTC (rev 30894)
@@ -1363,7 +1363,7 @@
lamp->col[1]= la->g*lamp->energy;
lamp->col[2]= la->b*lamp->energy;
- GPU_lamp_update(lamp, ob->lay, (ob->restrictflag & OB_RESTRICT_VIEW), ob->obmat);
+ GPU_lamp_update(lamp, ob->lay, (ob->restrictflag & OB_RESTRICT_RENDER), ob->obmat);
lamp->spotsi= la->spotsize;
if(lamp->mode & LA_HALO)
Modified: trunk/blender/source/blender/makesrna/intern/rna_scene.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_scene.c 2010-07-30 09:55:01 UTC (rev 30893)
+++ trunk/blender/source/blender/makesrna/intern/rna_scene.c 2010-07-30 10:44:00 UTC (rev 30894)
@@ -679,6 +679,13 @@
return 0;
}
+static void rna_Scene_glsl_update(Main *bmain, Scene *unused, PointerRNA *ptr)
+{
+ Scene *scene= (Scene*)ptr->id.data;
+
+ DAG_id_flush_update(&scene->id, 0);
+}
+
static void rna_RenderSettings_color_management_update(Main *bmain, Scene *unused, PointerRNA *ptr)
{
/* reset image nodes */
@@ -697,6 +704,8 @@
}
}
}
+
+ rna_Scene_glsl_update(bmain, unused, ptr);
}
static void rna_SceneRenderLayer_name_set(PointerRNA *ptr, const char *value)
@@ -1749,32 +1758,32 @@
prop= RNA_def_property(srna, "glsl_lights", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_GLSL_NO_LIGHTS);
RNA_def_property_ui_text(prop, "GLSL Lights", "Use lights for GLSL rendering");
- RNA_def_property_update(prop, NC_SCENE|NA_EDITED, NULL);
+ RNA_def_property_update(prop, NC_SCENE|NA_EDITED, "rna_Scene_glsl_update");
prop= RNA_def_property(srna, "glsl_shaders", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_GLSL_NO_SHADERS);
RNA_def_property_ui_text(prop, "GLSL Shaders", "Use shaders for GLSL rendering");
- RNA_def_property_update(prop, NC_SCENE|NA_EDITED, NULL);
+ RNA_def_property_update(prop, NC_SCENE|NA_EDITED, "rna_Scene_glsl_update");
prop= RNA_def_property(srna, "glsl_shadows", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_GLSL_NO_SHADOWS);
RNA_def_property_ui_text(prop, "GLSL Shadows", "Use shadows for GLSL rendering");
- RNA_def_property_update(prop, NC_SCENE|NA_EDITED, NULL);
+ RNA_def_property_update(prop, NC_SCENE|NA_EDITED, "rna_Scene_glsl_update");
prop= RNA_def_property(srna, "glsl_ramps", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_GLSL_NO_RAMPS);
RNA_def_property_ui_text(prop, "GLSL Ramps", "Use ramps for GLSL rendering");
- RNA_def_property_update(prop, NC_SCENE|NA_EDITED, NULL);
+ RNA_def_property_update(prop, NC_SCENE|NA_EDITED, "rna_Scene_glsl_update");
prop= RNA_def_property(srna, "glsl_nodes", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_GLSL_NO_NODES);
RNA_def_property_ui_text(prop, "GLSL Nodes", "Use nodes for GLSL rendering");
- RNA_def_property_update(prop, NC_SCENE|NA_EDITED, NULL);
+ RNA_def_property_update(prop, NC_SCENE|NA_EDITED, "rna_Scene_glsl_update");
prop= RNA_def_property(srna, "glsl_extra_textures", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_GLSL_NO_EXTRA_TEX);
RNA_def_property_ui_text(prop, "GLSL Extra Textures", "Use extra textures like normal or specular maps for GLSL rendering");
- RNA_def_property_update(prop, NC_SCENE|NA_EDITED, NULL);
+ RNA_def_property_update(prop, NC_SCENE|NA_EDITED, "rna_Scene_glsl_update");
}
static void rna_def_scene_render_layer(BlenderRNA *brna)
More information about the Bf-blender-cvs
mailing list