24 "orco", gpu::VertAttrType::SFLOAT_32_32_32_32);
35 for (const int face_index : range) {
36 const BMFace &face = *BM_face_at_index(&const_cast<BMesh &>(bm), face_index);
37 const BMLoop *loop = BM_FACE_FIRST_LOOP(&face);
38 for ([[maybe_unused]] const int i : IndexRange(face.len)) {
39 const int index = BM_elem_index_get(loop);
40 vbo_data[index] = float4(orco_data[BM_elem_index_get(loop->v)], 0.0f);
49 for (const int corner : range) {
50 vbo_data[corner] = float4(orco_data[corner_verts[corner]], 0.0f);
const void * CustomData_get_layer(const CustomData *data, eCustomDataType type)
static blender::gpu::VertBuf * GPU_vertbuf_create_with_format(const GPUVertFormat &format)
void GPU_vertbuf_data_alloc(blender::gpu::VertBuf &verts, uint v_len)
constexpr T * data() const
constexpr int64_t size_in_bytes() const
constexpr int64_t size_in_bytes() const
constexpr IndexRange index_range() const
gpu::VertBufPtr extract_orco(const MeshRenderData &mr)
std::unique_ptr< gpu::VertBuf, gpu::VertBufDeleter > VertBufPtr
void parallel_for(const IndexRange range, const int64_t grain_size, const Function &function, const TaskSizeHints &size_hints=detail::TaskSizeHints_Static(1))
void memory_bandwidth_bound_task(const int64_t approximate_bytes_touched, const Function &function)
VecBase< float, 4 > float4
VecBase< float, 3 > float3
MeshExtractType extract_type