Nico de Poel
d48c7a200d
Added FSR3 HLSL shader code with initial batch of Unity .compute wrappers
2 years ago
Nico de Poel
8a1572933a
Disable plugin importer settings on all FSR2 header include files
3 years ago
Nico de Poel
20801cfd6a
Updated shaders to FSR 2.2.1
3 years ago
Nico de Poel
20a6d4a057
Removed unnecessary HDRP keyword from two shaders
3 years ago
Nico de Poel
26cb485c30
Also use HDRP texture array workaround for opaque-only color input buffer
3 years ago
Nico de Poel
501b1b0638
Added workaround for HDRP using texture arrays for its camera buffers on some platforms
3 years ago
Nico de Poel
653b427c37
Commented out all experimental DXC-related pragmas, as these could sometimes cause shader compilation issues even when not enabled.
3 years ago
Nico de Poel
ef20869c48
Added support for experimental auto-TCR generation pass
3 years ago
Nico de Poel
a2d670d0f8
Added a dummy field to the main FSR2 constant buffer, to make it exactly 128 bytes long. This fixes a data alignment issue on iOS Metal.
3 years ago
Nico de Poel
e0027ed77a
Added MIT license header to every source file, similar to the FFX FSR2 codebase
3 years ago
Nico de Poel
b190b2993c
Suppress a few common but harmless warnings in FFX's HLSL code.
This way we don't have to modify the FSR2 shaders to get rid of these warnings.
3 years ago
Nico de Poel
06a2658080
More renaming
3 years ago
Nico de Poel
e78920a89c
Disable DXC shader compiler by default because enabling it for DX12 will inevitably break DX11 support.
3 years ago
Nico de Poel
f429de28fb
Enabled DXC shader compiler on supported platforms, and use it to enable native 16-bit and wave operations where possible.
Moved common defines, pragmas and hacks into a new shared header file.
3 years ago
Nico de Poel
54849cee0f
Use RenderTargetIdentifier magic to bind UAV outputs to SRV inputs, making obsolete the monkey patching of shaders.
Also reorganized the SRV/UAV names to match the ordering from the FSR2 source.
3 years ago
Nico de Poel
0e4f344166
Fixed a stupid typo that broke type definitions on desktop platforms
3 years ago
Nico de Poel
d3a7dbf45c
Redid the type definitions for PS4/5, true 16-bit types should now be supported
3 years ago
Nico de Poel
b15e828e2c
Don't use global_memory on PS4/5 I guess since it breaks everything
3 years ago
Nico de Poel
76f82751ae
Removed #extension directives which are meant only for GLSL and which caused compiler warnings in Unity
3 years ago
Nico de Poel
9733de7067
Added some quick hacks to allow the shaders to compile for Metal.
These "interlocked" functions are not interlocked anymore now, but it's good enough for an initial test on MacOS.
3 years ago
Nico de Poel
882075862f
Moved PSSL type definitions up, so that they apply both when FFX_HALF is defined and when not. This allows the shaders to compile for PS4/5 in both modes.
Should look into proper half-precision support; fp16 is only supported on PS4 Pro, on base PS4 everything compiles down to fp32 anyway.
3 years ago
Nico de Poel
fbb3080696
Redefine HLSL globallycoherent as PSSL global_memory. The shader compiler seems to like it, and as far as I can tell it should serve the same purpose.
3 years ago
Nico de Poel
e624b61ea5
Removed all of the TCR auto-generation stuff, as I have no intention of actually supporting this anytime soon
3 years ago
Nico de Poel
13eb24289e
Initial implementation of accumulation pass. It's doing... something but it's definitely not correct yet.
Changed scene luminance into a persistent RT, since that makes it easier to control mipmaps and bind specific mip levels.
3 years ago
Nico de Poel
56da810b50
Implemented lock pass
3 years ago
Nico de Poel
4801535236
Removed shader that was made obsolete as part of FSR 2.2
3 years ago
Nico de Poel
934a3d60fa
Implemented depth clip pass. Solved the problem of UAV/SRV name mismatch by monkey-patching the relevant shaders. Added default reactive mask.
3 years ago
Nico de Poel
2f5eaf48ba
Bit of cleanup and moving stuff around
3 years ago
Nico de Poel
834c396321
Color, depth and motion vectors are now provided as regular texture inputs to the compute shaders, by blitting them from the game camera ahead of time.
3 years ago
Nico de Poel
ee13551bb7
Removed GLSL shader files as we don't actually use those, and to reduce clutter.
3 years ago
Nico de Poel
9489a19cd8
Progress on managing resources. Compute luminance pyramid shader is starting to do something.
Also looked at the Lanczos LUT resource and ran into some roadblocks there.
3 years ago
Nico de Poel
913c5879fa
Started work on luminance pyramid and acculumate pipelines.
Added keywords for customization options to the compute shaders using multi_compile_local.
3 years ago
Nico de Poel
b89de25b10
Tweaks to make the FSR2 shaders compile on PS4/5 platforms.
FFX_HALF doesn't seem to be a thing in FSR 2.2 anymore anyway, so might as well keep that disabled.
3 years ago
Nico de Poel
a64795dd4f
Added Unity compute shader for the new experimental Transparency/Composition/Reactive auto-generation feature from FSR 2.2
3 years ago
Nico de Poel
a6abcbb788
Fixed a couple of issues in the FSR 2.2 shader sources
3 years ago
Nico de Poel
38a2164a52
Updated shader sources to FSR 2.2
3 years ago
Nico de Poel
447ae35772
- Added SPD constants buffer used by luminance pass
- Started code reorganization: added a callbacks class for things that need to be customizable by the gamedev
3 years ago
Nico de Poel
9b768e2c2f
- Added Unity wrappers for all FSR2 compute shaders
- Experimented with alternate compilation options for RCAS shader
3 years ago
Nico de Poel
8b5395acd8
Reorganized shader files: FSR2 shaders are now copied directly into the project without alterations, Unity wrappers are located in an FSR2 folder.
3 years ago
Nico de Poel
79d8aa49b6
- Implemented main FSR2 constants buffer, which now supplies the pre-exposure value to the RCAS shader.
- Converted thread groups calculation from FSR2 code
3 years ago
Nico de Poel
b5f324eb25
- Simplified Unity RCAS shader to basically just a few defines and a direct import of the original FSR2 shader code.
- Implemented 1x1 exposure texture and bound it to the compute shader.
- Implemented RCAS config data set with precomputed values (so we don't have to do any unsafe float-to-int conversions), apply it to a constant buffer, and made sharpness available as a slider in the inspector.
3 years ago
Nico de Poel
0bdc75ff08
First import of Unity FSR2 test project on built-in render pipeline:
- Yoinked a bunch of code from MadGoat SSAA to build a custom render scaler
- Added a simple shader to check some of the render buffers during upscaling
- Successfully ported the RCAS compute shader from the FSR2 project into Unity!
3 years ago