forked from bartvdbraak/blender
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:
parent
352eaccd5d
commit
dc664e3925
@ -304,7 +304,7 @@ void RAS_MeshObject::AddVertex(RAS_Polygon *poly, int i,
|
|||||||
slot = mmat->m_baseslot;
|
slot = mmat->m_baseslot;
|
||||||
darray = slot->CurrentDisplayArray();
|
darray = slot->CurrentDisplayArray();
|
||||||
|
|
||||||
if(!flat) {
|
{ /* Shared Vertex! */
|
||||||
/* find vertices shared between faces, with the restriction
|
/* find vertices shared between faces, with the restriction
|
||||||
* that they exist in the same display array, and have the
|
* that they exist in the same display array, and have the
|
||||||
* same uv coordinate etc */
|
* same uv coordinate etc */
|
||||||
@ -332,7 +332,7 @@ void RAS_MeshObject::AddVertex(RAS_Polygon *poly, int i,
|
|||||||
slot->AddPolygonVertex(offset);
|
slot->AddPolygonVertex(offset);
|
||||||
poly->SetVertexOffset(i, offset);
|
poly->SetVertexOffset(i, offset);
|
||||||
|
|
||||||
if(!flat) {
|
{ /* Shared Vertex! */
|
||||||
SharedVertex shared;
|
SharedVertex shared;
|
||||||
shared.m_darray = darray;
|
shared.m_darray = darray;
|
||||||
shared.m_offset = offset;
|
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)
|
// compare two vertices, and return TRUE if both are almost identical (they can be shared)
|
||||||
bool RAS_TexVert::closeTo(const RAS_TexVert* other)
|
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 &&
|
m_rgba == other->m_rgba &&
|
||||||
MT_fuzzyEqual(MT_Vector3(m_normal), MT_Vector3(other->m_normal)) &&
|
MT_fuzzyEqual(MT_Vector3(m_normal), MT_Vector3(other->m_normal)) &&
|
||||||
MT_fuzzyEqual(MT_Vector3(m_tangent), MT_Vector3(other->m_tangent)) &&
|
MT_fuzzyEqual(MT_Vector3(m_tangent), MT_Vector3(other->m_tangent)) &&
|
||||||
|
Loading…
Reference in New Issue
Block a user