From 1995e92051a9a3d5481898f98de29e01ce756063 Mon Sep 17 00:00:00 2001 From: krickw Date: Mon, 27 Apr 2020 11:34:01 -0400 Subject: [PATCH 1/6] Turn on multidraw diffuseColor consolidation for MRenderItem's using the fallback shader. --- lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp | 8 ++++++++ lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp | 1 + 2 files changed, 9 insertions(+) diff --git a/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp b/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp index 8259bee12f..4c37b59a6a 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp @@ -108,6 +108,9 @@ namespace { //! If true, associate geometric buffers to the render item and trigger consolidation/instancing update bool _geometryDirty{ false }; + //! Is _shader a fallback shader + bool _isFallbackShader { false }; + //! Construct valid commit state CommitState(HdVP2DrawItem& item) : _drawItemData(item.GetRenderItemData()) {} @@ -916,11 +919,13 @@ HdVP2BasisCurves::_UpdateDrawItem( shader = _delegate->GetBasisCurvesLinearFallbackShader(clr); primitiveType = MHWRender::MGeometry::kPatch; primitiveStride = 2; + stateToCommit._isFallbackShader = true; } else { shader = _delegate->GetBasisCurvesCubicFallbackShader(clr); primitiveType = MHWRender::MGeometry::kPatch; primitiveStride = 4; + stateToCommit._isFallbackShader = true; } if (shader != nullptr && shader != drawItemData._shader) { @@ -1153,11 +1158,13 @@ HdVP2BasisCurves::_UpdateDrawItem( shader = _delegate->GetBasisCurvesLinearFallbackShader(kSelectionHighlightColor); primitiveType = MHWRender::MGeometry::kPatch; primitiveStride = 2; + stateToCommit._isFallbackShader = true; } else { shader = _delegate->GetBasisCurvesCubicFallbackShader(kSelectionHighlightColor); primitiveType = MHWRender::MGeometry::kPatch; primitiveStride = 4; + stateToCommit._isFallbackShader = true; } } } @@ -1280,6 +1287,7 @@ HdVP2BasisCurves::_UpdateDrawItem( // If available, something changed if (stateToCommit._shader != nullptr) { renderItem->setShader(stateToCommit._shader); + renderItem->setWantDiffuseColorMultiDrawConsolidation(stateToCommit._isFallbackShader); renderItem->setTreatAsTransparent(stateToCommit._isTransparent); } diff --git a/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp b/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp index 73cd2245d9..818b5a3d25 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp @@ -1612,6 +1612,7 @@ MHWRender::MRenderItem* HdVP2Mesh::_CreateSmoothHullRenderItem(const MString& na renderItem->castsShadows(true); renderItem->receivesShadows(true); renderItem->setShader(_delegate->GetFallbackShader(kOpaqueGray)); + renderItem->setWantDiffuseColorMultiDrawConsolidation(true); renderItem->setSelectionMask(MSelectionMask::kSelectMeshes); setWantConsolidation(*renderItem, true); From 4835a98008eae5fb978c3ba9ae6a6d59c0abe000 Mon Sep 17 00:00:00 2001 From: krickw Date: Mon, 27 Apr 2020 12:21:03 -0400 Subject: [PATCH 2/6] Add API version protection for setWantDiffuseColorMultiDrawConsolidation. --- lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp | 2 ++ lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp b/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp index 4c37b59a6a..186522aba7 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp @@ -1287,7 +1287,9 @@ HdVP2BasisCurves::_UpdateDrawItem( // If available, something changed if (stateToCommit._shader != nullptr) { renderItem->setShader(stateToCommit._shader); +#if MAYA_API_VERSION >= 20210000 renderItem->setWantDiffuseColorMultiDrawConsolidation(stateToCommit._isFallbackShader); +#endif renderItem->setTreatAsTransparent(stateToCommit._isTransparent); } diff --git a/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp b/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp index 818b5a3d25..da454ac1bd 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp @@ -1612,7 +1612,9 @@ MHWRender::MRenderItem* HdVP2Mesh::_CreateSmoothHullRenderItem(const MString& na renderItem->castsShadows(true); renderItem->receivesShadows(true); renderItem->setShader(_delegate->GetFallbackShader(kOpaqueGray)); +#if MAYA_API_VERSION >= 20210000 renderItem->setWantDiffuseColorMultiDrawConsolidation(true); +#endif renderItem->setSelectionMask(MSelectionMask::kSelectMeshes); setWantConsolidation(*renderItem, true); From 6757049ed9fbbc04dfb048d201c047d7cd179079 Mon Sep 17 00:00:00 2001 From: krickw Date: Wed, 13 May 2020 13:18:45 -0400 Subject: [PATCH 3/6] Update MayaUSD to use the new version of the prototype API. --- lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp | 3 --- lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp | 3 --- lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp | 3 +++ 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp b/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp index 186522aba7..58a0bb3804 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp @@ -1287,9 +1287,6 @@ HdVP2BasisCurves::_UpdateDrawItem( // If available, something changed if (stateToCommit._shader != nullptr) { renderItem->setShader(stateToCommit._shader); -#if MAYA_API_VERSION >= 20210000 - renderItem->setWantDiffuseColorMultiDrawConsolidation(stateToCommit._isFallbackShader); -#endif renderItem->setTreatAsTransparent(stateToCommit._isTransparent); } diff --git a/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp b/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp index da454ac1bd..73cd2245d9 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/mesh.cpp @@ -1612,9 +1612,6 @@ MHWRender::MRenderItem* HdVP2Mesh::_CreateSmoothHullRenderItem(const MString& na renderItem->castsShadows(true); renderItem->receivesShadows(true); renderItem->setShader(_delegate->GetFallbackShader(kOpaqueGray)); -#if MAYA_API_VERSION >= 20210000 - renderItem->setWantDiffuseColorMultiDrawConsolidation(true); -#endif renderItem->setSelectionMask(MSelectionMask::kSelectMeshes); setWantConsolidation(*renderItem, true); diff --git a/lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp b/lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp index d5e894bd50..6f8abf829f 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp @@ -272,6 +272,9 @@ namespace if (TF_VERIFY(shaderMgr)) { shader = shaderMgr->getFragmentShader( _fallbackShaderNames[index], _structOutputName, true); +#if MAYA_API_VERSION >= 20210000 + shader->setWantDiffuseColorMultiDrawConsolidation(true); +#endif } } From afe0f881aa8c69b2292350261c93ad817610d39d Mon Sep 17 00:00:00 2001 From: krickw Date: Wed, 13 May 2020 13:28:27 -0400 Subject: [PATCH 4/6] Remove _isFallbackShader. --- lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp b/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp index 58a0bb3804..8259bee12f 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/basisCurves.cpp @@ -108,9 +108,6 @@ namespace { //! If true, associate geometric buffers to the render item and trigger consolidation/instancing update bool _geometryDirty{ false }; - //! Is _shader a fallback shader - bool _isFallbackShader { false }; - //! Construct valid commit state CommitState(HdVP2DrawItem& item) : _drawItemData(item.GetRenderItemData()) {} @@ -919,13 +916,11 @@ HdVP2BasisCurves::_UpdateDrawItem( shader = _delegate->GetBasisCurvesLinearFallbackShader(clr); primitiveType = MHWRender::MGeometry::kPatch; primitiveStride = 2; - stateToCommit._isFallbackShader = true; } else { shader = _delegate->GetBasisCurvesCubicFallbackShader(clr); primitiveType = MHWRender::MGeometry::kPatch; primitiveStride = 4; - stateToCommit._isFallbackShader = true; } if (shader != nullptr && shader != drawItemData._shader) { @@ -1158,13 +1153,11 @@ HdVP2BasisCurves::_UpdateDrawItem( shader = _delegate->GetBasisCurvesLinearFallbackShader(kSelectionHighlightColor); primitiveType = MHWRender::MGeometry::kPatch; primitiveStride = 2; - stateToCommit._isFallbackShader = true; } else { shader = _delegate->GetBasisCurvesCubicFallbackShader(kSelectionHighlightColor); primitiveType = MHWRender::MGeometry::kPatch; primitiveStride = 4; - stateToCommit._isFallbackShader = true; } } } From 4231b85ac1f5e0f04fa553524bcc866b40d9f4e1 Mon Sep 17 00:00:00 2001 From: krickw Date: Thu, 14 May 2020 15:52:59 -0400 Subject: [PATCH 5/6] Update for the new interface. --- lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp b/lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp index 6f8abf829f..fea77cc25c 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp @@ -273,7 +273,8 @@ namespace shader = shaderMgr->getFragmentShader( _fallbackShaderNames[index], _structOutputName, true); #if MAYA_API_VERSION >= 20210000 - shader->setWantDiffuseColorMultiDrawConsolidation(true); + MString diffuseColorParamName("diffuseColor"); + shader->setWantMultiDrawConsolidation(diffuseColorParamName, true); #endif } } From 5a309f2c1792304901b33902ed6e05f2ef201848 Mon Sep 17 00:00:00 2001 From: krickw Date: Thu, 14 May 2020 16:08:18 -0400 Subject: [PATCH 6/6] Use the already defined MString. --- lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp b/lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp index fea77cc25c..26658f455c 100644 --- a/lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp +++ b/lib/mayaUsd/render/vp2RenderDelegate/render_delegate.cpp @@ -273,8 +273,7 @@ namespace shader = shaderMgr->getFragmentShader( _fallbackShaderNames[index], _structOutputName, true); #if MAYA_API_VERSION >= 20210000 - MString diffuseColorParamName("diffuseColor"); - shader->setWantMultiDrawConsolidation(diffuseColorParamName, true); + shader->setWantMultiDrawConsolidation(_diffuseColorParameterName, true); #endif } }