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-03-04 21:15:18 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-03-04 21:18:12 +0300
commit89db684d82f77d41f24335a7e90a9db320d1dfe0 (patch)
tree370ee3021cbf02d48cc84220e16c80b1f3b071ab /source/blender/draw
parent81ae7773e74a2f393b0ecf1818335c2b46668e4a (diff)
Preferences: Add option to disable edit-mode wire Antialiasing
Requested by some users who prefer old wireframe precision. Smooth wires are still enabled by defaults as they don't have a noticeable perf impact. Application restart is needed for changes to take effects.
Diffstat (limited to 'source/blender/draw')
-rw-r--r--source/blender/draw/modes/edit_mesh_mode.c5
-rw-r--r--source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl2
-rw-r--r--source/blender/draw/modes/shaders/edit_mesh_overlay_geom.glsl3
3 files changed, 7 insertions, 3 deletions
diff --git a/source/blender/draw/modes/edit_mesh_mode.c b/source/blender/draw/modes/edit_mesh_mode.c
index d599e390ca7..9afb9ce40a0 100644
--- a/source/blender/draw/modes/edit_mesh_mode.c
+++ b/source/blender/draw/modes/edit_mesh_mode.c
@@ -197,6 +197,7 @@ static void EDIT_MESH_engine_init(void *vedata)
geom_sh_code[0] = NULL;
}
const char *use_geom_def = use_geom_shader ? "#define USE_GEOM_SHADER\n" : "";
+ const char *use_smooth_def = (U.uiflag2 & USER_EDIT_MODE_SMOOTH_WIRE) ? "#define USE_SMOOTH_WIRE\n" : "";
sh_data->overlay_face = GPU_shader_create_from_arrays({
.vert = (const char *[]){lib, datatoc_edit_mesh_overlay_vert_glsl, NULL},
.frag = (const char *[]){datatoc_gpu_shader_3D_smooth_color_frag_glsl, NULL},
@@ -205,13 +206,13 @@ static void EDIT_MESH_engine_init(void *vedata)
sh_data->overlay_edge = GPU_shader_create_from_arrays({
.vert = (const char *[]){lib, datatoc_edit_mesh_overlay_vert_glsl, NULL},
.frag = (const char *[]){lib, datatoc_edit_mesh_overlay_frag_glsl, NULL},
- .defs = (const char *[]){sh_cfg_data->def, use_geom_def, "#define EDGE\n", NULL},
+ .defs = (const char *[]){sh_cfg_data->def, use_geom_def, use_smooth_def, "#define EDGE\n", NULL},
.geom = (use_geom_shader) ? geom_sh_code : NULL,
});
sh_data->overlay_edge_flat = GPU_shader_create_from_arrays({
.vert = (const char *[]){lib, datatoc_edit_mesh_overlay_vert_glsl, NULL},
.frag = (const char *[]){lib, datatoc_edit_mesh_overlay_frag_glsl, NULL},
- .defs = (const char *[]){sh_cfg_data->def, use_geom_def, "#define EDGE\n", "#define FLAT\n", NULL},
+ .defs = (const char *[]){sh_cfg_data->def, use_geom_def, use_smooth_def, "#define EDGE\n", "#define FLAT\n", NULL},
.geom = (use_geom_shader) ? geom_sh_code : NULL,
});
sh_data->overlay_vert = GPU_shader_create_from_arrays({
diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl
index d48c5158872..dbad525c281 100644
--- a/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl
+++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl
@@ -24,7 +24,7 @@ void main()
{
float dist = abs(edgeCoord_f) - max(sizeEdge * edgeScale - 0.5, 0.0);
float dist_outer = dist - max(sizeEdge * edgeScale, 1.0);
-#if 1
+#ifdef USE_SMOOTH_WIRE
float mix_w = smoothstep(GRID_LINE_SMOOTH_START, GRID_LINE_SMOOTH_END, dist);
float mix_w_outer = smoothstep(GRID_LINE_SMOOTH_START, GRID_LINE_SMOOTH_END, dist_outer);
#else
diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom.glsl
index b36c1ff869f..9a0bda3b81d 100644
--- a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom.glsl
+++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom.glsl
@@ -40,8 +40,11 @@ void main()
float half_size = sizeEdge * edgeScale;
/* Enlarge edge for flag display. */
half_size += (finalColorOuter_f.a > 0.0) ? max(sizeEdge * edgeScale, 1.0) : 0.0;
+
+#ifdef USE_SMOOTH_WIRE
/* Add 1 px for AA */
half_size += 0.5;
+#endif
vec3 edge_ofs = half_size * viewportSizeInv.xyy * vec3(1.0, 1.0, 0.0);