Cleanup: Remove remnants of old color layer preview system

For context, see 6d09fa3577. Overall, these values were still
written in some cases, but never used. Nowadays the viewer node and
attribute overlays give even better answers to these needs.
This commit is contained in:
Hans Goudey
2023-12-05 09:30:13 -05:00
parent 874f83c42e
commit fe3b8b6e9b
13 changed files with 21 additions and 152 deletions
+1 -10
View File
@@ -97,8 +97,6 @@ enum ModifierTypeFlag {
/** Some modifier can't be added manually by user */
eModifierTypeFlag_NoUserAdd = (1 << 8),
/** For modifiers that use CD_PREVIEW_MCOL for preview. */
eModifierTypeFlag_UsesPreview = (1 << 9),
eModifierTypeFlag_AcceptsVertexCosOnly = (1 << 10),
/** Accepts #BMesh input (without conversion). */
@@ -442,8 +440,6 @@ void BKE_modifier_set_error(const Object *ob, ModifierData *md, const char *form
void BKE_modifier_set_warning(const Object *ob, ModifierData *md, const char *format, ...)
ATTR_PRINTF_FORMAT(3, 4);
bool BKE_modifier_is_preview(ModifierData *md);
void BKE_modifiers_foreach_ID_link(Object *ob, IDWalkFunc walk, void *user_data);
void BKE_modifiers_foreach_tex_link(Object *ob, TexWalkFunc walk, void *user_data);
@@ -502,12 +498,7 @@ struct CDMaskLink {
CDMaskLink *BKE_modifier_calc_data_masks(const Scene *scene,
ModifierData *md,
CustomData_MeshMasks *final_datamask,
int required_mode,
ModifierData *previewmd,
const CustomData_MeshMasks *previewmask);
ModifierData *BKE_modifier_get_last_preview(const Scene *scene,
ModifierData *md,
int required_mode);
int required_mode);
struct VirtualModifierData {
ArmatureModifierData amd;
@@ -601,27 +601,12 @@ static void mesh_calc_modifiers(Depsgraph *depsgraph,
ModifierData *firstmd = BKE_modifiers_get_virtual_modifierlist(ob, &virtual_modifier_data);
ModifierData *md = firstmd;
/* Preview colors by modifiers such as dynamic paint, to show the results
* even if the resulting data is not used in a material. Only in object mode.
* TODO: this is broken, not drawn by the drawn manager. */
const bool do_mod_mcol = (ob->mode == OB_MODE_OBJECT);
ModifierData *previewmd = nullptr;
CustomData_MeshMasks previewmask = {0};
if (do_mod_mcol) {
/* Find the last active modifier generating a preview, or nullptr if none. */
/* XXX Currently, DPaint modifier just ignores this.
* Needs a stupid hack...
* The whole "modifier preview" thing has to be (re?)designed, anyway! */
previewmd = BKE_modifier_get_last_preview(scene, md, required_mode);
}
/* Compute accumulated datamasks needed by each modifier. It helps to do
* this fine grained so that for example vertex groups are preserved up to
* an armature modifier, but not through a following subsurf modifier where
* subdividing them is expensive. */
CustomData_MeshMasks final_datamask = *dataMask;
CDMaskLink *datamasks = BKE_modifier_calc_data_masks(
scene, md, &final_datamask, required_mode, previewmd, &previewmask);
CDMaskLink *datamasks = BKE_modifier_calc_data_masks(scene, md, &final_datamask, required_mode);
CDMaskLink *md_datamask = datamasks;
/* XXX Always copying POLYINDEX, else tessellated data are no more valid! */
CustomData_MeshMasks append_mask = CD_MASK_BAREMESH_ORIGINDEX;
@@ -901,12 +886,6 @@ static void mesh_calc_modifiers(Depsgraph *depsgraph,
}
}
/* in case of dynamic paint, make sure preview mask remains for following modifiers */
/* XXX Temp and hackish solution! */
if (md->type == eModifierType_DynamicPaint) {
append_mask.lmask |= CD_MASK_PREVIEW_MLOOPCOL;
}
mesh_final->runtime->deformed_only = false;
}
@@ -1113,8 +1092,7 @@ static void editbmesh_calc_modifiers(Depsgraph *depsgraph,
* an armature modifier, but not through a following subsurf modifier where
* subdividing them is expensive. */
CustomData_MeshMasks final_datamask = *dataMask;
CDMaskLink *datamasks = BKE_modifier_calc_data_masks(
scene, md, &final_datamask, required_mode, nullptr, nullptr);
CDMaskLink *datamasks = BKE_modifier_calc_data_masks(scene, md, &final_datamask, required_mode);
CDMaskLink *md_datamask = datamasks;
CustomData_MeshMasks append_mask = CD_MASK_BAREMESH;
@@ -273,7 +273,7 @@ int BKE_crazyspace_get_first_deform_matrices_editbmesh(
const int required_mode = eModifierMode_Realtime | eModifierMode_Editmode;
CustomData_MeshMasks cd_mask_extra = CD_MASK_BAREMESH;
CDMaskLink *datamasks = BKE_modifier_calc_data_masks(
scene, md, &cd_mask_extra, required_mode, nullptr, nullptr);
scene, md, &cd_mask_extra, required_mode);
cd_mask_extra = datamasks->mask;
BLI_linklist_free((LinkNode *)datamasks, nullptr);
+7 -33
View File
@@ -1709,15 +1709,7 @@ static const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES] = {
layerWrite_mdisps,
layerFilesize_mdisps},
/* 20: CD_PREVIEW_MCOL */
{sizeof(MCol[4]),
"MCol",
4,
N_("PreviewCol"),
nullptr,
nullptr,
layerInterp_mcol,
layerSwap_mcol,
layerDefault_mcol},
{},
/* 21: CD_ID_MCOL */ /* DEPRECATED */
{sizeof(MCol[4]), "", 0, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr},
/* 22: CD_TEXTURE_MCOL */
@@ -1772,24 +1764,8 @@ static const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES] = {
layerAdd_mloop_origspace,
layerDoMinMax_mloop_origspace,
layerCopyValue_mloop_origspace},
/* 32: CD_PREVIEW_MLOOPCOL */
{sizeof(MLoopCol),
"MLoopCol",
1,
N_("PreviewLoopCol"),
nullptr,
nullptr,
layerInterp_mloopcol,
nullptr,
layerDefault_mloopcol,
nullptr,
nullptr,
layerEqual_mloopcol,
layerMultiply_mloopcol,
layerInitMinMax_mloopcol,
layerAdd_mloopcol,
layerDoMinMax_mloopcol,
layerCopyValue_mloopcol},
/* 32: CD_PREVIEW_MLOOPCOL */ /* DEPRECATED */ /* UNUSED */
{},
/* 33: CD_BM_ELEM_PYPTR */
{sizeof(void *),
"",
@@ -2031,11 +2007,11 @@ const CustomData_MeshMasks CD_MASK_DERIVEDMESH = {
CD_MASK_ORCO | CD_MASK_CLOTH_ORCO | CD_MASK_PROP_ALL),
/*emask*/
(CD_MASK_ORIGINDEX | CD_MASK_FREESTYLE_EDGE | CD_MASK_PROP_ALL),
/*fmask*/ (CD_MASK_ORIGINDEX | CD_MASK_ORIGSPACE | CD_MASK_PREVIEW_MCOL | CD_MASK_TANGENT),
/*fmask*/ (CD_MASK_ORIGINDEX | CD_MASK_ORIGSPACE | CD_MASK_TANGENT),
/*pmask*/
(CD_MASK_ORIGINDEX | CD_MASK_FREESTYLE_FACE | CD_MASK_PROP_ALL),
/*lmask*/
(CD_MASK_CUSTOMLOOPNORMAL | CD_MASK_PREVIEW_MLOOPCOL | CD_MASK_ORIGSPACE_MLOOP |
(CD_MASK_CUSTOMLOOPNORMAL | CD_MASK_ORIGSPACE_MLOOP |
CD_MASK_PROP_ALL), /* XXX: MISSING #CD_MASK_MLOOPTANGENT ? */
};
const CustomData_MeshMasks CD_MASK_BMESH = {
@@ -2056,14 +2032,12 @@ const CustomData_MeshMasks CD_MASK_EVERYTHING = {
(CD_MASK_BM_ELEM_PYPTR | CD_MASK_ORIGINDEX | CD_MASK_FREESTYLE_EDGE | CD_MASK_PROP_ALL),
/*fmask*/
(CD_MASK_MFACE | CD_MASK_ORIGINDEX | CD_MASK_NORMAL | CD_MASK_MTFACE | CD_MASK_MCOL |
CD_MASK_ORIGSPACE | CD_MASK_TANGENT | CD_MASK_TESSLOOPNORMAL | CD_MASK_PREVIEW_MCOL |
CD_MASK_PROP_ALL),
CD_MASK_ORIGSPACE | CD_MASK_TANGENT | CD_MASK_TESSLOOPNORMAL | CD_MASK_PROP_ALL),
/*pmask*/
(CD_MASK_BM_ELEM_PYPTR | CD_MASK_ORIGINDEX | CD_MASK_FREESTYLE_FACE | CD_MASK_PROP_ALL),
/*lmask*/
(CD_MASK_BM_ELEM_PYPTR | CD_MASK_MDISPS | CD_MASK_NORMAL | CD_MASK_CUSTOMLOOPNORMAL |
CD_MASK_MLOOPTANGENT | CD_MASK_PREVIEW_MLOOPCOL | CD_MASK_ORIGSPACE_MLOOP |
CD_MASK_GRID_PAINT_MASK | CD_MASK_PROP_ALL),
CD_MASK_MLOOPTANGENT | CD_MASK_ORIGSPACE_MLOOP | CD_MASK_GRID_PAINT_MASK | CD_MASK_PROP_ALL),
};
static const LayerTypeInfo *layerType_getInfo(const eCustomDataType type)
@@ -634,9 +634,6 @@ static bool check_matching_legacy_layer_counts(CustomData *fdata_legacy,
if (!LAYER_CMP(ldata, CD_PROP_BYTE_COLOR, fdata_legacy, CD_MCOL)) {
return false;
}
if (!LAYER_CMP(ldata, CD_PREVIEW_MLOOPCOL, fdata_legacy, CD_PREVIEW_MCOL)) {
return false;
}
if (!LAYER_CMP(ldata, CD_ORIGSPACE_MLOOP, fdata_legacy, CD_ORIGSPACE)) {
return false;
}
@@ -669,10 +666,6 @@ static void add_mface_layers(Mesh &mesh, CustomData *fdata_legacy, CustomData *l
CustomData_add_layer_named(
fdata_legacy, CD_MCOL, CD_SET_DEFAULT, total, ldata->layers[i].name);
}
else if (ldata->layers[i].type == CD_PREVIEW_MLOOPCOL) {
CustomData_add_layer_named(
fdata_legacy, CD_PREVIEW_MCOL, CD_SET_DEFAULT, total, ldata->layers[i].name);
}
else if (ldata->layers[i].type == CD_ORIGSPACE_MLOOP) {
CustomData_add_layer_named(
fdata_legacy, CD_ORIGSPACE, CD_SET_DEFAULT, total, ldata->layers[i].name);
@@ -854,7 +847,6 @@ static void mesh_loops_to_tessdata(CustomData *fdata_legacy,
* there's not much ways to solve this. Better IMHO to live with it for now (sigh). */
const int numUV = CustomData_number_of_layers(loop_data, CD_PROP_FLOAT2);
const int numCol = CustomData_number_of_layers(loop_data, CD_PROP_BYTE_COLOR);
const bool hasPCol = CustomData_has_layer(loop_data, CD_PREVIEW_MLOOPCOL);
const bool hasOrigSpace = CustomData_has_layer(loop_data, CD_ORIGSPACE_MLOOP);
const bool hasLoopNormal = CustomData_has_layer(loop_data, CD_NORMAL);
const bool hasLoopTangent = CustomData_has_layer(loop_data, CD_TANGENT);
@@ -890,18 +882,6 @@ static void mesh_loops_to_tessdata(CustomData *fdata_legacy,
}
}
if (hasPCol) {
MCol(*mcol)[4] = (MCol(*)[4])CustomData_get_layer(fdata_legacy, CD_PREVIEW_MCOL);
const MLoopCol *mloopcol = (const MLoopCol *)CustomData_get_layer(loop_data,
CD_PREVIEW_MLOOPCOL);
for (findex = 0, lidx = loopindices; findex < num_faces; lidx++, findex++, mcol++) {
for (j = (mface ? mface[findex].v4 : (*lidx)[3]) ? 4 : 3; j--;) {
MESH_MLOOPCOL_TO_MCOL(&mloopcol[(*lidx)[j]], &(*mcol)[j]);
}
}
}
if (hasOrigSpace) {
OrigSpaceFace *of = (OrigSpaceFace *)CustomData_get_layer(fdata_legacy, CD_ORIGSPACE);
const OrigSpaceLoop *lof = (const OrigSpaceLoop *)CustomData_get_layer(loop_data,
+1 -44
View File
@@ -250,24 +250,6 @@ bool BKE_modifier_supports_mapping(ModifierData *md)
(mti->flags & eModifierTypeFlag_SupportsMapping));
}
bool BKE_modifier_is_preview(ModifierData *md)
{
const ModifierTypeInfo *mti = BKE_modifier_get_info(ModifierType(md->type));
/* Constructive modifiers are highly likely to also modify data like vgroups or vertex-colors! */
if (!((mti->flags & eModifierTypeFlag_UsesPreview) ||
(mti->type == ModifierTypeType::Constructive)))
{
return false;
}
if (md->mode & eModifierMode_Realtime) {
return true;
}
return false;
}
ModifierData *BKE_modifiers_findby_type(const Object *ob, ModifierType type)
{
LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
@@ -606,9 +588,7 @@ bool BKE_modifier_is_nonlocal_in_liboverride(const Object *ob, const ModifierDat
CDMaskLink *BKE_modifier_calc_data_masks(const Scene *scene,
ModifierData *md,
CustomData_MeshMasks *final_datamask,
int required_mode,
ModifierData *previewmd,
const CustomData_MeshMasks *previewmask)
int required_mode)
{
CDMaskLink *dataMasks = nullptr;
CDMaskLink *curr, *prev;
@@ -628,10 +608,6 @@ CDMaskLink *BKE_modifier_calc_data_masks(const Scene *scene,
if (mti->required_data_mask) {
mti->required_data_mask(md, &curr->mask);
}
if (previewmd == md && previewmask != nullptr) {
CustomData_MeshMasks_update(&curr->mask, previewmask);
}
}
if (!have_deform_modifier) {
@@ -670,25 +646,6 @@ CDMaskLink *BKE_modifier_calc_data_masks(const Scene *scene,
return dataMasks;
}
ModifierData *BKE_modifier_get_last_preview(const Scene *scene,
ModifierData *md,
int required_mode)
{
ModifierData *tmp_md = nullptr;
if ((required_mode & ~eModifierMode_Editmode) != eModifierMode_Realtime) {
return tmp_md;
}
/* Find the latest modifier in stack generating preview. */
for (; md; md = md->next) {
if (BKE_modifier_is_enabled(scene, md, required_mode) && BKE_modifier_is_preview(md)) {
tmp_md = md;
}
}
return tmp_md;
}
ModifierData *BKE_modifiers_get_virtual_modifierlist(const Object *ob,
VirtualModifierData *virtual_modifier_data)
{
@@ -131,8 +131,8 @@ typedef enum eCustomDataType {
CD_PROP_BYTE_COLOR = 17,
CD_TANGENT = 18,
CD_MDISPS = 19,
CD_PREVIEW_MCOL = 20, /* For displaying weight-paint colors. */
/* CD_ID_MCOL = 21, */
/* CD_PREVIEW_MCOL = 20, */ /* UNUSED */
/* CD_ID_MCOL = 21, */
/* CD_TEXTURE_MLOOPCOL = 22, */ /* UNUSED */
CD_CLOTH_ORCO = 23,
/* CD_RECAST = 24, */ /* UNUSED */
@@ -148,7 +148,7 @@ typedef enum eCustomDataType {
CD_CREASE = 30,
#endif
CD_ORIGSPACE_MLOOP = 31,
CD_PREVIEW_MLOOPCOL = 32,
/* CD_PREVIEW_MLOOPCOL = 32, */ /* UNUSED */
CD_BM_ELEM_PYPTR = 33,
#ifdef DNA_DEPRECATED_ALLOW
@@ -198,13 +198,11 @@ typedef enum eCustomDataType {
#define CD_MASK_PROP_BYTE_COLOR (1 << CD_PROP_BYTE_COLOR)
#define CD_MASK_TANGENT (1 << CD_TANGENT)
#define CD_MASK_MDISPS (1 << CD_MDISPS)
#define CD_MASK_PREVIEW_MCOL (1 << CD_PREVIEW_MCOL)
#define CD_MASK_CLOTH_ORCO (1 << CD_CLOTH_ORCO)
#define CD_MASK_SHAPE_KEYINDEX (1 << CD_SHAPE_KEYINDEX)
#define CD_MASK_SHAPEKEY (1 << CD_SHAPEKEY)
#define CD_MASK_ORIGSPACE_MLOOP (1LL << CD_ORIGSPACE_MLOOP)
#define CD_MASK_PREVIEW_MLOOPCOL (1LL << CD_PREVIEW_MLOOPCOL)
#define CD_MASK_BM_ELEM_PYPTR (1LL << CD_BM_ELEM_PYPTR)
#define CD_MASK_GRID_PAINT_MASK (1LL << CD_GRID_PAINT_MASK)
@@ -506,7 +506,7 @@ ModifierTypeInfo modifierType_DataTransfer = {
/*srna*/ &RNA_DataTransferModifier,
/*type*/ ModifierTypeType::NonGeometrical,
/*flags*/ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsMapping |
eModifierTypeFlag_SupportsEditmode | eModifierTypeFlag_UsesPreview,
eModifierTypeFlag_SupportsEditmode,
/*icon*/ ICON_MOD_DATA_TRANSFER,
/*copy_data*/ BKE_modifier_copydata_generic,
@@ -198,8 +198,7 @@ ModifierTypeInfo modifierType_DynamicPaint = {
/*srna*/ &RNA_DynamicPaintModifier,
/*type*/ ModifierTypeType::Constructive,
/*flags*/ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsMapping |
eModifierTypeFlag_UsesPointCache | eModifierTypeFlag_Single |
eModifierTypeFlag_UsesPreview,
eModifierTypeFlag_UsesPointCache | eModifierTypeFlag_Single,
/*icon*/ ICON_MOD_DYNAMICPAINT,
/*copy_data*/ copy_data,
@@ -245,9 +245,7 @@ ModifierTypeInfo modifierType_Mirror = {
/*type*/ ModifierTypeType::Constructive,
/*flags*/ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsMapping |
eModifierTypeFlag_SupportsEditmode | eModifierTypeFlag_EnableInEditmode |
eModifierTypeFlag_AcceptsCVs |
/* this is only the case when 'MOD_MIR_VGROUP' is used */
eModifierTypeFlag_UsesPreview,
eModifierTypeFlag_AcceptsCVs,
/*icon*/ ICON_MOD_MIRROR,
/*copy_data*/ BKE_modifier_copydata_generic,
@@ -93,8 +93,6 @@ static void required_data_mask(ModifierData *md, CustomData_MeshMasks *r_cddata_
if (wmd->mask_tex_mapping == MOD_DISP_MAP_UV) {
r_cddata_masks->fmask |= CD_MASK_MTFACE;
}
/* No need to ask for CD_PREVIEW_MLOOPCOL... */
}
static bool depends_on_time(Scene * /*scene*/, ModifierData *md)
@@ -396,7 +394,7 @@ ModifierTypeInfo modifierType_WeightVGEdit = {
/*srna*/ &RNA_VertexWeightEditModifier,
/*type*/ ModifierTypeType::NonGeometrical,
/*flags*/ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsMapping |
eModifierTypeFlag_SupportsEditmode | eModifierTypeFlag_UsesPreview,
eModifierTypeFlag_SupportsEditmode,
/*icon*/ ICON_MOD_VERTEX_WEIGHT,
/*copy_data*/ copy_data,
@@ -140,8 +140,6 @@ static void required_data_mask(ModifierData *md, CustomData_MeshMasks *r_cddata_
if (wmd->mask_tex_mapping == MOD_DISP_MAP_UV) {
r_cddata_masks->fmask |= CD_MASK_MTFACE;
}
/* No need to ask for CD_PREVIEW_MLOOPCOL... */
}
static bool depends_on_time(Scene * /*scene*/, ModifierData *md)
@@ -497,7 +495,7 @@ ModifierTypeInfo modifierType_WeightVGMix = {
/*srna*/ &RNA_VertexWeightMixModifier,
/*type*/ ModifierTypeType::NonGeometrical,
/*flags*/ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsMapping |
eModifierTypeFlag_SupportsEditmode | eModifierTypeFlag_UsesPreview,
eModifierTypeFlag_SupportsEditmode,
/*icon*/ ICON_MOD_VERTEX_WEIGHT,
/*copy_data*/ BKE_modifier_copydata_generic,
@@ -351,8 +351,6 @@ static void required_data_mask(ModifierData *md, CustomData_MeshMasks *r_cddata_
if (wmd->mask_tex_mapping == MOD_DISP_MAP_UV) {
r_cddata_masks->fmask |= CD_MASK_MTFACE;
}
/* No need to ask for CD_PREVIEW_MLOOPCOL... */
}
static bool depends_on_time(Scene * /*scene*/, ModifierData *md)
@@ -741,7 +739,7 @@ ModifierTypeInfo modifierType_WeightVGProximity = {
/*srna*/ &RNA_VertexWeightProximityModifier,
/*type*/ ModifierTypeType::NonGeometrical,
/*flags*/ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsMapping |
eModifierTypeFlag_SupportsEditmode | eModifierTypeFlag_UsesPreview,
eModifierTypeFlag_SupportsEditmode,
/*icon*/ ICON_MOD_VERTEX_WEIGHT,
/*copy_data*/ copy_data,