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:
authorClément Foucault <foucault.clem@gmail.com>2019-06-11 18:29:31 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-06-11 18:49:19 +0300
commitc84c59c81bc90a915b7e74aa90a0bc1fe8aadd22 (patch)
treee60399f8cb0e393e975c1ad50173597a4d91f776 /source/blender/draw/modes/overlay_mode.c
parentc5b1e7cd4e86f9aff010fa84192d783b895ce6c7 (diff)
Fix T65406 Edit Mode: Edge selection is below wireframe overlay
This was due to a double offset of the wireframe. We also reduce the wireframe offset. The look of the wireframe overlay changes a little with on distant wires.
Diffstat (limited to 'source/blender/draw/modes/overlay_mode.c')
-rw-r--r--source/blender/draw/modes/overlay_mode.c16
1 files changed, 2 insertions, 14 deletions
diff --git a/source/blender/draw/modes/overlay_mode.c b/source/blender/draw/modes/overlay_mode.c
index fe989dbe8cd..aaaeefa81c9 100644
--- a/source/blender/draw/modes/overlay_mode.c
+++ b/source/blender/draw/modes/overlay_mode.c
@@ -166,7 +166,7 @@ static void overlay_engine_init(void *vedata)
#endif
}
- stl->g_data->view_wires = DRW_view_create_with_zoffset(draw_ctx->rv3d, 1.0f);
+ stl->g_data->view_wires = DRW_view_create_with_zoffset(draw_ctx->rv3d, 0.5f);
}
static void overlay_cache_init(void *vedata)
@@ -178,11 +178,9 @@ static void overlay_cache_init(void *vedata)
const DRWContextState *draw_ctx = DRW_context_state_get();
RegionView3D *rv3d = draw_ctx->rv3d;
+ View3D *v3d = draw_ctx->v3d;
OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
- const DRWContextState *DCS = DRW_context_state_get();
-
- View3D *v3d = DCS->v3d;
if (v3d) {
g_data->overlay = v3d->overlay;
g_data->show_overlays = (v3d->flag2 & V3D_HIDE_OVERLAYS) == 0;
@@ -221,15 +219,6 @@ static void overlay_cache_init(void *vedata)
DRW_STATE_FIRST_VERTEX_CONVENTION;
float wire_size = U.pixelsize * 0.5f;
- float winmat[4][4];
- float viewdist = rv3d->dist;
- DRW_view_winmat_get(NULL, winmat, false);
- /* special exception for ortho camera (viewdist isnt used for perspective cameras) */
- if (rv3d->persp == RV3D_CAMOB && rv3d->is_persp == false) {
- viewdist = 1.0f / max_ff(fabsf(rv3d->winmat[0][0]), fabsf(rv3d->winmat[1][1]));
- }
- const float depth_ofs = bglPolygonOffsetCalc((float *)winmat, viewdist, 1.0f);
-
const bool use_select = (DRW_state_is_select() || DRW_state_is_depth());
GPUShader *face_wires_sh = use_select ? sh_data->select_wireframe : sh_data->face_wireframe;
@@ -238,7 +227,6 @@ static void overlay_cache_init(void *vedata)
g_data->face_wires_shgrp = DRW_shgroup_create(face_wires_sh, psl->face_wireframe_pass);
DRW_shgroup_uniform_float(
g_data->face_wires_shgrp, "wireStepParam", &g_data->wire_step_param, 1);
- DRW_shgroup_uniform_float_copy(g_data->face_wires_shgrp, "ofs", depth_ofs);
if (use_select || USE_GEOM_SHADER_WORKAROUND) {
DRW_shgroup_uniform_float_copy(g_data->face_wires_shgrp, "wireSize", wire_size);
DRW_shgroup_uniform_vec2(