forked from blender/blender
main sync #3
@ -838,8 +838,12 @@ static DRWSubdivCache *mesh_batch_cache_ensure_subdiv_cache(MeshBatchCache *mbc)
|
|||||||
|
|
||||||
static void draw_subdiv_invalidate_evaluator_for_orco(Subdiv *subdiv, Mesh *mesh)
|
static void draw_subdiv_invalidate_evaluator_for_orco(Subdiv *subdiv, Mesh *mesh)
|
||||||
{
|
{
|
||||||
|
if (!(subdiv && subdiv->evaluator)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const bool has_orco = CustomData_has_layer(&mesh->vdata, CD_ORCO);
|
const bool has_orco = CustomData_has_layer(&mesh->vdata, CD_ORCO);
|
||||||
if (has_orco && subdiv->evaluator && !subdiv->evaluator->hasVertexData(subdiv->evaluator)) {
|
if (has_orco && !subdiv->evaluator->hasVertexData(subdiv->evaluator)) {
|
||||||
/* If we suddenly have/need original coordinates, recreate the evaluator if the extra
|
/* If we suddenly have/need original coordinates, recreate the evaluator if the extra
|
||||||
* source was not created yet. The refiner also has to be recreated as refinement for source
|
* source was not created yet. The refiner also has to be recreated as refinement for source
|
||||||
* and vertex data is done only once. */
|
* and vertex data is done only once. */
|
||||||
@ -2113,13 +2117,13 @@ static bool draw_subdiv_create_requested_buffers(Object *ob,
|
|||||||
bm = mesh->edit_mesh->bm;
|
bm = mesh->edit_mesh->bm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
draw_subdiv_invalidate_evaluator_for_orco(runtime_data->subdiv_gpu, mesh_eval);
|
||||||
|
|
||||||
Subdiv *subdiv = BKE_subsurf_modifier_subdiv_descriptor_ensure(runtime_data, mesh_eval, true);
|
Subdiv *subdiv = BKE_subsurf_modifier_subdiv_descriptor_ensure(runtime_data, mesh_eval, true);
|
||||||
if (!subdiv) {
|
if (!subdiv) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
draw_subdiv_invalidate_evaluator_for_orco(subdiv, mesh_eval);
|
|
||||||
|
|
||||||
if (!BKE_subdiv_eval_begin_from_mesh(
|
if (!BKE_subdiv_eval_begin_from_mesh(
|
||||||
subdiv, mesh_eval, nullptr, SUBDIV_EVALUATOR_TYPE_GPU, evaluator_cache)) {
|
subdiv, mesh_eval, nullptr, SUBDIV_EVALUATOR_TYPE_GPU, evaluator_cache)) {
|
||||||
/* This could happen in two situations:
|
/* This could happen in two situations:
|
||||||
|
Loading…
Reference in New Issue
Block a user