40 lines
1.6 KiB
C++
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;
|
|
};
|