Skip to content

Commit 64fdb1e

Browse files
HnRenderParam: grouped global setting into the Configuration struct
1 parent c3f7e73 commit 64fdb1e

File tree

12 files changed

+40
-61
lines changed

12 files changed

+40
-61
lines changed

Hydrogent/include/HnRenderParam.hpp

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -46,24 +46,21 @@ namespace USD
4646
class HnRenderParam final : public pxr::HdRenderParam
4747
{
4848
public:
49-
HnRenderParam(bool UseVertexPool,
50-
bool UseIndexPool,
51-
bool AsyncShaderCompilation,
52-
bool UseNativeStartVertex,
53-
HN_MATERIAL_TEXTURES_BINDING_MODE TextureBindingMode,
54-
float MetersPerUnit,
55-
Uint64 GeometryLoadBudget) noexcept;
56-
~HnRenderParam();
57-
58-
bool GetUseVertexPool() const { return m_UseVertexPool; }
59-
bool GetUseIndexPool() const { return m_UseIndexPool; }
60-
bool GetAsyncShaderCompilation() const { return m_AsyncShaderCompilation; }
61-
bool GetUseNativeStartVertex() const { return m_UseNativeStartVertex; }
49+
struct Configuration
50+
{
51+
bool UseVertexPool = false;
52+
bool UseIndexPool = false;
53+
bool AsyncShaderCompilation = false;
54+
bool UseNativeStartVertex = false;
55+
HN_MATERIAL_TEXTURES_BINDING_MODE TextureBindingMode = {};
56+
float MetersPerUnit = 1.0f;
57+
Uint64 GeometryLoadBudget = 0;
58+
};
6259

63-
HN_MATERIAL_TEXTURES_BINDING_MODE GetTextureBindingMode() const { return m_TextureBindingMode; }
60+
HnRenderParam(const Configuration& Config) noexcept;
61+
~HnRenderParam();
6462

65-
float GetMetersPerUnit() const { return m_MetersPerUnit; }
66-
Uint64 GetGeometryLoadBudget() const { return m_GeometryLoadBudget; }
63+
const Configuration& GetConfig() const { return m_Config; }
6764

6865
HN_RENDER_MODE GetRenderMode() const { return m_RenderMode; }
6966
void SetRenderMode(HN_RENDER_MODE Mode) { m_RenderMode = Mode; }
@@ -134,15 +131,7 @@ class HnRenderParam final : public pxr::HdRenderParam
134131
const auto& GetDirtyRPrims() const { return m_DirtyRPrims; }
135132

136133
private:
137-
const bool m_UseVertexPool;
138-
const bool m_UseIndexPool;
139-
const bool m_AsyncShaderCompilation;
140-
const bool m_UseNativeStartVertex;
141-
142-
const HN_MATERIAL_TEXTURES_BINDING_MODE m_TextureBindingMode;
143-
144-
const float m_MetersPerUnit;
145-
const Uint64 m_GeometryLoadBudget;
134+
const Configuration m_Config;
146135

147136
HN_RENDER_MODE m_RenderMode = HN_RENDER_MODE_SOLID;
148137

Hydrogent/src/HnCamera.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ void HnCamera::Sync(pxr::HdSceneDelegate* SceneDelegate,
6060
pxr::HdDirtyBits OrigDirtyBits = *DirtyBits;
6161
pxr::HdCamera::Sync(SceneDelegate, RenderParam, DirtyBits);
6262

63-
const float MetersPerUnit = RenderParam ? static_cast<const HnRenderParam*>(RenderParam)->GetMetersPerUnit() : 0.01f;
63+
const float MetersPerUnit = RenderParam ? static_cast<const HnRenderParam*>(RenderParam)->GetConfig().MetersPerUnit : 0.01f;
6464
const float UnitsPerMeter = 1.f / MetersPerUnit;
6565
if (OrigDirtyBits & pxr::HdCamera::DirtyTransform)
6666
{

Hydrogent/src/HnLight.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ void HnLight::Sync(pxr::HdSceneDelegate* SceneDelegate,
510510
float MetersPerUnit = 1;
511511
if (RenderParam != nullptr)
512512
{
513-
MetersPerUnit = static_cast<const HnRenderParam*>(RenderParam)->GetMetersPerUnit();
513+
MetersPerUnit = static_cast<const HnRenderParam*>(RenderParam)->GetConfig().MetersPerUnit;
514514
}
515515
if (ApproximateAreaLight(*SceneDelegate, MetersPerUnit))
516516
{

Hydrogent/src/HnMaterial.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -977,7 +977,7 @@ Uint32 HnMaterial::GetResourceCacheVersion(HnRenderDelegate& RenderDelegate)
977977
RefCntAutoPtr<HnMaterialSRBCache> SRBCache{RenderDelegate.GetMaterialSRBCache(), IID_HnMaterialSRBCache};
978978
VERIFY_EXPR(SRBCache);
979979

980-
const HN_MATERIAL_TEXTURES_BINDING_MODE BindingMode = static_cast<const HnRenderParam*>(RenderDelegate.GetRenderParam())->GetTextureBindingMode();
980+
const HN_MATERIAL_TEXTURES_BINDING_MODE BindingMode = static_cast<const HnRenderParam*>(RenderDelegate.GetRenderParam())->GetConfig().TextureBindingMode;
981981

982982
Uint32 ResourceCacheVersion = SRBCache->GetMaterialAttribsBufferVersion();
983983
if (BindingMode == HN_MATERIAL_TEXTURES_BINDING_MODE_ATLAS)
@@ -1047,7 +1047,7 @@ bool HnMaterial::UpdateSRB(HnRenderDelegate& RenderDelegate)
10471047

10481048
HnMaterialSRBCache::ResourceKey SRBKey{m_ResourceCacheVersion};
10491049

1050-
const HN_MATERIAL_TEXTURES_BINDING_MODE BindingMode = static_cast<const HnRenderParam*>(RenderDelegate.GetRenderParam())->GetTextureBindingMode();
1050+
const HN_MATERIAL_TEXTURES_BINDING_MODE BindingMode = static_cast<const HnRenderParam*>(RenderDelegate.GetRenderParam())->GetConfig().TextureBindingMode;
10511051
if (BindingMode == HN_MATERIAL_TEXTURES_BINDING_MODE_LEGACY ||
10521052
BindingMode == HN_MATERIAL_TEXTURES_BINDING_MODE_ATLAS)
10531053
{

Hydrogent/src/HnMesh.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ void HnMesh::Sync(pxr::HdSceneDelegate* Delegate,
202202
HnRenderDelegate* RenderDelegate = static_cast<HnRenderDelegate*>(Delegate->GetRenderIndex().GetRenderDelegate());
203203
HnGeometryPool& GeometryPool = RenderDelegate->GetGeometryPool();
204204
const Int64 PendingGeometrySize = GeometryPool.GetPendingVertexDataSize() + GeometryPool.GetPendingIndexDataSize();
205-
const Uint64 GeometryLoadBudget = static_cast<HnRenderParam*>(RenderParam)->GetGeometryLoadBudget();
205+
const Uint64 GeometryLoadBudget = static_cast<HnRenderParam*>(RenderParam)->GetConfig().GeometryLoadBudget;
206206
bool ReprUpdated = false;
207207
if (GeometryLoadBudget == 0 || static_cast<Uint64>(PendingGeometrySize) < GeometryLoadBudget)
208208
{
@@ -401,7 +401,7 @@ void HnMesh::UpdateRepr(pxr::HdSceneDelegate& SceneDelegate,
401401
DirtyBits &= ~pxr::HdChangeTracker::DirtyPrimvar;
402402
}
403403

404-
const bool UseNativeStartVertex = static_cast<HnRenderParam*>(RenderParam)->GetUseNativeStartVertex();
404+
const bool UseNativeStartVertex = static_cast<HnRenderParam*>(RenderParam)->GetConfig().UseNativeStartVertex;
405405

406406
// When native start vertex is not supported, start vertex needs to be baked into the index data.
407407
Uint32 BakedStartVertex = (!UseNativeStartVertex && m_VertexHandle) ? m_VertexHandle->GetStartVertex() : 0;
@@ -1138,7 +1138,7 @@ void HnMesh::UpdateDrawItemGpuGeometry(HnRenderDelegate& RenderDelegate)
11381138
void HnMesh::UpdateDrawItemGpuTopology(HnRenderDelegate& RenderDelegate)
11391139
{
11401140
const HnRenderParam* pRenderParam = static_cast<const HnRenderParam*>(RenderDelegate.GetRenderParam());
1141-
const Uint32 StartVertex = pRenderParam->GetUseNativeStartVertex() ? m_VertexHandle->GetStartVertex() : 0;
1141+
const Uint32 StartVertex = pRenderParam->GetConfig().UseNativeStartVertex ? m_VertexHandle->GetStartVertex() : 0;
11421142

11431143
Uint32 SubsetIdx = 0;
11441144
ProcessDrawItems(

Hydrogent/src/HnRenderDelegate.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -462,13 +462,15 @@ HnRenderDelegate::HnRenderDelegate(const CreateInfo& CI) :
462462
},
463463
m_RenderParam{
464464
std::make_unique<HnRenderParam>(
465-
CI.UseVertexPool,
466-
CI.UseIndexPool,
467-
CI.AsyncShaderCompilation,
468-
!CI.pDevice->GetDeviceInfo().IsGLDevice(), // UseNativeStartVertex
469-
CI.TextureBindingMode,
470-
CI.MetersPerUnit,
471-
CI.GeometryLoadBudget),
465+
HnRenderParam::Configuration{
466+
CI.UseVertexPool,
467+
CI.UseIndexPool,
468+
CI.AsyncShaderCompilation,
469+
!CI.pDevice->GetDeviceInfo().IsGLDevice(), // UseNativeStartVertex
470+
CI.TextureBindingMode,
471+
CI.MetersPerUnit,
472+
CI.GeometryLoadBudget,
473+
}),
472474
},
473475
m_ShadowMapManager{CreateShadowMapManager(CI)}
474476
{

Hydrogent/src/HnRenderParam.cpp

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,8 @@ namespace Diligent
3232
namespace USD
3333
{
3434

35-
HnRenderParam::HnRenderParam(bool UseVertexPool,
36-
bool UseIndexPool,
37-
bool AsyncShaderCompilation,
38-
bool UseNativeStartVertex,
39-
HN_MATERIAL_TEXTURES_BINDING_MODE TextureBindingMode,
40-
float MetersPerUnit,
41-
Uint64 GeometryLoadBudget) noexcept :
42-
m_UseVertexPool{UseVertexPool},
43-
m_UseIndexPool{UseIndexPool},
44-
m_AsyncShaderCompilation{AsyncShaderCompilation},
45-
m_UseNativeStartVertex{UseNativeStartVertex},
46-
m_TextureBindingMode{TextureBindingMode},
47-
m_MetersPerUnit{MetersPerUnit},
48-
m_GeometryLoadBudget{GeometryLoadBudget}
35+
HnRenderParam::HnRenderParam(const Configuration& Config) noexcept :
36+
m_Config{Config}
4937
{
5038
for (auto& Version : m_GlobalAttribVersions)
5139
Version.store(0);

Hydrogent/src/HnRenderPass.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1264,7 +1264,7 @@ void HnRenderPass::UpdateDrawListItemGPUResources(DrawListItem& ListItem, Render
12641264
const auto ShaderTextureIndexingId = pMaterial->GetStaticShaderTextureIndexingId();
12651265

12661266
PBR_Renderer::PsoCacheAccessor::GET_FLAGS GetPSOFlags = PBR_Renderer::PsoCacheAccessor::GET_FLAG_CREATE_IF_NULL;
1267-
if (State.RenderParam.GetAsyncShaderCompilation())
1267+
if (State.RenderParam.GetConfig().AsyncShaderCompilation)
12681268
GetPSOFlags |= PBR_Renderer::PsoCacheAccessor::GET_FLAG_ASYNC_COMPILE;
12691269

12701270
if (Geo.Joints != nullptr)
@@ -1302,7 +1302,7 @@ void HnRenderPass::UpdateDrawListItemGPUResources(DrawListItem& ListItem, Render
13021302
"This may indicate an issue in how alpha mode is determined in the material, or (less likely) an issue in Rprim sorting by Hydra.");
13031303
}
13041304

1305-
if (State.RenderParam.GetTextureBindingMode() == HN_MATERIAL_TEXTURES_BINDING_MODE_ATLAS)
1305+
if (State.RenderParam.GetConfig().TextureBindingMode == HN_MATERIAL_TEXTURES_BINDING_MODE_ATLAS)
13061306
PSOFlags |= PBR_Renderer::PSO_FLAG_USE_TEXTURE_ATLAS;
13071307

13081308
if (State.USDRenderer.GetSettings().EnableShadows &&

Hydrogent/src/Tasks/HnBeginFrameTask.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ void HnBeginFrameTask::UpdateFrameConstants(IDeviceContext* pCtx,
520520
CamAttribs.f2Jitter = Jitter;
521521
CamAttribs.fFStop = m_pCamera->GetFStop();
522522

523-
const float MetersPerUnit = RenderParam ? RenderParam->GetMetersPerUnit() : 0.01f;
523+
const float MetersPerUnit = RenderParam ? RenderParam->GetConfig().MetersPerUnit : 0.01f;
524524

525525
// USD camera properties are measured in scene units, but Diligent camera expects them in world units.
526526
CamAttribs.fFocusDistance = m_pCamera->GetFocusDistance() * MetersPerUnit;

Hydrogent/src/Tasks/HnPostProcessTask.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ void HnPostProcessTask::CreateVectorFieldRenderer(TEXTURE_FORMAT RTVFormat)
482482
CI.NumRenderTargets = 1;
483483
CI.RTVFormats[0] = RTVFormat;
484484
CI.PackMatrixRowMajor = RenderDelegate->GetUSDRenderer()->GetSettings().PackMatrixRowMajor;
485-
CI.AsyncShaders = pRenderParam->GetAsyncShaderCompilation();
485+
CI.AsyncShaders = pRenderParam->GetConfig().AsyncShaderCompilation;
486486

487487
m_VectorFieldRenderer = std::make_unique<VectorFieldRenderer>(CI);
488488
}
@@ -562,7 +562,7 @@ void HnPostProcessTask::Prepare(pxr::HdTaskContext* TaskCtx,
562562
}
563563

564564
const HnRenderParam* pRenderParam = static_cast<const HnRenderParam*>(RenderDelegate->GetRenderParam());
565-
const bool AsyncShaderCompilation = pRenderParam->GetAsyncShaderCompilation();
565+
const bool AsyncShaderCompilation = pRenderParam->GetConfig().AsyncShaderCompilation;
566566
if (!m_PostFXContext)
567567
{
568568
PostFXContext::CreateInfo PostFXCI;

0 commit comments

Comments
 (0)