Blender V4.5
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_TANGENT   (1 << CD_TANGENT)
#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_FREESTYLE_EDGE   (1LL << CD_FREESTYLE_EDGE)
#define CD_MASK_FREESTYLE_FACE   (1LL << CD_FREESTYLE_FACE)
#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_FREESTYLE_EDGE = 37 , CD_FREESTYLE_FACE = 38 , 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)

Definition at line 223 of file DNA_customdata_types.h.

◆ CD_MASK_BM_ELEM_PYPTR

#define CD_MASK_BM_ELEM_PYPTR   (1LL << CD_BM_ELEM_PYPTR)

Definition at line 201 of file DNA_customdata_types.h.

◆ CD_MASK_CLOTH_ORCO

#define CD_MASK_CLOTH_ORCO   (1 << CD_CLOTH_ORCO)

Definition at line 196 of file DNA_customdata_types.h.

◆ CD_MASK_COLOR_ALL

#define CD_MASK_COLOR_ALL   (CD_MASK_PROP_COLOR | CD_MASK_PROP_BYTE_COLOR)

Definition at line 233 of file DNA_customdata_types.h.

◆ CD_MASK_FREESTYLE_EDGE

#define CD_MASK_FREESTYLE_EDGE   (1LL << CD_FREESTYLE_EDGE)

Definition at line 205 of file DNA_customdata_types.h.

◆ CD_MASK_FREESTYLE_FACE

#define CD_MASK_FREESTYLE_FACE   (1LL << CD_FREESTYLE_FACE)

Definition at line 206 of file DNA_customdata_types.h.

◆ CD_MASK_GRID_PAINT_MASK

#define CD_MASK_GRID_PAINT_MASK   (1LL << CD_GRID_PAINT_MASK)

Definition at line 203 of file DNA_customdata_types.h.

◆ CD_MASK_MCOL

#define CD_MASK_MCOL   (1 << CD_MCOL)

Definition at line 185 of file DNA_customdata_types.h.

◆ CD_MASK_MDEFORMVERT

#define CD_MASK_MDEFORMVERT   (1 << CD_MDEFORMVERT)

Definition at line 182 of file DNA_customdata_types.h.

◆ CD_MASK_MDISPS

#define CD_MASK_MDISPS   (1 << CD_MDISPS)

Definition at line 195 of file DNA_customdata_types.h.

◆ CD_MASK_MFACE

#define CD_MASK_MFACE   (1 << CD_MFACE)

Definition at line 183 of file DNA_customdata_types.h.

◆ CD_MASK_MLOOPTANGENT

#define CD_MASK_MLOOPTANGENT   (1LL << CD_MLOOPTANGENT)

Definition at line 207 of file DNA_customdata_types.h.

◆ CD_MASK_MTFACE

#define CD_MASK_MTFACE   (1 << CD_MTFACE)

Definition at line 184 of file DNA_customdata_types.h.

◆ CD_MASK_MULTIRES_GRIDS

#define CD_MASK_MULTIRES_GRIDS   (CD_MASK_MDISPS | CD_GRID_PAINT_MASK)

Multi-resolution loop data.

Definition at line 220 of file DNA_customdata_types.h.

◆ CD_MASK_MVERT_SKIN

#define CD_MASK_MVERT_SKIN   (1LL << CD_MVERT_SKIN)

Definition at line 204 of file DNA_customdata_types.h.

◆ CD_MASK_NORMAL

#define CD_MASK_NORMAL   (1 << CD_NORMAL)

Definition at line 187 of file DNA_customdata_types.h.

◆ CD_MASK_ORCO

#define CD_MASK_ORCO   (1 << CD_ORCO)

Definition at line 192 of file DNA_customdata_types.h.

◆ CD_MASK_ORIGINDEX

#define CD_MASK_ORIGINDEX   (1 << CD_ORIGINDEX)

Definition at line 186 of file DNA_customdata_types.h.

◆ CD_MASK_ORIGSPACE

#define CD_MASK_ORIGSPACE   (1 << CD_ORIGSPACE)

Definition at line 191 of file DNA_customdata_types.h.

◆ CD_MASK_ORIGSPACE_MLOOP

#define CD_MASK_ORIGSPACE_MLOOP   (1LL << CD_ORIGSPACE_MLOOP)

