Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2021-01-19 09:14:47 +0300
committerCampbell Barton <ideasman42@gmail.com>2021-01-19 09:14:47 +0300
commit1cc54107a91d1ee62298f5308c9f4048b763dfa5 (patch)
tree86e3069413ed12ef151d5e57262aad35df643bb8
parentd26588268ddc19028dbbd22bc953729e6d26c2fe (diff)
parent418cd7c4bae6247e9254bcc6b06e2ef12ec76fb6 (diff)
Merge branch 'blender-v2.92-release'
-rw-r--r--source/blender/blenkernel/intern/displist.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c
index 5220d5be2ca..375792a02c2 100644
--- a/source/blender/blenkernel/intern/displist.c
+++ b/source/blender/blenkernel/intern/displist.c
@@ -458,6 +458,7 @@ static void curve_to_displist(Curve *cu,
/**
* \param normal_proj: Optional normal that's used to project the scanfill verts into 2d coords.
* Pass this along if known since it saves time calculating the normal.
+ * This is also used to initialize #DispList.nors (one normal per display list).
* \param flipnormal: Flip the normal (same as passing \a normal_proj negated)
*/
void BKE_displist_fill(ListBase *dispbase,
@@ -550,6 +551,18 @@ void BKE_displist_fill(ListBase *dispbase,
dlnew->index = MEM_mallocN(sizeof(int[3]) * tot, "dlindex");
dlnew->verts = MEM_mallocN(sizeof(float[3]) * totvert, "dlverts");
+ if (normal_proj != NULL) {
+ /* Use a single normal for #DL_INDEX3.
+ * Counter intuitively, the normal must always be the flipped projection vector. */
+ dlnew->nors = MEM_mallocN(sizeof(float[3]), "dlnors");
+ if (flipnormal) {
+ copy_v3_v3(dlnew->nors, normal_proj);
+ }
+ else {
+ negate_v3_v3(dlnew->nors, normal_proj);
+ }
+ }
+
/* vert data */
f1 = dlnew->verts;
totvert = 0;