diff --git a/source/blender/draw/intern/draw_pbvh.cc b/source/blender/draw/intern/draw_pbvh.cc index ebbc3b1e765..42ff9cc3df9 100644 --- a/source/blender/draw/intern/draw_pbvh.cc +++ b/source/blender/draw/intern/draw_pbvh.cc @@ -762,7 +762,22 @@ struct PBVHBatches { if (const float *mask = static_cast( CustomData_get_layer(args.vert_data, CD_PAINT_MASK))) { - extract_data_vert_faces(args, {mask, args.me->totvert}, vert_buf); + const Span corner_verts = args.corner_verts; + const Span looptris = args.mlooptri; + const Span looptri_faces = args.looptri_faces; + const bool *hide_poly = args.hide_poly; + + float *data = static_cast(GPU_vertbuf_get_data(&vert_buf)); + for (const int looptri_i : args.prim_indices) { + if (hide_poly && hide_poly[looptri_faces[looptri_i]]) { + continue; + } + for (int i : IndexRange(3)) { + const int vert = corner_verts[looptris[looptri_i].tri[i]]; + *data = mask[vert]; + data++; + } + } } else { MutableSpan(static_cast(GPU_vertbuf_get_data(vbo.vert_buf)), totvert).fill(0);