Definition at line 200 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_ALL

#define CD_MASK_PROP_ALL
Value:
#define CD_MASK_PROP_BYTE_COLOR
#define CD_MASK_PROP_COLOR
#define CD_MASK_PROP_FLOAT3
#define CD_MASK_PROP_QUATERNION
#define CD_MASK_PROP_INT32_2D
#define CD_MASK_PROP_FLOAT2
#define CD_MASK_PROP_BOOL
#define CD_MASK_PROP_INT32
#define CD_MASK_PROP_STRING
#define CD_MASK_PROP_FLOAT4X4
#define CD_MASK_PROP_FLOAT
#define CD_MASK_PROP_INT16_2D
#define CD_MASK_PROP_INT8

Definition at line 226 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_BOOL

#define CD_MASK_PROP_BOOL   (1ULL << CD_PROP_BOOL)

Definition at line 212 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_BYTE_COLOR

#define CD_MASK_PROP_BYTE_COLOR   (1 << CD_PROP_BYTE_COLOR)

Definition at line 193 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_COLOR

#define CD_MASK_PROP_COLOR   (1ULL << CD_PROP_COLOR)

Definition at line 209 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_FLOAT

#define CD_MASK_PROP_FLOAT   (1 << CD_PROP_FLOAT)

Definition at line 188 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_FLOAT2

#define CD_MASK_PROP_FLOAT2   (1ULL << CD_PROP_FLOAT2)

Definition at line 211 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_FLOAT3

#define CD_MASK_PROP_FLOAT3   (1ULL << CD_PROP_FLOAT3)

Definition at line 210 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_FLOAT4X4

#define CD_MASK_PROP_FLOAT4X4   (1ULL << CD_PROP_FLOAT4X4)

Definition at line 217 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 214 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_INT32

#define CD_MASK_PROP_INT32   (1 << CD_PROP_INT32)

Definition at line 189 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_INT32_2D

#define CD_MASK_PROP_INT32_2D   (1ULL << CD_PROP_INT32_2D)

Definition at line 215 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_INT8

#define CD_MASK_PROP_INT8   (1ULL << CD_PROP_INT8)

Definition at line 213 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_QUATERNION

#define CD_MASK_PROP_QUATERNION   (1ULL << CD_PROP_QUATERNION)

Definition at line 216 of file DNA_customdata_types.h.

◆ CD_MASK_PROP_STRING

#define CD_MASK_PROP_STRING   (1 << CD_PROP_STRING)

Definition at line 190 of file DNA_customdata_types.h.

◆ CD_MASK_SHAPE_KEYINDEX

#define CD_MASK_SHAPE_KEYINDEX   (1 << CD_SHAPE_KEYINDEX)

Definition at line 198 of file DNA_customdata_types.h.

◆ CD_MASK_SHAPEKEY

#define CD_MASK_SHAPEKEY   (1 << CD_SHAPEKEY)

Definition at line 199 of file DNA_customdata_types.h.

◆ CD_MASK_TANGENT

#define CD_MASK_TANGENT   (1 << CD_TANGENT)

Definition at line 194 of file DNA_customdata_types.h.

◆ CD_MASK_TESSLOOPNORMAL

#define CD_MASK_TESSLOOPNORMAL   (1LL << CD_TESSLOOPNORMAL)

Definition at line 208 of file DNA_customdata_types.h.

◆ MAX_CUSTOMDATA_LAYER_NAME

#define MAX_CUSTOMDATA_LAYER_NAME   68

Definition at line 47 of file DNA_customdata_types.h.

◆ MAX_CUSTOMDATA_LAYER_NAME_NO_PREFIX

#define MAX_CUSTOMDATA_LAYER_NAME_NO_PREFIX   64

Definition at line 48 of file DNA_customdata_types.h.

◆ MAX_MTFACE

#define MAX_MTFACE   8

Definition at line 261 of file DNA_customdata_types.h.

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 
CD_FLAG_UNUSED 
CD_FLAG_TEMPORARY 
CD_FLAG_EXTERNAL 
CD_FLAG_IN_MEMORY 

Definition at line 244 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 
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_FREESTYLE_EDGE 
CD_FREESTYLE_FACE 
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.