diff options
m--------- | release/datafiles/locale | 0 | ||||
m--------- | release/scripts/addons | 0 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_view3d.py | 1 | ||||
-rw-r--r-- | source/blender/blenloader/intern/versioning_290.c | 13 | ||||
-rw-r--r-- | source/blender/draw/engines/overlay/overlay_engine.c | 1 | ||||
-rw-r--r-- | source/blender/draw/engines/overlay/overlay_private.h | 1 | ||||
-rw-r--r-- | source/blender/draw/engines/overlay/overlay_wireframe.c | 2 | ||||
-rw-r--r-- | source/blender/draw/engines/overlay/shaders/wireframe_frag.glsl | 5 | ||||
-rw-r--r-- | source/blender/draw/engines/overlay/shaders/wireframe_vert.glsl | 8 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_view3d_defaults.h | 1 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_view3d_types.h | 2 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_space.c | 10 | ||||
m--------- | source/tools | 0 |
13 files changed, 37 insertions, 7 deletions
diff --git a/release/datafiles/locale b/release/datafiles/locale -Subproject 8f5a0e027f131104974763d30db36b1a9ffae16 +Subproject 848613f1edf09495bb764144461730662ac0b06 diff --git a/release/scripts/addons b/release/scripts/addons -Subproject 33eae7da675d532bbb9c12b129c0e30228f5f00 +Subproject 35c23b4db494e58538a677c4fb0ec9ec1e8ffaa diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 94acab20e66..1b5a7da61b0 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -6127,6 +6127,7 @@ class VIEW3D_PT_overlay_geometry(Panel): sub = row.row() sub.active = overlay.show_wireframes or is_wireframes sub.prop(overlay, "wireframe_threshold", text="Wireframe") + sub.prop(overlay, "wireframe_opacity", text="Opacity") row = col.row(align=True) if context.mode not in { diff --git a/source/blender/blenloader/intern/versioning_290.c b/source/blender/blenloader/intern/versioning_290.c index fab4ce6727f..1574fe9b548 100644 --- a/source/blender/blenloader/intern/versioning_290.c +++ b/source/blender/blenloader/intern/versioning_290.c @@ -1139,5 +1139,18 @@ void blo_do_versions_290(FileData *fd, Library *UNUSED(lib), Main *bmain) */ { /* Keep this block, even when empty. */ + /* Initialize the opacity of the overlay wireframe */ + if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "wireframe_opacity")) { + for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { + LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { + LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) { + if (sl->spacetype == SPACE_VIEW3D) { + View3D *v3d = (View3D *)sl; + v3d->overlay.wireframe_opacity = 1.0f; + } + } + } + } + } } } 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. */ diff --git a/source/blender/makesdna/DNA_view3d_defaults.h b/source/blender/makesdna/DNA_view3d_defaults.h index 68f23b33d07..10d0bafec61 100644 --- a/source/blender/makesdna/DNA_view3d_defaults.h +++ b/source/blender/makesdna/DNA_view3d_defaults.h @@ -51,6 +51,7 @@ #define _DNA_DEFAULT_View3DOverlay \ { \ .wireframe_threshold = 1.0f, \ + .wireframe_opacity = 1.0f, \ .xray_alpha_bone = 0.5f, \ .fade_alpha = 0.40f, \ .texture_paint_mode_opacity = 1.0f, \ diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h index 3fc8b05c8b4..7e80fc1bd6d 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -223,6 +223,7 @@ typedef struct View3DOverlay { /** Other settings. */ float wireframe_threshold; + float wireframe_opacity; /** Grease pencil settings. */ float gpencil_paper_opacity; @@ -233,7 +234,6 @@ typedef struct View3DOverlay { float gpencil_vertex_paint_opacity; /** Handles display type for curves. */ int handle_display; - char _pad[4]; } View3DOverlay; /* View3DOverlay->handle_display */ diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 0f4904e5e8f..f63a4ce041f 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -3716,6 +3716,16 @@ static void rna_def_space_view3d_overlay(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + prop = RNA_def_property(srna, "wireframe_opacity", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "overlay.wireframe_opacity"); + RNA_def_property_ui_text(prop, + "Wireframe Opacity", + "Opacity of the displayed edges " + "(1.0 for opaque)"); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + prop = RNA_def_property(srna, "show_paint_wire", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "overlay.paint_flag", V3D_OVERLAY_PAINT_WIRE); RNA_def_property_ui_text(prop, "Show Wire", "Use wireframe display in painting modes"); diff --git a/source/tools b/source/tools -Subproject 7011d02c292ac1c91a5c9cc1a075ea2727982ce +Subproject 660be0ca10abc8261178159afcd1032be662e38 |