From 9ab929f53dd4d1337510bbb59e87f7454be3cfd4 Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Tue, 6 Jan 2026 19:44:30 +0000 Subject: [PATCH] feat(materialx): Add function to resolve Airy Fresnel iterations with improved logging --- .../impl/materialx_shader_generator.cpp | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/src/services/impl/materialx_shader_generator.cpp b/src/services/impl/materialx_shader_generator.cpp index 62ef60e..ab614bf 100644 --- a/src/services/impl/materialx_shader_generator.cpp +++ b/src/services/impl/materialx_shader_generator.cpp @@ -132,6 +132,27 @@ constexpr bool HasHwAiryFresnelIterations = requires(const T& options) { options.hwAiryFresnelIterations; }; +template +unsigned int ResolveAiryFresnelIterationsFromOptions(const Options& options, + unsigned int defaultIterations, + bool& fromOptions, + const std::shared_ptr& logger) { + if constexpr (HasHwAiryFresnelIterations) { + fromOptions = true; + if (logger) { + logger->Trace("MaterialXShaderGenerator", "Generate", + "airyFresnelIterationsOption=hwAiryFresnelIterations"); + } + return options.hwAiryFresnelIterations; + } + + if (logger) { + logger->Trace("MaterialXShaderGenerator", "Generate", + "airyFresnelIterationsOption=unavailable"); + } + return defaultIterations; +} + void ApplyTokenSubstitutions(const mx::ShaderGenerator& generator, std::string& source, const std::string& stageLabel, @@ -175,17 +196,12 @@ void ApplyTokenSubstitutions(const mx::ShaderGenerator& generator, unsigned int ResolveAiryFresnelIterations(const mx::GenContext& context, const std::shared_ptr& logger) { constexpr unsigned int kDefaultAiryFresnelIterations = 4; - unsigned int iterations = kDefaultAiryFresnelIterations; bool fromOptions = false; - using OptionsType = std::remove_reference_t; - constexpr bool kHasHwAiryFresnelIterations = HasHwAiryFresnelIterations; - if constexpr (kHasHwAiryFresnelIterations) { - iterations = context.getOptions().hwAiryFresnelIterations; - fromOptions = true; - } else if (logger) { - logger->Trace("MaterialXShaderGenerator", "Generate", - "airyFresnelIterationsOption=unavailable"); - } + const auto& options = context.getOptions(); + unsigned int iterations = ResolveAiryFresnelIterationsFromOptions(options, + kDefaultAiryFresnelIterations, + fromOptions, + logger); if (logger) { logger->Trace("MaterialXShaderGenerator", "Generate", "airyFresnelIterations=" + std::to_string(iterations) +