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:
authorJun Mizutani <jmztn>2020-11-13 10:07:07 +0300
committerJeroen Bakker <jeroen@blender.org>2020-11-13 10:14:56 +0300
commitdb7d8281c5a2a56bbc2b7c05ec7160d8819ee191 (patch)
treec92d292c100a1f2dad65c4d4e69296418fb495e1 /source/blender/draw
parentf00ebd4dba25f1ddc728a1431a1f81dd03c17457 (diff)
Add An Opacity Slider to Overlay Wireframe
This patch adds an opacity slider to the wireframe overlay. The previous wireframe in dense geometry scenes could be too dark and sometimes the user just wants an impression of the geometry during modelling. Reviewed By: Jeroen Bakker Differential Revision: https://developer.blender.org/D7622
Diffstat (limited to 'source/blender/draw')
-rw-r--r--source/blender/draw/engines/overlay/overlay_engine.c1
-rw-r--r--source/blender/draw/engines/overlay/overlay_private.h1
-rw-r--r--source/blender/draw/engines/overlay/overlay_wireframe.c2
-rw-r--r--source/blender/draw/engines/overlay/shaders/wireframe_frag.glsl5
-rw-r--r--source/blender/draw/engines/overlay/shaders/wireframe_vert.glsl8
5 files changed, 11 insertions, 6 deletions
diff --git a/source/blender/draw/engines/overlay/overlay_engine.c b/source/blender/draw/engines/overlay/overlay_engine.c
index e49b2e45580..5188d338183 100644
--- a/source/blender/draw/engines/overlay/overlay_engine.c
+++ b/source/blender/draw/engines/overlay/overlay_engine.c
@@ -90,6 +90,7 @@ static void OVERLAY_engine_init(void *vedata)
V3D_OVERLAY_HIDE_BONES | V3D_OVERLAY_HIDE_OBJECT_XTRAS |
V3D_OVERLAY_HIDE_OBJECT_ORIGINS;
pd->overlay.wireframe_threshold = v3d->overlay.wireframe_threshold;
+ pd->overlay.wireframe_opacity = v3d->overlay.wireframe_opacity;
}
if (v3d->shading.type == OB_WIRE) {
diff --git a/source/blender/draw/engines/overlay/overlay_private.h b/source/blender/draw/engines/overlay/overlay_private.h
index d5ba0a5423f..c259d9351f3 100644
--- a/source/blender/draw/engines/overlay/overlay_private.h
+++ b/source/blender/draw/engines/overlay/overlay_private.h
@@ -140,6 +140,7 @@ typedef struct OVERLAY_ShadingData {
int zneg_flag;
/** Wireframe */
float wire_step_param;
+ float wire_opacity;
/** Edit Curve */
float edit_curve_normal_length;
/** Edit Mesh */
diff --git a/source/blender/draw/engines/overlay/overlay_wireframe.c b/source/blender/draw/engines/overlay/overlay_wireframe.c
index 7d2939d101e..617dda56421 100644
--- a/source/blender/draw/engines/overlay/overlay_wireframe.c
+++ b/source/blender/draw/engines/overlay/overlay_wireframe.c
@@ -62,6 +62,7 @@ void OVERLAY_wireframe_cache_init(OVERLAY_Data *vedata)
View3DShading *shading = &draw_ctx->v3d->shading;
pd->shdata.wire_step_param = pd->overlay.wireframe_threshold - 254.0f / 255.0f;
+ pd->shdata.wire_opacity = pd->overlay.wireframe_opacity;
bool is_wire_shmode = (shading->type == OB_WIRE);
bool is_material_shmode = (shading->type > OB_SOLID);
@@ -95,6 +96,7 @@ void OVERLAY_wireframe_cache_init(OVERLAY_Data *vedata)
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
DRW_shgroup_uniform_texture_ref(grp, "depthTex", depth_tx);
DRW_shgroup_uniform_float_copy(grp, "wireStepParam", pd->shdata.wire_step_param);
+ DRW_shgroup_uniform_float_copy(grp, "wireOpacity", pd->shdata.wire_opacity);
DRW_shgroup_uniform_bool_copy(grp, "useColoring", use_coloring);
DRW_shgroup_uniform_bool_copy(grp, "isTransform", (G.moving & G_TRANSFORM_OBJ) != 0);
DRW_shgroup_uniform_bool_copy(grp, "isObjectColor", is_object_color);
diff --git a/source/blender/draw/engines/overlay/shaders/wireframe_frag.glsl b/source/blender/draw/engines/overlay/shaders/wireframe_frag.glsl
index b5442dc1b0b..5c8c22c57d9 100644
--- a/source/blender/draw/engines/overlay/shaders/wireframe_frag.glsl
+++ b/source/blender/draw/engines/overlay/shaders/wireframe_frag.glsl
@@ -5,7 +5,7 @@ uniform sampler2D depthTex;
flat in vec2 edgeStart;
#ifndef SELECT_EDGES
-in vec3 finalColor;
+in vec4 finalColor;
noperspective in vec2 edgePos;
layout(location = 0) out vec4 fragColor;
@@ -22,8 +22,7 @@ void main()
#ifndef SELECT_EDGES
lineOutput = pack_line_data(gl_FragCoord.xy, edgeStart, edgePos);
- fragColor.rgb = finalColor;
- fragColor.a = 1.0;
+ fragColor = finalColor;
# ifdef CUSTOM_DEPTH_BIAS
vec2 dir = lineOutput.xy * 2.0 - 1.0;
diff --git a/source/blender/draw/engines/overlay/shaders/wireframe_vert.glsl b/source/blender/draw/engines/overlay/shaders/wireframe_vert.glsl
index f7467aa3bf4..2950a66570f 100644
--- a/source/blender/draw/engines/overlay/shaders/wireframe_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/wireframe_vert.glsl
@@ -1,5 +1,6 @@
uniform float wireStepParam;
+uniform float wireOpacity;
uniform bool useColoring;
uniform bool isTransform;
uniform bool isObjectColor;
@@ -14,7 +15,7 @@ in float wd; /* wiredata */
flat out vec2 edgeStart;
#ifndef SELECT_EDGES
-out vec3 finalColor;
+out vec4 finalColor;
noperspective out vec2 edgePos;
#endif
@@ -156,8 +157,9 @@ void main()
rim_col = pow(rim_col, vec3(1.0 / 2.2));
wire_col = pow(wire_col, vec3(1.0 / 2.2));
vec3 final_front_col = mix(rim_col, wire_col, 0.35);
- finalColor = mix(rim_col, final_front_col, facing);
- finalColor = pow(finalColor, vec3(2.2));
+ finalColor.rgb = mix(rim_col, final_front_col, facing);
+ finalColor.rgb = pow(finalColor.rgb, vec3(2.2));
+ finalColor.a = wireOpacity;
#endif
/* Cull flat edges below threshold. */