forked from bartvdbraak/blender
Fix #33282: missing GLSL update assigning a lamp texture.
This commit is contained in:
parent
ed986b62e8
commit
9b32776be3
@ -250,6 +250,24 @@ static void material_changed(Main *bmain, Material *ma)
|
||||
}
|
||||
}
|
||||
|
||||
static void lamp_changed(Main *bmain, Lamp *la)
|
||||
{
|
||||
Object *ob;
|
||||
Material *ma;
|
||||
|
||||
/* icons */
|
||||
BKE_icon_changed(BKE_icon_getid(&la->id));
|
||||
|
||||
/* glsl */
|
||||
for (ob = bmain->object.first; ob; ob = ob->id.next)
|
||||
if (ob->data == la && 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);
|
||||
}
|
||||
|
||||
static void texture_changed(Main *bmain, Tex *tex)
|
||||
{
|
||||
Material *ma;
|
||||
@ -282,16 +300,14 @@ static void texture_changed(Main *bmain, Tex *tex)
|
||||
/* find lamps */
|
||||
for (la = bmain->lamp.first; la; la = la->id.next) {
|
||||
if (mtex_use_tex(la->mtex, MAX_MTEX, tex)) {
|
||||
/* pass */
|
||||
lamp_changed(bmain, la);
|
||||
}
|
||||
else if (la->nodetree && nodes_use_tex(la->nodetree, tex)) {
|
||||
/* pass */
|
||||
lamp_changed(bmain, la);
|
||||
}
|
||||
else {
|
||||
continue;
|
||||
}
|
||||
|
||||
BKE_icon_changed(BKE_icon_getid(&la->id));
|
||||
}
|
||||
|
||||
/* find worlds */
|
||||
@ -320,24 +336,6 @@ static void texture_changed(Main *bmain, Tex *tex)
|
||||
}
|
||||
}
|
||||
|
||||
static void lamp_changed(Main *bmain, Lamp *la)
|
||||
{
|
||||
Object *ob;
|
||||
Material *ma;
|
||||
|
||||
/* icons */
|
||||
BKE_icon_changed(BKE_icon_getid(&la->id));
|
||||
|
||||
/* glsl */
|
||||
for (ob = bmain->object.first; ob; ob = ob->id.next)
|
||||
if (ob->data == la && 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);
|
||||
}
|
||||
|
||||
static void world_changed(Main *bmain, World *wo)
|
||||
{
|
||||
Material *ma;
|
||||
|
@ -421,7 +421,7 @@ static void rna_def_lamp(BlenderRNA *brna)
|
||||
|
||||
/* textures */
|
||||
rna_def_mtex_common(brna, srna, "rna_Lamp_mtex_begin", "rna_Lamp_active_texture_get",
|
||||
"rna_Lamp_active_texture_set", NULL, "LampTextureSlot", "LampTextureSlots", "rna_Lamp_update");
|
||||
"rna_Lamp_active_texture_set", NULL, "LampTextureSlot", "LampTextureSlots", "rna_Lamp_draw_update");
|
||||
}
|
||||
|
||||
static void rna_def_lamp_falloff(StructRNA *srna)
|
||||
|
@ -233,6 +233,7 @@ void rna_TextureSlot_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRN
|
||||
break;
|
||||
case ID_LA:
|
||||
WM_main_add_notifier(NC_LAMP | ND_LIGHTING, id);
|
||||
WM_main_add_notifier(NC_LAMP | ND_LIGHTING_DRAW, id);
|
||||
break;
|
||||
case ID_BR:
|
||||
WM_main_add_notifier(NC_BRUSH, id);
|
||||
|
Loading…
Reference in New Issue
Block a user