diff options
author | Joseph Eagar <joeedh@gmail.com> | 2022-03-22 20:44:39 +0300 |
---|---|---|
committer | Joseph Eagar <joeedh@gmail.com> | 2022-03-22 20:44:39 +0300 |
commit | 51c3ce1353db33c7d78a2636e543c08f95a95e1d (patch) | |
tree | 289b991e98a562cb5a54a6b34d2125a6f3e44757 | |
parent | 19ea75f8cf367da7e44e26933892a973ab9725d4 (diff) |
temp-sculpt-colors: Fix alpha being mangled for byte colors
-rw-r--r-- | source/blender/blenkernel/intern/pbvh.cc | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/pbvh.cc b/source/blender/blenkernel/intern/pbvh.cc index 2b319263e1c..4acdfb61c26 100644 --- a/source/blender/blenkernel/intern/pbvh.cc +++ b/source/blender/blenkernel/intern/pbvh.cc @@ -54,6 +54,8 @@ struct MLoopColHelper { float temp[4]; linearrgb_to_srgb_v3_v3(temp, color); + temp[3] = color[3]; + rgba_float_to_uchar(reinterpret_cast<unsigned char *>(col), temp); } }; @@ -134,7 +136,8 @@ static void pbvh_vertex_color_get(PBVH *pbvh, int vertex, float r_color[4]) const MPoly *mp = pbvh->mpoly + melem->indices[i]; const MLoop *ml = pbvh->mloop + mp->loopstart; - typename Helper::ColType *col = static_cast<typename Helper::ColType *>(pbvh->vcol->data) + mp->loopstart; + typename Helper::ColType *col = static_cast<typename Helper::ColType *>(pbvh->vcol->data) + + mp->loopstart; for (int j = 0; j < mp->totloop; j++, col++, ml++) { if (ml->v == vertex) { @@ -152,7 +155,8 @@ static void pbvh_vertex_color_get(PBVH *pbvh, int vertex, float r_color[4]) } } else { - typename Helper::ColType *col = static_cast<typename Helper::ColType *>(pbvh->vcol->data) + vertex; + typename Helper::ColType *col = static_cast<typename Helper::ColType *>(pbvh->vcol->data) + + vertex; Helper::toFloat(col, r_color); } } @@ -177,7 +181,8 @@ static void pbvh_vertex_color_set(PBVH *pbvh, int vertex, const float color[4]) const MPoly *mp = pbvh->mpoly + melem->indices[i]; const MLoop *ml = pbvh->mloop + mp->loopstart; - typename Helper::ColType *col = static_cast<typename Helper::ColType *>(pbvh->vcol->data) + mp->loopstart; + typename Helper::ColType *col = static_cast<typename Helper::ColType *>(pbvh->vcol->data) + + mp->loopstart; for (int j = 0; j < mp->totloop; j++, col++, ml++) { if (ml->v == vertex) { @@ -187,7 +192,8 @@ static void pbvh_vertex_color_set(PBVH *pbvh, int vertex, const float color[4]) } } else { - typename Helper::ColType *col = static_cast<typename Helper::ColType *>(pbvh->vcol->data) + vertex; + typename Helper::ColType *col = static_cast<typename Helper::ColType *>(pbvh->vcol->data) + + vertex; Setter::setFloat(col, color); } } |