@@ -398,20 +398,23 @@ bool GLTFViewer::SetEnvironmentMap(ITextureView* pEnvMap)
398398
399399bool GLTFViewer::CreateIBLCubemaps ()
400400{
401- if (m_IrradianceCubeSRV != nullptr && m_PrefilteredEnvMapSRV != nullptr )
401+ if (m_IrradianceCubeSRV != nullptr && m_PrefilteredEnvMapSRV != nullptr && m_PrefilteredSheenEnvMapSRV != nullptr )
402402 return true ;
403403
404404 m_IrradianceCubeSRV.Release ();
405405 m_PrefilteredEnvMapSRV.Release ();
406+ m_PrefilteredSheenEnvMapSRV.Release ();
406407
407- RefCntAutoPtr<ITexture> pIrradianceCube = m_GLTFRenderer->CreateIrradianceCube (m_pImmediateContext, " GLTF viewer irradiance cube map" );
408- RefCntAutoPtr<ITexture> pPrefilteredEnvMap = m_GLTFRenderer->CreatePrefilteredEnvMap (m_pImmediateContext, " GLTF viewer prefiltered environment map" );
409- if (pIrradianceCube == nullptr || pPrefilteredEnvMap == nullptr )
408+ RefCntAutoPtr<ITexture> pIrradianceCube = m_GLTFRenderer->CreateIrradianceCube (m_pImmediateContext, " GLTF viewer irradiance cube map" );
409+ RefCntAutoPtr<ITexture> pPrefilteredEnvMap = m_GLTFRenderer->CreatePrefilteredEnvMap (m_pImmediateContext, " GLTF viewer prefiltered environment map" );
410+ RefCntAutoPtr<ITexture> pPrefilteredSheenEnvMap = m_GLTFRenderer->CreatePrefilteredEnvMap (m_pImmediateContext, " GLTF viewer prefiltered sheen environment map" );
411+ if (pIrradianceCube == nullptr || pPrefilteredEnvMap == nullptr || pPrefilteredSheenEnvMap == nullptr )
410412 return false ;
411413
412- m_IrradianceCubeSRV = pIrradianceCube->GetDefaultView (TEXTURE_VIEW_SHADER_RESOURCE );
413- m_PrefilteredEnvMapSRV = pPrefilteredEnvMap->GetDefaultView (TEXTURE_VIEW_SHADER_RESOURCE );
414- return m_IrradianceCubeSRV != nullptr && m_PrefilteredEnvMapSRV != nullptr ;
414+ m_IrradianceCubeSRV = pIrradianceCube->GetDefaultView (TEXTURE_VIEW_SHADER_RESOURCE );
415+ m_PrefilteredEnvMapSRV = pPrefilteredEnvMap->GetDefaultView (TEXTURE_VIEW_SHADER_RESOURCE );
416+ m_PrefilteredSheenEnvMapSRV = pPrefilteredSheenEnvMap->GetDefaultView (TEXTURE_VIEW_SHADER_RESOURCE );
417+ return m_IrradianceCubeSRV != nullptr && m_PrefilteredEnvMapSRV != nullptr && m_PrefilteredSheenEnvMapSRV != nullptr ;
415418}
416419
417420void GLTFViewer::PrecomputeIBLCubemaps (ITextureView* pEnvironmentMapSRV)
@@ -425,6 +428,7 @@ void GLTFViewer::PrecomputeIBLCubemaps(ITextureView* pEnvironmentMapSRV)
425428 Attribs.pEnvironmentMapSRV = pEnvironmentMapSRV;
426429 Attribs.pIrradianceCube = m_IrradianceCubeSRV->GetTexture ();
427430 Attribs.pPrefilteredEnvMap = m_PrefilteredEnvMapSRV->GetTexture ();
431+ Attribs.pPrefilteredSheenEnvMap = m_PrefilteredSheenEnvMapSRV->GetTexture ();
428432 Attribs.SphereMapRow0IsNegativeY = true ;
429433 m_GLTFRenderer->PrecomputeCubemaps (m_pImmediateContext, Attribs);
430434}
@@ -437,7 +441,7 @@ void GLTFViewer::BindIBLResourceViews()
437441 for (RefCntAutoPtr<IShaderResourceBinding>& pMaterialSRB : m_ModelResourceBindings.MaterialSRB )
438442 {
439443 if (pMaterialSRB != nullptr )
440- m_GLTFRenderer->SetIBLResourceViews (pMaterialSRB, m_IrradianceCubeSRV, m_PrefilteredEnvMapSRV);
444+ m_GLTFRenderer->SetIBLResourceViews (pMaterialSRB, m_IrradianceCubeSRV, m_PrefilteredEnvMapSRV, m_PrefilteredSheenEnvMapSRV );
441445 }
442446}
443447
@@ -1300,7 +1304,7 @@ void GLTFViewer::Render()
13001304 if (m_pResourceMgr)
13011305 {
13021306 m_GLTFRenderer->Begin (m_pDevice, m_pImmediateContext, m_CacheUseInfo, m_CacheBindings,
1303- m_FrameAttribsCB, m_IrradianceCubeSRV, m_PrefilteredEnvMapSRV);
1307+ m_FrameAttribsCB, m_IrradianceCubeSRV, m_PrefilteredEnvMapSRV, m_PrefilteredSheenEnvMapSRV );
13041308 }
13051309 else
13061310 {
0 commit comments