From 8b9abd09c8404c066926a85fea6504c01f687524 Mon Sep 17 00:00:00 2001
From: Hans Goudey <hans@blender.org>
Date: Mon, 11 Mar 2024 10:41:31 -0400
Subject: [PATCH] Fix #119270: Multires color attribute fallback drawing
 changed to black

Before e05c36f56d2b6f2eb50b the fallback for unsupported attributes was
white. That's arbitrary, but not worth changing.
---
 source/blender/draw/intern/draw_pbvh.cc | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/source/blender/draw/intern/draw_pbvh.cc b/source/blender/draw/intern/draw_pbvh.cc
index c103969987a..1eb9d1eed12 100644
--- a/source/blender/draw/intern/draw_pbvh.cc
+++ b/source/blender/draw/intern/draw_pbvh.cc
@@ -314,6 +314,21 @@ static const CustomData *get_cdata(bke::AttrDomain domain, const PBVH_GPU_Args &
   }
 }
 
+template<typename T> T fallback_value_for_fill()
+{
+  return T();
+}
+
+template<> ColorGeometry4f fallback_value_for_fill()
+{
+  return ColorGeometry4f(1.0f, 1.0f, 1.0f, 1.0f);
+}
+
+template<> ColorGeometry4b fallback_value_for_fill()
+{
+  return fallback_value_for_fill<ColorGeometry4f>().encode();
+}
+
 struct PBVHBatches {
   Vector<PBVHVbo> vbos;
   Map<std::string, PBVHBatch> batches;
@@ -584,7 +599,7 @@ struct PBVHBatches {
         using VBOType = typename Converter::VBOType;
         std::fill_n(static_cast<VBOType *>(GPU_vertbuf_get_data(vbo.vert_buf)),
                     GPU_vertbuf_get_vertex_len(vbo.vert_buf),
-                    VBOType());
+                    Converter::convert(fallback_value_for_fill<T>()));
       });
     }
   }
-- 
GitLab