From dc754833bce3a7311f5c6c2b8fe761cae854e36f Mon Sep 17 00:00:00 2001 From: Mira Grudzinska Date: Wed, 25 Sep 2024 23:12:15 +0200 Subject: [PATCH] wg_engine: prevent adding duplicate points while trimming In cases where the distance between points is 0, further processing of the points results in division by zero. To avoid this check, we ensure that duplicate points are not added during trimming. --- src/renderer/wg_engine/tvgWgGeometry.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/renderer/wg_engine/tvgWgGeometry.h b/src/renderer/wg_engine/tvgWgGeometry.h index 4319a22c..8b349d4b 100755 --- a/src/renderer/wg_engine/tvgWgGeometry.h +++ b/src/renderer/wg_engine/tvgWgGeometry.h @@ -174,9 +174,11 @@ struct WgVertexBuffer { // append points float t_beg = len_seg_beg > 0.0f ? 1.0f - (len_total_beg - len_beg) / len_seg_beg : 0.0f; float t_end = len_seg_end > 0.0f ? 1.0f - (len_total_end - len_end) / len_seg_end : 0.0f; - if (index_beg > 0) append(lerp(buff.vbuff[index_beg-1], buff.vbuff[index_beg], t_beg)); + //t_beg == 1 handled in appendRange + if (index_beg > 0 && t_beg != 1.0f) append(lerp(buff.vbuff[index_beg-1], buff.vbuff[index_beg], t_beg)); appendRange(buff, index_beg, index_end); - if (index_end > 0) append(lerp(buff.vbuff[index_end-1], buff.vbuff[index_end], t_end)); + //t_end == 0 handled in appendRange + if (index_end > 0 && t_end != 0.0f) append(lerp(buff.vbuff[index_end-1], buff.vbuff[index_end], t_end)); }