Blender V5.0
DNA_customdata_types.h File Reference
#include "DNA_defs.h"
#include "BLI_implicit_sharing.h"

Go to the source code of this file.

Classes

struct  CustomDataLayer
struct  CustomDataExternal
struct  CustomData
struct  CustomData_MeshMasks

Macros

#define MAX_CUSTOMDATA_LAYER_NAME   68
#define MAX_CUSTOMDATA_LAYER_NAME_NO_PREFIX   64
#define CD_MASK_MDEFORMVERT   (1 << CD_MDEFORMVERT)
#define CD_MASK_MFACE   (1 << CD_MFACE)
#define CD_MASK_MTFACE   (1 << CD_MTFACE)
#define CD_MASK_MCOL   (1 << CD_MCOL)
#define CD_MASK_ORIGINDEX   (1 << CD_ORIGINDEX)
#define CD_MASK_NORMAL   (1 << CD_NORMAL)
#define CD_MASK_PROP_FLOAT   (1 << CD_PROP_FLOAT)
#define CD_MASK_PROP_INT32   (1 << CD_PROP_INT32)
#define CD_MASK_PROP_STRING   (1 << CD_PROP_STRING)
#define CD_MASK_ORIGSPACE   (1 << CD_ORIGSPACE)
#define CD_MASK_ORCO   (1 << CD_ORCO)
#define CD_MASK_PROP_BYTE_COLOR   (1 << CD_PROP_BYTE_COLOR)
#define CD_MASK_MDISPS   (1 << CD_MDISPS)
#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_BM_ELEM_PYPTR   (1LL << CD_BM_ELEM_PYPTR)
#define CD_MASK_GRID_PAINT_MASK   (1LL << CD_GRID_PAINT_MASK)
#define CD_MASK_MVERT_SKIN   (1LL << CD_MVERT_SKIN)
#define CD_MASK_MLOOPTANGENT   (1LL << CD_MLOOPTANGENT)
#define CD_MASK_TESSLOOPNORMAL   (1LL << CD_TESSLOOPNORMAL)
#define CD_MASK_PROP_COLOR   (1ULL << CD_PROP_COLOR)
#define CD_MASK_PROP_FLOAT3   (1ULL << CD_PROP_FLOAT3)
#define CD_MASK_PROP_FLOAT2   (1ULL << CD_PROP_FLOAT2)
#define CD_MASK_PROP_BOOL   (1ULL << CD_PROP_BOOL)
#define CD_MASK_PROP_INT8   (1ULL << CD_PROP_INT8)
#define CD_MASK_PROP_INT16_2D   (1ULL << CD_PROP_INT16_2D)
#define CD_MASK_PROP_INT32_2D   (1ULL << CD_PROP_INT32_2D)
#define CD_MASK_PROP_QUATERNION   (1ULL << CD_PROP_QUATERNION)
#define CD_MASK_PROP_FLOAT4X4   (1ULL << CD_PROP_FLOAT4X4)
#define CD_MASK_MULTIRES_GRIDS   (CD_MASK_MDISPS | CD_GRID_PAINT_MASK)
#define CD_MASK_ALL   (~0LL)
#define CD_MASK_PROP_ALL
#define CD_MASK_COLOR_ALL   (CD_MASK_PROP_COLOR | CD_MASK_PROP_BYTE_COLOR)
#define MAX_MTFACE   8

Typedefs

typedef struct CustomDataLayer CustomDataLayer
typedef struct CustomDataExternal CustomDataExternal
typedef struct CustomData CustomData
typedef enum eCustomDataType eCustomDataType
typedef struct CustomData_MeshMasks CustomData_MeshMasks

Enumerations

enum  eCustomDataType {
  CD_AUTO_FROM_NAME = -1 , CD_MDEFORMVERT = 2 , CD_MFACE = 4 , CD_MTFACE = 5 ,
  CD_MCOL = 6 , CD_ORIGINDEX = 7 , CD_NORMAL = 8 , CD_PROP_FLOAT = 10 ,
  CD_PROP_INT32 = 11 , CD_PROP_STRING = 12 , CD_ORIGSPACE = 13 , CD_ORCO = 14 ,
  CD_PROP_BYTE_COLOR = 17 , CD_TANGENT = 18 , CD_MDISPS = 19 , CD_PROP_FLOAT4X4 = 20 ,
  CD_PROP_INT16_2D = 22 , CD_CLOTH_ORCO = 23 , CD_SHAPE_KEYINDEX = 27 , CD_SHAPEKEY = 28 ,
  CD_ORIGSPACE_MLOOP = 31 , CD_BM_ELEM_PYPTR = 33 , CD_GRID_PAINT_MASK = 35 , CD_MVERT_SKIN = 36 ,
  CD_MLOOPTANGENT = 39 , CD_TESSLOOPNORMAL = 40 , CD_PROP_INT8 = 45 , CD_PROP_INT32_2D = 46 ,
  CD_PROP_COLOR = 47 , CD_PROP_FLOAT3 = 48 , CD_PROP_FLOAT2 = 49 , CD_PROP_BOOL = 50 ,
  CD_PROP_QUATERNION = 52 , CD_NUMTYPES = 53
}
enum  {
  CD_FLAG_NOCOPY = (1 << 0) , CD_FLAG_UNUSED = (1 << 1) , CD_FLAG_TEMPORARY = ((1 << 2) | CD_FLAG_NOCOPY) , CD_FLAG_EXTERNAL = (1 << 3) ,
  CD_FLAG_IN_MEMORY = (1 << 4)
}

