Skip to content

Commit

Permalink
Hydrogent: added renderer draw attribs
Browse files Browse the repository at this point in the history
  • Loading branch information
TheMostDiligent committed Sep 19, 2023
1 parent e71b23a commit f7b934b
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 39 deletions.
2 changes: 1 addition & 1 deletion Hydrogent/include/HnRendererImpl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ class HnRendererImpl final : public ObjectBase<IHnRenderer>

virtual void LoadUSDStage(const char* FileName) override final;
virtual void Update() override final;
virtual void Draw(IDeviceContext* pCtx, const float4x4& CameraViewProj) override final;
virtual void Draw(IDeviceContext* pCtx, const HnDrawAttribs& Attribs) override final;
virtual void SetEnvironmentMap(IDeviceContext* pCtx, ITextureView* pEnvironmentMapSRV) override final;

private:
Expand Down
15 changes: 14 additions & 1 deletion Hydrogent/interface/HnRenderer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,27 @@ struct HnRendererCreateInfo
IBuffer* pLightAttribsCB = nullptr;
};

struct HnDrawAttribs
{
float4x4 CameraViewProj = float4x4::Identity();

int DebugView = 0;
float OcclusionStrength = 1;
float EmissionScale = 1;
float AverageLogLum = 0.3f;
float MiddleGray = 0.18f;
float WhitePoint = 3.0f;
float IBLScale = 1;
};

class IHnRenderer : public IObject
{
public:
virtual void LoadUSDStage(const char* FileName) = 0;

virtual void Update() = 0;

virtual void Draw(IDeviceContext* pCtx, const float4x4& CameraViewProj) = 0;
virtual void Draw(IDeviceContext* pCtx, const HnDrawAttribs& Attribs) = 0;

virtual void SetEnvironmentMap(IDeviceContext* pCtx, ITextureView* pEnvironmentMapSRV) = 0;
};
Expand Down
33 changes: 17 additions & 16 deletions Hydrogent/src/HnRendererImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,10 @@ HnRendererImpl::HnRendererImpl(IReferenceCounters* pRefCounters,
PBRRendererCI.RTVFmt = CI.RTVFormat;
PBRRendererCI.DSVFmt = CI.DSVFormat;

PBRRendererCI.UseIBL = true;
PBRRendererCI.UseAO = true;
PBRRendererCI.UseEmissive = false;
PBRRendererCI.AllowDebugView = true;
PBRRendererCI.UseIBL = true;
PBRRendererCI.UseAO = true;
PBRRendererCI.UseEmissive = false;

// Use samplers from texture views
PBRRendererCI.UseImmutableSamplers = false;
Expand Down Expand Up @@ -192,7 +193,7 @@ void HnRendererImpl::Update()
m_Engine.Execute(&m_ImagingDelegate->GetRenderIndex(), &tasks);
}

void HnRendererImpl::Draw(IDeviceContext* pCtx, const float4x4& CameraViewProj)
void HnRendererImpl::Draw(IDeviceContext* pCtx, const HnDrawAttribs& Attribs)
{
const auto& Meshes = m_RenderDelegate->GetMeshes();
if (Meshes.empty())
Expand All @@ -203,16 +204,16 @@ void HnRendererImpl::Draw(IDeviceContext* pCtx, const float4x4& CameraViewProj)
Diligent::HLSL::ToneMappingAttribs TMAttribs;
TMAttribs.iToneMappingMode = TONE_MAPPING_MODE_UNCHARTED2;
TMAttribs.bAutoExposure = 0;
TMAttribs.fMiddleGray = 0.18f; //m_RenderParams.MiddleGray;
TMAttribs.fMiddleGray = Attribs.MiddleGray;
TMAttribs.bLightAdaptation = 0;
TMAttribs.fWhitePoint = 3.0f; //m_RenderParams.WhitePoint;
TMAttribs.fWhitePoint = Attribs.WhitePoint;
TMAttribs.fLuminanceSaturation = 1.0;

EnvMapRenderer::RenderAttribs EnvMapAttribs;
EnvMapAttribs.pContext = pCtx;
EnvMapAttribs.pEnvMap = pEnvMapSRV;
EnvMapAttribs.AverageLogLum = 0.3f; //m_RenderParams.AverageLogLum;
EnvMapAttribs.MipLevel = 1; //m_EnvMapMipLevel;
EnvMapAttribs.AverageLogLum = Attribs.AverageLogLum;
EnvMapAttribs.MipLevel = 1;

m_EnvMapRenderer->Render(EnvMapAttribs, TMAttribs);
}
Expand Down Expand Up @@ -262,14 +263,14 @@ void HnRendererImpl::Draw(IDeviceContext* pCtx, const float4x4& CameraViewProj)

