From 1d8cc5535ae53483baecc19365325c4bd3e6e41f Mon Sep 17 00:00:00 2001 From: hzqst <113660872@qq.com> Date: Mon, 15 Jun 2026 11:22:42 +0800 Subject: [PATCH 1/3] Enable IoR for GLTFLoader. Do not enforce ALPHA_MODE_BLEND for transmission. --- AssetLoader/interface/GLTFLoader.hpp | 3 ++- AssetLoader/src/GLTFLoader.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/AssetLoader/interface/GLTFLoader.hpp b/AssetLoader/interface/GLTFLoader.hpp index f7d40953..81608cd0 100644 --- a/AssetLoader/interface/GLTFLoader.hpp +++ b/AssetLoader/interface/GLTFLoader.hpp @@ -220,7 +220,8 @@ struct Material struct TransmissionShaderAttribs { float Factor = 0; - float Padding[3] = {}; + float IOR = 1.5f; + float Padding[2] = {}; }; static_assert(sizeof(TransmissionShaderAttribs) % 16 == 0, "TransmissionShaderAttribs struct must be 16-byte aligned"); std::unique_ptr Transmission; diff --git a/AssetLoader/src/GLTFLoader.cpp b/AssetLoader/src/GLTFLoader.cpp index 64f60b5f..1ea7e290 100644 --- a/AssetLoader/src/GLTFLoader.cpp +++ b/AssetLoader/src/GLTFLoader.cpp @@ -1867,13 +1867,17 @@ void Model::LoadMaterials(const tinygltf::Model& gltf_model, const ModelCreateIn auto ext_it = gltf_mat.extensions.find("KHR_materials_transmission"); if (ext_it != gltf_mat.extensions.end()) { - Mat.Attribs.AlphaMode = Material::ALPHA_MODE_BLEND; - Mat.Transmission = std::make_unique(); const tinygltf::Value& TransExt = ext_it->second; LoadExtensionTexture(gltf_model, *this, TransExt, MatBuilder, TransmissionTextureName); LoadExtensionParameter(TransExt, "transmissionFactor", Mat.Transmission->Factor); + + if (auto IorExtIt = gltf_mat.extensions.find("KHR_materials_ior"); + IorExtIt != gltf_mat.extensions.end()) + { + LoadExtensionParameter(IorExtIt->second, "ior", Mat.Transmission->IOR); + } } } From 65d3d59f7b1215a9b38341a2ce98fbceb347e056 Mon Sep 17 00:00:00 2001 From: hzqst <113660872@qq.com> Date: Mon, 15 Jun 2026 12:49:46 +0800 Subject: [PATCH 2/3] Update GLTFLoader.cpp, restore ALPHA_MODE_BLEND enforcement. --- AssetLoader/src/GLTFLoader.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/AssetLoader/src/GLTFLoader.cpp b/AssetLoader/src/GLTFLoader.cpp index 1ea7e290..f45b056a 100644 --- a/AssetLoader/src/GLTFLoader.cpp +++ b/AssetLoader/src/GLTFLoader.cpp @@ -1867,6 +1867,8 @@ void Model::LoadMaterials(const tinygltf::Model& gltf_model, const ModelCreateIn auto ext_it = gltf_mat.extensions.find("KHR_materials_transmission"); if (ext_it != gltf_mat.extensions.end()) { + Mat.Attribs.AlphaMode = Material::ALPHA_MODE_BLEND; + Mat.Transmission = std::make_unique(); const tinygltf::Value& TransExt = ext_it->second; From f961df25a99c176ee3a108afea5f6548278d06ab Mon Sep 17 00:00:00 2001 From: hzqst <113660872@qq.com> Date: Mon, 15 Jun 2026 12:50:21 +0800 Subject: [PATCH 3/3] Update GLTFLoader.cpp, remove spaces. --- AssetLoader/src/GLTFLoader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AssetLoader/src/GLTFLoader.cpp b/AssetLoader/src/GLTFLoader.cpp index f45b056a..4dabe4d8 100644 --- a/AssetLoader/src/GLTFLoader.cpp +++ b/AssetLoader/src/GLTFLoader.cpp @@ -1868,7 +1868,7 @@ void Model::LoadMaterials(const tinygltf::Model& gltf_model, const ModelCreateIn if (ext_it != gltf_mat.extensions.end()) { Mat.Attribs.AlphaMode = Material::ALPHA_MODE_BLEND; - + Mat.Transmission = std::make_unique(); const tinygltf::Value& TransExt = ext_it->second;