summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s+removethis@s-ol.nu>2021-03-27 16:03:49 +0000
committers-ol <s+removethis@s-ol.nu>2021-03-30 14:48:32 +0000
commit90332aae667e6eeb66f27b41e915299b11604b02 (patch)
tree9f4b6504e1af3672abd02c42798473c8a353876b
parentC API for GLTF_PBR_Renderer (diff)
downloadDiligentFX-gltf-multiview.tar.gz
DiligentFX-gltf-multiview.zip
GLTF: hacky VR rendering supportgltf-multiview
-rw-r--r--GLTF_PBR_Renderer/include/GLTF_PBR_Renderer.hpp3
-rw-r--r--GLTF_PBR_Renderer/interface/GLTF_PBR_Renderer.h3
-rw-r--r--GLTF_PBR_Renderer/src/GLTF_PBR_Renderer.cpp11
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(),