diff options
author | Harley Acheson <harley.acheson@gmail.com> | 2019-12-07 19:16:45 +0300 |
---|---|---|
committer | Harley Acheson <harley.acheson@gmail.com> | 2019-12-07 19:16:45 +0300 |
commit | 9c1134015c34ff19f3ff27c89321c019c67904b8 (patch) | |
tree | 0d1c5734282ad7f8d15e4d5261fba4a4edde7c15 /source/blender/draw | |
parent | 958d0d4236b1cfa600a7f36f6bdc51fdd0d98a97 (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')
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. */ |