From f23f28c8f9ccc36e8f70beb63b58b3114246a09c Mon Sep 17 00:00:00 2001 From: Cosmic Linden Date: Wed, 28 Aug 2024 15:59:03 -0700 Subject: secondlife/viewer#2421: Do not calculate and store silhouette edges for nearly every geometric prim with a corner --- indra/llmath/llvolume.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'indra/llmath/llvolume.h') diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index bbb2a16b0b..27c5fc5a49 100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -918,6 +918,15 @@ public: // Get a reference to the octree, which may be null const LLVolumeOctree* getOctree() const; + // Part of silhouette generation (used by selection outlines) + // Populates the provided edge array with numbers corresponding to + // *partial* logic of whether a particular index should be rendered + // as a silhouette edge. -1 indicates the index should be rendered as a + // silhouette edge. See generateSilhouetteVertices for the full logic. + // Silhouette edges can only be generated for some types of prims. If a + // silhouette edge cannot be generated, the edge array will be left empty. + void generateSilhouetteEdge(const LLVolume* volume, std::vector& edge) const; + enum { SINGLE_MASK = 0x0001, @@ -963,8 +972,6 @@ public: // indexes for mPositions/mNormals/mTexCoords U16* mIndices; - std::vector mEdge; - //list of skin weights for rigged volumes // format is mWeights[vertex_index].mV[influence] = . // mWeights.size() should be empty or match mVertices.size() @@ -1113,9 +1120,9 @@ private: public: virtual void setMeshAssetLoaded(bool loaded); - virtual bool isMeshAssetLoaded(); + virtual bool isMeshAssetLoaded() const; virtual void setMeshAssetUnavaliable(bool unavaliable); - virtual bool isMeshAssetUnavaliable(); + virtual bool isMeshAssetUnavaliable() const; protected: bool mUnique; -- cgit v1.2.3