diff --git a/CMakeLists.txt b/CMakeLists.txt index 7841bbc..e311e2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -134,7 +134,7 @@ find_package(CLI11 CONFIG REQUIRED) find_package(RapidJSON CONFIG REQUIRED) find_package(EnTT CONFIG REQUIRED) find_package(bgfx CONFIG REQUIRED) -find_package(MaterialX CONFIG REQUIRED) +find_package(materialx CONFIG REQUIRED) find_package(Freetype CONFIG REQUIRED) find_package(assimp CONFIG REQUIRED) find_package(libzip CONFIG REQUIRED) @@ -155,24 +155,22 @@ if(TARGET bimg::bimg) endif() set(SDL3CPP_MATERIALX_LIBS) -foreach(candidate IN ITEMS - MaterialX::MaterialX - materialx::MaterialX - MaterialX::MaterialXCore - MaterialX::MaterialXFormat - MaterialX::MaterialXGenShader - MaterialX::MaterialXGenGlsl - MaterialX::MaterialXRender - materialx::MaterialXCore - materialx::MaterialXFormat - materialx::MaterialXGenShader - materialx::MaterialXGenGlsl - materialx::MaterialXRender) - if(TARGET ${candidate}) - list(APPEND SDL3CPP_MATERIALX_LIBS ${candidate}) - endif() -endforeach() +if(TARGET materialx::materialx) + list(APPEND SDL3CPP_MATERIALX_LIBS materialx::materialx) +else() + foreach(candidate IN ITEMS + materialx::MaterialXCore + materialx::MaterialXFormat + materialx::MaterialXGenShader + materialx::MaterialXGenGlsl + materialx::MaterialXRender) + if(TARGET ${candidate}) + list(APPEND SDL3CPP_MATERIALX_LIBS ${candidate}) + endif() + endforeach() +endif() if(SDL3CPP_MATERIALX_LIBS) + message(TRACE "MaterialX targets selected: ${SDL3CPP_MATERIALX_LIBS}") list(APPEND SDL3CPP_RENDER_STACK_LIBS ${SDL3CPP_MATERIALX_LIBS}) endif() diff --git a/src/services/impl/materialx_shader_generator.cpp b/src/services/impl/materialx_shader_generator.cpp index c89a1c1..4bc1963 100644 --- a/src/services/impl/materialx_shader_generator.cpp +++ b/src/services/impl/materialx_shader_generator.cpp @@ -5,13 +5,11 @@ #include #include #include -#include #include #include #include #include -#include #include #include #include @@ -155,44 +153,13 @@ unsigned int ResolveAiryFresnelIterationsFromOptions(const Options& options, return defaultIterations; } -mx::StringMap BuildTokenSubstitutionsWithFallback(const mx::ShaderGenerator& generator, - const std::string& stageLabel, - const std::shared_ptr& logger) { - auto substitutions = generator.getTokenSubstitutions(); - struct TokenFallback { - std::string token; - std::string replacement; - }; - - const std::array fallbackTokens = {{ - {mx::HW::T_TEX_SAMPLER_SIGNATURE, mx::HW::TEX_SAMPLER_SIGNATURE}, - {mx::HW::T_TEX_SAMPLER_SAMPLER2D, mx::HW::TEX_SAMPLER_SAMPLER2D}, - {mx::HW::T_CLOSURE_DATA_CONSTRUCTOR, mx::HW::CLOSURE_DATA_CONSTRUCTOR} - }}; - - for (const auto& fallback : fallbackTokens) { - auto it = substitutions.find(fallback.token); - if (it == substitutions.end() || it->second.empty()) { - substitutions[fallback.token] = fallback.replacement; - if (logger) { - logger->Trace("MaterialXShaderGenerator", "Generate", - "tokenSubstitution fallback stage=" + stageLabel + - ", token=" + fallback.token + - ", value=" + fallback.replacement); - } - } - } - - return substitutions; -} - void ApplyTokenSubstitutions(const mx::ShaderGenerator& generator, std::string& source, const std::string& stageLabel, unsigned int airyIterations, const std::shared_ptr& logger) { auto tokensBefore = CollectMaterialXTokens(source); - mx::StringMap substitutions = BuildTokenSubstitutionsWithFallback(generator, stageLabel, logger); + mx::StringMap substitutions = generator.getTokenSubstitutions(); mx::tokenSubstitution(substitutions, source); auto tokensAfter = CollectMaterialXTokens(source);