Skip to content

Commit d6b5622

Browse files
Hydrogent: added HN_VIEW_MODE enum; use it instead of PBR_Renderer::DebugViewType
1 parent 591d6c8 commit d6b5622

15 files changed

+172
-44
lines changed

Hydrogent/include/HnRenderParam.hpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,8 @@ class HnRenderParam final : public pxr::HdRenderParam
125125
uint32_t GetAttribVersion(GlobalAttrib Attrib) const { return m_GlobalAttribVersions[static_cast<size_t>(Attrib)].load(); }
126126
uint32_t MakeAttribDirty(GlobalAttrib Attrib) { return m_GlobalAttribVersions[static_cast<size_t>(Attrib)].fetch_add(1) + 1; }
127127

128-
PBR_Renderer::DebugViewType GetDebugView() const { return m_DebugView; }
129-
130-
void SetDebugView(PBR_Renderer::DebugViewType DebugView) { m_DebugView = DebugView; }
128+
HN_VIEW_MODE GetViewMode() const { return m_ViewMode; }
129+
void SetViewMode(HN_VIEW_MODE ViewMode) { m_ViewMode = ViewMode; }
131130

132131
double GetFrameTime() const { return m_FrameTime; }
133132
void SetFrameTime(double FrameTime) { m_FrameTime = FrameTime; }
@@ -152,7 +151,7 @@ class HnRenderParam final : public pxr::HdRenderParam
152151

153152
std::array<std::atomic<uint32_t>, static_cast<size_t>(GlobalAttrib::Count)> m_GlobalAttribVersions{};
154153

155-
PBR_Renderer::DebugViewType m_DebugView = PBR_Renderer::DebugViewType::None;
154+
HN_VIEW_MODE m_ViewMode = HN_VIEW_MODE_SHADED;
156155

157156
bool m_UseShadows = false;
158157
bool m_LoadingAnimationActive = false;

Hydrogent/include/HnTypeConversions.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2024 Diligent Graphics LLC
2+
* Copyright 2024-2025 Diligent Graphics LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -32,6 +32,7 @@
3232
#include "DepthStencilState.h"
3333
#include "BlendState.h"
3434
#include "PBR_Renderer.hpp"
35+
#include "HnTypes.hpp"
3536

3637
#include "pxr/pxr.h"
3738
#include "pxr/imaging/hd/types.h"
@@ -65,6 +66,8 @@ pxr::HdFormat TextureFormatToHdFormat(TEXTURE_FORMAT TexFmt);
6566
/// TEXTURE_ATTRIB_ID_METALLIC -> "metallic"
6667
const pxr::TfToken& PBRTextureAttribIdToPxrName(PBR_Renderer::TEXTURE_ATTRIB_ID Id);
6768

69+
PBR_Renderer::DebugViewType HnViewModeToDebugViewType(HN_VIEW_MODE ViewMode);
70+
6871
} // namespace USD
6972

7073
} // namespace Diligent

Hydrogent/interface/HnRenderDelegate.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,7 @@ class HnRenderDelegate final : public pxr::HdRenderDelegate
441441
HnRenderDelegateMemoryStats GetMemoryStats() const;
442442
HnRenderDelegateRenderingStats GetRenderingStats() const;
443443

444-
void SetDebugView(PBR_Renderer::DebugViewType DebugView);
444+
void SetViewMode(HN_VIEW_MODE ViewMode);
445445
void SetGeometryMode(HN_GEOMETRY_MODE GeometryMode);
446446
void SetSelectedRPrimId(const pxr::SdfPath& RPrimID);
447447
void SetUseShadows(bool UseShadows);

Hydrogent/interface/HnTypes.hpp

