Fix bug in ShaderVariantAssetBuilder. Add cvar in MeshDrawPacket class. (#61)

Fix bug in ShaderVariantAssetBuilder. Add a console variable to force root shader variant usage.
This commit is contained in:
hershey5045
2021-04-16 12:06:05 -07:00
committed by GitHub
parent 9c4d8513f1
commit 8378f52ba6
4 changed files with 24 additions and 3 deletions
@@ -17,11 +17,20 @@
#include <Atom/RPI.Public/Scene.h>
#include <Atom/RPI.Reflect/Material/MaterialFunctor.h>
#include <Atom/RHI/DrawPacketBuilder.h>
#include <AzCore/Console/Console.h>
namespace AZ
{
namespace RPI
{
AZ_CVAR(bool,
r_forceRootShaderVariantUsage,
false,
[](const bool&) { AZ::Interface<AZ::IConsole>::Get()->PerformCommand("MeshFeatureProcessor.ForceRebuildDrawPackets"); },
ConsoleFunctorFlags::Null,
"(For Testing) Forces usage of root shader variant in the mesh draw packet level, ignoring any other shader variants that may exist."
);
MeshDrawPacket::MeshDrawPacket(
ModelLod& modelLod,
size_t modelLodMeshIndex,
@@ -187,7 +196,7 @@ namespace AZ
}
const ShaderVariantId finalVariantId = shaderOptions.GetShaderVariantId();
const ShaderVariant& variant = shader->GetVariant(finalVariantId);
const ShaderVariant& variant = r_forceRootShaderVariantUsage ? shader->GetRootVariant() : shader->GetVariant(finalVariantId);
Data::Instance<ShaderResourceGroup> drawSrg;
if (drawSrgAsset)