Nico de Poel
f79ad52483
Updated Unity plugin API headers, with support for new D3D12 v8 interface
5 months ago
Nico de Poel
587cec3a33
Updated to FidelityFX SDK 1.1.4 with FSR 3.1.4
9 months ago
Nico de Poel
528558d070
Implemented base event ID the way Unity's plugin interface actually expects you to: by reserving a range during initialization and storing the base value returned by Unity.
10 months ago
Nico de Poel
22fb91e3c0
Added missing copying of select initialization data into feature struct
10 months ago
Nico de Poel
5c8dcdeabf
Normalized directory separators
10 months ago
Nico de Poel
39f537d9b0
Avoid double initialization of the upscaler singleton. The graphics initialization event might get called multiple times.
10 months ago
Nico de Poel
9c65ed0007
Renamed upscaler interface and abstract base class to be more in line with C# naming conventions
10 months ago
Nico de Poel
8398f4ef74
Added a couple of missing lock guards
10 months ago
Nico de Poel
5cff14c48b
Moved source files into "src" directory and external headers into "include" directory
10 months ago
Nico de Poel
39b83c1d37
Fixed a silly bug. Plugin works again now.
10 months ago
Nico de Poel
24ff24dfd2
Removed some helper comments
10 months ago
Nico de Poel
49d622a763
Reworked core plugin code to make use of the upscaler classes, fixed some issues along the way
10 months ago
Nico de Poel
ae7d966f1d
Created separate class for DX11 implementation of FSR 2.2
10 months ago
Nico de Poel
88f5e78fc4
Created separate class for Vulkan implementation based on FFX API, with some additional refactoring
10 months ago
Nico de Poel
8fc9a23c3a
Moved handling of FidelityFX library and dynamic function loading into a separate base class, and reworked some things so that only UpscalerGraphicsDevice needs to access the mutex
10 months ago
Nico de Poel
a1e30f9af4
First pass at factoring out the feature management and the graphics API-specific code into separate classes, starting with FSR 3.1 for DX12
10 months ago
Nico de Poel
bfcfa4f627
Avoid locking the mutex and blocking the main/render thread on destroy at the same time, which could cause deadlocks under some circumstances.
11 months ago
Nico de Poel
2db0aed932
Configure render event for DX12 and Vulkan, to ensure the upscaler gets called without any synchronization errors. Fixes graphical glitching on Nvidia cards, as well as subtle bugs in the FSR3 pipeline on AMD.
11 months ago
Nico de Poel
a2a325b3ba
Added a few missing else's
11 months ago
Nico de Poel
41d76f4ab7
Updated license with full names of the three TND authors
11 months ago
Nico de Poel
bfc905ff75
Added some extra safety checks
11 months ago
Nico de Poel
77942d25b0
Query the FidelityFX library for upscaler versions upon load, and log the default FSR version that's available.
11 months ago
Nico de Poel
9793a55c48
Fall back to biasColorMask if reactiveMask is empty, because Unity can't seem to make up its mind what either of these textures mean.
11 months ago
Nico de Poel
c11ab1099b
Wait for graphics queue to become idle before destroying an upscale context, in case a dispatch is still busy. Fixes remaining crashes in Vulkan when enabling/disabling the plugin too rapidly.
11 months ago
Nico de Poel
49fa7d69a2
Await end of frame on the CPU before destroying a context, if the GPU has a dispatch queued on the current frame. Fixes remaining crashes in D3D12 when enabling/disabling the plugin too rapidly.
11 months ago
Nico de Poel
aa40402c28
Added lock guards to all exported functions that interact with the features or the graphics contexts, as well as additional validity checks. Protects against most of Unity's weird unsafe behavior when using the plugin, fixing the majority of crashes.
11 months ago
Nico de Poel
19fd96989e
Merged FSR 2.2 implementation for DX11 into the plugin, so that it supports all three major Windows graphics APIs.
11 months ago
Nico de Poel
65d6aa6303
Added FSR 2.2 headers and static libraries for DX11 only
11 months ago
Nico de Poel
e0f97ea006
Explicitly load the correct FFX API DLL based on the active graphics backend, and use functions dynamically loaded from that library. This allows both DX12 and Vulkan to work properly from the same codebase.
11 months ago
Nico de Poel
b132ce5a2a
Added Vulkan implementation based on the upgradable FFX API. Works, but FFX doesn't like it when I link to both DX12 and Vulkan libraries, always picking the first over the other. Means Vulkan will break if DX12 is the first library in the linker list, and vice versa.
11 months ago
Nico de Poel
dfab8c6126
Added initial required bits for Vulkan support
11 months ago
Nico de Poel
e463345efb
Reverted the SetTextures render event, as there is a legit reason (Vulkan) for the convoluted SetTextureEvent method of pushing textures
11 months ago
Nico de Poel
eeb43bac2a
- Added an extra render event to allow setting all textures in one go, in a way that isn't stupid and inefficient
- Reverted texture table back to using intptr_t entries, so that all structs are render API-agnostic
11 months ago
Nico de Poel
b8289ac5a0
Added an MIT license on my own name, to keep my options fully open for future applications
11 months ago
Nico de Poel
3db46ba447
Made context destruction more consistent and safe against duplicate slot freeing
11 months ago
Nico de Poel
7444ef9846
Tying up some loose ends:
- Clean up lingering contexts on shutdown
- Set UAV state on output texture. Doesn't make any real difference but it seems to be the correct thing.
- Removed some TODOs
11 months ago
Nico de Poel
f53321bd43
Use ID3D12Resource pointers in the texture table, to remove some unnecessary casts
11 months ago
Nico de Poel
dafe81d108
Fixed bugs:
- Assign colorOutput texture to output
- Texture event passes texture IDs after all, so translate those to ID3D12Resource pointers
- Assign texture in End event, perform clear in Begin event. Fixes inputColor texture entry getting cleared.
11 months ago
Nico de Poel
cfcf81e50e
Implemented what should be the rest of the FSR3 feature set. Still untested.
11 months ago
Nico de Poel
bf13cda3ca
First bits of integration of FFX upgradable API for creating an upscaler context
11 months ago
Nico de Poel
f6cabcd3f4
Added upgradable FidelityFX API for DX12 with precompiled signed DLL from AMD
11 months ago
Nico de Poel
9ac431209e
Implemented D3D12 Unity interface bits
11 months ago
Nico de Poel
2d5b133833
Implemented thread-safe allocation/freeing of feature slots, plus decoding of texture userdata
11 months ago
Nico de Poel
781b062fca
Created initial skeleton of FSR3 native render plugin, with all type declarations and stubbed-out public interface functions.
11 months ago