diff --git a/OptiScaler/OptiScaler.vcxproj b/OptiScaler/OptiScaler.vcxproj
index 9b1cc767..3f55642d 100644
--- a/OptiScaler/OptiScaler.vcxproj
+++ b/OptiScaler/OptiScaler.vcxproj
@@ -82,7 +82,7 @@
$(SolutionDir)external\vulkan\include;$(SolutionDir)external\nvngx_dlss_sdk;$(SolutionDir)external\xess\inc\xess;$(SolutionDir)external\FidelityFX-SDK\ffx-api\include\ffx_api;$(SolutionDir)external\simpleini;$(SolutionDir)external\unordered_dense\include;$(SolutionDir)external\spdlog\include;$(SolutionDir)external\freetype;$(IncludePath)
$(ProjectDir)fsr2\lib;$(ProjectDir)fsr2_212\lib;$(ProjectDir)fsr31\lib;$(ProjectDir)vulkan;$(ProjectDir)d3dx;$(ProjectDir)detours;$(SolutionDir)external\xess\lib;$(SolutionDir)external\freetype;$(LibraryPath)
dxgi
- E:\Games\Epic\Control\
+ E:\Games\Deep Rock Galactic\FSD\Binaries\Win64\
.\x64\Debug
.dll
diff --git a/OptiScaler/imgui/imgui_dx12.cpp b/OptiScaler/imgui/imgui_dx12.cpp
index 95086475..87f93580 100644
--- a/OptiScaler/imgui/imgui_dx12.cpp
+++ b/OptiScaler/imgui/imgui_dx12.cpp
@@ -9,263 +9,264 @@ long frameCounter = 0;
bool Imgui_Dx12::Render(ID3D12GraphicsCommandList* pCmdList, ID3D12Resource* outTexture)
{
- if (Config::Instance()->OverlayMenu.value_or(true))
- return false;
+ if (Config::Instance()->OverlayMenu.value_or(true))
+ return false;
- if (pCmdList == nullptr || outTexture == nullptr)
- return false;
+ if (pCmdList == nullptr || outTexture == nullptr)
+ return false;
- frameCounter++;
+ frameCounter++;
- //if (!IsVisible())
- // return true;
+ //if (!IsVisible())
+ // return true;
- auto outDesc = outTexture->GetDesc();
+ auto outDesc = outTexture->GetDesc();
- CreateRenderTarget(outDesc);
+ CreateRenderTarget(outDesc);
- if (!_dx12Init && ImGui::GetIO().BackendRendererUserData == nullptr)
- {
- _dx12Init = ImGui_ImplDX12_Init(_device, 2, outDesc.Format, _srvDescHeap,
- _srvDescHeap->GetCPUDescriptorHandleForHeapStart(), _srvDescHeap->GetGPUDescriptorHandleForHeapStart());
- }
+ if (!_dx12Init && ImGui::GetIO().BackendRendererUserData == nullptr)
+ {
+ _dx12Init = ImGui_ImplDX12_Init(_device, 2, outDesc.Format, _srvDescHeap,
+ _srvDescHeap->GetCPUDescriptorHandleForHeapStart(), _srvDescHeap->GetGPUDescriptorHandleForHeapStart());
+ }
- if (!_dx12Init)
- return false;
+ if (!_dx12Init)
+ return false;
- frameCounter++;
+ frameCounter++;
- auto backbuf = frameCounter % 2;
+ auto backbuf = frameCounter % 2;
- D3D12_RENDER_TARGET_VIEW_DESC rtDesc = { };
- rtDesc.Format = outDesc.Format;
- rtDesc.ViewDimension = D3D12_RTV_DIMENSION_TEXTURE2D;
+ D3D12_RENDER_TARGET_VIEW_DESC rtDesc = { };
+ rtDesc.Format = outDesc.Format;
+ rtDesc.ViewDimension = D3D12_RTV_DIMENSION_TEXTURE2D;
- if ((outDesc.Flags & D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET) > 0)
- {
- D3D12_RESOURCE_BARRIER outBarrier = { };
- outBarrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
- outBarrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
- outBarrier.Transition.pResource = outTexture;
- outBarrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
- outBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_UNORDERED_ACCESS;
- outBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET;
- pCmdList->ResourceBarrier(1, &outBarrier);
+ if ((outDesc.Flags & D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET) > 0)
+ {
+ D3D12_RESOURCE_BARRIER outBarrier = { };
+ outBarrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
+ outBarrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
+ outBarrier.Transition.pResource = outTexture;
+ outBarrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
+ outBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_UNORDERED_ACCESS;
+ outBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET;
+ pCmdList->ResourceBarrier(1, &outBarrier);
- // Create RTV for out
- pCmdList->SetDescriptorHeaps(1, &_srvDescHeap);
+ // Create RTV for out
+ pCmdList->SetDescriptorHeaps(1, &_srvDescHeap);
- _device->CreateRenderTargetView(outTexture, &rtDesc, _renderTargetDescriptor[backbuf]);
- pCmdList->OMSetRenderTargets(1, &_renderTargetDescriptor[backbuf], FALSE, NULL);
+ _device->CreateRenderTargetView(outTexture, &rtDesc, _renderTargetDescriptor[backbuf]);
+ pCmdList->OMSetRenderTargets(1, &_renderTargetDescriptor[backbuf], FALSE, NULL);
- ImGui_ImplDX12_NewFrame();
- ImGui_ImplWin32_NewFrame();
+ ImGui_ImplDX12_NewFrame();
+ ImGui_ImplWin32_NewFrame();
- // Render
- ImguiDxBase::RenderMenu();
- ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), pCmdList);
+ // Render
+ ImguiDxBase::RenderMenu();
+ ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), pCmdList);
- outBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET;
- outBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_UNORDERED_ACCESS;
- pCmdList->ResourceBarrier(1, &outBarrier);
+ outBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET;
+ outBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_UNORDERED_ACCESS;
+ pCmdList->ResourceBarrier(1, &outBarrier);
- return true;
- }
+ return true;
+ }
- D3D12_RESOURCE_BARRIER outBarrier = { };
- outBarrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
- outBarrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
- outBarrier.Transition.pResource = outTexture;
- outBarrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
- outBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_UNORDERED_ACCESS;
- outBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_SOURCE;
+ D3D12_RESOURCE_BARRIER outBarrier = { };
+ outBarrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
+ outBarrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
+ outBarrier.Transition.pResource = outTexture;
+ outBarrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
+ outBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_UNORDERED_ACCESS;
+ outBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_SOURCE;
- D3D12_RESOURCE_BARRIER bufferBarrier = { };
- bufferBarrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
- bufferBarrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
- bufferBarrier.Transition.pResource = _renderTargetResource[backbuf];
- bufferBarrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
- bufferBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET;
- bufferBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_DEST;
+ D3D12_RESOURCE_BARRIER bufferBarrier = { };
+ bufferBarrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
+ bufferBarrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
+ bufferBarrier.Transition.pResource = _renderTargetResource[backbuf];
+ bufferBarrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
+ bufferBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET;
+ bufferBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_DEST;
- D3D12_RESOURCE_BARRIER barriers[] = { bufferBarrier, outBarrier };
- pCmdList->ResourceBarrier(2, barriers);
+ D3D12_RESOURCE_BARRIER barriers[] = { bufferBarrier, outBarrier };
+ pCmdList->ResourceBarrier(2, barriers);
- // Copy out to buffer
- pCmdList->CopyResource(_renderTargetResource[backbuf], outTexture);
+ // Copy out to buffer
+ pCmdList->CopyResource(_renderTargetResource[backbuf], outTexture);
- // Set as render target
- bufferBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_DEST;
- bufferBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET;
- pCmdList->ResourceBarrier(1, &bufferBarrier);
+ // Set as render target
+ bufferBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_DEST;
+ bufferBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET;
+ pCmdList->ResourceBarrier(1, &bufferBarrier);
- // Create RTV for buffer
- pCmdList->SetDescriptorHeaps(1, &_srvDescHeap);
+ // Create RTV for buffer
+ pCmdList->SetDescriptorHeaps(1, &_srvDescHeap);
- _device->CreateRenderTargetView(_renderTargetResource[backbuf], &rtDesc, _renderTargetDescriptor[backbuf]);
- pCmdList->OMSetRenderTargets(1, &_renderTargetDescriptor[backbuf], FALSE, nullptr);
+ _device->CreateRenderTargetView(_renderTargetResource[backbuf], &rtDesc, _renderTargetDescriptor[backbuf]);
+ pCmdList->OMSetRenderTargets(1, &_renderTargetDescriptor[backbuf], FALSE, nullptr);
- ImGui_ImplDX12_NewFrame();
- ImGui_ImplWin32_NewFrame();
+ ImGui_ImplDX12_NewFrame();
+ ImGui_ImplWin32_NewFrame();
- // Render to buffer
- ImguiDxBase::RenderMenu();
+ // Render to buffer
+ if (ImguiDxBase::RenderMenu())
+ {
+ ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), pCmdList);
- ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), pCmdList);
+ outBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_SOURCE;
+ outBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_DEST;
- outBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_SOURCE;
- outBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_DEST;
+ bufferBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET;
+ bufferBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_SOURCE;
+ pCmdList->ResourceBarrier(2, barriers);
- bufferBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET;
- bufferBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_SOURCE;
- pCmdList->ResourceBarrier(2, barriers);
+ // Copy back buffer to out
+ pCmdList->CopyResource(outTexture, _renderTargetResource[backbuf]);
- // Copy back buffer to out
- pCmdList->CopyResource(outTexture, _renderTargetResource[backbuf]);
+ // fix states
+ bufferBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_SOURCE;
+ bufferBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET;
- // fix states
- bufferBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_SOURCE;
- bufferBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET;
+ outBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_DEST;
+ outBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_UNORDERED_ACCESS;
+ pCmdList->ResourceBarrier(2, barriers);
+ }
- outBarrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_DEST;
- outBarrier.Transition.StateAfter = D3D12_RESOURCE_STATE_UNORDERED_ACCESS;
- pCmdList->ResourceBarrier(2, barriers);
-
- return true;
+ return true;
}
Imgui_Dx12::Imgui_Dx12(HWND handle, ID3D12Device* pDevice) : ImguiDxBase(handle), _device(pDevice)
{
- if (Config::Instance()->OverlayMenu.value_or(true))
- return;
+ if (Config::Instance()->OverlayMenu.value_or(true))
+ return;
- D3D12_DESCRIPTOR_HEAP_DESC rtvDesc = { };
- rtvDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV;
- rtvDesc.NumDescriptors = 2;
- rtvDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE;
- rtvDesc.NodeMask = 1;
+ D3D12_DESCRIPTOR_HEAP_DESC rtvDesc = { };
+ rtvDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV;
+ rtvDesc.NumDescriptors = 2;
+ rtvDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE;
+ rtvDesc.NodeMask = 1;
- if (pDevice->CreateDescriptorHeap(&rtvDesc, IID_PPV_ARGS(&_rtvDescHeap)) != S_OK)
- return;
+ if (pDevice->CreateDescriptorHeap(&rtvDesc, IID_PPV_ARGS(&_rtvDescHeap)) != S_OK)
+ return;
- _rtvDescHeap->SetName(L"Imgui_Dx12_rtvHeap");
+ _rtvDescHeap->SetName(L"Imgui_Dx12_rtvHeap");
- SIZE_T rtvDescriptorSize = pDevice->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
- D3D12_CPU_DESCRIPTOR_HANDLE rtvHandle = _rtvDescHeap->GetCPUDescriptorHandleForHeapStart();
+ SIZE_T rtvDescriptorSize = pDevice->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
+ D3D12_CPU_DESCRIPTOR_HANDLE rtvHandle = _rtvDescHeap->GetCPUDescriptorHandleForHeapStart();
- for (UINT i = 0; i < 2; ++i) {
- _renderTargetDescriptor[i] = rtvHandle;
- rtvHandle.ptr += rtvDescriptorSize;
- }
+ for (UINT i = 0; i < 2; ++i) {
+ _renderTargetDescriptor[i] = rtvHandle;
+ rtvHandle.ptr += rtvDescriptorSize;
+ }
- D3D12_DESCRIPTOR_HEAP_DESC srvDesc = { };
- srvDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV;
- srvDesc.NumDescriptors = 1;
- srvDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
+ D3D12_DESCRIPTOR_HEAP_DESC srvDesc = { };
+ srvDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV;
+ srvDesc.NumDescriptors = 1;
+ srvDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
- Config::Instance()->SkipHeapCapture = true;
+ Config::Instance()->SkipHeapCapture = true;
- if (pDevice->CreateDescriptorHeap(&srvDesc, IID_PPV_ARGS(&_srvDescHeap)) != S_OK)
- return;
+ if (pDevice->CreateDescriptorHeap(&srvDesc, IID_PPV_ARGS(&_srvDescHeap)) != S_OK)
+ return;
- Config::Instance()->SkipHeapCapture = false;
+ Config::Instance()->SkipHeapCapture = false;
- Dx12Ready();
+ Dx12Ready();
- _srvDescHeap->SetName(L"Imgui_Dx12_srvDescHeap");
+ _srvDescHeap->SetName(L"Imgui_Dx12_srvDescHeap");
}
Imgui_Dx12::~Imgui_Dx12()
{
- if (!_dx12Init)
- return;
+ if (!_dx12Init)
+ return;
- ID3D12Fence* d3d12Fence;
- _device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence));
- d3d12Fence->Signal(999);
+ ID3D12Fence* d3d12Fence;
+ _device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence));
+ d3d12Fence->Signal(999);
- auto fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
+ auto fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
- if (d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK)
- {
- WaitForSingleObject(fenceEvent, INFINITE);
- CloseHandle(fenceEvent);
- }
+ if (d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK)
+ {
+ WaitForSingleObject(fenceEvent, INFINITE);
+ CloseHandle(fenceEvent);
+ }
- d3d12Fence->Release();
+ d3d12Fence->Release();
- ImGui_ImplDX12_Shutdown();
+ ImGui_ImplDX12_Shutdown();
- if (_rtvDescHeap)
- {
- _rtvDescHeap->Release();
- _rtvDescHeap = nullptr;
- }
+ if (_rtvDescHeap)
+ {
+ _rtvDescHeap->Release();
+ _rtvDescHeap = nullptr;
+ }
- if (_srvDescHeap)
- {
- _srvDescHeap->Release();
- _srvDescHeap = nullptr;
- }
+ if (_srvDescHeap)
+ {
+ _srvDescHeap->Release();
+ _srvDescHeap = nullptr;
+ }
- if (_renderTargetResource[0])
- {
- _renderTargetResource[0]->Release();
- _renderTargetResource[0] = nullptr;
- }
+ if (_renderTargetResource[0])
+ {
+ _renderTargetResource[0]->Release();
+ _renderTargetResource[0] = nullptr;
+ }
- if (_renderTargetResource[1])
- {
- _renderTargetResource[1]->Release();
- _renderTargetResource[1] = nullptr;
- }
+ if (_renderTargetResource[1])
+ {
+ _renderTargetResource[1]->Release();
+ _renderTargetResource[1] = nullptr;
+ }
}
void Imgui_Dx12::CreateRenderTarget(const D3D12_RESOURCE_DESC& InDesc)
{
- if (_renderTargetResource[0] != nullptr)
- {
- auto rtDesc = _renderTargetResource[0]->GetDesc();
+ 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;
- }
+ 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;
- desc.Height = InDesc.Height;
- desc.DepthOrArraySize = 1;
- desc.MipLevels = 1;
- desc.Format = TranslateTypelessFormats(InDesc.Format);
- desc.SampleDesc.Count = 1;
- desc.SampleDesc.Quality = 0;
- desc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN;
- desc.Flags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET;
+ for (UINT i = 0; i < 2; ++i)
+ {
+ D3D12_RESOURCE_DESC desc = {};
+ desc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D;
+ desc.Width = InDesc.Width;
+ desc.Height = InDesc.Height;
+ desc.DepthOrArraySize = 1;
+ desc.MipLevels = 1;
+ desc.Format = TranslateTypelessFormats(InDesc.Format);
+ desc.SampleDesc.Count = 1;
+ desc.SampleDesc.Quality = 0;
+ 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);
+ 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));
+ 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");
+ if (result == S_OK) {
+ renderTarget->SetName(L"Imgui_Dx12_renderTarget");
- D3D12_RENDER_TARGET_VIEW_DESC rtDesc = { };
- rtDesc.Format = InDesc.Format;
- rtDesc.ViewDimension = D3D12_RTV_DIMENSION_TEXTURE2D;
+ D3D12_RENDER_TARGET_VIEW_DESC rtDesc = { };
+ rtDesc.Format = InDesc.Format;
+ rtDesc.ViewDimension = D3D12_RTV_DIMENSION_TEXTURE2D;
- _device->CreateRenderTargetView(renderTarget, &rtDesc, _renderTargetDescriptor[i]);
- _renderTargetResource[i] = renderTarget;
- }
- }
+ _device->CreateRenderTargetView(renderTarget, &rtDesc, _renderTargetDescriptor[i]);
+ _renderTargetResource[i] = renderTarget;
+ }
+ }
}
\ No newline at end of file
diff --git a/OptiScaler/imgui/imgui_dx_base.cpp b/OptiScaler/imgui/imgui_dx_base.cpp
index c0f929ab..29974887 100644
--- a/OptiScaler/imgui/imgui_dx_base.cpp
+++ b/OptiScaler/imgui/imgui_dx_base.cpp
@@ -7,59 +7,64 @@
#include "imgui_dx_base.h"
#include "imgui/imgui_impl_win32.h"
-void ImguiDxBase::RenderMenu()
+bool ImguiDxBase::RenderMenu()
{
- if (Config::Instance()->OverlayMenu.value_or(true))
- return;
+ if (Config::Instance()->OverlayMenu.value_or(true))
+ return false;
- ImGuiCommon::RenderMenu();
- ImGui::Render();
+ if (ImGuiCommon::RenderMenu())
+ {
+ ImGui::Render();
+ return true;
+ }
+
+ return false;
}
bool ImguiDxBase::IsHandleDifferent()
{
- if (Config::Instance()->OverlayMenu.value_or(true))
- return false;
+ if (Config::Instance()->OverlayMenu.value_or(true))
+ return false;
- HWND frontWindow = Util::GetProcessWindow();
+ HWND frontWindow = Util::GetProcessWindow();
- if (frontWindow == _handle)
- return false;
+ if (frontWindow == _handle)
+ return false;
- _handle = frontWindow;
+ _handle = frontWindow;
- return true;
+ return true;
}
void ImguiDxBase::Dx11Ready()
{
- ImGuiCommon::Dx11Inited();
+ ImGuiCommon::Dx11Inited();
}
void ImguiDxBase::Dx12Ready()
{
- ImGuiCommon::Dx12Inited();
+ ImGuiCommon::Dx12Inited();
}
ImguiDxBase::ImguiDxBase(HWND handle) : _handle(handle)
{
- if (Config::Instance()->OverlayMenu.value_or(true))
- return;
+ if (Config::Instance()->OverlayMenu.value_or(true))
+ return;
- ImGuiCommon::Init(handle);
+ ImGuiCommon::Init(handle);
- _baseInit = ImGuiCommon::IsInited();
+ _baseInit = ImGuiCommon::IsInited();
}
ImguiDxBase::~ImguiDxBase()
{
- if (!_baseInit)
- return;
+ if (!_baseInit)
+ return;
- ImGuiCommon::Shutdown();
+ ImGuiCommon::Shutdown();
}
bool ImguiDxBase::IsVisible() const
{
- return ImGuiCommon::IsVisible();
+ return ImGuiCommon::IsVisible();
}
diff --git a/OptiScaler/imgui/imgui_dx_base.h b/OptiScaler/imgui/imgui_dx_base.h
index a201e1f2..d40814b4 100644
--- a/OptiScaler/imgui/imgui_dx_base.h
+++ b/OptiScaler/imgui/imgui_dx_base.h
@@ -14,7 +14,7 @@ private:
protected:
long frameCounter = 0;
- void RenderMenu();
+ bool RenderMenu();
static DXGI_FORMAT TranslateTypelessFormats(DXGI_FORMAT format)
{
diff --git a/OptiScaler/resource.h b/OptiScaler/resource.h
index a6abd9a9..8f3c83b8 100644
--- a/OptiScaler/resource.h
+++ b/OptiScaler/resource.h
@@ -21,7 +21,7 @@
#define VER_MAJOR_VERSION 0
#define VER_MINOR_VERSION 7
#define VER_HOTFIX_VERSION 0
-#define VER_BUILD_NUMBER 91
+#define VER_BUILD_NUMBER 92
#define VER_PRE_RELEASE