Nico de Poel
e0027ed77a
Added MIT license header to every source file, similar to the FFX FSR2 codebase
3 years ago
Nico de Poel
495350f569
Allow outputting to a user-provided color + depth buffer and optionally a motion vectors buffer.
This can be used for passing the upscaled result to a different camera for additional post-processing and final output.
Motion vectors aren't rescaled properly yet.
3 years ago
Nico de Poel
1c030377c0
Reshufled some code so that if the initialization process fails for some reason, we don't leave the scene behind in a messed up state.
3 years ago
Nico de Poel
ce9a64cba5
Figured out a way to support cameras with target textures, that avoids errors about depth buffer mismatch.
3 years ago
Nico de Poel
61a10cbd09
Updated project to Unity 2021.3.21f1
3 years ago
Nico de Poel
1cc0de7c89
Moved Shader ID constants to a separate class file
3 years ago
Nico de Poel
1ff980bea9
Changing my mind yet again about directory names
3 years ago
Nico de Poel
03fd58cb5a
Check for compute shader support when enabling FSR2, and moved debug checking flag to default context creation method.
3 years ago
Nico de Poel
0db7773ed9
Added a helper script to allow OnPreCull to happen at a different location in the camera stack from the image effect script.
Also added a scene with PPV2 effects and FSR2 as post-PPV2 image effect to test and demonstrate this.
3 years ago
Nico de Poel
d02fc3cec1
Eliminated High Quality and Native modes again because you know what? AMD were right with their presets.
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
eaecd40cc4
Set default scale value to 0.5 as that seems to work better in multiple contexts
3 years ago
Nico de Poel
06a2658080
More renaming
3 years ago
Nico de Poel
3e31950d56
Changed Fsr2Callbacks into an interface + base implementation
3 years ago
Nico de Poel
da651c3d6f
Moved some files
3 years ago
Nico de Poel
ee4d2d43ae
Use render size for motion vector scale, since we are rendering them at lower resolution.
Making this explicit takes away some recurring confusion.
3 years ago
Nico de Poel
d232e3e07b
Removed separate command buffer for binding input buffers, which really wasn't needed anymore.
3 years ago
Nico de Poel
279e294100
Replaced Post-Processing Stack V2 package from Unity repository with a local copy, so that we may make modifications to it
3 years ago
Nico de Poel
cd8b9965d2
Added ambient occlusion and color grading effects for testing purposes.
3 years ago
Nico de Poel
178d9131af
Implemented most of the FSR2 dispatch. It seems to be doing the right things in the background.
Now its output just needs to be hacked into the PPV2 pipeline correctly.
3 years ago
Nico de Poel
d847999e44
Implemented remaining settings and parameters
3 years ago
Nico de Poel
416b501c15
Implemented screen scaling through camera viewport manipulation, done through the helper's LateUpdate.
This also led to some reorganization of variables and event ordering.
Added some bloom to the post-process layer to test the cooperation between FSR2 and other post effects.
3 years ago
Nico de Poel
6bc6d69fb4
Added initial implementation of post-processing stack effect for FSR2, with a new scene to test it in.
This contains the results of a bunch of research so far, on where code gets executed and how to inject additional steps into the render loop.
3 years ago
Nico de Poel
f5cc64db94
Added Post-Processing Stack V2 package to the project
3 years ago
Nico de Poel
05142da9ad
Renamed Fsr2Controller to Fsr2ImageEffect, to make its purpose more clear.
This is "only" a classic OnRenderImage effect, made to run as the final pass and to output directly to the backbuffer.
3 years ago
Nico de Poel
0548c63800
Revert "Reintroduced the ability for FSR2 to output to a render texture again. Very basic for now."
This reverts commit bb24ed970b .
3 years ago
Nico de Poel
9352192f29
Enable HDR when the camera it set for it
3 years ago
Nico de Poel
bb24ed970b
Reintroduced the ability for FSR2 to output to a render texture again. Very basic for now.
3 years ago
Nico de Poel
bcfb4b6769
Check for HDR when selecting RT formats for opaque-only and final output.
This makes for fewer assumptions and should provide better support for HDR render paths.
3 years ago
Nico de Poel
e57cc0468d
Moved exposure, reactive and T&C inputs to OnPreCull, to make OnRenderImage as clean and simple as possible.
3 years ago
Nico de Poel
8668e0b3f6
Back to basics: allow FSR2 to only output directly to the backbuffer
3 years ago
Nico de Poel
8575800995
Allow customization of pre-exposure and exposure inputs
3 years ago
Nico de Poel
8cd818a3d9
A bit of comment cleanup
3 years ago
Nico de Poel
feb65ef9b3
Enable auto-exposure by default, which is what the FSR2 docs recommend.
3 years ago
Nico de Poel
3ffbc0573e
Implemented auto-exposure feature.
The way this works: compute luminance always outputs an auto-exposure value. The passes using exposure as input can either use this auto-exposure, or use the default read-only exposure value, or use an application-provided exposure.
3 years ago
Nico de Poel
21d939cfd4
Use original camera pixel width and height to determine display size, so that cameras with non-standard viewport rects will work too.
3 years ago
Nico de Poel
341921bdda
Perform camera scaling in OnPreCull, instead of OnPreRender.
Fixed compatibility with post-FX executing OnPreRender before FSR2, and which retrieve camera resolution values to perform their rendering. For example: HBAO.
3 years ago
Nico de Poel
9b83409c71
Added debug checks for input and output resources, either through direct assignment or through existing global texture bindings.
3 years ago
Nico de Poel
92e360aa24
Implemented the debug checking upon dispatch from the original FSR2 source, with some Unity adaptations.
Used this to good effect to fix a few small issues that had gone unnoticed.
Also removed the Message callback which was kind of pointless, since Unity already has a well-established way of outputting warnings and errors.
3 years ago
Nico de Poel
85829949f8
Made all inspector fields public, so that they can be easily accessed programmatically.
There's really not much reason to keep these private, as we otherwise would have added public properties that directly access them anyway.
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
e5384a1b8b
Let's call this High Quality instead of Ultra Quality. Ultra is a bit hyperbolic in this case.
3 years ago
Nico de Poel
022eae95ef
Added one more quality mode tier: ultra quality, which I felt was missing as an option.
It maps nicely from 900p -> 1080p, 1200p -> 1440p, 1800p -> 4K, etc
3 years ago
Nico de Poel
17cc461613
Allow reactive mask and T&C mask to be provided through the inspector
3 years ago
Nico de Poel
8f1be6d3e6
Re-added transparency & composition parameter, even though we never use it and just fall back to the default reactivity mask, we officially support it as an input now.
3 years ago
Nico de Poel
eade3d40ce
Moved generate reactive parameters up in the source file, so it's close to where it's being used.
It felt very weird having it dangle off the bottom of the source file.
3 years ago
Nico de Poel
ec79c8ab24
Enable reactive mask generation by default
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
69da937fd7
Added some seemingly sensible ranges to the reactive mask parameters.
I really wish this stuff was a bit better explained and documented.
3 years ago