cleanup code so it's easier to understand

this should make it clearer how we set the per primitive variant
when SSR and shadowin is involved
This commit is contained in:
Mathias Agopian
2024-10-08 10:22:50 -07:00
committed by Mathias Agopian
parent 26b42a7685
commit 58aa74b4ae
+11 -5
View File
@@ -655,12 +655,18 @@ RenderPass::Command* RenderPass::generateCommandsImpl(RenderPass::CommandTypeFla
bool const hasSkinning = soaVisibility[i].skinning;
bool const hasSkinningOrMorphing = hasSkinning || hasMorphing;
// if we are already an SSR variant, the SRE bit is already set,
// there is no harm setting it again
// if we are already an SSR variant, the SRE bit is already set
static_assert(Variant::SPECIAL_SSR & Variant::SRE);
Variant renderableVariant = variant;
renderableVariant.setShadowReceiver(
Variant::isSSRVariant(variant) || (soaVisibility[i].receiveShadows & hasShadowing));
Variant renderableVariant{ variant };
// we can't have SSR and shadowing together by construction
bool const isSsrVariant = Variant::isSSRVariant(variant);
assert_invariant((isSsrVariant && !hasShadowing) || !isSsrVariant);
if (!isSsrVariant) {
// set the SRE variant, unless we're in SSR mode
renderableVariant.setShadowReceiver(soaVisibility[i].receiveShadows && hasShadowing);
}
renderableVariant.setSkinning(hasSkinningOrMorphing);
FRenderableManager::SkinningBindingInfo const& skinning = soaSkinning[i];