#pragma once #include "FSR3Upscaler_FFXBase.h" #include "ffx_api/ffx_upscale.hpp" #include "ffx_api/vk/ffx_api_vk.hpp" #include "UnityPluginAPI/IUnityGraphicsVulkan.h" class FSR3Upscaler_Vulkan : FSR3Upscaler_FFXBase { public: FSR3Upscaler_Vulkan(IUnityInterfaces* unityInterfaces, IUnityGraphicsVulkan* graphicsDevice) : FSR3Upscaler_FFXBase(unityInterfaces), m_GraphicsDevice(graphicsDevice), m_VulkanBackendDesc() { } bool Init() override; protected: bool InitFeature(FSR3Feature_FFX& feature, const FSR3CommandInitializationData* initData) override; void SetTexture(FSR3Texture textureType, UnityTextureID textureID, const UnityRenderingExtTextureUpdateParamsV2* params, 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; };