Files
UnrealEngineUWP/Engine/Source/Editor/UnrealEd/Private/Commandlets/CompileShadersTestBedCommandlet.cpp
Jason Nadro 3f5f9b6e28 Adding compilation of DefaultMaterials to the ShadersTestBedCommandlet.
#rb trivial
#jira none
#preflight 623c923dc3399da953426633

[CL 19497182 by Jason Nadro in ue5-main branch]
2022-03-24 12:14:13 -04:00

56 lines
1.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Commandlets/CompileShadersTestBedCommandlet.h"
#include "GlobalShader.h"
#include "Materials/Material.h"
#include "ShaderCompiler.h"
DEFINE_LOG_CATEGORY_STATIC(LogCompileShadersTestBedCommandlet, Log, All);
UCompileShadersTestBedCommandlet::UCompileShadersTestBedCommandlet(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
int32 UCompileShadersTestBedCommandlet::Main(const FString& Params)
{
TRACE_CPUPROFILER_EVENT_SCOPE(UCompileShadersTestBedCommandlet::Main);
TArray<FString> Tokens;
TArray<FString> Switches;
TMap<FString, FString> ParamVals;
UCommandlet::ParseCommandLine(*Params, Tokens, Switches, ParamVals);
// Display help
if (Switches.Contains("help"))
{
UE_LOG(LogCompileShadersTestBedCommandlet, Log, TEXT("CompileShadersTestBed"));
UE_LOG(LogCompileShadersTestBedCommandlet, Log, TEXT("This commandlet compiles global and default material shaders. Used to profile and test shader compilation."));
return 0;
}
PRIVATE_GAllowCommandletRendering = true;
{
TRACE_CPUPROFILER_EVENT_SCOPE(DefaultMaterials);
for (int32 Domain = 0; Domain < MD_MAX; ++Domain)
{
UMaterial::GetDefaultMaterial(static_cast<EMaterialDomain>(Domain))->CacheShaders(EMaterialShaderPrecompileMode::Background);
}
GShaderCompilingManager->FinishAllCompilation();
}
{
TRACE_CPUPROFILER_EVENT_SCOPE(GlobalShaders);
CompileGlobalShaderMap(true);
TArray<int32> ShaderMapIds;
ShaderMapIds.Add(GlobalShaderMapId);
GShaderCompilingManager->FinishCompilation(TEXT("Global"), ShaderMapIds);
}
return 0;
}