Files
UnrealEngineUWP/Engine/Source/Editor/CommonMenuExtensions/Public/LumenVisualizationMenuCommands.h
krzysztof narkowicz 02819f2a85 Refactored Lumen visualization views and show flag in order to improve user experience. All Lumen visualization modes and show flags were moved into Lumen submenus for easier discovery. View modes were made exclusive (only one may be active at a time). Additonally exposed new view modes and show flags in order to easier debug and understand Lumen.
Lit->Lumen
Added Lit->Lumen submenu with 4 view modes - Lumen Scene, Lumen Reflection View, Lumen Surface Cache and Overview:
* Lumen Scene - same as ShowFlags->VisualizeLumenScene. Visualizes Lumen scene representation in highest possible quality, with highest possible view distance
* Lumen Reflection View - Lumen Scene, but with current reflections settings. Basically represents how things look in the reflections
* Lumen Surface Cache - visualizes surface cache and marks with pink missing surface cache coverage
* Overview - 3 Lumen view mode tiles, overlaid on top of normal view

Show->Lumen
Added Show->Lumen submenu with 6 flags, which allow to disable specific trace types (screen space, detail, global, far field), disable secondary bounces (radiosity) and disable Screen Space Directional Occlusion.

Show->Visualize
Removed �Lumen Scene� (replaced by Lit->Lumen->Lumen Scene view mode) and �Lumen Global Illumination� (replaced by r.Lumen.Visualize.IndirectDiffuse) from

Advanced visualization modes are accessible through r.Lumen.Visualize.Mode, which overrides current Lit->Lumen-> settings.

Misc changes:
* Renamed VisualizeLumenScene* to LumenVisualize*
* Moved shared visualize parameters to LumenVisualize.h
* Lumen HWRT visualize now uses same ray footprint as SWRT visualize
* Replaced HALF_WORLD_MAX with Lumen::MaxTracingEndDistanceFromCamera and Lumen::MaxTraceDistance in preparation for the LWC WORLD_MAX changes

#rb Patrick.Kelly, Daniel.Wright
#preflight 61e73339b56c33b8ecf753b2

#ROBOMERGE-AUTHOR: krzysztof.narkowicz
#ROBOMERGE-SOURCE: CL 18658215 in //UE5/Release-5.0/... via CL 18658227 via CL 18658249
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)

[CL 18658268 by krzysztof narkowicz in ue5-main branch]
2022-01-19 10:11:35 -05:00

64 lines
1.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/Map.h"
#include "UObject/NameTypes.h"
#include "Templates/SharedPointer.h"
#include "Framework/Commands/UICommandInfo.h"
#include "Framework/MultiBox/MultiBoxBuilder.h"
#include "Framework/Commands/Commands.h"
class FEditorViewportClient;
class COMMONMENUEXTENSIONS_API FLumenVisualizationMenuCommands : public TCommands<FLumenVisualizationMenuCommands>
{
public:
enum class FLumenVisualizationType : uint8
{
Overview,
Standard
};
struct FLumenVisualizationRecord
{
FName Name;
TSharedPtr<FUICommandInfo> Command;
FLumenVisualizationType Type;
FLumenVisualizationRecord()
: Name()
, Command()
, Type(FLumenVisualizationType::Overview)
{
}
};
typedef TMultiMap<FName, FLumenVisualizationRecord> TLumenVisualizationModeCommandMap;
typedef TLumenVisualizationModeCommandMap::TConstIterator TCommandConstIterator;
FLumenVisualizationMenuCommands();
TCommandConstIterator CreateCommandConstIterator() const;
static void BuildVisualisationSubMenu(FMenuBuilder& Menu);
virtual void RegisterCommands() override;
void BindCommands(FUICommandList& CommandList, const TSharedPtr<FEditorViewportClient>& Client) const;
inline bool IsPopulated() const
{
return CommandMap.Num() > 0;
}
private:
void BuildCommandMap();
bool AddCommandTypeToMenu(FMenuBuilder& Menu, const FLumenVisualizationType Type) const;
static void ChangeLumenVisualizationMode(const TSharedPtr<FEditorViewportClient>& Client, FName InName);
static bool IsLumenVisualizationModeSelected(const TSharedPtr<FEditorViewportClient>& Client, FName InName);
private:
TLumenVisualizationModeCommandMap CommandMap;
};