Blender V5.0
data_transfer_intern.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2014 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "BKE_customdata.hh" /* For cd_datatransfer_interp */
12
13struct CustomData;
15struct ListBase;
16struct Object;
17struct Mesh;
18
23enum {
24 CD_FAKE = 1 << 8,
25
26 /* Vertices. */
27 CD_FAKE_MDEFORMVERT = CD_FAKE | CD_MDEFORMVERT, /* *sigh* due to how vgroups are stored :(. */
28
29 /* Edges. */
30 CD_FAKE_SEAM = CD_FAKE | 100, /* UV seam flag for edges. */
31
32 /* Multiple types of mesh elements... */
34 CD_FAKE |
35 CD_PROP_FLOAT2, /* UV flag, because we handle both loop's UVs and face's textures. */
36
38
39 CD_FAKE_SHARP = CD_FAKE | 300, /* Sharp flag for edges, smooth flag for faces. */
40
45};
46
47float data_transfer_interp_float_do(int mix_mode, float val_dst, float val_src, float mix_factor);
48
50 int data_type,
51 int mix_mode,
52 float mix_factor,
53 const float *mix_weights,
54 const void *data_src,
55 void *data_dst,
56 int data_src_n,
57 int data_dst_n,
58 size_t elem_size,
59 size_t data_size,
60 size_t data_offset,
61 uint64_t data_flag,
63 void *interp_data);
64
65/* Type-specific. */
66
68 int mix_mode,
69 float mix_factor,
70 const float *mix_weights,
71 bool use_create,
72 bool use_delete,
73 Object *ob_src,
74 Object *ob_dst,
75 const Mesh &mesh_src,
76 Mesh &mesh_dst,
77 bool use_dupref_dst,
78 int fromlayers,
79 int tolayers);
80
81/* Defined in `customdata.cc`. */
82
87 void *data_dst,
88 const void **sources,
89 const float *weights,
90 int count,
91 float mix_factor);
CustomData interface, see also DNA_customdata_types.h.
void(*)(const CustomDataTransferLayerMap *laymap, void *dest, const void **sources, const float *weights, int count, float mix_factor) cd_datatransfer_interp
@ CD_MDEFORMVERT
@ CD_PROP_FLOAT2
unsigned long long int uint64_t
void data_transfer_layersmapping_add_item(ListBase *r_map, int data_type, int mix_mode, float mix_factor, const float *mix_weights, const void *data_src, void *data_dst, int data_src_n, int data_dst_n, size_t elem_size, size_t data_size, size_t data_offset, uint64_t data_flag, cd_datatransfer_interp interp, void *interp_data)
float data_transfer_interp_float_do(int mix_mode, float val_dst, float val_src, float mix_factor)
bool data_transfer_layersmapping_vgroups(ListBase *r_map, int mix_mode, float mix_factor, const float *mix_weights, bool use_create, bool use_delete, Object *ob_src, Object *ob_dst, const Mesh &mesh_src, Mesh &mesh_dst, bool use_dupref_dst, int fromlayers, int tolayers)
Definition deform.cc:1394
void customdata_data_transfer_interp_normal_normals(const CustomDataTransferLayerMap *laymap, void *data_dst, const void **sources, const float *weights, int count, float mix_factor)
@ CD_FAKE_CREASE
@ CD_FAKE_FREESTYLE_EDGE
@ CD_FAKE_FREESTYLE_FACE
@ CD_FAKE_SHARP
@ CD_FAKE_BWEIGHT
@ CD_FAKE_MDEFORMVERT
int count
ccl_device_inline float interp(const float a, const float b, const float t)
Definition math_base.h:502