26 if (
format.attr_len == 0) {
51 struct gpuSculptData {
72 vbo_data->mask = v_mask;
73 uchar face_set_color[4] = {UCHAR_MAX, UCHAR_MAX, UCHAR_MAX, UCHAR_MAX};
83 }
while ((l_iter = l_iter->
next) != l_first);
88 for (
int mp_index = 0; mp_index < mr->
poly_len; mp_index++) {
93 v_mask = cd_mask[loops[mp_loop].
v];
95 vbo_data->mask = v_mask;
97 uchar face_set_color[4] = {UCHAR_MAX, UCHAR_MAX, UCHAR_MAX, UCHAR_MAX};
99 const int face_set_id = cd_face_set[mp_index];
122 Mesh *coarse_mesh = mr->
me;
140 for (
int i = 0; i < coarse_mesh->
totpoly; i++) {
143 for (
int loop_index = mpoly->
loopstart; loop_index < mpoly->loopstart + mpoly->
totloop;
145 const MLoop *ml = &coarse_mesh->
mloop[loop_index];
146 *v_mask++ = cd_mask[ml->
v];
177 const int mp_index = subdiv_loop_poly_index[i];
179 uchar face_set_color[4] = {UCHAR_MAX, UCHAR_MAX, UCHAR_MAX, UCHAR_MAX};
181 const int face_set_id = cd_face_set[mp_index];
void * CustomData_get_layer(const struct CustomData *data, int type)
int CustomData_get_offset(const struct CustomData *data, int type)
void BKE_paint_face_set_overlay_color_get(int face_set, int seed, uchar r_color[4])
MINLINE void copy_v3_v3_uchar(unsigned char r[3], const unsigned char a[3])
void GPU_vertbuf_discard(GPUVertBuf *)
struct GPUVertBuf GPUVertBuf
GPUVertBuf * GPU_vertbuf_calloc(void)
void GPU_vertbuf_data_alloc(GPUVertBuf *, uint v_len)
#define GPU_vertbuf_init_with_format(verts, format)
void * GPU_vertbuf_get_data(const GPUVertBuf *verts)
void GPU_vertbuf_init_build_on_device(GPUVertBuf *verts, GPUVertFormat *format, uint v_len)
Read Guarded memory(de)allocation.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a color
#define BM_ELEM_CD_GET_FLOAT(ele, offset)
#define BM_ELEM_CD_GET_INT(ele, offset)
#define BM_FACE_FIRST_LOOP(p)
#define BM_ITER_MESH(ele, iter, bm, itype)
ATTR_WARN_UNUSED_RESULT const BMLoop * l
void draw_subdiv_build_sculpt_data_buffer(const DRWSubdivCache *cache, GPUVertBuf *mask_vbo, GPUVertBuf *face_set_vbo, GPUVertBuf *sculpt_data)
void draw_subdiv_interp_custom_data(const DRWSubdivCache *cache, GPUVertBuf *src_data, GPUVertBuf *dst_data, int dimensions, int dst_offset, bool compress_to_u16)
ccl_global float * buffer
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
static void extract_sculpt_data_init_subdiv(const DRWSubdivCache *subdiv_cache, const MeshRenderData *mr, MeshBatchCache *UNUSED(cache), void *buffer, void *UNUSED(data))
static void extract_sculpt_data_init(const MeshRenderData *mr, MeshBatchCache *UNUSED(cache), void *buf, void *UNUSED(tls_data))
constexpr MeshExtract create_extractor_sculpt_data()
static GPUVertFormat * get_sculpt_data_format()
int * subdiv_loop_poly_index
eMRExtractType extract_type
int face_sets_color_default