summaryrefslogtreecommitdiffstats
path: root/AssetLoader/src/GLTFLoader.cpp
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2019-04-24 04:40:01 +0000
committerEgor Yusov <egor.yusov@gmail.com>2019-04-24 04:40:01 +0000
commita4872be9dd147e060e4ae784a11c7b6dc0f0b25e (patch)
treeb535c28bd7b59b18b973f97915499ee4e7ea014c /AssetLoader/src/GLTFLoader.cpp
parentImplemented texture data loading in gltf loader (diff)
downloadDiligentTools-a4872be9dd147e060e4ae784a11c7b6dc0f0b25e.tar.gz
DiligentTools-a4872be9dd147e060e4ae784a11c7b6dc0f0b25e.zip
Fixed few issues in GLTF loader
Diffstat (limited to 'AssetLoader/src/GLTFLoader.cpp')
-rw-r--r--AssetLoader/src/GLTFLoader.cpp39
1 files changed, 21 insertions, 18 deletions
diff --git a/AssetLoader/src/GLTFLoader.cpp b/AssetLoader/src/GLTFLoader.cpp
index 0c7deb0..2d9d21a 100644
--- a/AssetLoader/src/GLTFLoader.cpp
+++ b/AssetLoader/src/GLTFLoader.cpp
@@ -510,28 +510,30 @@ TEXTURE_ADDRESS_MODE GetWrapMode(int32_t wrapMode)
case 33648:
return TEXTURE_ADDRESS_MIRROR;
default:
+ LOG_WARNING_MESSAGE("Unknown gltf address wrap mode: ", wrapMode, ". Defaulting to WRAP.");
return TEXTURE_ADDRESS_WRAP;
}
}
-FILTER_TYPE GetFilterMode(int32_t filterMode)
+std::pair<FILTER_TYPE, FILTER_TYPE> GetFilterMode(int32_t filterMode)
{
switch (filterMode)
{
- case 9728:
- return FILTER_TYPE_POINT;
- case 9729:
- return FILTER_TYPE_LINEAR;
- case 9984:
- return FILTER_TYPE_POINT;
- case 9985:
- return FILTER_TYPE_POINT;
- case 9986:
- return FILTER_TYPE_LINEAR;
- case 9987:
- return FILTER_TYPE_LINEAR;
+ case 9728: // NEAREST
+ return {FILTER_TYPE_POINT, FILTER_TYPE_POINT};
+ case 9729: // LINEAR
+ return {FILTER_TYPE_LINEAR, FILTER_TYPE_LINEAR};
+ case 9984: // NEAREST_MIPMAP_NEAREST
+ return {FILTER_TYPE_POINT, FILTER_TYPE_POINT};
+ case 9985: // LINEAR_MIPMAP_NEAREST
+ return {FILTER_TYPE_LINEAR, FILTER_TYPE_POINT};
+ case 9986: // NEAREST_MIPMAP_LINEAR
+ return {FILTER_TYPE_POINT, FILTER_TYPE_LINEAR};
+ case 9987: // LINEAR_MIPMAP_LINEAR
+ return {FILTER_TYPE_LINEAR, FILTER_TYPE_LINEAR};
default:
- return FILTER_TYPE_LINEAR;
+ LOG_WARNING_MESSAGE("Unknown gltf filter mode: ", filterMode, ". Defaulting to linear.");
+ return {FILTER_TYPE_LINEAR, FILTER_TYPE_LINEAR};
}
}
@@ -542,9 +544,10 @@ void Model::LoadTextureSamplers(IRenderDevice* pDevice, const tinygltf::Model& g
for (const tinygltf::Sampler& smpl : gltf_model.samplers)
{
SamplerDesc SamDesc;
- SamDesc.MinFilter = GetFilterMode(smpl.minFilter);
- SamDesc.MagFilter = GetFilterMode(smpl.magFilter);
- SamDesc.MipFilter = SamDesc.MagFilter;
+ SamDesc.MagFilter = GetFilterMode(smpl.magFilter).first;
+ auto MinMipFilter = GetFilterMode(smpl.minFilter);
+ SamDesc.MinFilter = MinMipFilter.first;
+ SamDesc.MipFilter = MinMipFilter.second;
SamDesc.AddressU = GetWrapMode(smpl.wrapS);
SamDesc.AddressV = GetWrapMode(smpl.wrapT);
SamDesc.AddressW = SamDesc.AddressV;
@@ -1066,7 +1069,7 @@ void Model::LoadFromFile(IRenderDevice* pDevice, IDeviceContext* pContext, std::
{
BufferDesc IBDesc;
IBDesc.Name = "GLTF inde buffer";
- IBDesc.uiSizeInBytes = static_cast<Uint32>(vertexBufferSize);
+ IBDesc.uiSizeInBytes = static_cast<Uint32>(indexBufferSize);
IBDesc.BindFlags = BIND_UNIFORM_BUFFER;
IBDesc.Usage = USAGE_STATIC;