From ec5f0e214cac44cf026b2c2360313f94929fb4e3 Mon Sep 17 00:00:00 2001 From: bibendovsky Date: Mon, 10 Mar 2014 22:57:57 +0200 Subject: [PATCH] Fix "out of memory" error by removing tangent and bi-normal vectors from vertex --- Engine/runtime/render_a/src/sys/d3d/d3d_renderblock.cpp | 9 +++++++-- Engine/runtime/render_a/src/sys/d3d/d3d_renderblock.h | 4 ++++ .../render_a/src/sys/d3d/d3d_rendershader_gouraud.cpp | 5 +++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Engine/runtime/render_a/src/sys/d3d/d3d_renderblock.cpp b/Engine/runtime/render_a/src/sys/d3d/d3d_renderblock.cpp index 37969337..adeb6bed 100644 --- a/Engine/runtime/render_a/src/sys/d3d/d3d_renderblock.cpp +++ b/Engine/runtime/render_a/src/sys/d3d/d3d_renderblock.cpp @@ -57,8 +57,13 @@ ILTStream &operator>>(ILTStream &stream, SRBVertex &sVert) stream >> sVert.m_fV1; stream >> sVert.m_nColor; stream >> sVert.m_vNormal; + +// BBi +#ifdef LTJS_USE_TANGENT_AND_BINORMAL stream >> sVert.m_vTangent; stream >> sVert.m_vBinormal; +#endif // LTJS_USE_TANGENT_AND_BINORMAL + return stream; } @@ -543,7 +548,7 @@ bool CD3D_RenderBlock::Load(ILTStream *pStream) } // Get the vertex data - *pStream >> (uint32)m_nVertexCount; + *pStream >> m_nVertexCount; if (m_nVertexCount) { LT_MEM_TRACK_ALLOC(m_aVertices = new SRBVertex[m_nVertexCount],LT_MEM_TYPE_RENDER_WORLD); @@ -562,7 +567,7 @@ bool CD3D_RenderBlock::Load(ILTStream *pStream) } // Get the triangle count - *pStream >> (uint32)m_nTriCount; + *pStream >> m_nTriCount; if (m_nTriCount) { LT_MEM_TRACK_ALLOC(m_aIndices = new uint16[m_nTriCount * 3],LT_MEM_TYPE_RENDER_WORLD); diff --git a/Engine/runtime/render_a/src/sys/d3d/d3d_renderblock.h b/Engine/runtime/render_a/src/sys/d3d/d3d_renderblock.h index 4e0b4fc9..56315a27 100644 --- a/Engine/runtime/render_a/src/sys/d3d/d3d_renderblock.h +++ b/Engine/runtime/render_a/src/sys/d3d/d3d_renderblock.h @@ -72,8 +72,12 @@ struct SRBVertex float m_fU1, m_fV1; uint32 m_nColor; LTVector m_vNormal; + +// BBi +#ifdef LTJS_USE_TANGENT_AND_BINORMAL LTVector m_vTangent; LTVector m_vBinormal; +#endif // LTJS_USE_TANGENT_AND_BINORMAL }; // Geometry-only n-gon w/ a pre-stored plane and bounds diff --git a/Engine/runtime/render_a/src/sys/d3d/d3d_rendershader_gouraud.cpp b/Engine/runtime/render_a/src/sys/d3d/d3d_rendershader_gouraud.cpp index a8e0c135..9adf0184 100644 --- a/Engine/runtime/render_a/src/sys/d3d/d3d_rendershader_gouraud.cpp +++ b/Engine/runtime/render_a/src/sys/d3d/d3d_rendershader_gouraud.cpp @@ -2954,8 +2954,13 @@ void CRenderShader_Gouraud_Effect::TranslateVertices(SVertex_Gouraud_Effect *pOu pCurOut->m_vPos = pCurIn->m_vPos; pCurOut->m_nColor = pCurIn->m_nColor; pCurOut->m_vNormal = pCurIn->m_vNormal; + +// BBi +#ifdef LTJS_USE_TANGENT_AND_BINORMAL pCurOut->m_vTangent = pCurIn->m_vTangent; pCurOut->m_vBinormal = pCurIn->m_vBinormal; +#endif // LTJS_USE_TANGENT_AND_BINORMAL + pCurOut->m_fU = pCurIn->m_fU0; pCurOut->m_fV = pCurIn->m_fV0; pCurOut->m_fW = 1.0f;