Fix T99715: Only force optimal display during on cage editing.

This loosens the current implementation a bit to only force optimal
display when editing on cage. It used to be any editing mode.

Brings GPU based subdivision closer to the CPU version.
This commit is contained in:
Jeroen Bakker 2022-08-02 13:38:34 +02:00
parent 33d0b7c5bd
commit 78ad9ebed3
Notes: blender-bot 2023-02-14 10:29:32 +01:00
Referenced by issue #99715, Regression: Optimal Display can't be turned off in Edit Mode (GPU subdivision)
3 changed files with 7 additions and 3 deletions

View File

@ -1893,6 +1893,7 @@ void DRW_mesh_batch_cache_create_requested(struct TaskGraph *task_graph,
ob->obmat,
true,
false,
do_cage,
ts,
use_hide);
}

View File

@ -2019,6 +2019,7 @@ static bool draw_subdiv_create_requested_buffers(Object *ob,
const float obmat[4][4],
const bool do_final,
const bool do_uvedit,
const bool do_cage,
const ToolSettings *ts,
const bool use_hide,
OpenSubdiv_EvaluatorCache *evaluator_cache)
@ -2062,9 +2063,8 @@ static bool draw_subdiv_create_requested_buffers(Object *ob,
return false;
}
/* Edges which do not come from coarse edges should not be drawn in edit mode, only in object
* mode when optimal display in turned off. */
const bool optimal_display = runtime_data->use_optimal_display || is_editmode;
/* Edges which do not come from coarse edges should not be drawn in edit cage mode. */
const bool optimal_display = runtime_data->use_optimal_display || (is_editmode && !do_cage);
draw_cache->bm = bm;
draw_cache->mesh = mesh_eval;
@ -2216,6 +2216,7 @@ void DRW_create_subdivision(Object *ob,
const float obmat[4][4],
const bool do_final,
const bool do_uvedit,
const bool do_cage,
const ToolSettings *ts,
const bool use_hide)
{
@ -2239,6 +2240,7 @@ void DRW_create_subdivision(Object *ob,
obmat,
do_final,
do_uvedit,
do_cage,
ts,
use_hide,
g_evaluator_cache)) {

View File

@ -199,6 +199,7 @@ void DRW_create_subdivision(struct Object *ob,
const float obmat[4][4],
const bool do_final,
const bool do_uvedit,
const bool do_cage,
const ToolSettings *ts,
const bool use_hide);