54 lines
2.5 KiB
C
54 lines
2.5 KiB
C
|
// @lint-ignore-every LICENSELINT
|
||
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||
|
|
||
|
#pragma once
|
||
|
#include "OculusXRHMDPrivate.h"
|
||
|
|
||
|
#if OCULUS_HMD_SUPPORTED_PLATFORMS
|
||
|
#include "DefaultSpectatorScreenController.h"
|
||
|
|
||
|
class UTextureRenderTarget2D;
|
||
|
|
||
|
namespace OculusXRHMD
|
||
|
{
|
||
|
|
||
|
// Oculus specific spectator screen modes that override the regular VR spectator screens
|
||
|
enum class EMRSpectatorScreenMode : uint8
|
||
|
{
|
||
|
Default,
|
||
|
ExternalComposition,
|
||
|
DirectComposition
|
||
|
};
|
||
|
|
||
|
//-------------------------------------------------------------------------------------------------
|
||
|
// FSpectatorScreenController
|
||
|
//-------------------------------------------------------------------------------------------------
|
||
|
|
||
|
class FSpectatorScreenController : public FDefaultSpectatorScreenController
|
||
|
{
|
||
|
public:
|
||
|
FSpectatorScreenController(class FOculusXRHMD* InOculusXRHMD);
|
||
|
|
||
|
void SetMRSpectatorScreenMode(EMRSpectatorScreenMode Mode) { SpectatorMode = Mode; }
|
||
|
void SetMRForeground(UTextureRenderTarget2D* Texture) { ForegroundRenderTexture = Texture; }
|
||
|
void SetMRBackground(UTextureRenderTarget2D* Texture) { BackgroundRenderTexture = Texture; }
|
||
|
|
||
|
virtual void RenderSpectatorScreen_RenderThread(FRHICommandListImmediate& RHICmdList, FRHITexture2D* BackBuffer, FTexture2DRHIRef RenderTarget, FVector2D WindowSize) override;
|
||
|
virtual void RenderSpectatorModeUndistorted(FRHICommandListImmediate& RHICmdList, FTexture2DRHIRef TargetTexture, FTexture2DRHIRef EyeTexture, FTexture2DRHIRef OtherTexture, FVector2D WindowSize) override;
|
||
|
virtual void RenderSpectatorModeDistorted(FRHICommandListImmediate& RHICmdList, FTexture2DRHIRef TargetTexture, FTexture2DRHIRef EyeTexture, FTexture2DRHIRef OtherTexture, FVector2D WindowSize) override;
|
||
|
virtual void RenderSpectatorModeSingleEye(FRHICommandListImmediate& RHICmdList, FTexture2DRHIRef TargetTexture, FTexture2DRHIRef EyeTexture, FTexture2DRHIRef OtherTexture, FVector2D WindowSize) override;
|
||
|
|
||
|
private:
|
||
|
FOculusXRHMD* OculusXRHMD;
|
||
|
EMRSpectatorScreenMode SpectatorMode;
|
||
|
UTextureRenderTarget2D* ForegroundRenderTexture;
|
||
|
UTextureRenderTarget2D* BackgroundRenderTexture;
|
||
|
|
||
|
void RenderSpectatorModeDirectComposition(FRHICommandListImmediate& RHICmdList, FTexture2DRHIRef TargetTexture, const FTexture2DRHIRef SrcTexture) const;
|
||
|
void RenderSpectatorModeExternalComposition(FRHICommandListImmediate& RHICmdList, FTexture2DRHIRef TargetTexture, const FTexture2DRHIRef FrontTexture, const FTexture2DRHIRef BackTexture) const;
|
||
|
};
|
||
|
|
||
|
} // namespace OculusXRHMD
|
||
|
|
||
|
#endif // OCULUS_HMD_SUPPORTED_PLATFORMS
|