From d092f3e1dc1c322a0c3c1e55b9b6e1792d6b0f59 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Geenz\" Goodman" Date: Mon, 25 Sep 2023 12:18:02 -0700 Subject: Get the average normal of the face. DRTVWR-583 --- indra/newview/llface.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'indra/newview/llface.cpp') diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index c1776705f9..4dd991ee60 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -488,6 +488,33 @@ U16 LLFace::getGeometry(LLStrider &vertices, LLStrider &no return mGeomIndex; } +LLVector3 LLFace::getAverageNormal() +{ + if (!mHasAverageNormal) + { + if (mVertexBuffer.notNull()) + { + if (mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_NORMAL)) + { + LLStrider normals; + mVertexBuffer->getNormalStrider(normals, mGeomIndex, mGeomCount); + LLVector3 normal_total; + + for (int i = 0; i < mVertexBuffer->getNumVerts(); i++) + { + normal_total += *normals.get(); + normals++; + } + + mAverageNormal = normal_total / mVertexBuffer->getNumVerts(); + mHasAverageNormal = true; + } + } + } + + return mAverageNormal; +} + void LLFace::updateCenterAgent() { if (mDrawablep->isActive()) -- cgit v1.2.3 From 18b219cf83a1cd405cf36b9f58fc48f717409598 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Geenz\" Goodman" Date: Mon, 25 Sep 2023 19:20:46 -0700 Subject: Start removing the concept of placement mode - it's either a mirror or not. DRTVWR-583 --- indra/newview/llface.cpp | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-) (limited to 'indra/newview/llface.cpp') diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 4dd991ee60..2c04224fa0 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -490,28 +490,6 @@ U16 LLFace::getGeometry(LLStrider &vertices, LLStrider &no LLVector3 LLFace::getAverageNormal() { - if (!mHasAverageNormal) - { - if (mVertexBuffer.notNull()) - { - if (mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_NORMAL)) - { - LLStrider normals; - mVertexBuffer->getNormalStrider(normals, mGeomIndex, mGeomCount); - LLVector3 normal_total; - - for (int i = 0; i < mVertexBuffer->getNumVerts(); i++) - { - normal_total += *normals.get(); - normals++; - } - - mAverageNormal = normal_total / mVertexBuffer->getNumVerts(); - mHasAverageNormal = true; - } - } - } - return mAverageNormal; } @@ -1916,14 +1894,21 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, F32* normals = (F32*) norm.get(); LLVector4a* src = vf.mNormals; LLVector4a* end = src+num_vertices; - + + LLVector4a normal_total; + while (src < end) { LLVector4a normal; mat_normal.rotate(*src++, normal); normal.store4a(normals); + normal_total.add(normal); normals += 4; } + + normal_total.div(LLVector4a(num_vertices)); + + mAverageNormal = LLVector3(normal_total[0], normal_total[1], normal_total[2]); } if (rebuild_tangent) -- cgit v1.2.3 From 2510134f40c2edd2eea40f486f094517b8ffaa51 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Geenz\" Goodman" Date: Wed, 24 Jan 2024 17:07:56 -0800 Subject: https://github.com/secondlife/viewer-issues/issues/23 Cleaning out some unused code. --- indra/newview/llface.cpp | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'indra/newview/llface.cpp') diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 2c04224fa0..69e43bb458 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -488,11 +488,6 @@ U16 LLFace::getGeometry(LLStrider &vertices, LLStrider &no return mGeomIndex; } -LLVector3 LLFace::getAverageNormal() -{ - return mAverageNormal; -} - void LLFace::updateCenterAgent() { if (mDrawablep->isActive()) @@ -1895,20 +1890,13 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, LLVector4a* src = vf.mNormals; LLVector4a* end = src+num_vertices; - LLVector4a normal_total; - while (src < end) { LLVector4a normal; mat_normal.rotate(*src++, normal); normal.store4a(normals); - normal_total.add(normal); normals += 4; } - - normal_total.div(LLVector4a(num_vertices)); - - mAverageNormal = LLVector3(normal_total[0], normal_total[1], normal_total[2]); } if (rebuild_tangent) -- cgit v1.2.3