[Bf-blender-cvs] [500bc99da5d] master: Fix T85697: implement interpolation for float custom data type

Jacques Lucke noreply at git.blender.org
Tue Feb 16 14:26:25 CET 2021


Commit: 500bc99da5dbcdf7c728833326fc29babaf529e0
Author: Jacques Lucke
Date:   Tue Feb 16 14:25:35 2021 +0100
Branches: master
https://developer.blender.org/rB500bc99da5dbcdf7c728833326fc29babaf529e0

Fix T85697: implement interpolation for float custom data type

This just hasn't been implemented before.

===================================================================

M	source/blender/blenkernel/intern/customdata.c

===================================================================

diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c
index 782b4fc200e..9188d8c1afd 100644
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@ -473,6 +473,21 @@ static void layerCopy_propFloat(const void *source, void *dest, int count)
   memcpy(dest, source, sizeof(MFloatProperty) * count);
 }
 
+static void layerInterp_propFloat(const void **sources,
+                                  const float *weights,
+                                  const float *UNUSED(sub_weights),
+                                  int count,
+                                  void *dest)
+{
+  float result = 0.0f;
+  for (int i = 0; i < count; i++) {
+    const float interp_weight = weights[i];
+    const float src = *(const float *)sources[i];
+    result += src * interp_weight;
+  }
+  *(float *)dest = result;
+}
+
 static bool layerValidate_propFloat(void *data, const uint totitems, const bool do_fixes)
 {
   MFloatProperty *fp = data;
@@ -1553,7 +1568,7 @@ static const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES] = {
      N_("Float"),
      layerCopy_propFloat,
      NULL,
-     NULL,
+     layerInterp_propFloat,
      NULL,
      NULL,
      layerValidate_propFloat},



More information about the Bf-blender-cvs mailing list