Detailed Description

Used for custom mesh data types (stored per vert/edge/loop/face)

Definition in file DNA_customdata_types.h.

Macro Definition Documentation

◆ CD_MASK_ALL

#define CD_MASK_ALL   (~0LL)

◆ CD_MASK_BM_ELEM_PYPTR

#define CD_MASK_BM_ELEM_PYPTR   (1LL << CD_BM_ELEM_PYPTR)

Definition at line 207 of file DNA_customdata_types.h.

Referenced by bpy_bm_elem_copy_from().

◆ CD_MASK_CLOTH_ORCO

#define CD_MASK_CLOTH_ORCO   (1 << CD_CLOTH_ORCO)

◆ CD_MASK_COLOR_ALL

◆ CD_MASK_GRID_PAINT_MASK

#define CD_MASK_GRID_PAINT_MASK   (1LL << CD_GRID_PAINT_MASK)

Definition at line 209 of file DNA_customdata_types.h.

◆ CD_MASK_MCOL

#define CD_MASK_MCOL   (1 << CD_MCOL)

Definition at line 192 of file DNA_customdata_types.h.

◆ CD_MASK_MDEFORMVERT

◆ CD_MASK_MDISPS

◆ CD_MASK_MFACE

#define CD_MASK_MFACE   (1 << CD_MFACE)

Definition at line 190 of file DNA_customdata_types.h.

◆ CD_MASK_MLOOPTANGENT

#define CD_MASK_MLOOPTANGENT   (1LL << CD_MLOOPTANGENT)

Definition at line 211 of file DNA_customdata_types.h.

◆ CD_MASK_MTFACE

◆ CD_MASK_MULTIRES_GRIDS

#define CD_MASK_MULTIRES_GRIDS   (CD_MASK_MDISPS | CD_GRID_PAINT_MASK)

Multi-resolution loop data.

Definition at line 224 of file DNA_customdata_types.h.

Referenced by blender::bke::subdiv::subdiv_mesh_topology_info().

◆ CD_MASK_MVERT_SKIN

#define CD_MASK_MVERT_SKIN   (1LL << CD_MVERT_SKIN)

◆ CD_MASK_NORMAL

#define CD_MASK_NORMAL   (1 << CD_NORMAL)

Definition at line 194 of file DNA_customdata_types.h.

Referenced by triangulate_mesh().

◆ CD_MASK_ORCO

◆ CD_MASK_ORIGINDEX

◆ CD_MASK_ORIGSPACE

#define CD_MASK_ORIGSPACE   (1 << CD_ORIGSPACE)

Definition at line 198 of file DNA_customdata_types.h.

◆ CD_MASK_ORIGSPACE_MLOOP

#define CD_MASK_ORIGSPACE_MLOOP   (1LL << CD_ORIGSPACE_MLOOP)

◆ CD_MASK_PROP_ALL

#define CD_MASK_PROP_ALL
Value:

All generic attributes.

Definition at line 230 of file DNA_customdata_types.h.

Referenced by blender::ed::geometry::attribute_set_poll(), BKE_attribute_duplicate(), BKE_attribute_rename(), bke_attribute_rename_if_exists(), BKE_attributes_active_name_get(), BKE_attributes_active_set(), BKE_object_handle_data_update(), cd_layer_find_dupe(), blender::ed::sculpt_paint::dyntopo::dyntopo_supports_layer(), edbm_select_by_attribute_exec(), edbm_select_by_attribute_poll(), blender::ed::mesh::set_attribute::mesh_set_attribute_exec(), blender::ed::mesh::set_attribute::mesh_set_attribute_invoke(), blender::ed::mesh::set_attribute::mesh_set_attribute_ui(), rename_mesh_uv_seam_attribute(), blender::required_data_mask(), and blender::ed::sculpt_paint::undo::set_active_layer().

◆ CD_MASK_PROP_BOOL

#define CD_MASK_PROP_BOOL   (1ULL << CD_PROP_BOOL)

Definition at line 216 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_BYTE_COLOR

◆ CD_MASK_PROP_COLOR

◆ CD_MASK_PROP_FLOAT

#define CD_MASK_PROP_FLOAT   (1 << CD_PROP_FLOAT)

Definition at line 195 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_FLOAT2

◆ CD_MASK_PROP_FLOAT3

#define CD_MASK_PROP_FLOAT3   (1ULL << CD_PROP_FLOAT3)

