diff options
| -rw-r--r-- | GLTF_PBR_Renderer/include/GLTF_PBR_Renderer.hpp | 3 | ||||
| -rw-r--r-- | GLTF_PBR_Renderer/interface/GLTF_PBR_Renderer.h | 3 | ||||
| -rw-r--r-- | GLTF_PBR_Renderer/src/GLTF_PBR_Renderer.cpp | 11 |
3 files changed, 13 insertions, 4 deletions
diff --git a/GLTF_PBR_Renderer/include/GLTF_PBR_Renderer.hpp b/GLTF_PBR_Renderer/include/GLTF_PBR_Renderer.hpp index bb764d3..7930cfc 100644 --- a/GLTF_PBR_Renderer/include/GLTF_PBR_Renderer.hpp +++ b/GLTF_PBR_Renderer/include/GLTF_PBR_Renderer.hpp @@ -97,7 +97,8 @@ public: IGLTFModel* GLTFModel, const GLTF_RenderInfo& RenderParams, GLTF_ModelResourceBindings* pModelBindings, - GLTF_ResourceCacheBindings* pCacheBindings = nullptr) override final; + GLTF_ResourceCacheBindings* pCacheBindings = nullptr, + IShaderResourceBinding* pExtraBinding = nullptr) override final; /// Creates resource bindings for a given GLTF model virtual GLTF_ModelResourceBindings CreateResourceBindings(IGLTFModel* GLTFModel, diff --git a/GLTF_PBR_Renderer/interface/GLTF_PBR_Renderer.h b/GLTF_PBR_Renderer/interface/GLTF_PBR_Renderer.h index 4db08c6..7d40b19 100644 --- a/GLTF_PBR_Renderer/interface/GLTF_PBR_Renderer.h +++ b/GLTF_PBR_Renderer/interface/GLTF_PBR_Renderer.h @@ -213,7 +213,8 @@ DILIGENT_BEGIN_INTERFACE1(IGLTF_PBR_Renderer) IGLTFModel* GLTFModel, const GLTF_RenderInfo REF RenderParams, GLTF_ModelResourceBindings* pModelBindings, - GLTF_ResourceCacheBindings* pCacheBindings) PURE; + GLTF_ResourceCacheBindings* pCacheBindings, + IShaderResourceBinding* pExtraBinding) PURE; /// Creates resource bindings for a given GLTF model VIRTUAL GLTF_ModelResourceBindings METHOD(CreateResourceBindings)(THIS_ diff --git a/GLTF_PBR_Renderer/src/GLTF_PBR_Renderer.cpp b/GLTF_PBR_Renderer/src/GLTF_PBR_Renderer.cpp index bbfbd4c..01afacf 100644 --- a/GLTF_PBR_Renderer/src/GLTF_PBR_Renderer.cpp +++ b/GLTF_PBR_Renderer/src/GLTF_PBR_Renderer.cpp @@ -299,6 +299,7 @@ void GLTF_PBR_Renderer::CreatePSO(IRenderDevice* pDevice) // clang-format off std::vector<ShaderResourceVariableDesc> Vars = { + {SHADER_TYPE_GEOMETRY, "Views", SHADER_RESOURCE_VARIABLE_TYPE_STATIC}, {SHADER_TYPE_VERTEX, "cbTransforms", SHADER_RESOURCE_VARIABLE_TYPE_STATIC}, {SHADER_TYPE_PIXEL, "cbGLTFAttribs", SHADER_RESOURCE_VARIABLE_TYPE_STATIC}, {SHADER_TYPE_VERTEX, "cbJointTransforms", SHADER_RESOURCE_VARIABLE_TYPE_STATIC} @@ -344,8 +345,10 @@ void GLTF_PBR_Renderer::CreatePSO(IRenderDevice* pDevice) PSOCreateInfo.pVS = pVS; PSOCreateInfo.pPS = pPS; - if (m_Settings.pGS) + if (m_Settings.pGS) { + PSODesc.SeparateGeometrySignature = true; PSOCreateInfo.pGS = m_Settings.pGS; + } { PSOKey Key{GLTF_MAT_ALPHA_MODE_OPAQUE, false}; @@ -862,7 +865,8 @@ void GLTF_PBR_Renderer::Render(IDeviceContext* pCtx, IGLTFModel* _GLTFModel, const GLTF_RenderInfo& RenderParams, GLTF_ModelResourceBindings* pModelBindings, - GLTF_ResourceCacheBindings* pCacheBindings) + GLTF_ResourceCacheBindings* pCacheBindings, + IShaderResourceBinding* pExtraBinding) { auto& GLTFModel = *static_cast<GLTF::Model*>(_GLTFModel); @@ -937,6 +941,9 @@ void GLTF_PBR_Renderer::Render(IDeviceContext* pCtx, VERIFY_EXPR(pCurrPSO == GetPSO(PSOKey{AlphaMode, material.DoubleSided})); } + if (pExtraBinding) + pCtx->CommitShaderResources(pExtraBinding, RESOURCE_STATE_TRANSITION_MODE_TRANSITION); + if (pModelBindings != nullptr) { VERIFY(primitive.MaterialId < pModelBindings->MaterialSRB.size(), |
