зеркало из https://github.com/microsoft/DirectXTK.git
Split CMO structs into a new header (#482)
This commit is contained in:
Родитель
78d1a3eb89
Коммит
d2baf972f2
|
@ -86,6 +86,7 @@ set(LIBRARY_SOURCES
|
|||
Src/BasicEffect.cpp
|
||||
Src/BasicPostProcess.cpp
|
||||
Src/BufferHelpers.cpp
|
||||
Src/CMO.h
|
||||
Src/CommonStates.cpp
|
||||
Src/DDSTextureLoader.cpp
|
||||
Src/DebugEffect.cpp
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
<ClInclude Include="Src\AlignedNew.h" />
|
||||
<ClInclude Include="Src\Bezier.h" />
|
||||
<ClInclude Include="Src\BinaryReader.h" />
|
||||
<ClInclude Include="Src\CMO.h" />
|
||||
<ClInclude Include="Src\DemandCreate.h" />
|
||||
<ClInclude Include="Src\EffectCommon.h" />
|
||||
<ClInclude Include="Src\Geometry.h" />
|
||||
|
|
|
@ -120,6 +120,9 @@
|
|||
<ClInclude Include="Inc\BufferHelpers.h">
|
||||
<Filter>Inc</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Src\CMO.h">
|
||||
<Filter>Src\Shared</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Src\CommonStates.cpp">
|
||||
|
|
|
@ -54,6 +54,7 @@
|
|||
<ClInclude Include="Src\AlignedNew.h" />
|
||||
<ClInclude Include="Src\Bezier.h" />
|
||||
<ClInclude Include="Src\BinaryReader.h" />
|
||||
<ClInclude Include="Src\CMO.h" />
|
||||
<ClInclude Include="Src\DemandCreate.h" />
|
||||
<ClInclude Include="Src\EffectCommon.h" />
|
||||
<ClInclude Include="Src\Geometry.h" />
|
||||
|
|
|
@ -135,6 +135,9 @@
|
|||
<ClInclude Include="Inc\BufferHelpers.h">
|
||||
<Filter>Inc</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Src\CMO.h">
|
||||
<Filter>Src\Shared</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Src\CommonStates.cpp">
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
<ClInclude Include="Src\AlignedNew.h" />
|
||||
<ClInclude Include="Src\Bezier.h" />
|
||||
<ClInclude Include="Src\BinaryReader.h" />
|
||||
<ClInclude Include="Src\CMO.h" />
|
||||
<ClInclude Include="Src\DemandCreate.h" />
|
||||
<ClInclude Include="Src\EffectCommon.h" />
|
||||
<ClInclude Include="Src\Geometry.h" />
|
||||
|
|
|
@ -120,6 +120,9 @@
|
|||
<ClInclude Include="Inc\BufferHelpers.h">
|
||||
<Filter>Inc</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Src\CMO.h">
|
||||
<Filter>Src\Shared</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Src\CommonStates.cpp">
|
||||
|
|
|
@ -54,6 +54,7 @@
|
|||
<ClInclude Include="Src\AlignedNew.h" />
|
||||
<ClInclude Include="Src\Bezier.h" />
|
||||
<ClInclude Include="Src\BinaryReader.h" />
|
||||
<ClInclude Include="Src\CMO.h" />
|
||||
<ClInclude Include="Src\DemandCreate.h" />
|
||||
<ClInclude Include="Src\EffectCommon.h" />
|
||||
<ClInclude Include="Src\Geometry.h" />
|
||||
|
|
|
@ -135,6 +135,9 @@
|
|||
<ClInclude Include="Inc\BufferHelpers.h">
|
||||
<Filter>Inc</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Src\CMO.h">
|
||||
<Filter>Src\Shared</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Src\CommonStates.cpp">
|
||||
|
|
|
@ -199,6 +199,7 @@
|
|||
<ClInclude Include="Src\AlignedNew.h" />
|
||||
<ClInclude Include="Src\Bezier.h" />
|
||||
<ClInclude Include="Src\BinaryReader.h" />
|
||||
<ClInclude Include="Src\CMO.h" />
|
||||
<ClInclude Include="Src\DemandCreate.h" />
|
||||
<ClInclude Include="Src\EffectCommon.h" />
|
||||
<ClInclude Include="Src\Geometry.h" />
|
||||
|
@ -321,4 +322,4 @@
|
|||
<Delete Files="@(_ATGShaderHeaders)" />
|
||||
<Delete Files="@(_ATGShaderSymbols)" />
|
||||
</Target>
|
||||
</Project>
|
||||
</Project>
|
|
@ -137,6 +137,9 @@
|
|||
<ClInclude Include="Inc\BufferHelpers.h">
|
||||
<Filter>Inc</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Src\CMO.h">
|
||||
<Filter>Src\Shared</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Src\CommonStates.cpp">
|
||||
|
@ -280,6 +283,9 @@
|
|||
<ClCompile Include="Src\DirectXHelpers.cpp">
|
||||
<Filter>Src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Audio\SoundStreamInstance.cpp">
|
||||
<Filter>Audio</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Src\Shaders\CompileShaders.cmd">
|
||||
|
|
|
@ -199,6 +199,7 @@
|
|||
<ClInclude Include="Src\AlignedNew.h" />
|
||||
<ClInclude Include="Src\Bezier.h" />
|
||||
<ClInclude Include="Src\BinaryReader.h" />
|
||||
<ClInclude Include="Src\CMO.h" />
|
||||
<ClInclude Include="Src\DemandCreate.h" />
|
||||
<ClInclude Include="Src\EffectCommon.h" />
|
||||
<ClInclude Include="Src\Geometry.h" />
|
||||
|
|
|
@ -137,6 +137,9 @@
|
|||
<ClInclude Include="Inc\BufferHelpers.h">
|
||||
<Filter>Inc</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Src\CMO.h">
|
||||
<Filter>Src\Shared</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Src\CommonStates.cpp">
|
||||
|
@ -281,7 +284,7 @@
|
|||
<Filter>Src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Audio\SoundStreamInstance.cpp">
|
||||
<Filter>Src</Filter>
|
||||
<Filter>Audio</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
<ClInclude Include="Src\AlignedNew.h" />
|
||||
<ClInclude Include="Src\Bezier.h" />
|
||||
<ClInclude Include="Src\BinaryReader.h" />
|
||||
<ClInclude Include="Src\CMO.h" />
|
||||
<ClInclude Include="Src\DDS.h" />
|
||||
<ClInclude Include="Src\DemandCreate.h" />
|
||||
<ClInclude Include="Src\EffectCommon.h" />
|
||||
|
|
|
@ -132,6 +132,9 @@
|
|||
<ClInclude Include="Inc\BufferHelpers.h">
|
||||
<Filter>Inc</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Src\CMO.h">
|
||||
<Filter>Src\Shared</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Src\Shaders\CompileShaders.cmd">
|
||||
|
|
|
@ -0,0 +1,181 @@
|
|||
//--------------------------------------------------------------------------------------
|
||||
// File: CMO.h
|
||||
//
|
||||
// .CMO files are built by Visual Studio's MeshContentTask and an example renderer was
|
||||
// provided in the VS Direct3D Starter Kit
|
||||
// https://devblogs.microsoft.com/cppblog/developing-an-app-with-the-visual-studio-3d-starter-kit-part-1-of-3/
|
||||
// https://devblogs.microsoft.com/cppblog/developing-an-app-with-the-visual-studio-3d-starter-kit-part-2-of-3/
|
||||
// https://devblogs.microsoft.com/cppblog/developing-an-app-with-the-visual-studio-3d-starter-kit-part-3-of-3/
|
||||
//
|
||||
// Copyright (c) Microsoft Corporation.
|
||||
// Licensed under the MIT License.
|
||||
//
|
||||
// http://go.microsoft.com/fwlink/?LinkId=248929
|
||||
// http://go.microsoft.com/fwlink/?LinkID=615561
|
||||
//--------------------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <DirectXMath.h>
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
|
||||
namespace VSD3DStarter
|
||||
{
|
||||
// .CMO files
|
||||
|
||||
// UINT - Mesh count
|
||||
// { [Mesh count]
|
||||
// UINT - Length of name
|
||||
// wchar_t[] - Name of mesh (if length > 0)
|
||||
// UINT - Material count
|
||||
// { [Material count]
|
||||
// UINT - Length of material name
|
||||
// wchar_t[] - Name of material (if length > 0)
|
||||
// Material structure
|
||||
// UINT - Length of pixel shader name
|
||||
// wchar_t[] - Name of pixel shader (if length > 0)
|
||||
// { [8]
|
||||
// UINT - Length of texture name
|
||||
// wchar_t[] - Name of texture (if length > 0)
|
||||
// }
|
||||
// }
|
||||
// BYTE - 1 if there is skeletal animation data present
|
||||
// UINT - SubMesh count
|
||||
// { [SubMesh count]
|
||||
// SubMesh structure
|
||||
// }
|
||||
// UINT - IB Count
|
||||
// { [IB Count]
|
||||
// UINT - Number of USHORTs in IB
|
||||
// USHORT[] - Array of indices
|
||||
// }
|
||||
// UINT - VB Count
|
||||
// { [VB Count]
|
||||
// UINT - Number of verts in VB
|
||||
// Vertex[] - Array of vertices
|
||||
// }
|
||||
// UINT - Skinning VB Count
|
||||
// { [Skinning VB Count]
|
||||
// UINT - Number of verts in Skinning VB
|
||||
// SkinningVertex[] - Array of skinning verts
|
||||
// }
|
||||
// MeshExtents structure
|
||||
// [If skeleton animation data is not present, file ends here]
|
||||
// UINT - Bone count
|
||||
// { [Bone count]
|
||||
// UINT - Length of bone name
|
||||
// wchar_t[] - Bone name (if length > 0)
|
||||
// Bone structure
|
||||
// }
|
||||
// UINT - Animation clip count
|
||||
// { [Animation clip count]
|
||||
// UINT - Length of clip name
|
||||
// wchar_t[] - Clip name (if length > 0)
|
||||
// float - Start time
|
||||
// float - End time
|
||||
// UINT - Keyframe count
|
||||
// { [Keyframe count]
|
||||
// Keyframe structure
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
#pragma pack(push,1)
|
||||
|
||||
struct Material
|
||||
{
|
||||
DirectX::XMFLOAT4 Ambient;
|
||||
DirectX::XMFLOAT4 Diffuse;
|
||||
DirectX::XMFLOAT4 Specular;
|
||||
float SpecularPower;
|
||||
DirectX::XMFLOAT4 Emissive;
|
||||
DirectX::XMFLOAT4X4 UVTransform;
|
||||
};
|
||||
|
||||
constexpr uint32_t MAX_TEXTURE = 8;
|
||||
|
||||
struct SubMesh
|
||||
{
|
||||
uint32_t MaterialIndex;
|
||||
uint32_t IndexBufferIndex;
|
||||
uint32_t VertexBufferIndex;
|
||||
uint32_t StartIndex;
|
||||
uint32_t PrimCount;
|
||||
};
|
||||
|
||||
constexpr uint32_t NUM_BONE_INFLUENCES = 4;
|
||||
|
||||
// Vertex struct for Visual Studio Shader Designer (DGSL) holding position, normal,
|
||||
// tangent, color (RGBA), and texture mapping information
|
||||
struct VertexPositionNormalTangentColorTexture
|
||||
{
|
||||
DirectX::XMFLOAT3 position;
|
||||
DirectX::XMFLOAT3 normal;
|
||||
DirectX::XMFLOAT4 tangent;
|
||||
uint32_t color;
|
||||
DirectX::XMFLOAT2 textureCoordinate;
|
||||
};
|
||||
|
||||
struct SkinningVertex
|
||||
{
|
||||
uint32_t boneIndex[NUM_BONE_INFLUENCES];
|
||||
float boneWeight[NUM_BONE_INFLUENCES];
|
||||
};
|
||||
|
||||
struct MeshExtents
|
||||
{
|
||||
float CenterX, CenterY, CenterZ;
|
||||
float Radius;
|
||||
|
||||
float MinX, MinY, MinZ;
|
||||
float MaxX, MaxY, MaxZ;
|
||||
};
|
||||
|
||||
struct Bone
|
||||
{
|
||||
int32_t ParentIndex;
|
||||
DirectX::XMFLOAT4X4 InvBindPos;
|
||||
DirectX::XMFLOAT4X4 BindPos;
|
||||
DirectX::XMFLOAT4X4 LocalTransform;
|
||||
};
|
||||
|
||||
struct Clip
|
||||
{
|
||||
float StartTime;
|
||||
float EndTime;
|
||||
uint32_t keys;
|
||||
};
|
||||
|
||||
struct Keyframe
|
||||
{
|
||||
uint32_t BoneIndex;
|
||||
float Time;
|
||||
DirectX::XMFLOAT4X4 Transform;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
const Material s_defMaterial =
|
||||
{
|
||||
{ 0.2f, 0.2f, 0.2f, 1.f },
|
||||
{ 0.8f, 0.8f, 0.8f, 1.f },
|
||||
{ 0.0f, 0.0f, 0.0f, 1.f },
|
||||
1.f,
|
||||
{ 0.0f, 0.0f, 0.0f, 1.0f },
|
||||
{ 1.f, 0.f, 0.f, 0.f,
|
||||
0.f, 1.f, 0.f, 0.f,
|
||||
0.f, 0.f, 1.f, 0.f,
|
||||
0.f, 0.f, 0.f, 1.f },
|
||||
};
|
||||
} // namespace
|
||||
|
||||
static_assert(sizeof(VSD3DStarter::Material) == 132, "CMO Mesh structure size incorrect");
|
||||
static_assert(sizeof(VSD3DStarter::SubMesh) == 20, "CMO Mesh structure size incorrect");
|
||||
static_assert(sizeof(VSD3DStarter::VertexPositionNormalTangentColorTexture) == 52, "CMO Mesh structure size incorrect");
|
||||
static_assert(sizeof(VSD3DStarter::SkinningVertex) == 32, "CMO Mesh structure size incorrect");
|
||||
static_assert(sizeof(VSD3DStarter::MeshExtents) == 40, "CMO Mesh structure size incorrect");
|
||||
static_assert(sizeof(VSD3DStarter::Bone) == 196, "CMO Mesh structure size incorrect");
|
||||
static_assert(sizeof(VSD3DStarter::Clip) == 12, "CMO Mesh structure size incorrect");
|
||||
static_assert(sizeof(VSD3DStarter::Keyframe) == 72, "CMO Mesh structure size incorrect");
|
|
@ -18,163 +18,10 @@
|
|||
using namespace DirectX;
|
||||
using Microsoft::WRL::ComPtr;
|
||||
|
||||
#include "CMO.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------
|
||||
// .CMO files are built by Visual Studio's MeshContentTask and an example renderer was
|
||||
// provided in the VS Direct3D Starter Kit
|
||||
// https://devblogs.microsoft.com/cppblog/developing-an-app-with-the-visual-studio-3d-starter-kit-part-1-of-3/
|
||||
// https://devblogs.microsoft.com/cppblog/developing-an-app-with-the-visual-studio-3d-starter-kit-part-2-of-3/
|
||||
// https://devblogs.microsoft.com/cppblog/developing-an-app-with-the-visual-studio-3d-starter-kit-part-3-of-3/
|
||||
//--------------------------------------------------------------------------------------
|
||||
static_assert(sizeof(VertexPositionNormalTangentColorTexture) == sizeof(VSD3DStarter::VertexPositionNormalTangentColorTexture), "mismatch with CMO vertex type");
|
||||
|
||||
namespace VSD3DStarter
|
||||
{
|
||||
// .CMO files
|
||||
|
||||
// UINT - Mesh count
|
||||
// { [Mesh count]
|
||||
// UINT - Length of name
|
||||
// wchar_t[] - Name of mesh (if length > 0)
|
||||
// UINT - Material count
|
||||
// { [Material count]
|
||||
// UINT - Length of material name
|
||||
// wchar_t[] - Name of material (if length > 0)
|
||||
// Material structure
|
||||
// UINT - Length of pixel shader name
|
||||
// wchar_t[] - Name of pixel shader (if length > 0)
|
||||
// { [8]
|
||||
// UINT - Length of texture name
|
||||
// wchar_t[] - Name of texture (if length > 0)
|
||||
// }
|
||||
// }
|
||||
// BYTE - 1 if there is skeletal animation data present
|
||||
// UINT - SubMesh count
|
||||
// { [SubMesh count]
|
||||
// SubMesh structure
|
||||
// }
|
||||
// UINT - IB Count
|
||||
// { [IB Count]
|
||||
// UINT - Number of USHORTs in IB
|
||||
// USHORT[] - Array of indices
|
||||
// }
|
||||
// UINT - VB Count
|
||||
// { [VB Count]
|
||||
// UINT - Number of verts in VB
|
||||
// Vertex[] - Array of vertices
|
||||
// }
|
||||
// UINT - Skinning VB Count
|
||||
// { [Skinning VB Count]
|
||||
// UINT - Number of verts in Skinning VB
|
||||
// SkinningVertex[] - Array of skinning verts
|
||||
// }
|
||||
// MeshExtents structure
|
||||
// [If skeleton animation data is not present, file ends here]
|
||||
// UINT - Bone count
|
||||
// { [Bone count]
|
||||
// UINT - Length of bone name
|
||||
// wchar_t[] - Bone name (if length > 0)
|
||||
// Bone structure
|
||||
// }
|
||||
// UINT - Animation clip count
|
||||
// { [Animation clip count]
|
||||
// UINT - Length of clip name
|
||||
// wchar_t[] - Clip name (if length > 0)
|
||||
// float - Start time
|
||||
// float - End time
|
||||
// UINT - Keyframe count
|
||||
// { [Keyframe count]
|
||||
// Keyframe structure
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
#pragma pack(push,1)
|
||||
|
||||
struct Material
|
||||
{
|
||||
DirectX::XMFLOAT4 Ambient;
|
||||
DirectX::XMFLOAT4 Diffuse;
|
||||
DirectX::XMFLOAT4 Specular;
|
||||
float SpecularPower;
|
||||
DirectX::XMFLOAT4 Emissive;
|
||||
DirectX::XMFLOAT4X4 UVTransform;
|
||||
};
|
||||
|
||||
constexpr uint32_t MAX_TEXTURE = 8;
|
||||
|
||||
struct SubMesh
|
||||
{
|
||||
uint32_t MaterialIndex;
|
||||
uint32_t IndexBufferIndex;
|
||||
uint32_t VertexBufferIndex;
|
||||
uint32_t StartIndex;
|
||||
uint32_t PrimCount;
|
||||
};
|
||||
|
||||
constexpr uint32_t NUM_BONE_INFLUENCES = 4;
|
||||
|
||||
static_assert(sizeof(VertexPositionNormalTangentColorTexture) == 52, "mismatch with CMO vertex type");
|
||||
|
||||
struct SkinningVertex
|
||||
{
|
||||
uint32_t boneIndex[NUM_BONE_INFLUENCES];
|
||||
float boneWeight[NUM_BONE_INFLUENCES];
|
||||
};
|
||||
|
||||
struct MeshExtents
|
||||
{
|
||||
float CenterX, CenterY, CenterZ;
|
||||
float Radius;
|
||||
|
||||
float MinX, MinY, MinZ;
|
||||
float MaxX, MaxY, MaxZ;
|
||||
};
|
||||
|
||||
struct Bone
|
||||
{
|
||||
int32_t ParentIndex;
|
||||
DirectX::XMFLOAT4X4 InvBindPos;
|
||||
DirectX::XMFLOAT4X4 BindPos;
|
||||
DirectX::XMFLOAT4X4 LocalTransform;
|
||||
};
|
||||
|
||||
struct Clip
|
||||
{
|
||||
float StartTime;
|
||||
float EndTime;
|
||||
uint32_t keys;
|
||||
};
|
||||
|
||||
struct Keyframe
|
||||
{
|
||||
uint32_t BoneIndex;
|
||||
float Time;
|
||||
DirectX::XMFLOAT4X4 Transform;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
const Material s_defMaterial =
|
||||
{
|
||||
{ 0.2f, 0.2f, 0.2f, 1.f },
|
||||
{ 0.8f, 0.8f, 0.8f, 1.f },
|
||||
{ 0.0f, 0.0f, 0.0f, 1.f },
|
||||
1.f,
|
||||
{ 0.0f, 0.0f, 0.0f, 1.0f },
|
||||
{ 1.f, 0.f, 0.f, 0.f,
|
||||
0.f, 1.f, 0.f, 0.f,
|
||||
0.f, 0.f, 1.f, 0.f,
|
||||
0.f, 0.f, 0.f, 1.f },
|
||||
};
|
||||
} // namespace
|
||||
|
||||
static_assert(sizeof(VSD3DStarter::Material) == 132, "CMO Mesh structure size incorrect");
|
||||
static_assert(sizeof(VSD3DStarter::SubMesh) == 20, "CMO Mesh structure size incorrect");
|
||||
static_assert(sizeof(VSD3DStarter::SkinningVertex) == 32, "CMO Mesh structure size incorrect");
|
||||
static_assert(sizeof(VSD3DStarter::MeshExtents) == 40, "CMO Mesh structure size incorrect");
|
||||
static_assert(sizeof(VSD3DStarter::Bone) == 196, "CMO Mesh structure size incorrect");
|
||||
static_assert(sizeof(VSD3DStarter::Clip) == 12, "CMO Mesh structure size incorrect");
|
||||
static_assert(sizeof(VSD3DStarter::Keyframe) == 72, "CMO Mesh structure size incorrect");
|
||||
|
||||
namespace
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче