You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
* Simplifty substrate view mode to ease adding them to the level menu * Add project vs. on screen max byte per pixel on screen #rb none #jira none #preflight 641331a2394f0c45f6a8504d [CL 24675783 by Charles deRousiers in ue5-main branch]
213 lines
6.3 KiB
C++
213 lines
6.3 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "StrataVisualizationData.h"
|
|
#include "HAL/IConsoleManager.h"
|
|
#include "Materials/Material.h"
|
|
#include "Misc/ConfigCacheIni.h"
|
|
#include "RenderUtils.h"
|
|
|
|
#define LOCTEXT_NAMESPACE "FStrataVisualizationData"
|
|
|
|
static FStrataVisualizationData GStrataVisualizationData;
|
|
|
|
static FString ConfigureConsoleCommand(FStrataVisualizationData::TModeMap& ModeMap)
|
|
{
|
|
FString AvailableVisualizationModes;
|
|
for (FStrataVisualizationData::TModeMap::TConstIterator It = ModeMap.CreateConstIterator(); It; ++It)
|
|
{
|
|
const FStrataVisualizationData::FModeRecord& Record = It.Value();
|
|
AvailableVisualizationModes += FString(TEXT("\n Value="));
|
|
AvailableVisualizationModes += FString::Printf(TEXT("%d: "), uint8(Record.ViewMode));
|
|
AvailableVisualizationModes += Record.ModeString;
|
|
if (!Record.bAvailableCommand)
|
|
{
|
|
AvailableVisualizationModes += FString::Printf(TEXT(" --- Unavailable, reason: %s"), *Record.UnavailableReason.ToString());
|
|
}
|
|
}
|
|
|
|
FString Out;
|
|
Out = TEXT("When the viewport view-mode is set to 'Substrate Visualization', this command specifies which of the various channels to display. Values entered other than the allowed values shown below will be ignored.");
|
|
Out += AvailableVisualizationModes;
|
|
|
|
IConsoleManager::Get().RegisterConsoleVariable(
|
|
FStrataVisualizationData::GetVisualizeConsoleCommandName(),
|
|
0,
|
|
*Out,
|
|
ECVF_Cheat);
|
|
|
|
return Out;
|
|
}
|
|
|
|
static void AddVisualizationMode(
|
|
FStrataVisualizationData::TModeMap& ModeMap,
|
|
const TCHAR* ModeString,
|
|
const FText& ModeText,
|
|
const FText& ModeDesc,
|
|
const FStrataViewMode ViewMode,
|
|
bool bDefaultComposited,
|
|
bool bAvailableCommand,
|
|
const FText& UnavailableReason
|
|
)
|
|
{
|
|
const FName ModeName = FName(ModeString);
|
|
|
|
FStrataVisualizationData::FModeRecord& Record = ModeMap.Emplace(ModeName);
|
|
Record.ModeString = FString(ModeString);
|
|
Record.ModeName = ModeName;
|
|
Record.ModeText = ModeText;
|
|
Record.ModeDesc = ModeDesc;
|
|
Record.ViewMode = ViewMode;
|
|
Record.bDefaultComposited = bDefaultComposited;
|
|
Record.bAvailableCommand = bAvailableCommand;
|
|
Record.UnavailableReason = UnavailableReason;
|
|
}
|
|
|
|
void FStrataVisualizationData::Initialize()
|
|
{
|
|
if (!bIsInitialized && Strata::IsStrataEnabled())
|
|
{
|
|
TModeMap AllModeMap;
|
|
|
|
AddVisualizationMode(
|
|
AllModeMap,
|
|
TEXT("MaterialProperties"),
|
|
LOCTEXT("MaterialProperties", "Material Properties"),
|
|
LOCTEXT("MaterialPropertiesDesc", "Visualizes Substrate material properties under mouse cursor"),
|
|
FStrataViewMode::MaterialProperties,
|
|
true,
|
|
true,
|
|
LOCTEXT("None", "None"));
|
|
|
|
AddVisualizationMode(
|
|
AllModeMap,
|
|
TEXT("MaterialCount"),
|
|
LOCTEXT("MaterialCount", "Material Count"),
|
|
LOCTEXT("MaterialCountDesc", "Visualizes Substrate material count per pixel"),
|
|
FStrataViewMode::MaterialCount,
|
|
true,
|
|
true,
|
|
LOCTEXT("None", "None"));
|
|
|
|
AddVisualizationMode(
|
|
AllModeMap,
|
|
TEXT("AdvancedMaterialProperties"),
|
|
LOCTEXT("AdvancedMaterialProperties", "Advanced Material Properties"),
|
|
LOCTEXT("AdvancedMaterialPropertiesDesc", "Visualizes Substrate advanced material properties"),
|
|
FStrataViewMode::AdvancedMaterialProperties,
|
|
true,
|
|
Strata::IsAdvancedVisualizationEnabled(),
|
|
LOCTEXT("IsSubstrateAdvancedDebugShaderEnabled", "Substrate advanced debugging r.Substrate.Debug.AdvancedVisualizationShaders is disabled"));
|
|
|
|
AddVisualizationMode(
|
|
AllModeMap,
|
|
TEXT("MaterialClassification"),
|
|
LOCTEXT("MaterialClassification", "Material Classification"),
|
|
LOCTEXT("MaterialClassificationDesc", "Visualizes Substrate material classification"),
|
|
FStrataViewMode::MaterialClassification,
|
|
true,
|
|
true,
|
|
LOCTEXT("None", "None"));
|
|
|
|
AddVisualizationMode(
|
|
AllModeMap,
|
|
TEXT("DecalClassification"),
|
|
LOCTEXT("DecalClassification", "Decal classification"),
|
|
LOCTEXT("DecalClassificationDesc", "Visualizes Substrate decal classification"),
|
|
FStrataViewMode::DecalClassification,
|
|
true,
|
|
false, // Disable for now, as it is not important, and is mainly used for debugging
|
|
LOCTEXT("IsSubstrateBufferPassEnabled", "Substrate tiled DBuffer pass (r.Substrate.DBufferPass and r.Substrate.DBufferPass.DedicatedTiles) is disabled"));
|
|
|
|
AddVisualizationMode(
|
|
AllModeMap,
|
|
TEXT("RoughRefractionClassification"),
|
|
LOCTEXT("RoughRefractionClassification", "Rough Refraction Classification"),
|
|
LOCTEXT("RoughRefractionClassificationDesc", "Visualizes Substrate rough refraction classification"),
|
|
FStrataViewMode::RoughRefractionClassification,
|
|
true,
|
|
Strata::IsOpaqueRoughRefractionEnabled(),
|
|
LOCTEXT("IsSubstrateRoughRefractionEnabled", "Substrate rough refraction r.Substrate.OpaqueMaterialRoughRefraction is disabled"));
|
|
|
|
AddVisualizationMode(
|
|
AllModeMap,
|
|
TEXT("SubstrateInfo"),
|
|
LOCTEXT("SubstrateInfo", "Substrate Info"),
|
|
LOCTEXT("SubstrateInfoDesc", "Visualizes Substrate info"),
|
|
FStrataViewMode::StrataInfo,
|
|
true,
|
|
true,
|
|
LOCTEXT("None", "None"));
|
|
|
|
AddVisualizationMode(
|
|
AllModeMap,
|
|
TEXT("MaterialByteCount"),
|
|
LOCTEXT("MaterialByteCount", "Material Bytes Count"),
|
|
LOCTEXT("MaterialByteCountDesc", "Visualizes Substrate material footprint per pixel"),
|
|
FStrataViewMode::MaterialByteCount,
|
|
true,
|
|
true,
|
|
LOCTEXT("None", "None"));
|
|
|
|
|
|
ConsoleDocumentationVisualizationMode = ConfigureConsoleCommand(AllModeMap);
|
|
|
|
// Now only copy the available modes for the menu to not overload it with useless entries.
|
|
for (auto& Mode : AllModeMap)
|
|
{
|
|
if(Mode.Value.bAvailableCommand)
|
|
{
|
|
ModeMap.Emplace(Mode.Key) = Mode.Value;
|
|
}
|
|
}
|
|
}
|
|
bIsInitialized = true;
|
|
}
|
|
|
|
FText FStrataVisualizationData::GetModeDisplayName(const FName& InModeName) const
|
|
{
|
|
if (const FModeRecord* Record = ModeMap.Find(InModeName))
|
|
{
|
|
return Record->ModeText;
|
|
}
|
|
else
|
|
{
|
|
return FText::GetEmpty();
|
|
}
|
|
}
|
|
|
|
FStrataViewMode FStrataVisualizationData::GetViewMode(const FName& InModeName) const
|
|
{
|
|
if (const FModeRecord* Record = ModeMap.Find(InModeName))
|
|
{
|
|
return Record->ViewMode;
|
|
}
|
|
else
|
|
{
|
|
return FStrataViewMode::None;
|
|
}
|
|
}
|
|
|
|
bool FStrataVisualizationData::GetModeDefaultComposited(const FName& InModeName) const
|
|
{
|
|
if (const FModeRecord* Record = ModeMap.Find(InModeName))
|
|
{
|
|
return Record->bDefaultComposited;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
FStrataVisualizationData& GetStrataVisualizationData()
|
|
{
|
|
if (!GStrataVisualizationData.IsInitialized())
|
|
{
|
|
GStrataVisualizationData.Initialize();
|
|
}
|
|
|
|
return GStrataVisualizationData;
|
|
}
|
|
|
|
#undef LOCTEXT_NAMESPACE
|