Bugfix #32975
Shader nodes didn't redraw correct on preview-type changes. Also made shader node previews draw nicely, without flashing empty images.
This commit is contained in:
@@ -403,7 +403,13 @@ bNode *nodeCopyNode(struct bNodeTree *ntree, struct bNode *node)
|
||||
|
||||
node->new_node = nnode;
|
||||
nnode->new_node = NULL;
|
||||
nnode->preview = NULL;
|
||||
|
||||
/* only shader nodes get pleasant preview updating this way, compo uses own system */
|
||||
if (node->preview && ntree->type == NTREE_SHADER) {
|
||||
nnode->preview = MEM_dupallocN(node->preview);
|
||||
if (node->preview->rect)
|
||||
nnode->preview->rect = MEM_dupallocN(node->preview->rect);
|
||||
}
|
||||
|
||||
if (ntree)
|
||||
ntree->update |= NTREE_UPDATE_NODES;
|
||||
|
||||
@@ -107,6 +107,17 @@ static void rna_Material_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *p
|
||||
}
|
||||
}
|
||||
|
||||
static void rna_Material_update_previews(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||
{
|
||||
Material *ma = ptr->id.data;
|
||||
|
||||
if (ma->nodetree)
|
||||
ntreeClearPreview(ma->nodetree);
|
||||
|
||||
rna_Material_update(bmain, scene, ptr);
|
||||
}
|
||||
|
||||
|
||||
static void rna_Material_draw_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr)
|
||||
{
|
||||
Material *ma = ptr->id.data;
|
||||
@@ -1757,7 +1768,7 @@ void RNA_def_material(BlenderRNA *brna)
|
||||
RNA_def_property_enum_sdna(prop, NULL, "pr_type");
|
||||
RNA_def_property_enum_items(prop, preview_type_items);
|
||||
RNA_def_property_ui_text(prop, "Preview render type", "Type of preview render");
|
||||
RNA_def_property_update(prop, 0, "rna_Material_update");
|
||||
RNA_def_property_update(prop, 0, "rna_Material_update_previews");
|
||||
|
||||
prop = RNA_def_property(srna, "ambient", PROP_FLOAT, PROP_FACTOR);
|
||||
RNA_def_property_float_sdna(prop, NULL, "amb");
|
||||
|
||||
Reference in New Issue
Block a user