43 Commits (f3fcfec801e0528f7e2c000263489a36215d6bf7)

Author SHA1 Message Date
Nico de Poel dad922c338 Swapped Luma and MotionVector outputs on the Reconstruct & Dilate pass, which fixes another apparent alignment issue on PS5 NGGC, causing the motion vectors to break occasionally when switching scaling ratios. 10 months ago
Nico de Poel f8483414f2 Fixed exposure instability for a few seconds after initialization on iOS Metal, and cleared out a shader compiler warning at run-time. 10 months ago
Nico de Poel 1dc6216750 Simplified platform wave operation support check 10 months ago
Nico de Poel fdf2125cfe Revert "Removed Xbox Series from the modern shaders, as it doesn't like Native16Bit at all and just falls back to legacy, and restored Native16Bit to all the modern shaders. Xbox Series will still use DXC and wave operations." 10 months ago
Nico de Poel 99f28af11d Removed Xbox Series from the modern shaders, as it doesn't like Native16Bit at all and just falls back to legacy, and restored Native16Bit to all the modern shaders. Xbox Series will still use DXC and wave operations. 10 months ago
Nico de Poel d7483c31c4 Added some commented-out debug pragmas to the compute shaders 10 months ago
Nico de Poel 1222d236f5 Fixed dynamic resolution scaling: 10 months ago
Nico de Poel 133343b285 Added texture array support for inputs and outputs 10 months ago
Nico de Poel 760003744f Added missing bits of temporal reactive implementation in the FP32 code path, and only bind the relevant inputs to the Accumulate shader based on the ASR mode. Fixes Balanced and Performance modes on Xbox One, which for some reason still seems to be running the FP32 code path, no matter what the FFXM_HALF keyword is set to. 10 months ago
Nico de Poel cfae0072e9 Force enable FP16 shader code path, and redefine FFXM_HALF with a truthy value 10 months ago
Nico de Poel 4c6a7b7309 Removed Native16Bit from the two compute shaders because Xbox Series does not like it. Seems fine for the fragment shader though, which is where it matters most. 10 months ago
Nico de Poel facfd037d2 Added Legacy variants of the ASR shaders, without DXC, Native16Bit or wave operations. Separated them into an AsrShaderBundle that can be selected from at run-time based on the current graphics device. 10 months ago
Nico de Poel 5faf6c2a56 Reworked ASR shaders for modern compilation on DX12, Vulkan, Metal, PS5 and Xbox Series: 10 months ago
Nico de Poel 3912c66b0d Bind new locks to the accumulate shader as a regular SRV (read-only), and clear the locks buffer ahead of time instead of at the end of the accumulate shader. This simplifies the shader binding setup, as well as being "more correct" because we're using a temporary RT for the locks buffer, meaning it makes no sense to clear it for the next frame. 10 months ago
Nico de Poel 16cf41493a Swapped the order of the render targets around for the depth clip pass. Fixes prepared input color being black in NGGC because... I don't know, probably an alignment issue of some sort? PS5 is being really stupid here. 10 months ago
Nico de Poel c52a40f706 Use implicit register binding when using UAVs in fragment shaders. Fixes remaining issues with reconstruct and accumulate passes on PS5 CGGC. 10 months ago
Nico de Poel cc74a9cd2f Use implicit register binding for fragment shader random write targets. Fixes UAVs not binding properly on PS5. 10 months ago
Nico de Poel 90490e8819 Temp disabled Native16Bit again, as it does cause compilation issues when building for standalone. Need to make a split between Modern and Legacy here. 10 months ago
Nico de Poel 2f8a0ca595 Added output target pragmas for random write targets. Not sure if these are necessary but it's something to keep an eye on. 11 months ago
Nico de Poel bd18c12408 Updated PSSL target output format pragmas with what *should* be the correct values, though the PS5 still disagrees with this 11 months ago
Nico de Poel 5f4d4b37ad Fixed a big derp in the PSSL type definitions, copy-pasted code still contained FFX_HALF instead of FFXM_HALF, which caused 16-bit types to be compiled as 32-bit, causing a bunch of duplicate function definitions. 11 months ago
Nico de Poel 884ca84071 Moved unorm and globallycoherent definitions to the common cginc, rather than stuffing them somewhere in between all the types 11 months ago
Nico de Poel e4ad05a414 Made PSSL pragmas only get included for PSSL to prevent compiler warnings, and require native 16-bit compilation for PSSL. 11 months ago
Nico de Poel 8d85253def Enabled Native16Bit requirement for Vulkan, which sets a precedent for other graphics APIs to use this as well 11 months ago
Nico de Poel 090b9135e8 Reworked auto-exposure to use a double buffered render texture, which allows the smooth exposure transition logic to load a value that's guaranteed to be from the previous frame. Fixes artifacting and flickering issues caused by loading & storing to the same texture. 11 months ago
Nico de Poel c0cf3de364 Temporarily disable FP16 altogether, which makes PSSL shader compilation a lot happier. Need to figure out how to make the FP16 utility function definitions work without the shader compiler complaining about duplicate declarations. 11 months ago
Nico de Poel c4b59c7dc3 Bunch of fixes to make ASR Quality somewhat work on PS5, without reactive mask still: 11 months ago
Nico de Poel 4c93edccde Added type definitions for PSSL (PS4/5) and removed hard-coded FFMX_HALF defines. Let the multi-compile shaders and C# code control that. 11 months ago
Nico de Poel 9ef2bfdef0 Reverted rework of accumulation parameter initialization function to what it originally was, but with a struct clear to zero. 11 months ago
Nico de Poel c92e35ff73 Added balanced and performance preset keywords to the depth clip and accumulate passes, which seem to be the only ones that use it. Makes the Balanced variant work. Performance variant still problematic. 11 months ago
Nico de Poel 943d119706 Fixed a number of issues to make Quality variant work: 11 months ago
Nico de Poel c4df3d45aa Got UAV bindings in fragment shaders to work in what I think is the correct way 11 months ago
Nico de Poel 82734c7606 Went over all the shader inputs and output and implemented them. Realized that some fragment shaders use UAVs with random write, is that even possible in Unity? 11 months ago
Nico de Poel 20a930097e Added keywords for balanced/performance presets and GLES support 11 months ago
Nico de Poel d5bbadaa77 Made all the ASR shader keywords global and encapsulated all of the keyword management into a separate class, which will enable and disable keywords globally based on the initialization flags and dispatch parameters. 11 months ago
Nico de Poel c8eebd63ed Added multi-compile keywords for all fragment shaders, and added Metal workaround for texture atomics 11 months ago
Nico de Poel a85e242d4c Added shaders for the two compute passes, plus a few minor fixes 11 months ago
Nico de Poel d77922cc4b Backported fixes that we already know are going to be necessary for full Unity support: 11 months ago
Nico de Poel 1551a3ccf8 Added the remaining vertex/fragment shader passes and made the same modifications to get them to compile 11 months ago
Nico de Poel c27195fb9a Defined a vertex/fragment shader for the accumulate pass, with initial modifications to make things compile as a proof of concept: 11 months ago
Nico de Poel 66059cb742 Imported ARM ASR shader code for HLSL without any modifications 11 months ago