diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 6286d1bcea22b673b7bd085b7e91f8c3cf416426..f252b2a232736960387d2e44b22a6eb3bf745232 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -1876,6 +1876,18 @@ bool LLVolumeFace::VertexData::operator==(const LLVolumeFace::VertexData& rhs)co
 	return true;
 }
 
+bool LLVolumeFace::VertexData::compareNormal(const LLVolumeFace::VertexData& rhs, F32 angle_cutoff) const
+{
+	bool retval = false;
+	if (rhs.mPosition == mPosition && rhs.mTexCoord == mTexCoord)
+	{
+		F32 cur_angle = rhs.mNormal*mNormal;
+		
+		retval = cur_angle > angle_cutoff;
+	}
+
+	return retval;
+}
 
 BOOL LLVolume::createVolumeFacesFromFile(const std::string& file_name)
 {
diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h
index 9f595ccbc4a75f483604ed25240f3c62024b59f5..d2727d8f21ca4579d79d12e99fae7465b39ae9d5 100644
--- a/indra/llmath/llvolume.h
+++ b/indra/llmath/llvolume.h
@@ -814,6 +814,7 @@ class LLVolumeFace
 
 		bool operator<(const VertexData& rhs) const;
 		bool operator==(const VertexData& rhs) const;
+		bool compareNormal(const VertexData& rhs, F32 angle_cutoff) const;
 	};
 
 	enum