diff --git a/CyberXeSS/CyberXeSS.vcxproj b/CyberXeSS/CyberXeSS.vcxproj index b8042b2f..25445535 100644 --- a/CyberXeSS/CyberXeSS.vcxproj +++ b/CyberXeSS/CyberXeSS.vcxproj @@ -82,7 +82,7 @@ $(SolutionDir)external\vulkan\include;$(SolutionDir)external\nvngx_dlss_sdk;$(SolutionDir)external\xess\inc\xess;$(SolutionDir)external\simpleini;$(SolutionDir)external\unordered_dense\include;$(SolutionDir)external\spdlog\include;$(IncludePath) $(SolutionDir)CyberXess\cas\lib;$(SolutionDir)CyberXess\fsr2\lib;$(SolutionDir)CyberXess\fsr2_212\lib;$(SolutionDir)CyberXess\vulkan;$(SolutionDir)external\xess\lib;$(SolutionDir)CyberXess\d3dx;$(LibraryPath) nvngx - D:\Games\Stranger of Paradise - Final Fantasy Origin\ + E:\Games\Epic\Control\ .\x64\Debug diff --git a/CyberXeSS/backends/xess/XeSSFeature_Dx12.cpp b/CyberXeSS/backends/xess/XeSSFeature_Dx12.cpp index ad61fd69..7b63434b 100644 --- a/CyberXeSS/backends/xess/XeSSFeature_Dx12.cpp +++ b/CyberXeSS/backends/xess/XeSSFeature_Dx12.cpp @@ -72,7 +72,7 @@ bool XeSSFeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, const N GetRenderResolution(InParameters, ¶ms.inputWidth, ¶ms.inputHeight); - // UE5 weird color fix2 + // UE5 weird color fix2 - not helped :/ if (Config::Instance()->NVNGX_Engine == NVSDK_NGX_ENGINE_TYPE_UNREAL && Config::Instance()->NVNGX_EngineVersion5) { params.inputWidth -= (params.inputWidth % 2); @@ -87,7 +87,6 @@ bool XeSSFeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, const N if (InParameters->Get(NVSDK_NGX_Parameter_Color, ¶mColor) != NVSDK_NGX_Result_Success) InParameters->Get(NVSDK_NGX_Parameter_Color, (void**)¶mColor); - if (paramColor) { spdlog::debug("XeSSFeatureDx12::Evaluate Color exist.."); diff --git a/CyberXeSS/imgui/Imgui_Dx11.cpp b/CyberXeSS/imgui/Imgui_Dx11.cpp index 3cca2951..f5cdf6b5 100644 --- a/CyberXeSS/imgui/Imgui_Dx11.cpp +++ b/CyberXeSS/imgui/Imgui_Dx11.cpp @@ -11,6 +11,20 @@ void Imgui_Dx11::CreateRenderTarget(ID3D11Resource* out) D3D11_TEXTURE2D_DESC outDesc{}; outTexture2D->GetDesc(&outDesc); + if (_renderTargetTexture != nullptr) + { + D3D11_TEXTURE2D_DESC rtDesc; + _renderTargetTexture->GetDesc(&rtDesc); + + if (outDesc.Width != rtDesc.Width || outDesc.Height != rtDesc.Height || outDesc.Format != rtDesc.Format) + { + _renderTargetTexture->Release(); + _renderTargetTexture = nullptr; + } + else + return; + } + if ((outDesc.BindFlags & D3D11_BIND_RENDER_TARGET) > 0) { D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; diff --git a/CyberXeSS/imgui/imgui_dx12.cpp b/CyberXeSS/imgui/imgui_dx12.cpp index 20584393..567b6246 100644 --- a/CyberXeSS/imgui/imgui_dx12.cpp +++ b/CyberXeSS/imgui/imgui_dx12.cpp @@ -210,8 +210,23 @@ Imgui_Dx12::~Imgui_Dx12() void Imgui_Dx12::CreateRenderTarget(const D3D12_RESOURCE_DESC& InDesc) { - for (UINT i = 0; i < 2; ++i) { + if (_renderTargetResource[0] != nullptr) + { + auto rtDesc = _renderTargetResource[0]->GetDesc(); + if (InDesc.Width != rtDesc.Width || InDesc.Height != rtDesc.Height || InDesc.Format != rtDesc.Format) + { + _renderTargetResource[0]->Release(); + _renderTargetResource[0] = nullptr; + _renderTargetResource[1]->Release(); + _renderTargetResource[1] = nullptr; + } + else + return; + } + + for (UINT i = 0; i < 2; ++i) + { D3D12_RESOURCE_DESC desc = {}; desc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D; desc.Width = InDesc.Width; @@ -224,13 +239,11 @@ void Imgui_Dx12::CreateRenderTarget(const D3D12_RESOURCE_DESC& InDesc) desc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN; desc.Flags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET; - D3D12_HEAP_PROPERTIES heapProps = CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT); ID3D12Resource* renderTarget; auto result = _device->CreateCommittedResource(&heapProps, D3D12_HEAP_FLAG_NONE, &desc, D3D12_RESOURCE_STATE_RENDER_TARGET, nullptr, IID_PPV_ARGS(&renderTarget)); - if (result == S_OK) { renderTarget->SetName(L"Imgui_Dx12_renderTarget");