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
path: root/source
diff options
context:
space:
mode:
authorHarley Acheson <harley.acheson@gmail.com>2019-12-07 19:16:45 +0300
committerHarley Acheson <harley.acheson@gmail.com>2019-12-07 19:16:45 +0300
commit9c1134015c34ff19f3ff27c89321c019c67904b8 (patch)
tree0d1c5734282ad7f8d15e4d5261fba4a4edde7c15 /source
parent958d0d4236b1cfa600a7f36f6bdc51fdd0d98a97 (diff)
UI: Custom Face Orientation Colors
Adds theme settings to allow change of front and back faces of the Face Orientation overlay Differential Revision: https://developer.blender.org/D6262 Reviewed by Jeroen Bakker
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenloader/intern/versioning_userdef.c2
-rw-r--r--source/blender/draw/engines/overlay/overlay_facing.c1
-rw-r--r--source/blender/draw/engines/overlay/overlay_shader.c4
-rw-r--r--source/blender/draw/engines/overlay/shaders/facing_frag.glsl5
-rw-r--r--source/blender/draw/intern/draw_common.c2
-rw-r--r--source/blender/draw/intern/draw_common.h5
-rw-r--r--source/blender/draw/intern/shaders/common_globals_lib.glsl3
-rw-r--r--source/blender/editors/include/UI_resources.h2
-rw-r--r--source/blender/editors/interface/resources.c6
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h2
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c10
11 files changed, 34 insertions, 8 deletions
diff --git a/source/blender/blenloader/intern/versioning_userdef.c b/source/blender/blenloader/intern/versioning_userdef.c
index 4c85b5abd97..d097ed630b0 100644
--- a/source/blender/blenloader/intern/versioning_userdef.c
+++ b/source/blender/blenloader/intern/versioning_userdef.c
@@ -163,6 +163,8 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
FROM_DEFAULT_V4_UCHAR(space_sequencer.anim_preview_range);
FROM_DEFAULT_V4_UCHAR(space_text.line_numbers);
FROM_DEFAULT_V4_UCHAR(tui.widget_text_cursor);
+ FROM_DEFAULT_V4_UCHAR(space_view3d.face_back);
+ FROM_DEFAULT_V4_UCHAR(space_view3d.face_front);
}
#undef FROM_DEFAULT_V4_UCHAR
diff --git a/source/blender/draw/engines/overlay/overlay_facing.c b/source/blender/draw/engines/overlay/overlay_facing.c
index ea6f088e8e1..fd974e9b8b8 100644
--- a/source/blender/draw/engines/overlay/overlay_facing.c
+++ b/source/blender/draw/engines/overlay/overlay_facing.c
@@ -38,6 +38,7 @@ void OVERLAY_facing_cache_init(OVERLAY_Data *vedata)
GPUShader *sh = OVERLAY_shader_facing();
pd->facing_grp = DRW_shgroup_create(sh, psl->facing_ps);
+ DRW_shgroup_uniform_block_persistent(pd->facing_grp, "globalsBlock", G_draw.block_ubo);
}
void OVERLAY_facing_cache_populate(OVERLAY_Data *vedata, Object *ob)
diff --git a/source/blender/draw/engines/overlay/overlay_shader.c b/source/blender/draw/engines/overlay/overlay_shader.c
index 22f025336ef..7bd3cf4a067 100644
--- a/source/blender/draw/engines/overlay/overlay_shader.c
+++ b/source/blender/draw/engines/overlay/overlay_shader.c
@@ -845,7 +845,7 @@ GPUShader *OVERLAY_shader_facing(void)
datatoc_common_view_lib_glsl,
datatoc_facing_vert_glsl,
NULL},
- .frag = (const char *[]){datatoc_facing_frag_glsl, NULL},
+ .frag = (const char *[]){datatoc_common_globals_lib_glsl, datatoc_facing_frag_glsl, NULL},
.defs = (const char *[]){sh_cfg->def, NULL},
});
}
@@ -1314,4 +1314,4 @@ void OVERLAY_shader_free(void)
for (int i = 0; i < sizeof(g_formats) / sizeof(void *); i++, format++) {
MEM_SAFE_FREE(*format);
}
-} \ No newline at end of file
+}
diff --git a/source/blender/draw/engines/overlay/shaders/facing_frag.glsl b/source/blender/draw/engines/overlay/shaders/facing_frag.glsl
index 1ed35b4a421..ca7b4eeaf47 100644
--- a/source/blender/draw/engines/overlay/shaders/facing_frag.glsl
+++ b/source/blender/draw/engines/overlay/shaders/facing_frag.glsl
@@ -1,9 +1,6 @@
-uniform vec3 color_towards = vec3(0.0, 0.0, 1.0);
-uniform vec3 color_outwards = vec3(1.0, 0.0, 0.0);
-
out vec4 fragColor;
void main()
{
- fragColor = vec4(gl_FrontFacing ? color_towards : color_outwards, 0.7);
+ fragColor = gl_FrontFacing ? colorFaceFront : colorFaceBack;
}
diff --git a/source/blender/draw/intern/draw_common.c b/source/blender/draw/intern/draw_common.c
index 52adbcf0f78..65365ef7119 100644
--- a/source/blender/draw/intern/draw_common.c
+++ b/source/blender/draw/intern/draw_common.c
@@ -80,6 +80,8 @@ void DRW_globals_update(void)
UI_GetThemeColor4fv(TH_EDGE_FACESEL, gb->colorEdgeFaceSelect);
UI_GetThemeColor4fv(TH_FACE, gb->colorFace);
UI_GetThemeColor4fv(TH_FACE_SELECT, gb->colorFaceSelect);
+ UI_GetThemeColor4fv(TH_FACE_BACK, gb->colorFaceBack);
+ UI_GetThemeColor4fv(TH_FACE_FRONT, gb->colorFaceFront);
UI_GetThemeColor4fv(TH_NORMAL, gb->colorNormal);
UI_GetThemeColor4fv(TH_VNORMAL, gb->colorVNormal);
UI_GetThemeColor4fv(TH_LNORMAL, gb->colorLNormal);
diff --git a/source/blender/draw/intern/draw_common.h b/source/blender/draw/intern/draw_common.h
index bffb3ad5a1d..a486eb6ba77 100644
--- a/source/blender/draw/intern/draw_common.h
+++ b/source/blender/draw/intern/draw_common.h
@@ -34,7 +34,7 @@ struct ParticleSystem;
struct ViewLayer;
#define UBO_FIRST_COLOR colorWire
-#define UBO_LAST_COLOR colorGridAxisZ
+#define UBO_LAST_COLOR colorFaceFront
/* Used as ubo but colors can be directly referenced as well */
/* Keep in sync with: common_globals_lib.glsl (globalsBlock) */
@@ -109,6 +109,9 @@ typedef struct GlobalsUboStorage {
float colorGridAxisY[4];
float colorGridAxisZ[4];
+ float colorFaceBack[4];
+ float colorFaceFront[4];
+
/* NOTE! Put all color before UBO_LAST_COLOR */
float screenVecs[2][4]; /* padded as vec4 */
float sizeViewport[2], sizeViewportInv[2]; /* packed as vec4 in glsl */
diff --git a/source/blender/draw/intern/shaders/common_globals_lib.glsl b/source/blender/draw/intern/shaders/common_globals_lib.glsl
index 151932a3b47..676492f227d 100644
--- a/source/blender/draw/intern/shaders/common_globals_lib.glsl
+++ b/source/blender/draw/intern/shaders/common_globals_lib.glsl
@@ -70,6 +70,9 @@ layout(std140) uniform globalsBlock
vec4 colorGridAxisY;
vec4 colorGridAxisZ;
+ vec4 colorFaceBack;
+ vec4 colorFaceFront;
+
vec4 screenVecs[2];
vec4 sizeViewport; /* Inverted size in zw. */
diff --git a/source/blender/editors/include/UI_resources.h b/source/blender/editors/include/UI_resources.h
index 738a91c085d..bd8eed4e4aa 100644
--- a/source/blender/editors/include/UI_resources.h
+++ b/source/blender/editors/include/UI_resources.h
@@ -99,6 +99,8 @@ typedef enum ThemeColorID {
TH_EDGE_FACESEL,
TH_FACE,
TH_FACE_SELECT,
+ TH_FACE_BACK,
+ TH_FACE_FRONT,
TH_NORMAL,
TH_VNORMAL,
TH_LNORMAL,
diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c
index 99833e9200d..f8b4d85a212 100644
--- a/source/blender/editors/interface/resources.c
+++ b/source/blender/editors/interface/resources.c
@@ -401,6 +401,12 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
case TH_FACE_SELECT:
cp = ts->face_select;
break;
+ case TH_FACE_BACK:
+ cp = ts->face_back;
+ break;
+ case TH_FACE_FRONT:
+ cp = ts->face_front;
+ break;
case TH_FACE_DOT:
cp = ts->face_dot;
break;
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index adab1f31507..fb88f5c9dd4 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -276,7 +276,7 @@ typedef struct ThemeSpace {
unsigned char edge[4], edge_select[4];
unsigned char edge_seam[4], edge_sharp[4], edge_facesel[4], edge_crease[4], edge_bevel[4];
/** Solid faces. */
- unsigned char face[4], face_select[4];
+ unsigned char face[4], face_select[4], face_back[4], face_front[4];
/** selected color. */
unsigned char face_dot[4];
unsigned char extra_edge_len[4], extra_edge_angle[4], extra_face_angle[4], extra_face_area[4];
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index af30baf4a80..52ad217a9e8 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -1900,6 +1900,16 @@ static void rna_def_userdef_theme_spaces_face(StructRNA *srna)
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Freestyle Face Mark", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
+
+ prop = RNA_def_property(srna, "face_back", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_array(prop, 4);
+ RNA_def_property_ui_text(prop, "Face Orientation Back", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
+
+ prop = RNA_def_property(srna, "face_front", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_array(prop, 4);
+ RNA_def_property_ui_text(prop, "Face Orientation Front", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
static void rna_def_userdef_theme_spaces_paint_curves(StructRNA *srna)