October3d55/M/PICOXRPlugin/Source/PICOXRHMD/Private/PXR_FoveatedRendering.h

40 lines
1.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "VariableRateShadingImageManager.h"
#include "XRSwapchain.h"
class FPICOXRHMD;
class FPICOXRFoveatedRenderingImageGenerator : public IVariableRateShadingImageGenerator
{
public:
FPICOXRFoveatedRenderingImageGenerator(const FXRSwapChainPtr& Swapchain);
virtual ~FPICOXRFoveatedRenderingImageGenerator() override;
// IVariableRateShadingImageGenerator interface
// Returns cached VRS image.
virtual FRDGTextureRef GetImage(FRDGBuilder& GraphBuilder, const FViewInfo& ViewInfo, FVariableRateShadingImageManager::EVRSImageType ImageType, bool bGetSoftwareImage = false) override;
// Generates image(s) and saves to generator cache. Should only be run once per view per frame, in Render().
virtual void PrepareImages(FRDGBuilder& GraphBuilder, const FSceneViewFamily& ViewFamily, const FMinimalSceneTextures& SceneTextures, bool bPrepareHardwareImages, bool bPrepareSoftwareImages) override;
// Returns whether or not generator is enabled - can change at runtime
virtual bool IsEnabled() const override;
// Returns whether or not the given view supports this generator
virtual bool IsSupportedByView(const FSceneView& View) const override;
// Get VRS image to be used w/ debug overlay
virtual FRDGTextureRef GetDebugImage(FRDGBuilder& GraphBuilder, const FViewInfo& ViewInfo, FVariableRateShadingImageManager::EVRSImageType ImageType, bool bGetSoftwareImage = false) override;
virtual FVariableRateShadingImageManager::EVRSSourceType GetType() const override
{
return FVariableRateShadingImageManager::EVRSSourceType::FixedFoveation;
}
private:
const FXRSwapChainPtr& FoveationSwapchain;
};