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:
-rw-r--r--release/scripts/startup/bl_ui/space_image.py1
-rw-r--r--source/blender/blenloader/intern/versioning_280.c3
-rw-r--r--source/blender/draw/engines/image/image_engine.c3
-rw-r--r--source/blender/draw/engines/image/shaders/engine_image_frag.glsl7
-rw-r--r--source/blender/makesdna/DNA_space_types.h2
-rw-r--r--source/blender/makesrna/intern/rna_space.c5
6 files changed, 19 insertions, 2 deletions
diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py
index 0fde128a906..e9a2dbb977b 100644
--- a/release/scripts/startup/bl_ui/space_image.py
+++ b/release/scripts/startup/bl_ui/space_image.py
@@ -987,6 +987,7 @@ class IMAGE_PT_view_display(Panel):
if ima:
col.prop(ima, "display_aspect", text="Aspect Ratio")
col.prop(sima, "show_repeat", text="Repeat Image")
+ col.prop(sima, "show_pure_emissive_colors")
if show_uvedit:
col.prop(uvedit, "show_pixel_coords", text="Pixel Coordinates")
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 213fbe0bde0..c1fb38a5d87 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -3396,8 +3396,9 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
switch (sl->spacetype) {
case SPACE_IMAGE: {
+ const int si_flag_unused_3 = (1 << 3);
SpaceImage *sima = (SpaceImage *)sl;
- sima->flag &= ~(SI_FLAG_UNUSED_0 | SI_FLAG_UNUSED_1 | SI_FLAG_UNUSED_3 |
+ sima->flag &= ~(SI_FLAG_UNUSED_0 | SI_FLAG_UNUSED_1 | si_flag_unused_3 |
SI_FLAG_UNUSED_6 | SI_FLAG_UNUSED_7 | SI_FLAG_UNUSED_8 |
SI_FLAG_UNUSED_17 | SI_FLAG_UNUSED_18 | SI_FLAG_UNUSED_23 |
SI_FLAG_UNUSED_24);
diff --git a/source/blender/draw/engines/image/image_engine.c b/source/blender/draw/engines/image/image_engine.c
index 90bfb38dadf..99c812859c1 100644
--- a/source/blender/draw/engines/image/image_engine.c
+++ b/source/blender/draw/engines/image/image_engine.c
@@ -43,6 +43,7 @@
#define SIMA_DRAW_FLAG_SHUFFLING (1 << 2)
#define SIMA_DRAW_FLAG_DEPTH (1 << 3)
#define SIMA_DRAW_FLAG_DO_REPEAT (1 << 4)
+#define SIMA_DRAW_FLAG_PURE_EMISSIVE (1 << 5)
static void image_cache_image_add(DRWShadingGroup *grp, Image *image)
{
@@ -142,6 +143,7 @@ static void image_cache_image(IMAGE_Data *vedata, Image *image, ImageUser *iuser
const bool is_tiled_texture = tex_tile_data != NULL;
const bool do_repeat = (!is_tiled_texture) && ((sima->flag & SI_DRAW_TILE) != 0);
const bool is_zoom_out = sima->zoom < 1.0f;
+ const bool show_pure_emissive_colors = (sima->flag & SI_SHOW_PURE_EMISSIVE) != 0;
/* use interpolation filtering when zooming out */
eGPUSamplerState state = 0;
@@ -149,6 +151,7 @@ static void image_cache_image(IMAGE_Data *vedata, Image *image, ImageUser *iuser
int draw_flags = 0;
SET_FLAG_FROM_TEST(draw_flags, do_repeat, SIMA_DRAW_FLAG_DO_REPEAT);
+ SET_FLAG_FROM_TEST(draw_flags, show_pure_emissive_colors, SIMA_DRAW_FLAG_PURE_EMISSIVE);
if ((sima->flag & SI_USE_ALPHA) != 0) {
/* Show RGBA */
diff --git a/source/blender/draw/engines/image/shaders/engine_image_frag.glsl b/source/blender/draw/engines/image/shaders/engine_image_frag.glsl
index a79f4915c4d..d4eebb37ccb 100644
--- a/source/blender/draw/engines/image/shaders/engine_image_frag.glsl
+++ b/source/blender/draw/engines/image/shaders/engine_image_frag.glsl
@@ -6,6 +6,7 @@
#define SIMA_DRAW_FLAG_SHUFFLING (1 << 2)
#define SIMA_DRAW_FLAG_DEPTH (1 << 3)
#define SIMA_DRAW_FLAG_DO_REPEAT (1 << 4)
+#define SIMA_DRAW_FLAG_PURE_EMISSIVE (1 << 5)
#ifdef TILED_IMAGE
uniform sampler2DArray imageTileArray;
@@ -74,6 +75,12 @@ void main()
tex_color = texture(imageTexture, uvs_clamped);
#endif
+ if ((drawFlags & SIMA_DRAW_FLAG_PURE_EMISSIVE) == 0) {
+ if (imgPremultiplied && tex_color.a == 0.0) {
+ tex_color.rgb = vec3(0.0);
+ }
+ }
+
if ((drawFlags & SIMA_DRAW_FLAG_APPLY_ALPHA) != 0) {
if (!imgPremultiplied && tex_color.a != 0.0 && tex_color.a != 1.0) {
tex_color.rgb *= tex_color.a;
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 06ab01a9730..66c87c85ffd 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -1131,7 +1131,7 @@ typedef enum eSpaceImage_Flag {
SI_FLAG_UNUSED_0 = (1 << 0), /* cleared */
SI_FLAG_UNUSED_1 = (1 << 1), /* cleared */
SI_CLIP_UV = (1 << 2),
- SI_FLAG_UNUSED_3 = (1 << 3), /* cleared */
+ SI_SHOW_PURE_EMISSIVE = (1 << 3),
SI_NO_DRAWFACES = (1 << 4),
SI_DRAWSHADOW = (1 << 5),
SI_FLAG_UNUSED_6 = (1 << 6), /* cleared */
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 317759ce418..6890515b7b3 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -4571,6 +4571,11 @@ static void rna_def_space_image(BlenderRNA *brna)
RNA_def_property_update(
prop, NC_SPACE | ND_SPACE_IMAGE, "rna_SpaceImageEditor_show_stereo_update");
+ prop = RNA_def_property(srna, "show_pure_emissive_colors", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", SI_SHOW_PURE_EMISSIVE);
+ RNA_def_property_ui_text(prop, "Show Pure Emissive", "Display the image with pure emissive colors");
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_IMAGE, NULL);
+
/* uv */
prop = RNA_def_property(srna, "uv_editor", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);