auto& RendererParams = pAttribs->Renderer;

RendererParams.DebugViewType = 0; //static_cast<int>(m_RenderParams.DebugView);
RendererParams.OcclusionStrength = 1; //m_RenderParams.OcclusionStrength;
RendererParams.EmissionScale = 1; //m_RenderParams.EmissionScale;
RendererParams.AverageLogLum = 0.3f; //m_RenderParams.AverageLogLum;
RendererParams.MiddleGray = 0.18f; //m_RenderParams.MiddleGray;
RendererParams.WhitePoint = 3.0f; //m_RenderParams.WhitePoint;
RendererParams.IBLScale = 1; //m_RenderParams.IBLScale;
RendererParams.PrefilteredCubeMipLevels = 5; //m_Settings.UseIBL ? static_cast<float>(m_pPrefilteredEnvMapSRV->GetTexture()->GetDesc().MipLevels) : 0.f;
RendererParams.DebugViewType = Attribs.DebugView;
RendererParams.OcclusionStrength = Attribs.OcclusionStrength;
RendererParams.EmissionScale = Attribs.EmissionScale;
RendererParams.AverageLogLum = Attribs.AverageLogLum;
RendererParams.MiddleGray = Attribs.MiddleGray;
RendererParams.WhitePoint = Attribs.WhitePoint;
RendererParams.IBLScale = Attribs.IBLScale;
RendererParams.PrefilteredCubeMipLevels = 5; //m_Settings.UseIBL ? static_cast<float>(m_pPrefilteredEnvMapSRV->GetTexture()->GetDesc().MipLevels) : 0.f;
}

pCtx->CommitShaderResources(pSRB, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
Expand Down
21 changes: 0 additions & 21 deletions PBR/interface/GLTF_PBR_Renderer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,27 +76,6 @@ class GLTF_PBR_Renderer : public PBR_Renderer
/// Flag indicating which alpha modes to render
ALPHA_MODE_FLAGS AlphaModes = ALPHA_MODE_FLAG_ALL;

/// Debug view type
enum class DebugViewType : int
{
None = 0,
BaseColor = 1,
Transparency = 2,
NormalMap = 3,
Occlusion = 4,
Emissive = 5,
Metallic = 6,
Roughness = 7,
DiffuseColor = 8,
SpecularColor = 9,
Reflectance90 = 10,
MeshNormal = 11,
PerturbedNormal = 12,
NdotV = 13,
DiffuseIBL = 14,
SpecularIBL = 15,
NumDebugViews
};
DebugViewType DebugView = DebugViewType::None;

/// Ambient occlusion strength
Expand Down
22 changes: 22 additions & 0 deletions PBR/interface/PBR_Renderer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,28 @@ class PBR_Renderer
PBR_WORKFLOW_SPEC_GLOSS
};

/// Debug view type
enum class DebugViewType : int
{
None = 0,
BaseColor = 1,
Transparency = 2,
NormalMap = 3,
Occlusion = 4,
Emissive = 5,
Metallic = 6,
Roughness = 7,
DiffuseColor = 8,
SpecularColor = 9,
Reflectance90 = 10,
MeshNormal = 11,
PerturbedNormal = 12,
NdotV = 13,
DiffuseIBL = 14,
SpecularIBL = 15,
NumDebugViews
};

/// Initializes the renderer
PBR_Renderer(IRenderDevice* pDevice,
IRenderStateCache* pStateCache,
Expand Down

0 comments on commit f7b934b

Please sign in to comment.