diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-09-26 01:48:55 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-09-26 01:49:50 +0300 |
commit | 5158da9e372228dfa880d818cd369a1730358de2 (patch) | |
tree | 2074e297ecb434eae591f1917617d70bfcfcbfd5 /source/blender/draw/modes/edit_curve_mode.c | |
parent | c9d0873e90acd8505ab984c5070f2f7890a29b5d (diff) |
Curve Edit: Cleanup/Improve/Fix handles drawing
Now handles are drawn using index buffer instead of duplicating memory
requirement.
Also make use of shader tricks to draw handles antialiased, and respond to
UI scalling.
Make vertex point match edit mesh vertex size.
Diffstat (limited to 'source/blender/draw/modes/edit_curve_mode.c')
-rw-r--r-- | source/blender/draw/modes/edit_curve_mode.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/source/blender/draw/modes/edit_curve_mode.c b/source/blender/draw/modes/edit_curve_mode.c index fd5f5907d24..54541680b9f 100644 --- a/source/blender/draw/modes/edit_curve_mode.c +++ b/source/blender/draw/modes/edit_curve_mode.c @@ -47,13 +47,12 @@ extern struct GlobalsUboStorage ts; /* draw_common.c */ extern char datatoc_common_globals_lib_glsl[]; extern char datatoc_edit_curve_overlay_loosevert_vert_glsl[]; -extern char datatoc_edit_curve_overlay_frag_glsl[]; +extern char datatoc_edit_curve_overlay_handle_vert_glsl[]; extern char datatoc_edit_curve_overlay_handle_geom_glsl[]; extern char datatoc_gpu_shader_3D_vert_glsl[]; -extern char datatoc_gpu_shader_uniform_color_frag_glsl[]; -extern char datatoc_gpu_shader_point_uniform_color_frag_glsl[]; -extern char datatoc_gpu_shader_flat_color_frag_glsl[]; +extern char datatoc_gpu_shader_point_varying_color_frag_glsl[]; +extern char datatoc_gpu_shader_3D_smooth_color_frag_glsl[]; /* *********** LISTS *********** */ /* All lists are per viewport specific datas. @@ -164,16 +163,16 @@ static void EDIT_CURVE_engine_init(void *vedata) if (!e_data.overlay_edge_sh) { e_data.overlay_edge_sh = DRW_shader_create_with_lib( - datatoc_edit_curve_overlay_loosevert_vert_glsl, + datatoc_edit_curve_overlay_handle_vert_glsl, datatoc_edit_curve_overlay_handle_geom_glsl, - datatoc_gpu_shader_flat_color_frag_glsl, + datatoc_gpu_shader_3D_smooth_color_frag_glsl, datatoc_common_globals_lib_glsl, NULL); } if (!e_data.overlay_vert_sh) { e_data.overlay_vert_sh = DRW_shader_create_with_lib( datatoc_edit_curve_overlay_loosevert_vert_glsl, NULL, - datatoc_edit_curve_overlay_frag_glsl, + datatoc_gpu_shader_point_varying_color_frag_glsl, datatoc_common_globals_lib_glsl, NULL); } } @@ -205,7 +204,7 @@ static void EDIT_CURVE_cache_init(void *vedata) psl->overlay_edge_pass = DRW_pass_create( "Curve Handle Overlay", - DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_WIRE); + DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND); grp = DRW_shgroup_create(e_data.overlay_edge_sh, psl->overlay_edge_pass); DRW_shgroup_uniform_block(grp, "globalsBlock", globals_ubo); @@ -215,7 +214,7 @@ static void EDIT_CURVE_cache_init(void *vedata) psl->overlay_vert_pass = DRW_pass_create( "Curve Vert Overlay", - DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_POINT); + DRW_STATE_WRITE_COLOR | DRW_STATE_POINT); grp = DRW_shgroup_create(e_data.overlay_vert_sh, psl->overlay_vert_pass); DRW_shgroup_uniform_block(grp, "globalsBlock", globals_ubo); |