Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Eagar <joeedh@gmail.com>2022-09-29 09:33:02 +0300
committerJeroen Bakker <jeroen@blender.org>2022-10-03 15:59:17 +0300
commit3fa3d6c7aac813cbb9b098147f89d9a8bceec776 (patch)
treec92229dc9f7ee48f5a2895e6d5e3638cb1fa1019
parent4b3c2017efa4aeabb28e0f9e8f26785687603fc1 (diff)
Sculpt: fix missing nullptr check in pbvh draw
Check for nullptr when building mask vbos.
-rw-r--r--source/blender/draw/intern/draw_pbvh.cc21
1 files changed, 14 insertions, 7 deletions
diff --git a/source/blender/draw/intern/draw_pbvh.cc b/source/blender/draw/intern/draw_pbvh.cc
index 7b36cb16cac..432ebbe9452 100644
--- a/source/blender/draw/intern/draw_pbvh.cc
+++ b/source/blender/draw/intern/draw_pbvh.cc
@@ -533,12 +533,19 @@ struct PBVHBatches {
case CD_PBVH_MASK_TYPE: {
float *mask = static_cast<float *>(CustomData_get_layer(args->vdata, CD_PAINT_MASK));
- foreach_faces(
- [&](int /*buffer_i*/, int /*tri_i*/, int vertex_i, const MLoopTri * /*tri*/) {
- *static_cast<uchar *>(GPU_vertbuf_raw_step(&access)) = (uchar)(mask[vertex_i] *
- 255.0f);
- });
-
+ if (mask) {
+ foreach_faces(
+ [&](int /*buffer_i*/, int /*tri_i*/, int vertex_i, const MLoopTri * /*tri*/) {
+ *static_cast<uchar *>(GPU_vertbuf_raw_step(&access)) = (uchar)(mask[vertex_i] *
+ 255.0f);
+ });
+ }
+ else {
+ foreach_faces(
+ [&](int /*buffer_i*/, int /*tri_i*/, int vertex_i, const MLoopTri * /*tri*/) {
+ *static_cast<uchar *>(GPU_vertbuf_raw_step(&access)) = 0;
+ });
+ }
break;
}
case CD_PBVH_FSET_TYPE: {
@@ -731,7 +738,7 @@ struct PBVHBatches {
if (cd_mask == -1) {
foreach_bmesh(
- [&](BMLoop * /*l*/) { *static_cast<float *>(GPU_vertbuf_raw_step(&access)) = 255; });
+ [&](BMLoop * /*l*/) { *static_cast<float *>(GPU_vertbuf_raw_step(&access)) = 0; });
}
else {
foreach_bmesh([&](BMLoop *l) {