Skip to content

Commit

Permalink
[hdx] Add additional function for MSAA update (PixarAnimationStudios#…
Browse files Browse the repository at this point in the history
  • Loading branch information
kohakukun authored and GitHub Enterprise committed Nov 11, 2024
1 parent d682a1a commit ee4c436
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 9 deletions.
2 changes: 1 addition & 1 deletion pxr/imaging/hdx/effectsShader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,7 @@ HdxEffectsShader::_CreatePipeline(

void
HdxEffectsShader::_DestroyPipeline()
{
{
if (_pipeline) {
_hgi->DestroyGraphicsPipeline(&_pipeline);
}
Expand Down
31 changes: 24 additions & 7 deletions pxr/imaging/hdx/taskController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1852,8 +1852,8 @@ HdxTaskController::SetRenderViewport(GfVec4d const& viewport)
_SetCameraFramingForTasks();

// Update all of the render buffer sizes as well.
_renderBufferSize = _ViewportToAovDimensions(viewport);
_UpdateAovBufferDescriptor();
_UpdateAovDimensions(_ViewportToAovDimensions(viewport));
GetRenderIndex()->SetRenderViewport(viewport);
}

void
Expand All @@ -1865,7 +1865,7 @@ HdxTaskController::SetRenderBufferSize(const GfVec2i &size)

_renderBufferSize = size;

_UpdateAovBufferDescriptor();
_UpdateAovDimensions();
}

void
Expand Down Expand Up @@ -2142,18 +2142,35 @@ HdxTaskController::_SetCameraFramingForTasks()
}

void
HdxTaskController::_UpdateAovBufferDescriptor()
HdxTaskController::_UpdateAovDimensions()
{
const GfVec3i dimensions3(_renderBufferSize[0], _renderBufferSize[1], 1);
const GfVec3i dimensions3(dimensions[0], dimensions[1], 1);

HdChangeTracker &changeTracker = GetRenderIndex()->GetChangeTracker();

for (auto const& id : _aovBufferIds) {
HdRenderBufferDescriptor desc =
_delegate.GetParameter<HdRenderBufferDescriptor>(id,
_tokens->renderBufferDescriptor);
if (desc.dimensions != dimensions3 || desc.multiSampled != _enableMultisampling) {
if (desc.dimensions != dimensions3) {
desc.dimensions = dimensions3;
_delegate.SetParameter(id, _tokens->renderBufferDescriptor, desc);
changeTracker.MarkBprimDirty(id,
HdRenderBuffer::DirtyDescription);
}
}
}

void
HdxTaskController::_UpdateAovMSAADescriptor()
{
HdChangeTracker &changeTracker = GetRenderIndex()->GetChangeTracker();

for (auto const& id : _aovBufferIds) {
HdRenderBufferDescriptor desc =
_delegate.GetParameter<HdRenderBufferDescriptor>(id,
_tokens->renderBufferDescriptor);
if (desc.multiSampled != _enableMultisampling) {
desc.multiSampled = _enableMultisampling;
_delegate.SetParameter(id, _tokens->renderBufferDescriptor, desc);
changeTracker.MarkBprimDirty(id,
Expand All @@ -2179,7 +2196,7 @@ HdxTaskController::SetMultisampleState(const size_t &msaaSampleCount, bool enabl
{
if (_enableMultisampling != enableMultisampling) {
_enableMultisampling = enableMultisampling;
_UpdateAovBufferDescriptor();
_UpdateAovMSAADescriptor();
}

if (_msaaSampleCount != msaaSampleCount) {
Expand Down
3 changes: 2 additions & 1 deletion pxr/imaging/hdx/taskController.h
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,8 @@ class HdxTaskController final

void _SetCameraParamForTasks(SdfPath const& id);
void _SetCameraFramingForTasks();
void _UpdateAovBufferDescriptor();
void _UpdateAovDimensions(GfVec2i const& dimensions);
void _UpdateAovMSAADescriptor();
void _UpdateAovMSAASampleCount();

void _SetBlendStateForMaterialTag(TfToken const& materialTag,
Expand Down

0 comments on commit ee4c436

Please sign in to comment.