diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-05-14 17:23:24 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-05-14 17:23:24 +0300 |
commit | bd80c216355655830bde7f4b569b554dbd34d575 (patch) | |
tree | a1a8ca50a425e024df5547c23c52fd2f1e54ed57 /source/blender/draw/engines | |
parent | fc4f2571ba29e8f29e7f1d8a915f3a9e38229a28 (diff) | |
parent | b7386c66f9fdd8b6a3139c1ea4a4256c9729aab5 (diff) |
Merge branch 'blender-v2.83-release'
Diffstat (limited to 'source/blender/draw/engines')
5 files changed, 19 insertions, 6 deletions
diff --git a/source/blender/draw/engines/overlay/overlay_edit_curve.c b/source/blender/draw/engines/overlay/overlay_edit_curve.c index d9b9fac6b4b..6456d6868a5 100644 --- a/source/blender/draw/engines/overlay/overlay_edit_curve.c +++ b/source/blender/draw/engines/overlay/overlay_edit_curve.c @@ -66,6 +66,7 @@ void OVERLAY_edit_curve_cache_init(OVERLAY_Data *vedata) sh = OVERLAY_shader_edit_curve_point(); pd->edit_curve_points_grp = grp = DRW_shgroup_create(sh, psl->edit_curve_handle_ps); + DRW_shgroup_uniform_bool_copy(grp, "showCurveHandles", pd->edit_curve.show_handles); DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo); } } @@ -94,7 +95,7 @@ void OVERLAY_edit_curve_cache_populate(OVERLAY_Data *vedata, Object *ob) DRW_shgroup_call_no_cull(pd->edit_curve_handle_grp, geom, ob); } - geom = DRW_cache_curve_vert_overlay_get(ob, pd->edit_curve.show_handles); + geom = DRW_cache_curve_vert_overlay_get(ob); if (geom) { DRW_shgroup_call_no_cull(pd->edit_curve_points_grp, geom, ob); } @@ -110,7 +111,7 @@ void OVERLAY_edit_surf_cache_populate(OVERLAY_Data *vedata, Object *ob) DRW_shgroup_call_no_cull(pd->edit_curve_handle_grp, geom, ob); } - geom = DRW_cache_curve_vert_overlay_get(ob, false); + geom = DRW_cache_curve_vert_overlay_get(ob); if (geom) { DRW_shgroup_call_no_cull(pd->edit_curve_points_grp, geom, ob); } diff --git a/source/blender/draw/engines/overlay/overlay_grid.c b/source/blender/draw/engines/overlay/overlay_grid.c index 858ccf02625..f824f7736d2 100644 --- a/source/blender/draw/engines/overlay/overlay_grid.c +++ b/source/blender/draw/engines/overlay/overlay_grid.c @@ -60,8 +60,10 @@ void OVERLAY_grid_init(OVERLAY_Data *vedata) const bool show_ortho_grid = (pd->v3d_gridflag & V3D_SHOW_ORTHO_GRID) != 0; shd->grid_flag = 0; + shd->zneg_flag = 0; + shd->zpos_flag = 0; - if (pd->hide_overlays || !(show_axis_y || show_axis_z || show_floor || show_ortho_grid)) { + if (pd->hide_overlays || !pd->v3d_gridflag) { return; } diff --git a/source/blender/draw/engines/overlay/shaders/edit_curve_handle_geom.glsl b/source/blender/draw/engines/overlay/shaders/edit_curve_handle_geom.glsl index b6576ba7a21..b444b3b0fec 100644 --- a/source/blender/draw/engines/overlay/shaders/edit_curve_handle_geom.glsl +++ b/source/blender/draw/engines/overlay/shaders/edit_curve_handle_geom.glsl @@ -1,7 +1,8 @@ /* Keep the same value of `ACTIVE_NURB` in `draw_cache_imp_curve.c` */ #define ACTIVE_NURB 1 << 2 -#define EVEN_U_BIT 1 << 3 +#define EVEN_U_BIT 1 << 4 +#define COLOR_SHIFT 5 layout(lines) in; layout(triangle_strip, max_vertices = 10) out; @@ -37,7 +38,7 @@ void main() vec4 v2 = gl_in[1].gl_Position; int is_active_nurb = (vertFlag[1] & ACTIVE_NURB); - int color_id = (vertFlag[1] >> 4); + int color_id = (vertFlag[1] >> COLOR_SHIFT); /* Don't output any edges if we don't show handles */ if (!showCurveHandles && (color_id < 5)) { diff --git a/source/blender/draw/engines/overlay/shaders/edit_curve_point_vert.glsl b/source/blender/draw/engines/overlay/shaders/edit_curve_point_vert.glsl index aca40bba171..6fa4576ae71 100644 --- a/source/blender/draw/engines/overlay/shaders/edit_curve_point_vert.glsl +++ b/source/blender/draw/engines/overlay/shaders/edit_curve_point_vert.glsl @@ -1,4 +1,9 @@ +/* Keep the same value of `BEZIER_HANDLE` in `draw_cache_imp_curve.c` */ +#define BEZIER_HANDLE 1 << 3 + +uniform bool showCurveHandles; + in vec3 pos; in int data; @@ -26,4 +31,9 @@ void main() #ifdef USE_WORLD_CLIP_PLANES world_clip_planes_calc_clip_distance(world_pos); #endif + + if (!showCurveHandles && ((data & BEZIER_HANDLE) != 0)) { + /* We set the vertex at the camera origin to generate 0 fragments. */ + gl_Position = vec4(0.0, 0.0, -3e36, 0.0); + } } diff --git a/source/blender/draw/engines/workbench/workbench_engine.c b/source/blender/draw/engines/workbench/workbench_engine.c index 270a33fdd85..511dd563b46 100644 --- a/source/blender/draw/engines/workbench/workbench_engine.c +++ b/source/blender/draw/engines/workbench/workbench_engine.c @@ -113,7 +113,6 @@ static void workbench_cache_sculpt_populate(WORKBENCH_PrivateData *wpd, Object *ob, eV3DShadingColorType color_type) { - const bool use_vcol = ELEM(color_type, V3D_SHADING_VERTEX_COLOR); const bool use_single_drawcall = !ELEM(color_type, V3D_SHADING_MATERIAL_COLOR); BLI_assert(wpd->shading.color_type != V3D_SHADING_TEXTURE_COLOR); |