TexVert sharing was disabled for flat faces, this is silly since a building or any other model with flat faces will often be able to share texverts.

Simple testcase with a subdivided cube used 1/3 as many texverts and spend half as much time in the rasterizer while profiling.
This commit is contained in:
Campbell Barton 2009-04-27 17:53:41 +00:00
parent 352eaccd5d
commit dc664e3925
2 changed files with 5 additions and 3 deletions

@ -304,7 +304,7 @@ void RAS_MeshObject::AddVertex(RAS_Polygon *poly, int i,
slot = mmat->m_baseslot;
darray = slot->CurrentDisplayArray();
if(!flat) {
{ /* Shared Vertex! */
/* find vertices shared between faces, with the restriction
* that they exist in the same display array, and have the
* same uv coordinate etc */
@ -332,7 +332,7 @@ void RAS_MeshObject::AddVertex(RAS_Polygon *poly, int i,
slot->AddPolygonVertex(offset);
poly->SetVertexOffset(i, offset);
if(!flat) {
{ /* Shared Vertex! */
SharedVertex shared;
shared.m_darray = darray;
shared.m_offset = offset;

@ -117,7 +117,9 @@ void RAS_TexVert::SetTangent(const MT_Vector3& tangent)
// compare two vertices, and return TRUE if both are almost identical (they can be shared)
bool RAS_TexVert::closeTo(const RAS_TexVert* other)
{
return (m_flag == other->m_flag &&
return (
/* m_flag == other->m_flag && */
/* at the moment the face only stores the smooth/flat setting so dont bother comparing it */
m_rgba == other->m_rgba &&
MT_fuzzyEqual(MT_Vector3(m_normal), MT_Vector3(other->m_normal)) &&
MT_fuzzyEqual(MT_Vector3(m_tangent), MT_Vector3(other->m_tangent)) &&