[Bf-blender-cvs] [95282147404] temp-sculpt-colors: Merge remote-tracking branch 'origin/master' into temp-sculpt-colors

Joseph Eagar noreply at git.blender.org
Mon Apr 4 18:17:37 CEST 2022


Commit: 952821474044edb6658c636c5012d7949e7de0c7
Author: Joseph Eagar
Date:   Mon Apr 4 08:58:52 2022 -0700
Branches: temp-sculpt-colors
https://developer.blender.org/rB952821474044edb6658c636c5012d7949e7de0c7

Merge remote-tracking branch 'origin/master' into temp-sculpt-colors

===================================================================



===================================================================

diff --cc release/scripts/startup/bl_ui/space_userpref.py
index 2eff8ca8cf6,a08dad0c113..b0b618ada11
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@@ -2259,7 -2259,9 +2259,8 @@@ class USERPREF_PT_experimental_new_feat
      def draw(self, context):
          self._draw_items(
              context, (
 -                ({"property": "use_sculpt_vertex_colors"}, "T71947"),
                  ({"property": "use_sculpt_tools_tilt"}, "T82877"),
+                 ({"property": "use_sculpt_texture_paint"}, "T96225"),
                  ({"property": "use_select_nearest_on_first_click"}, "T96752"),
                  ({"property": "use_extended_asset_browser"}, ("project/view/130/", "Project Page")),
                  ({"property": "use_override_templates"}, ("T73318", "Milestone 4")),
diff --cc source/blender/blenkernel/BKE_attribute.h
index 83cac8ab8f4,1987c925385..3d4d106fa09
--- a/source/blender/blenkernel/BKE_attribute.h
+++ b/source/blender/blenkernel/BKE_attribute.h
@@@ -81,46 -64,6 +81,48 @@@ void BKE_id_attributes_active_set(struc
  int *BKE_id_attributes_active_index_p(struct ID *id);
  
  CustomData *BKE_id_attributes_iterator_next_domain(struct ID *id, struct CustomDataLayer *layers);
 +CustomDataLayer *BKE_id_attribute_from_index(struct ID *id,
 +                                             int lookup_index,
 +                                             AttributeDomainMask domain_mask,
 +                                             CustomDataMask layer_mask);
 +
 +/** Layer is allowed to be nullptr; if so -1 (layer not found) will be returned. */
 +int BKE_id_attribute_to_index(const struct ID *id,
 +                              const CustomDataLayer *layer,
 +                              AttributeDomainMask domain_mask,
 +                              CustomDataMask layer_mask);
 +
 +struct CustomDataLayer *BKE_id_attribute_subset_active_get(const struct ID *id,
 +                                                           int active_flag,
 +                                                           AttributeDomainMask domain_mask,
 +                                                           CustomDataMask mask);
 +void BKE_id_attribute_subset_active_set(struct ID *id,
 +                                        struct CustomDataLayer *layer,
 +                                        int active_flag,
 +                                        AttributeDomainMask domain_mask,
 +                                        CustomDataMask mask);
 +
 +/**
-  * Sets up a temporary ID with arbitrary CustomData domains.  ID will
-  * be zero'd, any non-nullptr CustomData parameter will then be
-  * copied into the appropriate field.
++ * Sets up a temporary ID with arbitrary CustomData domains.  r_id will
++ * be zero initialized with ID type id_type and any non-nullptr
++ * CustomData parameter will be copied into the appropriate struct members.
++ *
++ * \param r_id Pointer to storage sufficient for ID typecode id_type.
 + */
 +void BKE_id_attribute_copy_domains_temp(short id_type,
 +                                        const struct CustomData *vdata,
 +                                        const struct CustomData *edata,
 +                                        const struct CustomData *ldata,
 +                                        const struct CustomData *pdata,
 +                                        const struct CustomData *cdata,
 +                                        struct ID *r_id);
 +
 +struct CustomDataLayer *BKE_id_attributes_active_color_get(const struct ID *id);
 +void BKE_id_attributes_active_color_set(struct ID *id, struct CustomDataLayer *active_layer);
 +struct CustomDataLayer *BKE_id_attributes_render_color_get(const struct ID *id);
 +void BKE_id_attributes_render_color_set(struct ID *id, struct CustomDataLayer *active_layer);
 +
 +bool BKE_id_attribute_calc_unique_name(struct ID *id, const char *name, char *outname);
  
  #ifdef __cplusplus
  }
diff --cc source/blender/blenloader/intern/versioning_300.c
index faa1b6bd9d7,d2b8c4330bc..7aa2c219835
--- a/source/blender/blenloader/intern/versioning_300.c
+++ b/source/blender/blenloader/intern/versioning_300.c
@@@ -2490,74 -2497,58 +2500,126 @@@ void blo_do_versions_300(FileData *fd, 
      }
    }
  
-   if (!MAIN_VERSION_ATLEAST(bmain, 302, 8)) {
+   if (!MAIN_VERSION_ATLEAST(bmain, 302, 9)) {
+     /* Sequencer channels region. */
+     for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) {
+       LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
+         LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
+           if (sl->spacetype != SPACE_SEQ) {
+             continue;
+           }
+           if (ELEM(((SpaceSeq *)sl)->view, SEQ_VIEW_PREVIEW, SEQ_VIEW_SEQUENCE_PREVIEW)) {
+             continue;
+           }
+ 
+           ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
+                                                                  &sl->regionbase;
+           ARegion *region = BKE_area_find_region_type(area, RGN_TYPE_CHANNELS);
+           if (!region) {
+             ARegion *tools_region = BKE_area_find_region_type(area, RGN_TYPE_TOOLS);
+             region = do_versions_add_region(RGN_TYPE_CHANNELS, "channels region");
+             BLI_insertlinkafter(regionbase, tools_region, region);
+             region->alignment = RGN_ALIGN_LEFT;
+             region->v2d.flag |= V2D_VIEWSYNC_AREA_VERTICAL;
+           }
+ 
+           ARegion *timeline_region = BKE_area_find_region_type(area, RGN_TYPE_WINDOW);
+           if (timeline_region != NULL) {
+             timeline_region->v2d.flag |= V2D_VIEWSYNC_AREA_VERTICAL;
+           }
+         }
+       }
+     }
+ 
+     /* Initialize channels. */
+     LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
+       Editing *ed = SEQ_editing_get(scene);
+       if (ed == NULL) {
+         continue;
+       }
+       SEQ_channels_ensure(&ed->channels);
+       SEQ_for_each_callback(&scene->ed->seqbase, seq_meta_channels_ensure, NULL);
+ 
+       ed->displayed_channels = &ed->channels;
+ 
+       ListBase *previous_channels = &ed->channels;
+       LISTBASE_FOREACH (MetaStack *, ms, &ed->metastack) {
+         ms->old_channels = previous_channels;
+         previous_channels = &ms->parseq->channels;
+         /* If `MetaStack` exists, active channels must point to last link. */
+         ed->displayed_channels = &ms->parseq->channels;
+       }
+     }
+   }
+ 
++  if (!MAIN_VERSION_ATLEAST(bmain, 302, 9)) {
 +    /* While vertex-colors were experimental the smear tool became corrupt due
 +     * to bugs in the wm_toolsystem API (auto-creation of sculpt brushes
 +     * was broken).  Go through and reset all smear brushes. */
 +    LISTBASE_FOREACH (Brush *, br, &bmain->brushes) {
 +      if (br->sculpt_tool == SCULPT_TOOL_SMEAR) {
 +        br->alpha = 1.0f;
 +        br->spacing = 5;
 +        br->flag &= ~BRUSH_ALPHA_PRESSURE;
 +        br->flag &= ~BRUSH_SPACE_ATTEN;
 +        br->curve_preset = BRUSH_CURVE_SPHERE;
 +      }
 +    }
 +
 +    /* Rebuild active/render color attribute references. */
 +    LISTBASE_FOREACH (Mesh *, me, &bmain->meshes) {
 +      for (int step = 0; step < 2; step++) {
 +        CustomDataLayer *actlayer = NULL;
 +
 +        int vact1, vact2;
 +
 +        if (step) {
 +          vact1 = CustomData_get_render_layer_index(&me->vdata, CD_PROP_COLOR);
 +          vact2 = CustomData_get_render_layer_index(&me->ldata, CD_MLOOPCOL);
 +        }
 +        else {
 +          vact1 = CustomData_get_active_layer_index(&me->vdata, CD_PROP_COLOR);
 +          vact2 = CustomData_get_active_layer_index(&me->ldata, CD_MLOOPCOL);
 +        }
 +
 +        if (vact1 != -1) {
 +          actlayer = me->vdata.layers + vact1;
 +        }
 +        else if (vact2 != -1) {
 +          actlayer = me->ldata.layers + vact2;
 +        }
 +
 +        if (actlayer) {
 +          if (step) {
 +            BKE_id_attributes_render_color_set(&me->id, actlayer);
 +          }
 +          else {
 +            BKE_id_attributes_active_color_set(&me->id, actlayer);
 +          }
 +        }
 +      }
 +    }
 +
 +    /* Update data transfer modifiers */
 +    LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
 +      LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) {
 +        if (md->type == eModifierType_DataTransfer) {
 +          DataTransferModifierData *dtmd = (DataTransferModifierData *)md;
 +
 +          for (int i = 0; i < DT_MULTILAYER_INDEX_MAX; i++) {
 +            if (dtmd->layers_select_src[i] == 0) {
 +              dtmd->layers_select_src[i] = DT_LAYERS_ALL_SRC;
 +            }
 +
 +            if (dtmd->layers_select_dst[i] == 0) {
 +              dtmd->layers_select_dst[i] = DT_LAYERS_NAME_DST;
 +            }
 +          }
 +        }
 +      }
 +    }
 +  }
 +
    /**
     * Versioning code until next subversion bump goes here.
     *
diff --cc source/blender/makesdna/DNA_userdef_types.h
index 99938d711ee,8a698050629..0f6c32e4ddf
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@@ -651,7 -652,8 +651,7 @@@ typedef struct UserDef_Experimental 
    char use_named_attribute_nodes;
    char use_select_nearest_on_first_click;
    char enable_eevee_next;
-   char _pad[1];
+   char use_sculpt_texture_paint;
 -  char _pad[7];
    /** `makesdna` does not allow empty structs. */
  } UserDef_Experimental;



More information about the Bf-blender-cvs mailing list