diff --git a/source/MaterialXRender/LightHandler.h b/source/MaterialXRender/LightHandler.h index 1cdc40da3f..21bfc3b9aa 100644 --- a/source/MaterialXRender/LightHandler.h +++ b/source/MaterialXRender/LightHandler.h @@ -38,7 +38,8 @@ class MX_RENDER_API LightHandler _directLighting(true), _indirectLighting(true), _envSampleCount(DEFAULT_ENV_SAMPLE_COUNT), - _refractionTwoSided(false) + _refractionTwoSided(false), + _envRadianceMapPreConvolved(nullptr) { } virtual ~LightHandler() { } diff --git a/source/MaterialXView/RenderPipelineGL.cpp b/source/MaterialXView/RenderPipelineGL.cpp index f46a213827..a91e9e2645 100644 --- a/source/MaterialXView/RenderPipelineGL.cpp +++ b/source/MaterialXView/RenderPipelineGL.cpp @@ -115,7 +115,11 @@ void GLRenderPipeline::convolveEnvironment() auto& genContext = _viewer->_genContext; auto& lightHandler = _viewer->_lightHandler; auto& imageHandler = _viewer->_imageHandler; - mx::GLTextureHandlerPtr glImageHandler = std::dynamic_pointer_cast(imageHandler); + + if (lightHandler->getEnvRadianceMapPreConvolved()) + { + return; + } // Create the convolution shader. mx::GlslMaterialPtr material = nullptr; @@ -137,6 +141,7 @@ void GLRenderPipeline::convolveEnvironment() int numMips = srcTex->getMaxMipCount(); // Create texture to hold the convolved environment. + mx::GLTextureHandlerPtr glImageHandler = std::dynamic_pointer_cast(imageHandler); mx::ImagePtr outTex = mx::Image::create(w, h, 3, mx::Image::BaseType::HALF); glImageHandler->createRenderResources(outTex, true); diff --git a/source/MaterialXView/RenderPipelineMetal.mm b/source/MaterialXView/RenderPipelineMetal.mm index 808796f912..ee8f1ea204 100644 --- a/source/MaterialXView/RenderPipelineMetal.mm +++ b/source/MaterialXView/RenderPipelineMetal.mm @@ -160,7 +160,6 @@ auto& genContext = _viewer->_genContext; auto& lightHandler = _viewer->_lightHandler; auto& imageHandler = _viewer->_imageHandler; - mx::MetalTextureHandlerPtr mtlImageHandler = std::dynamic_pointer_cast(imageHandler); if (lightHandler->getEnvRadianceMapPreConvolved()) { @@ -171,6 +170,7 @@ int w = srcTex->getWidth(); int h = srcTex->getHeight(); + mx::MetalTextureHandlerPtr mtlImageHandler = std::dynamic_pointer_cast(imageHandler); mx::ImagePtr outTex = mx::Image::create(w, h, 3, mx::Image::BaseType::HALF); mtlImageHandler->createRenderResources(outTex, true); id metalTex = mtlImageHandler->getAssociatedMetalTexture(outTex);