diff --git a/BuildFSR2.bat b/BuildFSR2.bat
new file mode 100644
index 0000000..bc892a4
--- /dev/null
+++ b/BuildFSR2.bat
@@ -0,0 +1,74 @@
++@echo off
+setlocal
+set "origin=%cd%\"
+set "buildPath=..\external\FidelityFX-FSR2\build"
+set "slnDX12=FSR2_Sample_DX12.sln"
+set "slnVK=FSR2_Sample_VK.sln"
+
+echo Script started on %date% %time%
+echo Current working directory: %origin%
+
+REM Clear old artifacts
+echo Clearing old artifacts...
+cd /d "%origin%%buildPath%"
+if exist "DX12" (
+ echo Removing old DX12 artifacts...
+ rd /s /q "DX12" > nul 2>&1
+ if errorlevel 1 (
+ echo Failed to remove old DX12 artifacts.
+ ) else (
+ echo Successfully removed old DX12 artifacts.
+ )
+)
+if exist "VK" (
+ echo Removing old VK artifacts...
+ rd /s /q "VK" > nul 2>&1
+ if errorlevel 1 (
+ echo Failed to remove old VK artifacts.
+ ) else (
+ echo Successfully removed old VK artifacts.
+ )
+)
+
+REM Regenerate artifacts
+echo Regenerating artifacts...
+cd /d "%origin%%buildPath%"
+call GenerateSolutions.bat > nul 2>&1
+if errorlevel 1 (
+ echo Failed to regenerate artifacts.
+) else (
+ echo Successfully regenerated artifacts.
+)
+
+REM Build FSR2_Sample_DX12.sln
+call :BuildSolution "%origin%%buildPath%\DX12\%slnDX12%" "Debug" "DX12"
+call :BuildSolution "%origin%%buildPath%\DX12\%slnDX12%" "RelWithDebInfo" "DX12"
+
+REM Build FSR2_Sample_VK.sln
+call :BuildSolution "%origin%%buildPath%\VK\%slnVK%" "Debug" "VK"
+call :BuildSolution "%origin%%buildPath%\VK\%slnVK%" "RelWithDebInfo" "VK"
+
+cd /d "%origin%"
+goto :endofBuildFSR2
+
+REM Function to build a solution file
+:BuildSolution
+set "solutionPath=%~1"
+set "configuration=%~2"
+if exist "%solutionPath%" (
+ echo Building %solutionPath%...
+ cd /d "%origin%%buildPath%\%~3"
+ MSBUILD.exe "%solutionPath%" /t:Build /p:Configuration=%configuration%
+ if errorlevel 1 (
+ echo Failed to build %solutionPath%.
+ ) else (
+ echo Successfully built %solutionPath%.
+ )
+) else (
+ echo %solutionPath% not found. Skipping build.
+)
+exit /b
+
+:endofBuildFSR2
+echo FSR2 build-script finished on %date% %time%
+endlocal
diff --git a/Build_FSR2/Build_FSR2.vcxproj b/Build_FSR2/Build_FSR2.vcxproj
new file mode 100644
index 0000000..edc3640
--- /dev/null
+++ b/Build_FSR2/Build_FSR2.vcxproj
@@ -0,0 +1,140 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 16.0
+ Win32Proj
+ {e61bcfc0-bc33-46d1-a144-9021fef7f6bc}
+ BuildFSR2
+ 10.0
+
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+ call "..\BuildFSR2.bat"
+
+
+ Build / rebuild FSR2 artifacts
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Build_FSR2/Build_FSR2.vcxproj.filters b/Build_FSR2/Build_FSR2.vcxproj.filters
new file mode 100644
index 0000000..a8a6563
--- /dev/null
+++ b/Build_FSR2/Build_FSR2.vcxproj.filters
@@ -0,0 +1,17 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
\ No newline at end of file
diff --git a/CyberFSR.sln b/CyberFSR.sln
index 0194284..f592ad2 100644
--- a/CyberFSR.sln
+++ b/CyberFSR.sln
@@ -4,23 +4,56 @@ Microsoft Visual Studio Solution File, Format Version 12.00
VisualStudioVersion = 17.2.32602.215
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CyberFSR", "CyberFSR\CyberFSR.vcxproj", "{8D2B73FB-EECD-45CE-B8E5-335610462F58}"
+ ProjectSection(ProjectDependencies) = postProject
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC} = {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Build_FSR2", "Build_FSR2\Build_FSR2.vcxproj", "{E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
+ MinSizeRel|x64 = MinSizeRel|x64
+ MinSizeRel|x86 = MinSizeRel|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
+ RelWithDebInfo|x64 = RelWithDebInfo|x64
+ RelWithDebInfo|x86 = RelWithDebInfo|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8D2B73FB-EECD-45CE-B8E5-335610462F58}.Debug|x64.ActiveCfg = Debug|x64
{8D2B73FB-EECD-45CE-B8E5-335610462F58}.Debug|x64.Build.0 = Debug|x64
{8D2B73FB-EECD-45CE-B8E5-335610462F58}.Debug|x86.ActiveCfg = Debug|Win32
{8D2B73FB-EECD-45CE-B8E5-335610462F58}.Debug|x86.Build.0 = Debug|Win32
+ {8D2B73FB-EECD-45CE-B8E5-335610462F58}.MinSizeRel|x64.ActiveCfg = Release|x64
+ {8D2B73FB-EECD-45CE-B8E5-335610462F58}.MinSizeRel|x64.Build.0 = Release|x64
+ {8D2B73FB-EECD-45CE-B8E5-335610462F58}.MinSizeRel|x86.ActiveCfg = Release|Win32
+ {8D2B73FB-EECD-45CE-B8E5-335610462F58}.MinSizeRel|x86.Build.0 = Release|Win32
{8D2B73FB-EECD-45CE-B8E5-335610462F58}.Release|x64.ActiveCfg = Release|x64
{8D2B73FB-EECD-45CE-B8E5-335610462F58}.Release|x64.Build.0 = Release|x64
{8D2B73FB-EECD-45CE-B8E5-335610462F58}.Release|x86.ActiveCfg = Release|Win32
{8D2B73FB-EECD-45CE-B8E5-335610462F58}.Release|x86.Build.0 = Release|Win32
+ {8D2B73FB-EECD-45CE-B8E5-335610462F58}.RelWithDebInfo|x64.ActiveCfg = Release|x64
+ {8D2B73FB-EECD-45CE-B8E5-335610462F58}.RelWithDebInfo|x64.Build.0 = Release|x64
+ {8D2B73FB-EECD-45CE-B8E5-335610462F58}.RelWithDebInfo|x86.ActiveCfg = Release|Win32
+ {8D2B73FB-EECD-45CE-B8E5-335610462F58}.RelWithDebInfo|x86.Build.0 = Release|Win32
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.Debug|x64.ActiveCfg = Debug|x64
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.Debug|x64.Build.0 = Debug|x64
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.Debug|x86.ActiveCfg = Debug|Win32
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.Debug|x86.Build.0 = Debug|Win32
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.MinSizeRel|x64.ActiveCfg = Debug|x64
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.MinSizeRel|x64.Build.0 = Debug|x64
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.MinSizeRel|x86.ActiveCfg = Debug|Win32
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.MinSizeRel|x86.Build.0 = Debug|Win32
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.Release|x64.ActiveCfg = Release|x64
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.Release|x64.Build.0 = Release|x64
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.Release|x86.ActiveCfg = Release|Win32
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.Release|x86.Build.0 = Release|Win32
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.RelWithDebInfo|x64.ActiveCfg = Release|x64
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.RelWithDebInfo|x64.Build.0 = Release|x64
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.RelWithDebInfo|x86.ActiveCfg = Release|Win32
+ {E61BCFC0-BC33-46D1-A144-9021FEF7F6BC}.RelWithDebInfo|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/CyberFSR/CyberFSR.vcxproj b/CyberFSR/CyberFSR.vcxproj
index 5e25c4e..25a61f1 100644
--- a/CyberFSR/CyberFSR.vcxproj
+++ b/CyberFSR/CyberFSR.vcxproj
@@ -162,6 +162,12 @@
vulkan-1.lib;ffx_fsr2_api_x64.lib;ffx_fsr2_api_dx12_x64.lib;ffx_fsr2_api_vk_x64.lib;%(AdditionalDependencies)
UseLinkTimeCodeGeneration
+
+ call "..\BuildFSR2.bat"
+
+
+ Clear and rebuildall FSR2 artifacts
+
diff --git a/README.md b/README.md
index 3b81112..6789452 100644
--- a/README.md
+++ b/README.md
@@ -37,10 +37,8 @@ WINEPREFIX=/path/where/the/steam/library/is/steamapps/compatdata/1091500/pfx /bi
### Instructions
* Clone this repo with all of its submodules.
-* Compile the FSR 2.0 submodule in external/FidelityFX-FSR2 as instructed in [official documentation](https://github.com/GPUOpen-Effects/FidelityFX-FSR2#quick-start-checklist). Note: I used the GenerateSolutionsDLL.bat but I am sure static libraries will work fine too.
* Open the CyberFSR.sln with Visual Studio 2022.
-* Hit Compile in VS2022, if you compiled the FSR2 in Debug mode, compile CyberFSR in Debug mode, and if you compiled the FSR2 DLLs in Release mode, do the same in CyberFSR. This will result in a DLL in either `[root]/x64/Debug/CyberFSR.dll` or `[root]/x64/Release/nvngx.dll`.
-* Copy the compiled `ffx_fsr2_api_dx12_x64.dll` and `ffx_fsr2_api_x64.dll` from the FidelityFX Directory to your Cyberpunk 2077 executable directory.
+* Hit Compile in VS2022. This will result in a DLL in either `[root]/x64/Debug/CyberFSR.dll` or `[root]/x64/Release/nvngx.dll`.
* Rename the compiled DLL from two steps ago to `nvngx.dll` if it is `CyberFSR.dll`.
* Copy `nvngx.dll` to your Cyberpunk 2077 executable directory.
* Run the `EnableSignatureOverride.reg` to allow Cyberpunks DLSS implementation to load unsigned DLSS versions