Lines changed: 83 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ namespace Diligent
3636
namespace USD
3737
{
3838

39-
/// Geometry renering mode
39+
/// Geometry rendering mode
4040
enum HN_GEOMETRY_MODE : Uint8
4141
{
4242
/// Render solid geometry
@@ -69,6 +69,88 @@ enum HN_MATERIAL_TEXTURES_BINDING_MODE : Uint8
6969
HN_MATERIAL_TEXTURES_BINDING_MODE_DYNAMIC
7070
};
7171

72+
/// Renderer view mode.
73+
enum HN_VIEW_MODE : Uint8
74+
{
75+
/// Render shaded geometry.
76+
HN_VIEW_MODE_SHADED,
77+
78+
/// Display texture coordinate set 0.
79+
HN_VIEW_MODE_TEXCOORD0,
80+
81+
/// Display texture coordinate set 1.
82+
HN_VIEW_MODE_TEXCOORD1,
83+
84+
/// Display base color texture.
85+
HN_VIEW_MODE_BASE_COLOR,
86+
87+
/// Display transparency.
88+
HN_VIEW_MODE_TRANSPARENCY,
89+
90+
/// Display occlusion.
91+
HN_VIEW_MODE_OCCLUSION,
92+
93+
/// Display emissive texture.
94+
HN_VIEW_MODE_EMISSIVE,
95+
96+
/// Display metallic.
97+
HN_VIEW_MODE_METALLIC,
98+
99+
/// Display roughness.
100+
HN_VIEW_MODE_ROUGHNESS,
101+
102+
/// Display diffuse color.
103+
HN_VIEW_MODE_DIFFUSE_COLOR,
104+
105+
/// Display specular color.
106+
HN_VIEW_MODE_SPECULAR_COLOR,
107+
108+
/// Display normal reflectance.
109+
HN_VIEW_MODE_REFLECTANCE90,
110+
111+
/// Display mesh normals.
112+
HN_VIEW_MODE_MESH_NORMAL,
113+
114+
/// Display shading normals.
115+
HN_VIEW_MODE_SHADING_NORMAL,
116+
117+
/// Display motion vectors.
118+
HN_VIEW_MODE_MOTION_VECTORS,
119+
120+
/// Display (Normal, View) product.
121+
HN_VIEW_MODE_NDOTV,
122+
123+
/// Display punctual lighting.
124+
HN_VIEW_MODE_PUNCTUAL_LIGHTING,
125+
126+
/// Display diffuse IBL.
127+
HN_VIEW_MODE_DIFFUSE_IBL,
128+
129+
/// Display specular IBL.
130+
HN_VIEW_MODE_SPECULAR_IBL,
131+
132+
/// Render the scene with white base color.
133+
HN_VIEW_MODE_WHITE_BASE_COLOR,
134+
135+
/// Display clear coat.
136+
HN_VIEW_MODE_CLEARCOAT,
137+
138+
/// Display clear coat factor.
139+
HN_VIEW_MODE_CLEARCOAT_FACTOR,
140+
141+
/// Display clear coat roughness.
142+
HN_VIEW_MODE_CLEARCOAT_ROUGHNESS,
143+
144+
/// Display clear coat normal.
145+
HN_VIEW_MODE_CLEARCOAT_NORMAL,
146+
147+
/// Display scene depth.
148+
HN_VIEW_MODE_SCENE_DEPTH,
149+
150+
/// The total number of view modes.
151+
HN_VIEW_MODE_COUNT
152+
};
153+
72154
} // namespace USD
73155

74156
} // namespace Diligent

Hydrogent/interface/Tasks/HnPostProcessTask.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,8 @@ class HnPostProcessTask final : public HnTask
236236
bool UseSSAO = false;
237237
bool UseShadows = false;
238238

239-
PBR_Renderer::DebugViewType DebugView = PBR_Renderer::DebugViewType::NumDebugViews;
240-
HN_GEOMETRY_MODE GeometryMode = HN_GEOMETRY_MODE_COUNT;
239+
HN_VIEW_MODE ViewMode = HN_VIEW_MODE_COUNT;
240+
HN_GEOMETRY_MODE GeometryMode = HN_GEOMETRY_MODE_COUNT;
241241

242242
constexpr bool operator==(const SuperSamplingFactors& rhs) const
243243
{
@@ -246,7 +246,7 @@ class HnPostProcessTask final : public HnTask
246246
UseSSR == rhs.UseSSR &&
247247
UseSSAO == rhs.UseSSAO &&
248248
UseShadows == rhs.UseShadows &&
249-
DebugView == rhs.DebugView &&
249+
ViewMode == rhs.ViewMode &&
250250
GeometryMode == rhs.GeometryMode);
251251
// clang-format on
252252
}

Hydrogent/src/HnRenderDelegate.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -996,9 +996,9 @@ HnRenderDelegateRenderingStats HnRenderDelegate::GetRenderingStats() const
996996
return Stats;
997997
}
998998

999-
void HnRenderDelegate::SetDebugView(PBR_Renderer::DebugViewType DebugView)
999+
void HnRenderDelegate::SetViewMode(HN_VIEW_MODE ViewMode)
10001000
{
1001-
m_RenderParam->SetDebugView(DebugView);
1001+
m_RenderParam->SetViewMode(ViewMode);
10021002
}
10031003

10041004
void HnRenderDelegate::SetGeometryMode(HN_GEOMETRY_MODE GeometryMode)

