@@ -1039,21 +1039,31 @@ void GLTFViewer::Render()
1039
1039
if (m_pResourceMgr)
1040
1040
{
1041
1041
m_GLTFRenderer->Begin (m_pDevice, m_pImmediateContext, m_CacheUseInfo, m_CacheBindings, m_FrameAttribsCB);
1042
- m_GLTFRenderer->Render (m_pImmediateContext, *m_Model, CurrTransforms, &PrevTransforms, m_RenderParams, nullptr , &m_CacheBindings);
1043
1042
}
1044
1043
else
1045
1044
{
1046
1045
m_GLTFRenderer->Begin (m_pImmediateContext);
1047
- m_GLTFRenderer->Render (m_pImmediateContext, *m_Model, CurrTransforms, &PrevTransforms, m_RenderParams, &m_ModelResourceBindings);
1048
1046
}
1049
1047
1050
- if (m_BoundBoxMode != BoundBoxMode::None)
1051
- {
1052
- m_pImmediateContext->SetPipelineState (m_BoundBoxPSO);
1053
- m_pImmediateContext->CommitShaderResources (m_BoundBoxSRB, RESOURCE_STATE_TRANSITION_MODE_VERIFY);
1054
- DrawAttribs DrawAttrs{24 , DRAW_FLAG_VERIFY_ALL};
1055
- m_pImmediateContext->Draw (DrawAttrs);
1056
- }
1048
+ auto RenderModel = [&](GLTF_PBR_Renderer::RenderInfo::ALPHA_MODE_FLAGS AlphaModes) {
1049
+ const auto OrigAlphaModes = m_RenderParams.AlphaModes ;
1050
+
1051
+ m_RenderParams.AlphaModes &= AlphaModes;
1052
+ if (m_RenderParams.AlphaModes != GLTF_PBR_Renderer::RenderInfo::ALPHA_MODE_FLAG_NONE)
1053
+ {
1054
+ if (m_pResourceMgr)
1055
+ {
1056
+ m_GLTFRenderer->Render (m_pImmediateContext, *m_Model, CurrTransforms, &PrevTransforms, m_RenderParams, nullptr , &m_CacheBindings);
1057
+ }
1058
+ else
1059
+ {
1060
+ m_GLTFRenderer->Render (m_pImmediateContext, *m_Model, CurrTransforms, &PrevTransforms, m_RenderParams, &m_ModelResourceBindings);
1061
+ }
1062
+ }
1063
+
1064
+ m_RenderParams.AlphaModes = OrigAlphaModes;
1065
+ };
1066
+ RenderModel (GLTF_PBR_Renderer::RenderInfo::ALPHA_MODE_FLAG_OPAQUE | GLTF_PBR_Renderer::RenderInfo::ALPHA_MODE_FLAG_MASK);
1057
1067
1058
1068
if (m_BackgroundMode != BackgroundMode::None)
1059
1069
{
@@ -1094,6 +1104,16 @@ void GLTFViewer::Render()
1094
1104
m_EnvMapRenderer->Render (EnvMapAttribs, TMAttribs);
1095
1105
}
1096
1106
1107
+ RenderModel (GLTF_PBR_Renderer::RenderInfo::ALPHA_MODE_FLAG_BLEND);
1108
+
1109
+ if (m_BoundBoxMode != BoundBoxMode::None)
1110
+ {
1111
+ m_pImmediateContext->SetPipelineState (m_BoundBoxPSO);
1112
+ m_pImmediateContext->CommitShaderResources (m_BoundBoxSRB, RESOURCE_STATE_TRANSITION_MODE_VERIFY);
1113
+ DrawAttribs DrawAttrs{24 , DRAW_FLAG_VERIFY_ALL};
1114
+ m_pImmediateContext->Draw (DrawAttrs);
1115
+ }
1116
+
1097
1117
if (m_bEnablePostProcessing)
1098
1118
{
1099
1119
{
0 commit comments