Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEthan-Hall <Ethan1080>2022-03-07 19:36:27 +0300
committerBrecht Van Lommel <brecht@blender.org>2022-03-07 19:39:27 +0300
commit15186f4259a2e0611a64a3aed8db8858e8ca081f (patch)
tree00c278a96da0e9e937390a1fb8d7b40587a4fccd /source/blender/editors/space_node/drawnode.cc
parent5b4ab896634fd118cb46740f6f90e45f96d550ac (diff)
Shader Nodes: added alpha mode selector to Image Texture node
Enables image user nodes to display the file alpha mode, similar to the colorspace setting. Also removes image_has_alpha in favor of using BKE_image_has_alpha, because it did not check if the image actually had an alpha channel, just if the file format was capable of supporting an alpha channel. Differential Revision: https://developer.blender.org/D14153
Diffstat (limited to 'source/blender/editors/space_node/drawnode.cc')
-rw-r--r--source/blender/editors/space_node/drawnode.cc17
1 files changed, 13 insertions, 4 deletions
diff --git a/source/blender/editors/space_node/drawnode.cc b/source/blender/editors/space_node/drawnode.cc
index afb205f9f9e..fab2946ad76 100644
--- a/source/blender/editors/space_node/drawnode.cc
+++ b/source/blender/editors/space_node/drawnode.cc
@@ -304,9 +304,11 @@ static void node_buts_image_user(uiLayout *layout,
const bool show_layer_selection,
const bool show_color_management)
{
- if (!imaptr->data) {
+ Image *image = (Image *)imaptr->data;
+ if (!image) {
return;
}
+ ImageUser *iuser = (ImageUser *)iuserptr->data;
uiLayout *col = uiLayoutColumn(layout, false);
@@ -318,8 +320,6 @@ static void node_buts_image_user(uiLayout *layout,
/* don't use iuser->framenr directly
* because it may not be updated if auto-refresh is off */
Scene *scene = CTX_data_scene(C);
- ImageUser *iuser = (ImageUser *)iuserptr->data;
- /* Image *ima = imaptr->data; */ /* UNUSED */
char numstr[32];
const int framenr = BKE_image_user_frame_get(iuser, CFRA, nullptr);
@@ -343,11 +343,20 @@ static void node_buts_image_user(uiLayout *layout,
}
if (show_color_management) {
- uiLayout *split = uiLayoutSplit(layout, 0.5f, true);
+ uiLayout *split = uiLayoutSplit(layout, 0.33f, true);
PointerRNA colorspace_settings_ptr = RNA_pointer_get(imaptr, "colorspace_settings");
uiItemL(split, IFACE_("Color Space"), ICON_NONE);
uiItemR(split, &colorspace_settings_ptr, "name", DEFAULT_FLAGS, "", ICON_NONE);
+ if (image->source != IMA_SRC_GENERATED) {
+ split = uiLayoutSplit(layout, 0.33f, true);
+ uiItemL(split, IFACE_("Alpha"), ICON_NONE);
+ uiItemR(split, imaptr, "alpha_mode", DEFAULT_FLAGS, "", ICON_NONE);
+
+ bool is_data = IMB_colormanagement_space_name_is_data(image->colorspace_settings.name);
+ uiLayoutSetActive(split, !is_data);
+ }
+
/* Avoid losing changes image is painted. */
if (BKE_image_is_dirty((Image *)imaptr->data)) {
uiLayoutSetEnabled(split, false);