summaryrefslogtreecommitdiffstats
path: root/AssetLoader/src/DXSDKMeshLoader.cpp
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2019-11-25 02:19:06 +0000
committerEgor Yusov <egor.yusov@gmail.com>2019-11-25 02:19:06 +0000
commit4e1be5d0d33cb62bd296c3ffee3926945052843d (patch)
tree2db724b41fe93094723c9d51cec3c3340d625645 /AssetLoader/src/DXSDKMeshLoader.cpp
parentRenamed INSTALL_DILIGENT_TOOLS cmake option to DILIGENT_INSTALL_TOOLS (diff)
downloadDiligentTools-4e1be5d0d33cb62bd296c3ffee3926945052843d.tar.gz
DiligentTools-4e1be5d0d33cb62bd296c3ffee3926945052843d.zip
clang-formatted AssetLoader
Diffstat (limited to 'AssetLoader/src/DXSDKMeshLoader.cpp')
-rw-r--r--AssetLoader/src/DXSDKMeshLoader.cpp128
1 files changed, 66 insertions, 62 deletions
diff --git a/AssetLoader/src/DXSDKMeshLoader.cpp b/AssetLoader/src/DXSDKMeshLoader.cpp
index e81d24e..00049f2 100644
--- a/AssetLoader/src/DXSDKMeshLoader.cpp
+++ b/AssetLoader/src/DXSDKMeshLoader.cpp
@@ -36,7 +36,7 @@ namespace Diligent
//--------------------------------------------------------------------------------------
-bool DXSDKMesh::CreateFromFile( const char* szFileName )
+bool DXSDKMesh::CreateFromFile(const char* szFileName)
{
FileWrapper File;
File.Open(FileOpenAttribs{szFileName});
@@ -51,40 +51,42 @@ bool DXSDKMesh::CreateFromFile( const char* szFileName )
File.Close();
- auto res = CreateFromMemory( reinterpret_cast<Uint8*>(pFileData->GetDataPtr()),
- static_cast<Uint32>(pFileData->GetSize()));
-
+ auto res = CreateFromMemory(reinterpret_cast<Uint8*>(pFileData->GetDataPtr()),
+ static_cast<Uint32>(pFileData->GetSize()));
+
return res;
}
void DXSDKMesh::ComputeBoundingBoxes()
{
- for( Uint32 i = 0; i < m_pMeshHeader->NumMeshes; i++ )
+ for (Uint32 i = 0; i < m_pMeshHeader->NumMeshes; i++)
{
auto& Mesh = m_pMeshArray[i];
- float3 Min(+FLT_MAX, +FLT_MAX, +FLT_MAX);
- float3 Max(-FLT_MAX, -FLT_MAX, -FLT_MAX);
- const auto& VertexData = m_pVertexBufferArray[ Mesh.VertexBuffers[0] ];
- auto* PosDecl = VertexData.Decl;
+
+ float3 Min{+FLT_MAX, +FLT_MAX, +FLT_MAX};
+ float3 Max{-FLT_MAX, -FLT_MAX, -FLT_MAX};
+
+ const auto& VertexData = m_pVertexBufferArray[Mesh.VertexBuffers[0]];
+ auto* PosDecl = VertexData.Decl;
while (PosDecl->Stream != 0xFF && PosDecl->Usage != DXSDKMESH_VERTEX_SEMANTIC_POSITION)
++PosDecl;
VERIFY(PosDecl->Stream != 0xFF, "Position semantic not found in this buffer");
VERIFY(PosDecl->Type == DXSDKMESH_VERTEX_DATA_TYPE_FLOAT3, "Vertex is expected to be a 3-component float vector");
-
- auto IndexType = GetIndexType(i);
- const auto* Vertices = GetRawVerticesAt(Mesh.VertexBuffers[0]);
- const auto* Indices = GetRawIndicesAt(Mesh.IndexBuffer);
- auto Stride = GetVertexStride(Mesh.VertexBuffers[0]);
- for(Uint32 subsetIdx = 0; subsetIdx < Mesh.NumSubsets; ++subsetIdx)
+
+ auto IndexType = GetIndexType(i);
+ const auto* Vertices = GetRawVerticesAt(Mesh.VertexBuffers[0]);
+ const auto* Indices = GetRawIndicesAt(Mesh.IndexBuffer);
+ auto Stride = GetVertexStride(Mesh.VertexBuffers[0]);
+ for (Uint32 subsetIdx = 0; subsetIdx < Mesh.NumSubsets; ++subsetIdx)
{
- auto& Subset = m_pSubsetArray[ Mesh.pSubsets[subsetIdx] ];
-
- for(Uint32 v = 0; v < Subset.IndexCount; ++v)
+ auto& Subset = m_pSubsetArray[Mesh.pSubsets[subsetIdx]];
+
+ for (Uint32 v = 0; v < Subset.IndexCount; ++v)
{
Uint32 Index = IndexType == IT_16BIT ?
- reinterpret_cast<const Uint16*>(Indices)[Subset.IndexStart + v] :
+ reinterpret_cast<const Uint16*>(Indices)[Subset.IndexStart + v] :
reinterpret_cast<const Uint32*>(Indices)[Subset.IndexStart + v];
- const float3& Vertex =
+ const float3& Vertex =
reinterpret_cast<const float3&>(Vertices[Index * Stride + PosDecl->Offset]);
Min = std::min(Min, Vertex);
Max = std::max(Max, Vertex);
@@ -95,25 +97,27 @@ void DXSDKMesh::ComputeBoundingBoxes()
}
}
-bool DXSDKMesh::CreateFromMemory( Uint8* pData,
- Uint32 DataUint8s )
+bool DXSDKMesh::CreateFromMemory(Uint8* pData,
+ Uint32 DataUint8s)
{
m_StaticMeshData.resize(DataUint8s);
memcpy(m_StaticMeshData.data(), pData, DataUint8s);
// Pointer fixup
auto* pStaticMeshData = m_StaticMeshData.data();
- m_pMeshHeader = reinterpret_cast<DXSDKMESH_HEADER*> (pStaticMeshData);
+
+ // clang-format off
m_pVertexBufferArray = reinterpret_cast<DXSDKMESH_VERTEX_BUFFER_HEADER*>(pStaticMeshData + m_pMeshHeader->VertexStreamHeadersOffset);
m_pIndexBufferArray = reinterpret_cast<DXSDKMESH_INDEX_BUFFER_HEADER*> (pStaticMeshData + m_pMeshHeader->IndexStreamHeadersOffset);
m_pMeshArray = reinterpret_cast<DXSDKMESH_MESH*> (pStaticMeshData + m_pMeshHeader->MeshDataOffset);
m_pSubsetArray = reinterpret_cast<DXSDKMESH_SUBSET*> (pStaticMeshData + m_pMeshHeader->SubsetDataOffset);
m_pFrameArray = reinterpret_cast<DXSDKMESH_FRAME*> (pStaticMeshData + m_pMeshHeader->FrameDataOffset);
m_pMaterialArray = reinterpret_cast<DXSDKMESH_MATERIAL*> (pStaticMeshData + m_pMeshHeader->MaterialDataOffset);
+ // clang-format on
- for( Uint32 i = 0; i < m_pMeshHeader->NumMaterials; i++ )
+ for (Uint32 i = 0; i < m_pMeshHeader->NumMaterials; i++)
{
- auto& Mat = m_pMaterialArray[i];
+ auto& Mat = m_pMaterialArray[i];
Mat.pDiffuseTexture = nullptr;
Mat.pNormalTexture = nullptr;
Mat.pSpecularTexture = nullptr;
@@ -123,14 +127,14 @@ bool DXSDKMesh::CreateFromMemory( Uint8* pData,
}
// Setup subsets
- for( Uint32 i = 0; i < m_pMeshHeader->NumMeshes; i++ )
+ for (Uint32 i = 0; i < m_pMeshHeader->NumMeshes; i++)
{
m_pMeshArray[i].pSubsets = reinterpret_cast<Uint32*>(pStaticMeshData + m_pMeshArray[i].SubsetOffset);
m_pMeshArray[i].pFrameInfluences = reinterpret_cast<Uint32*>(pStaticMeshData + m_pMeshArray[i].FrameInfluenceOffset);
}
// error condition
- if( m_pMeshHeader->Version != DXSDKMESH_FILE_VERSION )
+ if (m_pMeshHeader->Version != DXSDKMESH_FILE_VERSION)
{
LOG_ERROR("Unexpected SDK mesh file version");
return false;
@@ -144,16 +148,16 @@ bool DXSDKMesh::CreateFromMemory( Uint8* pData,
// Create VBs
m_ppVertices.resize(m_pMeshHeader->NumVertexBuffers);
- for( Uint32 i = 0; i < m_pMeshHeader->NumVertexBuffers; i++ )
+ for (Uint32 i = 0; i < m_pMeshHeader->NumVertexBuffers; i++)
{
- m_ppVertices[i] = reinterpret_cast<Uint8*>(pBufferData + ( m_pVertexBufferArray[i].DataOffset - BufferDataStart));
+ m_ppVertices[i] = reinterpret_cast<Uint8*>(pBufferData + (m_pVertexBufferArray[i].DataOffset - BufferDataStart));
}
// Create IBs
m_ppIndices.resize(m_pMeshHeader->NumIndexBuffers);
- for( Uint32 i = 0; i < m_pMeshHeader->NumIndexBuffers; i++ )
+ for (Uint32 i = 0; i < m_pMeshHeader->NumIndexBuffers; i++)
{
- m_ppIndices[i] = reinterpret_cast<Uint8*>( pBufferData + ( m_pIndexBufferArray[i].DataOffset - BufferDataStart ) );
+ m_ppIndices[i] = reinterpret_cast<Uint8*>(pBufferData + (m_pIndexBufferArray[i].DataOffset - BufferDataStart));
}
ComputeBoundingBoxes();
@@ -194,7 +198,7 @@ static void LoadTexture(IRenderDevice* pDevice,
void DXSDKMesh::LoadGPUResources(const Char* ResourceDirectory, IRenderDevice* pDevice, IDeviceContext* pDeviceCtx)
{
std::vector<StateTransitionDesc> Barriers;
- for( Uint32 i = 0; i < m_pMeshHeader->NumMaterials; i++ )
+ for (Uint32 i = 0; i < m_pMeshHeader->NumMaterials; i++)
{
auto& Mat = m_pMaterialArray[i];
if (Mat.DiffuseTexture[0] != 0)
@@ -214,14 +218,14 @@ void DXSDKMesh::LoadGPUResources(const Char* ResourceDirectory, IRenderDevice* p
}
m_VertexBuffers.resize(m_pMeshHeader->NumVertexBuffers);
- for( Uint32 i = 0; i < m_pMeshHeader->NumVertexBuffers; i++ )
+ for (Uint32 i = 0; i < m_pMeshHeader->NumVertexBuffers; i++)
{
const auto& VBArr = m_pVertexBufferArray[i];
std::stringstream ss;
ss << "DXSDK Mesh vertex buffer #" << i;
- std::string VBName = ss.str();
- BufferDesc VBDesc;
+ std::string VBName = ss.str();
+ BufferDesc VBDesc;
VBDesc.Name = VBName.c_str();
VBDesc.Usage = USAGE_STATIC;
VBDesc.uiSizeInBytes = static_cast<Uint32>(VBArr.NumVertices * VBArr.StrideUint8s);
@@ -235,18 +239,18 @@ void DXSDKMesh::LoadGPUResources(const Char* ResourceDirectory, IRenderDevice* p
// Create IBs
m_IndexBuffers.resize(m_pMeshHeader->NumIndexBuffers);
- for( Uint32 i = 0; i < m_pMeshHeader->NumIndexBuffers; i++ )
+ for (Uint32 i = 0; i < m_pMeshHeader->NumIndexBuffers; i++)
{
const auto& IBArr = m_pIndexBufferArray[i];
std::stringstream ss;
ss << "DXSDK Mesh index buffer #" << i;
- std::string IBName = ss.str();
+ std::string IBName = ss.str();
BufferDesc IBDesc;
IBDesc.Name = IBName.c_str();
IBDesc.Usage = USAGE_STATIC;
- IBDesc.uiSizeInBytes = static_cast<Uint32>(IBArr.NumIndices * (IBArr.IndexType == IT_16BIT ? 2 : 4));
+ IBDesc.uiSizeInBytes = static_cast<Uint32>(IBArr.NumIndices * (IBArr.IndexType == IT_16BIT ? 2 : 4));
IBDesc.BindFlags = BIND_INDEX_BUFFER;
BufferData InitData{GetRawIndicesAt(i), static_cast<Uint32>(IBArr.SizeUint8s)};
@@ -265,21 +269,21 @@ DXSDKMesh::~DXSDKMesh()
}
//--------------------------------------------------------------------------------------
-bool DXSDKMesh::Create( const Char* szFileName )
+bool DXSDKMesh::Create(const Char* szFileName)
{
- return CreateFromFile( szFileName );
+ return CreateFromFile(szFileName);
}
//--------------------------------------------------------------------------------------
-bool DXSDKMesh::Create( Uint8* pData, Uint32 DataUint8s )
+bool DXSDKMesh::Create(Uint8* pData, Uint32 DataUint8s)
{
- return CreateFromMemory( pData, DataUint8s );
+ return CreateFromMemory(pData, DataUint8s);
}
//--------------------------------------------------------------------------------------
void DXSDKMesh::Destroy()
{
- for( Uint32 i = 0; i < m_pMeshHeader->NumMaterials; i++ )
+ for (Uint32 i = 0; i < m_pMeshHeader->NumMaterials; i++)
{
auto& Mat = m_pMaterialArray[i];
if (Mat.pDiffuseTexture)
@@ -307,7 +311,7 @@ void DXSDKMesh::Destroy()
m_StaticMeshData.clear();
//delete[] m_pAdjacencyIndexBufferArray; m_pAdjacencyIndexBufferArray = nullptr;
-
+
//delete[] m_pAnimationData; m_pAnimationData = nullptr;
//delete[] m_pBindPoseFrameMatrices; m_pBindPoseFrameMatrices = nullptr;
//delete[] m_pTransformedFrameMatrices; m_pTransformedFrameMatrices = nullptr;
@@ -330,41 +334,41 @@ void DXSDKMesh::Destroy()
//--------------------------------------------------------------------------------------
-PRIMITIVE_TOPOLOGY DXSDKMesh::GetPrimitiveType( DXSDKMESH_PRIMITIVE_TYPE PrimType )
+PRIMITIVE_TOPOLOGY DXSDKMesh::GetPrimitiveType(DXSDKMESH_PRIMITIVE_TYPE PrimType)
{
- switch( PrimType )
+ switch (PrimType)
{
case PT_TRIANGLE_LIST:
return PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
-
+
case PT_TRIANGLE_STRIP:
return PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP;
-
+
case PT_LINE_LIST:
return PRIMITIVE_TOPOLOGY_LINE_LIST;
-
+
case PT_LINE_STRIP:
return PRIMITIVE_TOPOLOGY_UNDEFINED;
-
+
case PT_POINT_LIST:
return PRIMITIVE_TOPOLOGY_POINT_LIST;
-
+
case PT_TRIANGLE_LIST_ADJ:
UNEXPECTED("Unsupported primitive topolgy type");
- return PRIMITIVE_TOPOLOGY_UNDEFINED;// PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ;
-
+ return PRIMITIVE_TOPOLOGY_UNDEFINED; // PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ;
+
case PT_TRIANGLE_STRIP_ADJ:
UNEXPECTED("Unsupported primitive topolgy type");
- return PRIMITIVE_TOPOLOGY_UNDEFINED;// PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ;
-
+ return PRIMITIVE_TOPOLOGY_UNDEFINED; // PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ;
+
case PT_LINE_LIST_ADJ:
UNEXPECTED("Unsupported primitive topolgy type");
- return PRIMITIVE_TOPOLOGY_UNDEFINED;// PRIMITIVE_TOPOLOGY_LINELIST_ADJ;
-
+ return PRIMITIVE_TOPOLOGY_UNDEFINED; // PRIMITIVE_TOPOLOGY_LINELIST_ADJ;
+
case PT_LINE_STRIP_ADJ:
UNEXPECTED("Unsupported primitive topolgy type");
- return PRIMITIVE_TOPOLOGY_UNDEFINED;// D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ;
-
+ return PRIMITIVE_TOPOLOGY_UNDEFINED; // D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ;
+
default:
UNEXPECTED("Unknown primitive topolgy type");
return PRIMITIVE_TOPOLOGY_UNDEFINED;
@@ -372,9 +376,9 @@ PRIMITIVE_TOPOLOGY DXSDKMesh::GetPrimitiveType( DXSDKMESH_PRIMITIVE_TYPE PrimTyp
}
//--------------------------------------------------------------------------------------
-VALUE_TYPE DXSDKMesh::GetIBFormat( Uint32 iMesh )const
+VALUE_TYPE DXSDKMesh::GetIBFormat(Uint32 iMesh) const
{
- switch( m_pIndexBufferArray[ m_pMeshArray[ iMesh ].IndexBuffer ].IndexType )
+ switch (m_pIndexBufferArray[m_pMeshArray[iMesh].IndexBuffer].IndexType)
{
case IT_16BIT:
return VT_UINT16;
@@ -386,4 +390,4 @@ VALUE_TYPE DXSDKMesh::GetIBFormat( Uint32 iMesh )const
}
}
-} \ No newline at end of file
+} // namespace Diligent