Hydrogent/src/HnRenderPass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ HnRenderPass::EXECUTE_RESULT HnRenderPass::Execute(HnRenderPassState& RPState, c
411411
RPState.Commit(State.pCtx);
412412

413413
{
414-
PBR_Renderer::DebugViewType DebugView = State.RenderParam.GetDebugView();
414+
PBR_Renderer::DebugViewType DebugView = HnViewModeToDebugViewType(State.RenderParam.GetViewMode());
415415
if (m_DebugView != DebugView)
416416
{
417417
m_DrawListItemsDirtyFlags |= DRAW_LIST_ITEM_DIRTY_FLAG_PSO;

Hydrogent/src/HnTypeConversions.cpp

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2024 Diligent Graphics LLC
2+
* Copyright 2024-2025 Diligent Graphics LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -344,6 +344,49 @@ const pxr::TfToken& PBRTextureAttribIdToPxrName(PBR_Renderer::TEXTURE_ATTRIB_ID
344344
return TexAttribIdToName[Id];
345345
}
346346

347+
PBR_Renderer::DebugViewType HnViewModeToDebugViewType(HN_VIEW_MODE ViewMode)
348+
{
349+
static_assert(HN_VIEW_MODE_COUNT == 25, "Please handle the new view mode below");
350+
351+
static const std::array<PBR_Renderer::DebugViewType, HN_VIEW_MODE_COUNT> ViewModeToDebugViewType = []() {
352+
std::array<PBR_Renderer::DebugViewType, HN_VIEW_MODE_COUNT> DebugViewTypes;
353+
354+
DebugViewTypes[HN_VIEW_MODE_SHADED] = PBR_Renderer::DebugViewType::None;
355+
DebugViewTypes[HN_VIEW_MODE_TEXCOORD0] = PBR_Renderer::DebugViewType::Texcoord0;
356+
DebugViewTypes[HN_VIEW_MODE_TEXCOORD1] = PBR_Renderer::DebugViewType::Texcoord1;
357+
DebugViewTypes[HN_VIEW_MODE_BASE_COLOR] = PBR_Renderer::DebugViewType::BaseColor;
358+
DebugViewTypes[HN_VIEW_MODE_TRANSPARENCY] = PBR_Renderer::DebugViewType::Transparency;
359+
DebugViewTypes[HN_VIEW_MODE_OCCLUSION] = PBR_Renderer::DebugViewType::Occlusion;
360+
DebugViewTypes[HN_VIEW_MODE_EMISSIVE] = PBR_Renderer::DebugViewType::Emissive;
361+
DebugViewTypes[HN_VIEW_MODE_METALLIC] = PBR_Renderer::DebugViewType::Metallic;
362+
DebugViewTypes[HN_VIEW_MODE_ROUGHNESS] = PBR_Renderer::DebugViewType::Roughness;
363+
DebugViewTypes[HN_VIEW_MODE_DIFFUSE_COLOR] = PBR_Renderer::DebugViewType::DiffuseColor;
364+
DebugViewTypes[HN_VIEW_MODE_SPECULAR_COLOR] = PBR_Renderer::DebugViewType::SpecularColor;
365+
DebugViewTypes[HN_VIEW_MODE_REFLECTANCE90] = PBR_Renderer::DebugViewType::Reflectance90;
366+
DebugViewTypes[HN_VIEW_MODE_MESH_NORMAL] = PBR_Renderer::DebugViewType::MeshNormal;
367+
DebugViewTypes[HN_VIEW_MODE_SHADING_NORMAL] = PBR_Renderer::DebugViewType::ShadingNormal;
368+
DebugViewTypes[HN_VIEW_MODE_MOTION_VECTORS] = PBR_Renderer::DebugViewType::MotionVectors;
369+
DebugViewTypes[HN_VIEW_MODE_NDOTV] = PBR_Renderer::DebugViewType::NdotV;
370+
DebugViewTypes[HN_VIEW_MODE_PUNCTUAL_LIGHTING] = PBR_Renderer::DebugViewType::PunctualLighting;
371+
DebugViewTypes[HN_VIEW_MODE_DIFFUSE_IBL] = PBR_Renderer::DebugViewType::DiffuseIBL;
372+
DebugViewTypes[HN_VIEW_MODE_SPECULAR_IBL] = PBR_Renderer::DebugViewType::SpecularIBL;
373+
DebugViewTypes[HN_VIEW_MODE_WHITE_BASE_COLOR] = PBR_Renderer::DebugViewType::WhiteBaseColor;
374+
DebugViewTypes[HN_VIEW_MODE_CLEARCOAT] = PBR_Renderer::DebugViewType::ClearCoat;
375+
DebugViewTypes[HN_VIEW_MODE_CLEARCOAT_FACTOR] = PBR_Renderer::DebugViewType::ClearCoatFactor;
376+
DebugViewTypes[HN_VIEW_MODE_CLEARCOAT_ROUGHNESS] = PBR_Renderer::DebugViewType::ClearCoatRoughness;
377+
DebugViewTypes[HN_VIEW_MODE_CLEARCOAT_NORMAL] = PBR_Renderer::DebugViewType::ClearCoatNormal;
378+
DebugViewTypes[HN_VIEW_MODE_SCENE_DEPTH] = PBR_Renderer::DebugViewType::SceneDepth;
379+
return DebugViewTypes;
380+
}();
381+
if (ViewMode < 0 || ViewMode >= HN_VIEW_MODE_COUNT)
382+
{
383+
UNEXPECTED("Unexpected view mode");
384+
return PBR_Renderer::DebugViewType::None;
385+
}
386+
387+
return ViewModeToDebugViewType[ViewMode];
388+
}
389+
347390
} // namespace USD
348391

349392
} // namespace Diligent

Hydrogent/src/Tasks/HnBeginFrameTask.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
#include "HnLight.hpp"
3535
#include "HnRenderParam.hpp"
3636
#include "HnShadowMapManager.hpp"
37+
#include "HnTypeConversions.hpp"
3738

3839
#include "DebugUtilities.hpp"
3940
#include "GraphicsAccessories.hpp"
@@ -257,7 +258,7 @@ void HnBeginFrameTask::PrepareRenderTargets(pxr::HdRenderIndex* RenderIndex,
257258
{
258259
if (i == HnFrameRenderTargets::GBUFFER_TARGET_SCENE_COLOR)
259260
{
260-
if (RenderParam->GetDebugView() != PBR_Renderer::DebugViewType::SceneDepth)
261+
if (RenderParam->GetViewMode() != HN_VIEW_MODE_SCENE_DEPTH)
261262
{
262263
// NB: we should clear alpha to one as it accumulates the total transmittance
263264
ClearValues[i] = float4{m_Params.ClearColor.r, m_Params.ClearColor.g, m_Params.ClearColor.b, 1.0};
@@ -642,7 +643,7 @@ void HnBeginFrameTask::UpdateFrameConstants(IDeviceContext* pCtx,
642643
RendererParams.WhitePoint = HLSL::ToneMappingAttribs{}.fWhitePoint;
643644

644645
RendererParams.Time = static_cast<float>(m_CurrFrameTime);
645-
RendererParams.DebugView = static_cast<int>(RenderParam->GetDebugView());
646+
RendererParams.DebugView = static_cast<int>(HnViewModeToDebugViewType(RenderParam->GetViewMode()));
646647

647648
{
648649
float LoadingAnimationFactor = m_FallBackPsoUseStartTime > 0 ? 1.0 : 0.0;

Hydrogent/src/Tasks/HnBeginOITPassTask.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,13 @@ void HnBeginOITPassTask::Sync(pxr::HdSceneDelegate* Delegate,
5757

5858
bool HnBeginOITPassTask::IsActive(pxr::HdRenderIndex& RenderIndex) const
5959
{
60-
pxr::HdRenderDelegate* RenderDelegate = RenderIndex.GetRenderDelegate();
61-
const HnRenderParam* RenderParam = static_cast<const HnRenderParam*>(RenderDelegate->GetRenderParam());
62-
const HN_GEOMETRY_MODE GeometryMode = RenderParam->GetGeometryMode();
63-
const PBR_Renderer::DebugViewType DebugView = RenderParam->GetDebugView();
60+
pxr::HdRenderDelegate* RenderDelegate = RenderIndex.GetRenderDelegate();
61+
const HnRenderParam* RenderParam = static_cast<const HnRenderParam*>(RenderDelegate->GetRenderParam());
62+
const HN_GEOMETRY_MODE GeometryMode = RenderParam->GetGeometryMode();
63+
const HN_VIEW_MODE ViewMode = RenderParam->GetViewMode();
6464

6565
// Scene depth debug view for transparent objects is rendered in opaque mode and does not need OIT layers.
66-
return GeometryMode == HN_GEOMETRY_MODE_SOLID && DebugView != PBR_Renderer::DebugViewType::SceneDepth;
66+
return GeometryMode == HN_GEOMETRY_MODE_SOLID && ViewMode != HN_VIEW_MODE_SCENE_DEPTH;
6767
}
6868

6969
void HnBeginOITPassTask::Prepare(pxr::HdTaskContext* TaskCtx,

0 commit comments

Comments
 (0)