diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-08-13 14:03:50 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-08-13 14:10:00 +0300 |
commit | 3ee6b940dfd42a2251d1d3d44131f754d27769dd (patch) | |
tree | 4ffbe4971de6a72467f07dcc5641d48358fc54bf /source/blender/modifiers/intern/MOD_subsurf.c | |
parent | e6827ad9a6fe2810d50b44106bac7c4b2fa55127 (diff) |
Subsurf: Remove OpenSubdiv options from modifier
There are following reasons to do so:
- The plan is to replace it with some sort of object or viewport option,
so we can apply OpenSubdiv subdivisions on top of modifier stack and
keep modifier stack purely CPU side.
This will solve issues when adding some relation in scene will force
modifier to be evaluated on CPU.
- With new upcoming OpenSubdiv based CPU modifier implementation we can
cache topology similar to what GPU side was doing, which will already
be reasonably faster.
- OpenSubdiv GPU does not work since the OpenGL version bump, and is
to be rewritten with all the adaptive refine options kept in mind.
Since OpenSubdiv GPU was already broken and was only causing object
to become invisible, there is no reason to keep having that option in
the modifier.
Reviewers: brecht
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D3598
Diffstat (limited to 'source/blender/modifiers/intern/MOD_subsurf.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_subsurf.c | 51 |
1 files changed, 1 insertions, 50 deletions
diff --git a/source/blender/modifiers/intern/MOD_subsurf.c b/source/blender/modifiers/intern/MOD_subsurf.c index 82e2d8bfe8d..58cdea0df10 100644 --- a/source/blender/modifiers/intern/MOD_subsurf.c +++ b/source/blender/modifiers/intern/MOD_subsurf.c @@ -113,9 +113,6 @@ static DerivedMesh *applyModifier( const bool useRenderParams = (ctx->flag & MOD_APPLY_RENDER) != 0; const bool isFinalCalc = (ctx->flag & MOD_APPLY_USECACHE) != 0; -#ifdef WITH_OPENSUBDIV - const bool allow_gpu = (ctx->flag & MOD_APPLY_ALLOW_GPU) != 0; -#endif bool do_cddm_convert = useRenderParams || !isFinalCalc; if (useRenderParams) @@ -125,31 +122,6 @@ static DerivedMesh *applyModifier( if (ctx->object->mode & OB_MODE_EDIT) subsurf_flags |= SUBSURF_IN_EDIT_MODE; -#ifdef WITH_OPENSUBDIV - /* TODO(sergey): Not entirely correct, modifiers on top of subsurf - * could be disabled. - */ - if (md->next == NULL && - allow_gpu && - do_cddm_convert == false && - smd->use_opensubdiv) - { - if (U.opensubdiv_compute_type == USER_OPENSUBDIV_COMPUTE_NONE) { - modifier_setError(md, "OpenSubdiv is disabled in User Preferences"); - } - else if ((ctx->object->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT | OB_MODE_TEXTURE_PAINT)) != 0) { - modifier_setError(md, "OpenSubdiv is not supported in paint modes"); - } - else if ((DEG_get_eval_flags_for_id(ctx->depsgraph, &ctx->object->id) & DAG_EVAL_NEED_CPU) == 0) { - subsurf_flags |= SUBSURF_USE_GPU_BACKEND; - do_cddm_convert = false; - } - else { - modifier_setError(md, "OpenSubdiv is disabled due to dependencies"); - } - } -#endif - result = subsurf_make_derived_from_derived(derivedData, smd, scene, NULL, subsurf_flags); result->cd_flag = derivedData->cd_flag; @@ -159,9 +131,7 @@ static DerivedMesh *applyModifier( result = cddm; } -#ifndef WITH_OPESUBDIV (void) do_cddm_convert; -#endif return result; } @@ -176,12 +146,6 @@ static DerivedMesh *applyModifierEM( DerivedMesh *result; /* 'orco' using editmode flags would cause cache to be used twice in editbmesh_calc_modifiers */ SubsurfFlags ss_flags = (ctx->flag & MOD_APPLY_ORCO) ? 0 : (SUBSURF_FOR_EDIT_MODE | SUBSURF_IN_EDIT_MODE); -#ifdef WITH_OPENSUBDIV - const bool allow_gpu = (ctx->flag & MOD_APPLY_ALLOW_GPU) != 0; - if (md->next == NULL && allow_gpu && smd->use_opensubdiv) { - modifier_setError(md, "OpenSubdiv is not supported in edit mode"); - } -#endif result = subsurf_make_derived_from_derived(derivedData, smd, scene, NULL, ss_flags); return result; @@ -271,19 +235,6 @@ static Mesh *applyModifier_subdiv(ModifierData *md, } #endif -static bool dependsOnNormals(ModifierData *md) -{ -#ifdef WITH_OPENSUBDIV - SubsurfModifierData *smd = (SubsurfModifierData *) md; - if (smd->use_opensubdiv && md->next == NULL) { - return true; - } -#else - UNUSED_VARS(md); -#endif - return false; -} - ModifierTypeInfo modifierType_Subsurf = { /* name */ "Subsurf", /* structName */ "SubsurfModifierData", @@ -321,7 +272,7 @@ ModifierTypeInfo modifierType_Subsurf = { /* isDisabled */ isDisabled, /* updateDepsgraph */ NULL, /* dependsOnTime */ NULL, - /* dependsOnNormals */ dependsOnNormals, + /* dependsOnNormals */ NULL, /* foreachObjectLink */ NULL, /* foreachIDLink */ NULL, /* foreachTexLink */ NULL, |