SP3-237 SP3-103 SP3-104 Implemented SHTexture and SHMesh binary file writing and loading. NOT TESTED
Added file level comments
This commit is contained in:
parent
584b7e425f
commit
8a3d3c8d4e
|
@ -1,3 +1,15 @@
|
||||||
|
/*************************************************************************//**
|
||||||
|
* \file SHMeshAsset.h
|
||||||
|
* \author Loh Xiao Qi
|
||||||
|
* \date 30 September 2022
|
||||||
|
* \brief Struct to contain ready data for loading into GPU. Also used for
|
||||||
|
* compilation into binary files
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or
|
||||||
|
* disclosure of this file or its contents without the prior written consent
|
||||||
|
* of DigiPen Institute of Technology is prohibited.
|
||||||
|
*****************************************************************************/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -10,6 +22,7 @@ namespace SHADE
|
||||||
{
|
{
|
||||||
uint32_t vertexCount;
|
uint32_t vertexCount;
|
||||||
uint32_t indexCount;
|
uint32_t indexCount;
|
||||||
|
std::string meshName;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SH_API SHMeshAsset
|
struct SH_API SHMeshAsset
|
||||||
|
@ -19,8 +32,6 @@ namespace SHADE
|
||||||
|
|
||||||
SHMeshAssetHeader header;
|
SHMeshAssetHeader header;
|
||||||
|
|
||||||
std::string meshName;
|
|
||||||
|
|
||||||
std::vector<SHVec3> vertexPosition;
|
std::vector<SHVec3> vertexPosition;
|
||||||
std::vector<SHVec3> vertexTangent;
|
std::vector<SHVec3> vertexTangent;
|
||||||
std::vector<SHVec3> vertexNormal;
|
std::vector<SHVec3> vertexNormal;
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "tinyddsloader.h"
|
#include "tinyddsloader.h"
|
||||||
|
|
||||||
#include "Graphics/MiddleEnd/Textures/SHTextureLibrary.h"
|
#include "Graphics/MiddleEnd/Textures/SHTextureLibrary.h"
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
namespace SHADE
|
namespace SHADE
|
||||||
{
|
{
|
||||||
struct SHTextureAsset
|
struct SHTextureAsset
|
||||||
|
|
|
@ -1,5 +1,18 @@
|
||||||
|
/*************************************************************************//**
|
||||||
|
* \file SHMeshCompiler.cpp
|
||||||
|
* \author Loh Xiao Qi
|
||||||
|
* \date 30 September 2022
|
||||||
|
* \brief Library to write data in SHMeshAsset into binary file for faster
|
||||||
|
* loading in the future
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or
|
||||||
|
* disclosure of this file or its contents without the prior written consent
|
||||||
|
* of DigiPen Institute of Technology is prohibited.
|
||||||
|
*****************************************************************************/
|
||||||
#include "SHpch.h"
|
#include "SHpch.h"
|
||||||
#include "SHMeshCompiler.h"
|
#include "SHMeshCompiler.h"
|
||||||
|
#include "Graphics/MiddleEnd/Meshes/SHMeshData.h"
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
|
@ -21,6 +34,17 @@ void SHADE::SHMeshCompiler::CompileMeshBinary(SHMeshAsset const& asset, AssetPat
|
||||||
sizeof(uint32_t)
|
sizeof(uint32_t)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
uint32_t charCount{static_cast<uint32_t>(asset.header.meshName.size())};
|
||||||
|
file.write(
|
||||||
|
reinterpret_cast<char const*>(&charCount),
|
||||||
|
sizeof(uint32_t)
|
||||||
|
);
|
||||||
|
|
||||||
|
file.write(
|
||||||
|
asset.header.meshName.c_str(),
|
||||||
|
asset.header.meshName.size()
|
||||||
|
);
|
||||||
|
|
||||||
auto const vertexVec3Byte {sizeof(SHVec3) * asset.header.vertexCount};
|
auto const vertexVec3Byte {sizeof(SHVec3) * asset.header.vertexCount};
|
||||||
auto const vertexVec2Byte {sizeof(SHVec2) * asset.header.vertexCount};
|
auto const vertexVec2Byte {sizeof(SHVec2) * asset.header.vertexCount};
|
||||||
|
|
||||||
|
@ -44,5 +68,10 @@ void SHADE::SHMeshCompiler::CompileMeshBinary(SHMeshAsset const& asset, AssetPat
|
||||||
vertexVec2Byte
|
vertexVec2Byte
|
||||||
);
|
);
|
||||||
|
|
||||||
|
file.write(
|
||||||
|
reinterpret_cast<char const*>(asset.indices.data()),
|
||||||
|
sizeof(uint32_t)
|
||||||
|
);
|
||||||
|
|
||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,15 @@
|
||||||
|
/*************************************************************************//**
|
||||||
|
* \file SHMeshCompiler.h
|
||||||
|
* \author Loh Xiao Qi
|
||||||
|
* \date 30 September 2022
|
||||||
|
* \brief Library to write data in SHMeshAsset into binary file for faster
|
||||||
|
* loading in the future
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or
|
||||||
|
* disclosure of this file or its contents without the prior written consent
|
||||||
|
* of DigiPen Institute of Technology is prohibited.
|
||||||
|
*****************************************************************************/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../Asset Types/SHMeshAsset.h"
|
#include "../Asset Types/SHMeshAsset.h"
|
||||||
|
|
|
@ -1,6 +1,19 @@
|
||||||
|
/*************************************************************************//**
|
||||||
|
* \file SHMeshLoader.cpp
|
||||||
|
* \author Loh Xiao Qi
|
||||||
|
* \date 30 September 2022
|
||||||
|
* \brief Implementation for Mesh loader. Accounts for custom binary format
|
||||||
|
* as well as GLTF file format.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or
|
||||||
|
* disclosure of this file or its contents without the prior written consent
|
||||||
|
* of DigiPen Institute of Technology is prohibited.
|
||||||
|
*****************************************************************************/
|
||||||
#include "SHpch.h"
|
#include "SHpch.h"
|
||||||
#include "SHMeshLoader.h"
|
#include "SHMeshLoader.h"
|
||||||
#include <assimp/postprocess.h>
|
#include <assimp/postprocess.h>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
namespace SHADE
|
namespace SHADE
|
||||||
{
|
{
|
||||||
|
@ -27,10 +40,11 @@ namespace SHADE
|
||||||
SHMeshAsset result
|
SHMeshAsset result
|
||||||
{
|
{
|
||||||
.compiled { false},
|
.compiled { false},
|
||||||
.changed { false },
|
.changed { false }
|
||||||
.meshName { mesh.mName.C_Str() }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
result.header.meshName = mesh.mName.C_Str();
|
||||||
|
|
||||||
for (size_t i{0}; i < mesh.mNumVertices; ++i)
|
for (size_t i{0}; i < mesh.mNumVertices; ++i)
|
||||||
{
|
{
|
||||||
// Vertex position
|
// Vertex position
|
||||||
|
@ -85,15 +99,15 @@ namespace SHADE
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SHMeshLoader::LoadMesh(std::vector<SHMeshAsset>& meshes, AssetPath path)
|
void SHMeshLoader::LoadExternal(std::vector<SHMeshAsset>& meshes, AssetPath path) noexcept
|
||||||
{
|
{
|
||||||
const aiScene* scene = aiImporter.ReadFile(path.string().c_str(),
|
const aiScene* scene = aiImporter.ReadFile(path.string().c_str(),
|
||||||
aiProcess_Triangulate // Make sure we get triangles rather than nvert polygons
|
aiProcess_Triangulate // Make sure we get triangles rather than nvert polygons
|
||||||
| aiProcess_GenUVCoords // Convert any type of mapping to uv mapping
|
| aiProcess_GenUVCoords // Convert any type of mapping to uv mapping
|
||||||
| aiProcess_TransformUVCoords // preprocess UV transformations (scaling, translation ...)
|
| aiProcess_TransformUVCoords // preprocess UV transformations (scaling, translation ...)
|
||||||
| aiProcess_FindInstances // search for instanced meshes and remove them by references to one master
|
| aiProcess_FindInstances // search for instanced meshes and remove them by references to one master
|
||||||
| aiProcess_CalcTangentSpace // calculate tangents and bitangents if possible
|
| aiProcess_CalcTangentSpace // calculate tangents and bitangents if possible
|
||||||
| aiProcess_JoinIdenticalVertices // join identical vertices/ optimize indexing
|
| aiProcess_JoinIdenticalVertices // join identical vertices/ optimize indexing
|
||||||
| aiProcess_RemoveRedundantMaterials // remove redundant materials
|
| aiProcess_RemoveRedundantMaterials // remove redundant materials
|
||||||
| aiProcess_FindInvalidData // detect invalid model data, such as invalid normal vectors
|
| aiProcess_FindInvalidData // detect invalid model data, such as invalid normal vectors
|
||||||
| aiProcess_FlipUVs // flip the V to match the Vulkans way of doing UVs
|
| aiProcess_FlipUVs // flip the V to match the Vulkans way of doing UVs
|
||||||
|
@ -102,7 +116,7 @@ namespace SHADE
|
||||||
if (!scene || !scene->HasMeshes())
|
if (!scene || !scene->HasMeshes())
|
||||||
{
|
{
|
||||||
SHLOG_ERROR("ERROR in GLTF::ASSIMP: {}\nFile: {}", aiImporter.GetErrorString(), path.string());
|
SHLOG_ERROR("ERROR in GLTF::ASSIMP: {}\nFile: {}", aiImporter.GetErrorString(), path.string());
|
||||||
return false;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO MATERIALS FROM MESHES
|
//TODO MATERIALS FROM MESHES
|
||||||
|
@ -112,14 +126,103 @@ namespace SHADE
|
||||||
// {
|
// {
|
||||||
// if (scene->mMaterials[i]->mNumProperties > 0)
|
// if (scene->mMaterials[i]->mNumProperties > 0)
|
||||||
// {
|
// {
|
||||||
// for (int j{0}; j < scene->mMaterials[i]->mProperties[j].)
|
// for (int j{0}; j < scene->mMaterials[i]->mProperties[j].)
|
||||||
// }
|
// }
|
||||||
//std::cout << scene->mMaterials[i]->;
|
//std::cout << scene->mMaterials[i]->;
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
ProcessNode(*scene->mRootNode, *scene, meshes);
|
ProcessNode(*scene->mRootNode, *scene, meshes);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
void SHMeshLoader::LoadSHMesh(SHMeshAsset& mesh, AssetPath path) noexcept
|
||||||
|
{
|
||||||
|
std::ifstream file{ path.string(), std::ios::in | std::ios::binary };
|
||||||
|
if (!file.is_open())
|
||||||
|
{
|
||||||
|
SHLOG_ERROR("Unable to open SHMesh File: {}", path.string());
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t vertCount, indexCount, charCount;
|
||||||
|
std::vector<SHVec3> vertPos, vertTan, vertNorm;
|
||||||
|
std::vector<SHVec2> texCoord;
|
||||||
|
std::vector<uint32_t> indices;
|
||||||
|
|
||||||
|
std::string name;
|
||||||
|
|
||||||
|
file >> vertCount;
|
||||||
|
file >> indexCount;
|
||||||
|
file >> charCount;
|
||||||
|
|
||||||
|
vertPos.resize(vertCount);
|
||||||
|
vertTan.resize(vertCount);
|
||||||
|
vertNorm.resize(vertCount);
|
||||||
|
texCoord.resize(vertCount);
|
||||||
|
indices.resize(indexCount);
|
||||||
|
|
||||||
|
name.reserve(charCount);
|
||||||
|
for (auto i{0}; i < charCount; ++i)
|
||||||
|
{
|
||||||
|
file >> name[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto i{ 0 }; i < vertCount; ++i)
|
||||||
|
{
|
||||||
|
file >> vertPos[i].x;
|
||||||
|
file >> vertPos[i].y;
|
||||||
|
file >> vertPos[i].z;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto i{ 0 }; i < vertCount; ++i)
|
||||||
|
{
|
||||||
|
file >> vertTan[i].x;
|
||||||
|
file >> vertTan[i].y;
|
||||||
|
file >> vertTan[i].z;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto i{ 0 }; i < vertCount; ++i)
|
||||||
|
{
|
||||||
|
file >> vertNorm[i].x;
|
||||||
|
file >> vertNorm[i].y;
|
||||||
|
file >> vertNorm[i].z;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto i{ 0 }; i < vertCount; ++i)
|
||||||
|
{
|
||||||
|
file >> texCoord[i].x;
|
||||||
|
file >> texCoord[i].y;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto i{ 0 }; i < indexCount; ++i)
|
||||||
|
{
|
||||||
|
file >> indices[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
mesh.compiled = true;
|
||||||
|
mesh.changed = false;
|
||||||
|
|
||||||
|
mesh.header.indexCount = indexCount;
|
||||||
|
mesh.header.vertexCount = vertCount;
|
||||||
|
mesh.header.meshName = name;
|
||||||
|
|
||||||
|
mesh.vertexPosition = std::move(vertPos);
|
||||||
|
mesh.vertexTangent = std::move(vertTan);
|
||||||
|
mesh.vertexNormal = std::move(vertNorm);
|
||||||
|
mesh.texCoords = std::move(texCoord);
|
||||||
|
mesh.indices = std::move(indices);
|
||||||
|
|
||||||
|
file.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SHMeshLoader::LoadMesh(std::vector<SHMeshAsset>& meshes, AssetPath path)
|
||||||
|
{
|
||||||
|
if (path.extension().string() == GLTF_EXTENSION)
|
||||||
|
{
|
||||||
|
LoadExternal(meshes, path);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
meshes.emplace_back();
|
||||||
|
LoadSHMesh(meshes.back(), path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,14 @@
|
||||||
|
/*************************************************************************//**
|
||||||
|
* \file SHMeshLoader.h
|
||||||
|
* \author Loh Xiao Qi
|
||||||
|
* \date 30 September 2022
|
||||||
|
* \brief Library to load gltf mesh files and custom binary format
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or
|
||||||
|
* disclosure of this file or its contents without the prior written consent
|
||||||
|
* of DigiPen Institute of Technology is prohibited.
|
||||||
|
*****************************************************************************/
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <assimp/Importer.hpp>
|
#include <assimp/Importer.hpp>
|
||||||
#include <assimp/scene.h>
|
#include <assimp/scene.h>
|
||||||
|
@ -12,10 +23,14 @@ namespace SHADE
|
||||||
private:
|
private:
|
||||||
static Assimp::Importer aiImporter;
|
static Assimp::Importer aiImporter;
|
||||||
|
|
||||||
static void ProcessNode(aiNode const& node, aiScene const& scene, std::vector<SHMeshAsset>& meshes);
|
static void ProcessNode(aiNode const& node, aiScene const& scene, std::vector<SHMeshAsset>& meshes) noexcept;
|
||||||
|
|
||||||
static SHMeshAsset ProcessMesh(aiMesh const& mesh, aiScene const& scene);
|
static SHMeshAsset ProcessMesh(aiMesh const& mesh, aiScene const& scene) noexcept;
|
||||||
|
|
||||||
|
static void LoadExternal(std::vector<SHMeshAsset>& meshes, AssetPath path) noexcept;
|
||||||
|
|
||||||
|
static void LoadSHMesh(SHMeshAsset& meshes, AssetPath path) noexcept;
|
||||||
public:
|
public:
|
||||||
static bool LoadMesh(std::vector<SHMeshAsset>& meshes, AssetPath path);
|
static void LoadMesh(std::vector<SHMeshAsset>& meshes, AssetPath path) noexcept;
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -1,3 +1,15 @@
|
||||||
|
/*************************************************************************//**
|
||||||
|
* \file SHTextureCompiler.cpp
|
||||||
|
* \author Loh Xiao Qi
|
||||||
|
* \date 30 September 2022
|
||||||
|
* \brief Library to write data in SHTextureAsset into binary file for
|
||||||
|
* faster loading in the future
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or
|
||||||
|
* disclosure of this file or its contents without the prior written consent
|
||||||
|
* of DigiPen Institute of Technology is prohibited.
|
||||||
|
*****************************************************************************/
|
||||||
#include "SHpch.h"
|
#include "SHpch.h"
|
||||||
#include "SHTextureCompiler.h"
|
#include "SHTextureCompiler.h"
|
||||||
|
|
||||||
|
@ -15,6 +27,8 @@ namespace SHADE
|
||||||
|
|
||||||
auto const intBytes{sizeof(uint32_t)};
|
auto const intBytes{sizeof(uint32_t)};
|
||||||
|
|
||||||
|
uint32_t mipOffsetCount{ static_cast<uint32_t>(asset.mipOffsets.size()) };
|
||||||
|
|
||||||
file.write(
|
file.write(
|
||||||
reinterpret_cast<char const*>(&asset.numBytes),
|
reinterpret_cast<char const*>(&asset.numBytes),
|
||||||
intBytes
|
intBytes
|
||||||
|
@ -35,6 +49,16 @@ namespace SHADE
|
||||||
sizeof(SHTexture::PixelChannel)
|
sizeof(SHTexture::PixelChannel)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
file.write(
|
||||||
|
reinterpret_cast<char const*>(&mipOffsetCount),
|
||||||
|
intBytes
|
||||||
|
);
|
||||||
|
|
||||||
|
file.write(
|
||||||
|
reinterpret_cast<char const*>(&asset.numBytes),
|
||||||
|
intBytes
|
||||||
|
);
|
||||||
|
|
||||||
file.write(
|
file.write(
|
||||||
reinterpret_cast<char const*>(asset.mipOffsets.data()),
|
reinterpret_cast<char const*>(asset.mipOffsets.data()),
|
||||||
intBytes * asset.mipOffsets.size()
|
intBytes * asset.mipOffsets.size()
|
||||||
|
|
|
@ -1,3 +1,15 @@
|
||||||
|
/*************************************************************************//**
|
||||||
|
* \file SHTextureCompiler.h
|
||||||
|
* \author Loh Xiao Qi
|
||||||
|
* \date 30 September 2022
|
||||||
|
* \brief Library to write data in SHTextureAsset into binary file for
|
||||||
|
* faster loading in the future
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or
|
||||||
|
* disclosure of this file or its contents without the prior written consent
|
||||||
|
* of DigiPen Institute of Technology is prohibited.
|
||||||
|
*****************************************************************************/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "Assets/Asset Types/SHTextureAsset.h"
|
#include "Assets/Asset Types/SHTextureAsset.h"
|
||||||
|
|
|
@ -1,3 +1,14 @@
|
||||||
|
/*************************************************************************//**
|
||||||
|
* \file SHTextureLoader.cpp
|
||||||
|
* \author Loh Xiao Qi
|
||||||
|
* \date 30 September 2022
|
||||||
|
* \brief Library to load dds textures and custom binary format
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or
|
||||||
|
* disclosure of this file or its contents without the prior written consent
|
||||||
|
* of DigiPen Institute of Technology is prohibited.
|
||||||
|
*****************************************************************************/
|
||||||
#include "SHpch.h"
|
#include "SHpch.h"
|
||||||
#include "SHTextureLoader.h"
|
#include "SHTextureLoader.h"
|
||||||
|
|
||||||
|
@ -98,13 +109,39 @@ namespace SHADE
|
||||||
SHLOG_ERROR("Error opening SHTexture file: {}", path.string());
|
SHLOG_ERROR("Error opening SHTexture file: {}", path.string());
|
||||||
}
|
}
|
||||||
|
|
||||||
VkFormat format;
|
tinyddsloader::DDSFile::DXGIFormat format;
|
||||||
|
uint32_t formatCarrier;
|
||||||
|
uint32_t mipCount;
|
||||||
|
uint32_t byteCount;
|
||||||
|
|
||||||
file >> asset.numBytes;
|
file >> asset.numBytes;
|
||||||
file >> asset.width;
|
file >> asset.width;
|
||||||
file >> asset.height;
|
file >> asset.height;
|
||||||
//file >> format;
|
|
||||||
|
|
||||||
|
file >> formatCarrier;
|
||||||
|
asset.format = ddsLoaderToVkFormat(static_cast<tinyddsloader::DDSFile::DXGIFormat>(formatCarrier), true);
|
||||||
|
|
||||||
|
file >> mipCount;
|
||||||
|
file >> byteCount;
|
||||||
|
|
||||||
|
std::vector<uint32_t> mips(mipCount);
|
||||||
|
for (auto i {0}; i < mipCount; ++i)
|
||||||
|
{
|
||||||
|
file >> mips[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
asset.mipOffsets = std::move(mips);
|
||||||
|
|
||||||
|
auto pixel = new SHTexture::PixelChannel[byteCount];
|
||||||
|
auto pixelIt{ pixel };
|
||||||
|
|
||||||
|
while(!file.eof())
|
||||||
|
{
|
||||||
|
file >> *(pixelIt++);
|
||||||
|
}
|
||||||
|
asset.pixelData = std::move( pixel );
|
||||||
|
|
||||||
|
file.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SHTextureLoader::LoadImageAsset(AssetPath path, SHTextureAsset& asset)
|
void SHTextureLoader::LoadImageAsset(AssetPath path, SHTextureAsset& asset)
|
||||||
|
|
|
@ -1,3 +1,14 @@
|
||||||
|
/*************************************************************************//**
|
||||||
|
* \file SHTextureLoader.h
|
||||||
|
* \author Loh Xiao Qi
|
||||||
|
* \date 30 September 2022
|
||||||
|
* \brief Library to load dds textures and custom binary format
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or
|
||||||
|
* disclosure of this file or its contents without the prior written consent
|
||||||
|
* of DigiPen Institute of Technology is prohibited.
|
||||||
|
*****************************************************************************/
|
||||||
#pragma once
|
#pragma once
|
||||||
#define TINYDDSLOADER_IMPLEMENTATION
|
#define TINYDDSLOADER_IMPLEMENTATION
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,14 @@
|
||||||
|
/*************************************************************************//**
|
||||||
|
* \file SHAsset.h
|
||||||
|
* \author Loh Xiao Qi
|
||||||
|
* \date 30 September 2022
|
||||||
|
* \brief Struct for asset identification and meta file writing
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or
|
||||||
|
* disclosure of this file or its contents without the prior written consent
|
||||||
|
* of DigiPen Institute of Technology is prohibited.
|
||||||
|
*****************************************************************************/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "Filesystem/SHFileSystem.h"
|
#include "Filesystem/SHFileSystem.h"
|
||||||
|
|
Loading…
Reference in New Issue