Definition at line 214 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_FLOAT4X4

#define CD_MASK_PROP_FLOAT4X4   (1ULL << CD_PROP_FLOAT4X4)

Definition at line 221 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_INT16_2D

#define CD_MASK_PROP_INT16_2D   (1ULL << CD_PROP_INT16_2D)

Definition at line 218 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_INT32

#define CD_MASK_PROP_INT32   (1 << CD_PROP_INT32)

Definition at line 196 of file DNA_customdata_types.h.

Referenced by required_data_mask().

◆ CD_MASK_PROP_INT32_2D

#define CD_MASK_PROP_INT32_2D   (1ULL << CD_PROP_INT32_2D)

Definition at line 219 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_INT8

#define CD_MASK_PROP_INT8   (1ULL << CD_PROP_INT8)

Definition at line 217 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_QUATERNION

#define CD_MASK_PROP_QUATERNION   (1ULL << CD_PROP_QUATERNION)

Definition at line 220 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_STRING

#define CD_MASK_PROP_STRING   (1 << CD_PROP_STRING)

Definition at line 197 of file DNA_customdata_types.h.

◆ CD_MASK_SHAPE_KEYINDEX

#define CD_MASK_SHAPE_KEYINDEX   (1 << CD_SHAPE_KEYINDEX)

Definition at line 204 of file DNA_customdata_types.h.

Referenced by undomesh_from_editmesh().

◆ CD_MASK_SHAPEKEY

#define CD_MASK_SHAPEKEY   (1 << CD_SHAPEKEY)

◆ CD_MASK_TESSLOOPNORMAL

#define CD_MASK_TESSLOOPNORMAL   (1LL << CD_TESSLOOPNORMAL)

Definition at line 212 of file DNA_customdata_types.h.

◆ MAX_CUSTOMDATA_LAYER_NAME

◆ MAX_CUSTOMDATA_LAYER_NAME_NO_PREFIX

◆ MAX_MTFACE

Typedef Documentation

◆ CustomData

typedef struct CustomData CustomData

CustomData stores an arbitrary number of typed data "layers" for multiple elements. The layers are typically geometry attributes, and the elements are typically geometry elements like vertices, edges, or curves.

Each layer has a type, often with certain semantics beyond the type of the raw data. However, a subset of the layer types are exposed as attributes and accessed with a higher level API built around #AttributeAccessor.

For BMesh, CustomData is adapted to store the data from all layers in a single "block" which is allocated for each element. Each layer's data is stored at a certain offset into every block's data.

◆ CustomData_MeshMasks

typedef struct CustomData_MeshMasks CustomData_MeshMasks

◆ CustomDataExternal

typedef struct CustomDataExternal CustomDataExternal

◆ CustomDataLayer

typedef struct CustomDataLayer CustomDataLayer

Descriptor and storage for a custom data layer.

◆ eCustomDataType

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

#CustomData.flag

Enumerator
CD_FLAG_NOCOPY 

Indicates layer should not be copied by #CustomData_from_template or CustomData_copy_data.

CD_FLAG_UNUSED 
CD_FLAG_TEMPORARY 

Indicates the layer is only temporary, also implies no copy

CD_FLAG_EXTERNAL 

Indicates the layer is stored in an external file

CD_FLAG_IN_MEMORY 

Indicates external data is read into memory

Definition at line 248 of file DNA_customdata_types.h.

◆ eCustomDataType

CustomDataLayer.type

Enumerator
CD_AUTO_FROM_NAME 

Used by GPU attributes in the cases when we don't know which layer we are addressing in advance.

CD_MDEFORMVERT 
CD_MFACE 
CD_MTFACE 
CD_MCOL 
CD_ORIGINDEX 
CD_NORMAL 

Used as temporary storage for some areas that support interpolating custom normals. Using a separate type from generic 3D vectors is a simple way of keeping values normalized.

CD_PROP_FLOAT 
CD_PROP_INT32 
CD_PROP_STRING 
CD_ORIGSPACE 
CD_ORCO 
CD_PROP_BYTE_COLOR 
CD_TANGENT 

Previously used for runtime corner tangent storage in mesh CustomData. Currently only used as an identifier to choose tangents in a few places.

CD_MDISPS 
CD_PROP_FLOAT4X4 
CD_PROP_INT16_2D 
CD_CLOTH_ORCO 
CD_SHAPE_KEYINDEX 
CD_SHAPEKEY 
CD_ORIGSPACE_MLOOP 
CD_BM_ELEM_PYPTR 
CD_GRID_PAINT_MASK 
CD_MVERT_SKIN 
CD_MLOOPTANGENT 
CD_TESSLOOPNORMAL 
CD_PROP_INT8 
CD_PROP_INT32_2D 
CD_PROP_COLOR 
CD_PROP_FLOAT3 
CD_PROP_FLOAT2 
CD_PROP_BOOL 
CD_PROP_QUATERNION 
CD_NUMTYPES 

Definition at line 86 of file DNA_customdata_types.h.