Nico de Poel
d7191b98e7
Applied a few more recent fixes from the FSR2 codebase
1 year ago
Nico de Poel
d3f60e2650
Added ASR runtime source files, as a copy of the FSR2 sources, with a bunch of renaming and stripped of some parts that we know we're not going to need.
1 year ago
Nico de Poel
c8eebd63ed
Added multi-compile keywords for all fragment shaders, and added Metal workaround for texture atomics
1 year ago
Nico de Poel
a85e242d4c
Added shaders for the two compute passes, plus a few minor fixes
1 year ago
Nico de Poel
d77922cc4b
Backported fixes that we already know are going to be necessary for full Unity support:
- Removed empty parantheses on GroupMemoryBarrier macro, which confuse the 2020.1 shader compiler
- Added padding field to cbFSR2 to make it exactly 128 bytes in size, which gives correct buffer alignment on iOS Metal
- Changed auto-exposure reset threshold value to 1e4f, as part of a fix for black screen flashes in OpenGL Core on Nvidia GPUs
- Clamp luma to >= 0 in auto-exposure to fix artifacting in OpenGL Core on Nvidia GPUs
- Removed #extension directives meant for GLSL, which cause shader compiler warnings in Unity
1 year ago
Nico de Poel
1551a3ccf8
Added the remaining vertex/fragment shader passes and made the same modifications to get them to compile
1 year 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:
- Removed vk::binding directives, as they are only meant for Vulkan and don't mean anything to Unity
- Initialize inout struct as zero to stop Unity compiler complaints
- Renamed vertex main function to VertMain to prevent duplicate main function declaration
- Removed duplicate VertexOut struct declaration
- Removed unused header includes in vertex shader code, preventing duplicate declarations
- Fixed up a few relative header include paths
1 year ago
Nico de Poel
66059cb742
Imported ARM ASR shader code for HLSL without any modifications
1 year ago
Nico de Poel
299200cb9c
Ported over jitter UV fixes from Snapdragon GitHub repo
1 year ago
Nico de Poel
9971d85ce4
Changed output texture formats from half to float, fixes Metal shader compilation issues on iOS
1 year ago
Nico de Poel
9f4b96ea25
Made integration more PPV2-like by using property sheets, material property blocks and the BlitFullScreenTriangle method.
1 year ago
Nico de Poel
df58df61d6
Reorganized shader code such that standard BiRP and PPV2 can share the same common code with only some light wrappers to implement the differences
1 year ago
Nico de Poel
72df347315
Reworked 2-pass FS implementation to integrate more directly with the PPV2 framework, allowing for multi-target rendering using the fullscreen triangle blit, which eliminates the need for an extra blit at the end.
Also fixed a bug where the scale factor was inverted, which caused FS upscaling output to be blurry.
1 year ago
Nico de Poel
cac783bebc
Working SGSR2 2-pass FS implementation, bit dirty but good enough for testing.
1 year ago
Nico de Poel
87237bbddc
Initial conversion to HLSL
1 year ago
Nico de Poel
a0fa2c9e60
First import of GLSL fragment shaders plus some initial Unity shader setup
1 year ago
Nico de Poel
a56f0742b5
Further tweaked motion vector processing, now the camera motion vectors from Unity produce an exact match with the auto-generated motion from the clip-delta matrix, in both D3D, Vulkan and OpenGL. It also makes sense with regards to the flipped Y-coordinate in screen space now. The final result looks good now too.
1 year ago
Nico de Poel
05989857c0
Added an untested and as of yet unused HDRP include file, just as an expression of what this file will look like for SRPs
1 year ago
Nico de Poel
d354d07d81
Added scaleRatio to unify the cbuffer definition for all shaders, including the fragment shader variant.
1 year ago
Nico de Poel
ed566a8beb
Empirically determined the best setup for motion vectors in OpenGL, though it still doesn't make a whole lot of sense. Added opt-in debug symbols line to the upscale shaders to make analysis easier.
1 year ago
Nico de Poel
4f8cf086bf
More specifically, set NDC Y-coordinate to be up when the Unity graphics API has UV's starting at the top
1 year ago
Nico de Poel
80a8532cb4
Cleaned up an unused argument
1 year ago
Nico de Poel
5b203e7ef5
Set normalized device coordinates Y direction to be up, which is standard in Unity, and properly detect non-zero motion vector inputs. This *seems* to be the correct recipe.
1 year ago
Nico de Poel
19b2969e58
Added macros to change nearest-depth and depth-clipping logic based on whether the Unity graphics API uses reversed Z or not
1 year ago
Nico de Poel
8635b131f6
Renamed SGSR2 compute shader resources class, to allow an easier distinction between fragment and compute variants later on
1 year ago
Nico de Poel
8d6036c91c
Moved a bunch of common definitions and functions into a separate file
1 year ago
Nico de Poel
0469bb921f
Reverted use of CBUFFER_ macros, as it was breaking the shaders on Vulkan
1 year ago
Nico de Poel
3285c552f4
Verified motion vector "decoding" against the auto-generated camera MVs based on the clip-space delta matrix, and made a small fix
1 year ago
Nico de Poel
c43c8d11f9
Reworked SGSR2 classes, moving more logic to the base class, and implemented clip-space delta matrix as well as the is-camera-still logic.
1 year ago
Nico de Poel
9bf6a12c97
Minor optimization: use half float types wherever the original GLSL code uses mediump floats.
1 year ago
Nico de Poel
7217b0fc32
Unity-fied all SGSR2 shaders by changing all texture declarations and accesses into TextureXR-style macros, with a shared BiRP definitions file.
1 year ago
Nico de Poel
0f7baf0b52
Implemented 2-pass CS dispatch
1 year ago
Nico de Poel
d4c1d3f56e
Made SGSR2 upscaler plugin abstract and split off 3-pass CS version into its own separate class
1 year ago
Nico de Poel
14fa1bc7d2
Initial port of SGSR2 2-pass compute shaders to HLSL (untested)
1 year ago
Nico de Poel
708e4308c5
Consolidated SGSR2 shaders into single .compute files as there's not much point in using includes, and grouped them together into a 3-pass folder. This will make it easier to add the other variants later.
1 year ago
Nico de Poel
7a259062d8
Working SGSR2 3-pass:
- Added padding field to fix buffer data misalignment issue
- Simplified the translation of GLSL globalInvocationID to HLSL
1 year ago
Nico de Poel
5646e0a325
Added PoC SGSR2 upscaler
1 year ago
Nico de Poel
295a856287
Additional debug output
1 year ago
Nico de Poel
3ab97172e6
Upgraded project to Unity 2022.3.47f1, enabled Trinity support and set up some initial resolution values
1 year ago
Nico de Poel
ceb8421e79
Updated debug tools to allow A/B comparisons between upscalers
1 year ago
Nico de Poel
6ad499c57d
Added CAS sharpening shader
1 year ago
Nico de Poel
8db82e664c
Reworked upscaling integration to allow for multiple upscaler algorithms that can be switched on the fly.
1 year ago
Nico de Poel
31eb875b79
Fixed an issue that would cause the wrong depth buffer to be passed to FSR when using forward rendering on newer Unity versions.
2 years ago
Nico de Poel
79298e140b
Updated namespaces now that FSR3 is in a separate sub-namespace.
2 years ago
Nico de Poel
911ae9bb29
Removed .19f1 requirement from PPV2 package. Any Unity 2020.1 and up should be supported.
2 years ago
Nico de Poel
582cd80713
Took FSR3 code and shaders out of the PPV2 package and replaced it with an FSR3 package reference
2 years ago
Nico de Poel
d1808d542e
Updated SuperResolution effect implementation to be compatible with FSR 3.1
2 years ago
Nico de Poel
63d46a6c8e
Imported FSR 3.1 implementation
2 years ago
Nico de Poel
7b37a0fba1
Correctly destroy resources when not in play mode
2 years ago
Nico de Poel
c66ab6136d
Applied correct macros to input and output texture definitions for HDRP support
2 years ago