From 21dad77da62faa42f6ae73e51ec0cc8772ad09d8 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)); }