Skip to content

Commit c0b9b9f

Browse files
authored
Fix frame uniform binding in Metal rendering (AcademySoftwareFoundation#2415)
This PR adjusts how the frame uniform is bound in the Metal renderers of the Graph Editor and Viewer so that the frame index is correctly propagated to shaders.
1 parent 286e458 commit c0b9b9f

3 files changed

Lines changed: 4 additions & 9 deletions

File tree

source/MaterialXGraphEditor/RenderView.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -808,10 +808,7 @@ void RenderView::renderFrame()
808808
{
809809
material->getProgram()->bindUniform(mx::HW::ALPHA_THRESHOLD, mx::Value::createValue(0.99f));
810810
}
811-
if (material->getProgram()->hasUniform(mx::HW::FRAME))
812-
{
813-
material->getProgram()->bindUniform(mx::HW::FRAME, mx::Value::createValue(static_cast<float>(_frame)));
814-
}
811+
material->getProgram()->bindTimeAndFrame(1.0f, static_cast<float>(_frame));
815812
material->bindViewInformation(_viewCamera);
816813
material->bindLighting(_lightHandler, _imageHandler, shadowState);
817814
material->bindImages(_imageHandler, _searchPath);
@@ -839,6 +836,7 @@ void RenderView::renderFrame()
839836
{
840837
material->getProgram()->bindUniform(mx::HW::ALPHA_THRESHOLD, mx::Value::createValue(0.001f));
841838
}
839+
material->getProgram()->bindTimeAndFrame(1.0f, static_cast<float>(_frame));
842840
material->bindViewInformation(_viewCamera);
843841
material->bindLighting(_lightHandler, _imageHandler, shadowState);
844842
material->bindImages(_imageHandler, _searchPath);

source/MaterialXRenderMsl/MslPipelineStateObject.mm

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,6 @@ int GetStrideOfMetalType(MTLDataType type)
344344

345345
// Bind based on inputs found
346346
bindViewInformation(cam);
347-
bindTimeAndFrame();
348347
bindLighting(lightHandler, imageHandler);
349348
bindTextures(renderCmdEncoder, lightHandler, imageHandler);
350349
bindUniformBuffers(renderCmdEncoder, lightHandler, cam);

source/MaterialXView/RenderPipelineMetal.mm

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -542,10 +542,7 @@
542542
{
543543
material->getProgram()->bindUniform(mx::HW::ALPHA_THRESHOLD, mx::Value::createValue(0.99f));
544544
}
545-
if (material->getProgram()->hasUniform(mx::HW::FRAME))
546-
{
547-
material->getProgram()->bindUniform(mx::HW::FRAME, mx::Value::createValue((float)_frame));
548-
}
545+
material->getProgram()->bindTimeAndFrame(1.0f, static_cast<float>(_frame));
549546
material->bindViewInformation(viewCamera);
550547
material->bindLighting(lightHandler, imageHandler, shadowState);
551548
material->bindImages(imageHandler, _viewer->_searchPath);
@@ -577,6 +574,7 @@
577574
{
578575
material->getProgram()->bindUniform(mx::HW::ALPHA_THRESHOLD, mx::Value::createValue(0.001f));
579576
}
577+
material->getProgram()->bindTimeAndFrame(1.0f, static_cast<float>(_frame));
580578
material->bindViewInformation(viewCamera);
581579
material->bindLighting(lightHandler, imageHandler, shadowState);
582580
material->bindImages(imageHandler, searchPath);

0 commit comments

Comments
 (0)