UDN: [Link Removed]
In order to make it easier to track down (future) assets that could cause this crash we modified EmitNullShaderParameterFatalError() to also dump the asset filename if possible:
void EmitNullShaderParameterFatalError(const TShaderRef<FShader>& Shader, const FShaderParametersMetadata* ParametersMetadata, uint16 MemberOffset)
{
FString MemberName = ParametersMetadata->GetFullMemberCodeName(MemberOffset);
const TCHAR* ShaderClassName = Shader.GetType()->GetName();
FString OwnerName("File unknown");
#if !UE_BUILD_SHIPPING
const FShaderMapBase* ShaderMap = Shader.GetShaderMap();
if (ShaderMap)
{
FShaderMapResource* ShaderResource = ShaderMap->GetResource();
if (ShaderResource)
{
OwnerName = ShaderResource->GetOwnerName().ToString();
}
}
#endif
UE_LOG(LogShaders, Fatal,
TEXT("%s's required shader parameter %s::%s was not set. [%s]"),
ShaderClassName,
ParametersMetadata->GetStructTypeName(),
*MemberName,
*OwnerName);
}
Q. Do we need to "guard" this with an #if RHI_ENABLE_RESOURCE_INFO ... #endif ?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-210422 in the post.