Skip to content

Commit 649e2e8

Browse files
HnMaterial: slightly reworked ApplyMaterialAttribsBufferOffset method
1 parent 5be06fb commit 649e2e8

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

Hydrogent/interface/HnMaterial.hpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,15 @@ class HnMaterial final : public pxr::HdMaterial
9191
m_PrimitiveAttribsVar->SetBufferOffset(PrimitiveAttribsOffset);
9292
return m_SRB;
9393
}
94-
void ApplyMaterialAttribsBufferOffset() const
94+
void ApplyMaterialAttribsBufferOffset(Uint32& CurrentOffset) const
9595
{
9696
VERIFY_EXPR(m_MaterialAttribsVar != nullptr);
9797
VERIFY_EXPR(m_PBRMaterialAttribsBufferOffset != ~0u);
98-
m_MaterialAttribsVar->SetBufferOffset(m_PBRMaterialAttribsBufferOffset);
98+
if (CurrentOffset != m_PBRMaterialAttribsBufferOffset)
99+
{
100+
m_MaterialAttribsVar->SetBufferOffset(m_PBRMaterialAttribsBufferOffset);
101+
CurrentOffset = m_PBRMaterialAttribsBufferOffset;
102+
}
99103
}
100104
void SetJointsBufferOffset(Uint32 Offset) const
101105
{
@@ -137,11 +141,6 @@ class HnMaterial final : public pxr::HdMaterial
137141

138142
Uint32 GetPBRPrimitiveAttribsBufferRange() const { return m_PBRPrimitiveAttribsBufferRange; }
139143
Uint32 GetPBRMaterialAttribsSize() const { return m_PBRMaterialAttribsSize; }
140-
Uint32 GetPBRMaterialAttribsBufferOffset() const
141-
{
142-
VERIFY_EXPR(m_PBRMaterialAttribsBufferOffset != ~0u);
143-
return m_PBRMaterialAttribsBufferOffset;
144-
}
145144

146145
private:
147146
HnMaterial(pxr::SdfPath const& id);

Hydrogent/src/HnRenderPass.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,11 @@ struct HnRenderPass::RenderState
153153
return;
154154
}
155155

156-
if (pNewSRB != this->pMaterialSRB || this->MaterialBufferOffset != Material.GetPBRMaterialAttribsBufferOffset())
156+
if (pNewSRB != this->pMaterialSRB)
157157
{
158-
Material.ApplyMaterialAttribsBufferOffset();
159-
this->MaterialBufferOffset = Material.GetPBRMaterialAttribsBufferOffset();
158+
this->MaterialBufferOffset = ~0u;
160159
}
160+
Material.ApplyMaterialAttribsBufferOffset(this->MaterialBufferOffset);
161161

162162
if (pNewSRB == this->pMaterialSRB)
163163
return;
@@ -226,7 +226,7 @@ struct HnRenderPass::RenderState
226226

227227
IBuffer* pIndexBuffer = nullptr;
228228

229-
Uint32 MaterialBufferOffset = 0;
229+
Uint32 MaterialBufferOffset = ~0u;
230230

231231
Uint32 NumVertexBuffers = 0;
232232
std::array<IBuffer*, VERTEX_BUFFER_SLOT_COUNT> ppVertexBuffers = {};

0 commit comments

Comments
 (0)