#pragma once #include "FSR3Upscaler_FFXBase.h" #include "ffx_api/ffx_upscale.hpp" #include "ffx_api/vk/ffx_api_vk.hpp" #include "UnityPluginAPI/IUnityGraphics.h" #include "UnityPluginAPI/IUnityGraphicsVulkan.h" class FSR3Upscaler_Vulkan : public FSR3Upscaler_FFXBase { public: FSR3Upscaler_Vulkan(IUnityLog* log, IUnityGraphicsVulkan* graphicsDevice) : FSR3Upscaler_FFXBase(log), m_GraphicsDevice(graphicsDevice), m_VulkanBackendDesc() { } bool Init() override; protected: bool InitFeature(FSR3Feature_FFX& feature, const FSR3CommandInitializationData* initData) override; void SetTexture(FSR3Texture textureType, UnityTextureID textureID, uint32_t width, uint32_t height, FSR3TextureDesc* outTextureDesc) override; void Execute(FSR3Feature_FFX& feature, const FSR3CommandExecutionData* execData) override; void AwaitEndOfFrame(uint64_t frameValue) override; void DoShutdown() override; private: IUnityGraphicsVulkan* m_GraphicsDevice; ffx::CreateBackendVKDesc m_VulkanBackendDesc; };