From 58c1edf7670c02240c21584f820c85bee1a66624 Mon Sep 17 00:00:00 2001 From: Tk-Glitch Date: Tue, 6 Oct 2026 12:46:23 +0200 Subject: [PATCH] Add R8G8B8A8_UNORM motion vector format Spider-Man Remastered uses R8G8B8A8_UNORM (DXGI fmt=28) for (some?) motion vectors. Signed-off-by: Tk-Glitch --- tools/d4r_nvngx_shim.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tools/d4r_nvngx_shim.cpp b/tools/d4r_nvngx_shim.cpp index 960cd80..6bac0ec 100644 --- a/tools/d4r_nvngx_shim.cpp +++ b/tools/d4r_nvngx_shim.cpp @@ -866,7 +866,7 @@ static bool supported_input(Plane plane, DXGI_FORMAT format) return format == DXGI_FORMAT_R16G16_FLOAT || format == DXGI_FORMAT_R16G16_TYPELESS || format == DXGI_FORMAT_R32G32_FLOAT || format == DXGI_FORMAT_R32G32_TYPELESS || format == DXGI_FORMAT_R16G16B16A16_FLOAT || format == DXGI_FORMAT_R16G16B16A16_TYPELESS || - format == DXGI_FORMAT_R32G32B32A32_FLOAT; + format == DXGI_FORMAT_R32G32B32A32_FLOAT || format == DXGI_FORMAT_R8G8B8A8_UNORM; case Plane::Exposure: return format == DXGI_FORMAT_R32_FLOAT || format == DXGI_FORMAT_R32_TYPELESS || format == DXGI_FORMAT_R16_FLOAT || format == DXGI_FORMAT_R16_TYPELESS || @@ -1018,6 +1018,13 @@ static void convert_row_in(Plane plane, DXGI_FORMAT format, const uint8_t* sourc half[x * 2 + 1] = float_to_half(mv[1]); break; } + case DXGI_FORMAT_R8G8B8A8_UNORM: + { + const uint8_t* rgba = source + x * 4; + half[x * 2] = float_to_half(static_cast(rgba[0]) / 255.0f); + half[x * 2 + 1] = float_to_half(static_cast(rgba[1]) / 255.0f); + break; + } default: break; } @@ -2515,6 +2522,7 @@ static bool vram_motion_blit_supported(VkFormat format) case VK_FORMAT_R16G16B16A16_SFLOAT: case VK_FORMAT_R32G32_SFLOAT: case VK_FORMAT_R32G32B32A32_SFLOAT: + case VK_FORMAT_R8G8B8A8_UNORM: return vram_blit_supported(format, VK_FORMAT_R16G16_SFLOAT); default: return false;