Commit Graph

  • 818c146f08 Merge branch 'master' into swapchain swapchain Nico de Poel 2026-01-27 15:03:52 +0100
  • e20c6c47ac DX12 interface V8 experiments master Nico de Poel 2026-01-27 15:02:31 +0100
  • f79ad52483 Updated Unity plugin API headers, with support for new D3D12 v8 interface Nico de Poel 2025-08-23 22:35:03 +0200
  • 587cec3a33 Updated to FidelityFX SDK 1.1.4 with FSR 3.1.4 Nico de Poel 2025-05-11 15:28:24 +0200
  • abfd3eba09 WIP experiments Nico de Poel 2025-05-11 15:21:39 +0200
  • 97e220af24 Merge branch 'master' into swapchain Nico de Poel 2025-04-11 16:22:00 +0200
  • 167433ba31 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. fsr2 Nico de Poel 2025-04-11 16:07:22 +0200
  • 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. Nico de Poel 2025-04-11 16:02:42 +0200
  • 22a3c6f6d5 Swapchain experiments Nico de Poel 2025-04-11 15:49:17 +0200
  • 22fb91e3c0 Added missing copying of select initialization data into feature struct Nico de Poel 2025-04-03 21:19:31 +0200
  • 5c8dcdeabf Normalized directory separators Nico de Poel 2025-04-03 10:06:04 +0200
  • 39f537d9b0 Avoid double initialization of the upscaler singleton. The graphics initialization event might get called multiple times. Nico de Poel 2025-04-03 00:38:34 +0200
  • 9c65ed0007 Renamed upscaler interface and abstract base class to be more in line with C# naming conventions Nico de Poel 2025-04-03 00:34:49 +0200
  • 8398f4ef74 Added a couple of missing lock guards Nico de Poel 2025-04-03 00:30:06 +0200
  • 5cff14c48b Moved source files into "src" directory and external headers into "include" directory Nico de Poel 2025-04-02 22:26:25 +0200
  • 39b83c1d37 Fixed a silly bug. Plugin works again now. Nico de Poel 2025-04-02 22:17:08 +0200
  • 24ff24dfd2 Removed some helper comments Nico de Poel 2025-04-02 22:02:15 +0200
  • 49d622a763 Reworked core plugin code to make use of the upscaler classes, fixed some issues along the way Nico de Poel 2025-04-02 22:00:31 +0200
  • ae7d966f1d Created separate class for DX11 implementation of FSR 2.2 Nico de Poel 2025-04-02 21:23:59 +0200
  • 88f5e78fc4 Created separate class for Vulkan implementation based on FFX API, with some additional refactoring Nico de Poel 2025-04-02 21:01:14 +0200
  • 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 Nico de Poel 2025-04-01 22:51:35 +0200
  • 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 Nico de Poel 2025-04-01 22:29:20 +0200
  • 3bf309fb1e Small changes to distinguish the FSR2 plugin from the FSR3 plugin Nico de Poel 2025-03-27 18:58:03 +0100
  • e40f6b0705 Configure render event for DX12 and Vulkan, to ensure the upscaler gets called without any synchronization errors. Avoid locking the mutex and blocking the main/render thread on destroy at the same time, which could cause deadlocks under some circumstances. Nico de Poel 2025-03-18 20:25:41 +0100
  • bfcfa4f627 Avoid locking the mutex and blocking the main/render thread on destroy at the same time, which could cause deadlocks under some circumstances. Nico de Poel 2025-03-18 19:58:05 +0100
  • 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. Nico de Poel 2025-03-18 19:47:32 +0100
  • a2a325b3ba Added a few missing else's Nico de Poel 2025-03-18 13:49:27 +0100
  • fa85f22f79 Updated license with full names of the three TND authors Nico de Poel 2025-03-18 13:35:35 +0100
  • 41d76f4ab7 Updated license with full names of the three TND authors Nico de Poel 2025-03-18 13:35:08 +0100
  • 7cb0961776 Added some extra safety checks Nico de Poel 2025-03-16 19:15:15 +0100
  • bfc905ff75 Added some extra safety checks Nico de Poel 2025-03-16 19:09:54 +0100
  • 77942d25b0 Query the FidelityFX library for upscaler versions upon load, and log the default FSR version that's available. Nico de Poel 2025-03-16 16:43:22 +0100
  • c2f3bb7958 Fall back to biasColorMask if reactiveMask is empty, because Unity can't seem to make up its mind what either of these textures mean. Nico de Poel 2025-03-15 22:16:43 +0100
  • 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. Nico de Poel 2025-03-15 20:23:07 +0100
  • 3a23f8d874 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 and Vulkan when enabling/disabling the plugin too rapidly. Nico de Poel 2025-03-15 17:20:40 +0100
  • 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. Nico de Poel 2025-03-15 17:10:02 +0100
  • 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. Nico de Poel 2025-03-15 16:51:15 +0100
  • 2a67bef38b 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. Nico de Poel 2025-03-13 22:09:29 +0100
  • 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. Nico de Poel 2025-03-13 21:44:45 +0100
  • 19fd96989e Merged FSR 2.2 implementation for DX11 into the plugin, so that it supports all three major Windows graphics APIs. Nico de Poel 2025-03-12 18:42:47 +0100
  • 65d6aa6303 Added FSR 2.2 headers and static libraries for DX11 only Nico de Poel 2025-03-12 18:08:24 +0100
  • 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. Nico de Poel 2025-03-12 16:18:27 +0100
  • 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. Nico de Poel 2025-03-11 23:05:39 +0100
  • dfab8c6126 Added initial required bits for Vulkan support Nico de Poel 2025-03-11 22:14:19 +0100
  • e463345efb Reverted the SetTextures render event, as there is a legit reason (Vulkan) for the convoluted SetTextureEvent method of pushing textures Nico de Poel 2025-03-11 22:04:48 +0100
  • 639aac06e8 Implemented remainder of DX11 support Nico de Poel 2025-03-11 21:46:07 +0100
  • 686c848760 Fixed clashing helper function names in DX11 and DX12, and fixed missing linker symbol in DX11 Nico de Poel 2025-03-11 21:30:15 +0100
  • 112beaa592 Implemented FSR2 for Vulkan, along with some initial bits for DX11 Nico de Poel 2025-03-11 21:17:43 +0100
  • 048ed98d12 Added DX11 and Vulkan headers and static libraries to the project Nico de Poel 2025-03-11 17:51:32 +0100
  • e8bc0eeb9c Added Unity graphics API headers for DX11 and Vulkan Nico de Poel 2025-03-11 17:46:05 +0100
  • f4af0819c7 Isolated DX12-specific code, so that it can easily be replaced with alternative DX11 and Vulkan code. Nico de Poel 2025-03-11 17:31:06 +0100
  • 4ea19e9852 Renamed FSR3 => FSR2 Nico de Poel 2025-03-11 17:23:08 +0100
  • d822598778 Reimplemented upscaling using the older FSR2 API for DX12 Nico de Poel 2025-03-11 17:20:10 +0100
  • 1db11a5249 Added FSR 2.2 headers and static libraries for DX11, DX12 and Vulkan Nico de Poel 2025-03-11 13:48:03 +0100
  • 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 Nico de Poel 2025-03-11 10:56:43 +0100
  • b8289ac5a0 Added an MIT license on my own name, to keep my options fully open for future applications Nico de Poel 2025-03-11 09:57:13 +0100
  • 3db46ba447 Made context destruction more consistent and safe against duplicate slot freeing Nico de Poel 2025-03-10 19:47:32 +0100
  • 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 Nico de Poel 2025-03-10 19:22:44 +0100
  • f53321bd43 Use ID3D12Resource pointers in the texture table, to remove some unnecessary casts Nico de Poel 2025-03-10 19:11:28 +0100
  • 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. Nico de Poel 2025-03-10 18:44:26 +0100
  • cfcf81e50e Implemented what should be the rest of the FSR3 feature set. Still untested. Nico de Poel 2025-03-10 17:41:50 +0100
  • bf13cda3ca First bits of integration of FFX upgradable API for creating an upscaler context Nico de Poel 2025-03-10 17:11:22 +0100
  • f6cabcd3f4 Added upgradable FidelityFX API for DX12 with precompiled signed DLL from AMD Nico de Poel 2025-03-10 17:10:49 +0100
  • 9ac431209e Implemented D3D12 Unity interface bits Nico de Poel 2025-03-10 16:31:54 +0100
  • 2d5b133833 Implemented thread-safe allocation/freeing of feature slots, plus decoding of texture userdata Nico de Poel 2025-03-10 16:05:36 +0100
  • 781b062fca Created initial skeleton of FSR3 native render plugin, with all type declarations and stubbed-out public interface functions. Nico de Poel 2025-03-10 15:36:04 +0100