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:
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/blender/draw
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/blender/draw')
-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
6 files changed, 13 insertions, 7 deletions
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. */