Nico de Poel
c2f397892f
Forward ported TCR autogen pass to fit in with the rest of the FSR3 shader code
2 years ago
Nico de Poel
c83c3e5805
Cleaned up compute shader initialization, as the Nvidia-specific FP16 exception for the accumulate stage doesn't seem to be required anymore.
2 years ago
Nico de Poel
6e20557253
Ported clearing code for reconstructed depth buffer, which is new in FSR3. This replaces clearing in the Lock pass, allowing the buffer to be reused after upscaling is done.
2 years ago
Nico de Poel
fa1704e65f
First working proof of concept of FSR3 upscaling in Unity
2 years ago
Nico de Poel
68ea8d2f14
Fixed aspect ratio for dual-viewport setups
2 years ago
Nico de Poel
bda7eddc6f
Revert "Removed unnecessary aspect ratio lines that broke screen aspect when using non-standard viewports."
This reverts commit 501f3e4f90 .
2 years ago
Nico de Poel
501f3e4f90
Removed unnecessary aspect ratio lines that broke screen aspect when using non-standard viewports.
2 years ago
Nico de Poel
c010b6aa28
Renamed Pipelines to Passes
2 years ago
Nico de Poel
22701fdd17
Renamed RenderTargetView to ResourceView, which is a bit shorter to type and covers the essence well.
2 years ago
Nico de Poel
d9f9ef10ff
Modified RenderTargetView yet again: made a distinction between an invalid (Unassigned) texture reference and a valid-but-empty (None) texture reference. Inverted IsEmpty as well to be a more generic IsValid property now.
2 years ago
Nico de Poel
d8a4bc3f61
Unity 2020.1 compatibility testing results
2 years ago
Nico de Poel
47cba76dee
Made all RenderTargetView fields non-nullable, and introduced a special Empty value for optional fields.
This removes the need for a lot of HasValue checks, especially since all fields will eventually get a value anyway, making those checks rather redundant. This also makes it clearer that all SRVs will get bound with a valid input texture, even if the input is optional.
2 years ago
Nico de Poel
e8d12c201e
- Reworked input/output resource management using a new RenderTargetView struct, which encompasses all relevant data required to bind textures from various sources.
This eliminates the need for resource binding code outside of the core FSR2 classes, and makes the public API more strict and consistent, but also more flexible. In addition, it removes the need for the slightly awkward input/output resource debug checks.
- Changed prebaked RCAS configurations into an array, as there is no need for a dynamically sized list here.
2 years ago
Nico de Poel
7c41364109
Set constant buffer data as part of the command buffers, instead of immediately.
3 years ago
Nico de Poel
9668b132e7
Clear initial exposure value with zero. Seems to work fine for all tested platforms, and eliminates the black screen flashes on Metal without requiring any platform-specific hacks.
3 years ago
Nico de Poel
c65cab824e
Clear auto-exposure texture using zeroes on Metal. Should fix black screen flashes on accumulation reset, when auto-exposure is enabled.
3 years ago
Nico de Poel
e577240354
Reset atomic counter on any kind of reset, not just on first execution. Fixes black screen on Metal when doing a history reset.
3 years ago
Nico de Poel
a006489e3d
Removed old attempts at integrating FSR2 into the PPV2 pipeline. These never went anywhere and have been left undeveloped for a long time now.
3 years ago
Nico de Poel
8c43881c8d
Added zero check to make undo mipmap bias offset an idempotent operation
3 years ago
Nico de Poel
9911642947
Refactored undo mipmap bias callback such that the RP integration does not need to maintain any bias offset state. Added NaN/Infinity check to the standard apply mipmap bias callback implementation.
3 years ago
Nico de Poel
d0deaa46b5
Experimentation with stacked cameras; apply only viewport rect and jitter offset on first camera, perform upscaling with second camera. Sync settings between cameras.
3 years ago
Nico de Poel
bc3192fc40
Made undoing of mipmap bias a distinct separate callback, so that it can be overridden by client apps.
3 years ago
Nico de Poel
9e53cf52f8
Skip textures that don't have mipmaps and thus don't have any use for a mipmap bias
3 years ago
Nico de Poel
cf04a0ea7b
Renamed max render size field to be consistent with PPV2 integration
3 years ago
Nico de Poel
b3bc46fcb7
Moved management of aliasable resources to the Fsr2Resources class and gave the methods more logical names.
3 years ago
Nico de Poel
3f17ca1fe2
Revert "Create temporary resources at actual render size, further reducing VRAM usage when dynamic resolution is in effect."
This reverts commit a2c1211d98 .
3 years ago
Nico de Poel
45ce81610d
Restored compatibility with Unity versions older than 2021.2, which didn't have the LocalKeyword struct yet.
3 years ago
Nico de Poel
5a0edc2063
Reset dynamic buffer scale when exiting play mode
3 years ago
Nico de Poel
a2c1211d98
Create temporary resources at actual render size, further reducing VRAM usage when dynamic resolution is in effect.
3 years ago
Nico de Poel
5236c28e7e
Added support for dynamic resolution scaling using ScalableBufferManager.
3 years ago
Nico de Poel
cf316ebf4f
Comment that the atomic counter shouldn't be aliasable
3 years ago
Nico de Poel
63d6fd3203
Changed atomic counter from a temporary RT to a permanent one, and set it to 0 only on the first frame. Potential fix for auto-exposure on MacOS.
3 years ago
Nico de Poel
47c2560476
Consolidated accumulate and accumulate+sharpen pipelines into a single pipeline, with the sharpening option being changed into a local keyword that can be enabled or disabled on-the-fly.
This removes the need for an additional copy of the accumulate shader, which saves a considerable amount of memory.
3 years ago
Nico de Poel
7798ae524c
Added various controls for changing FSR2 settings at run-time
3 years ago
Nico de Poel
65280ebf7a
Further refinement to clarity and comments of the BiRP integration
3 years ago
Nico de Poel
ff879b658d
Reworked image effect integration, splitting things up into separate methods to improve readability and comprehension.
3 years ago
Nico de Poel
4f0edf6049
Simplified a bunch of code and removed some unnecessary bits. Mipmap bias is applied more safely now. Context gets reset if auto exposure bool changes.
3 years ago
Nico de Poel
5a0482f0bc
Comments and tooltips
3 years ago
Nico de Poel
537d96d3b6
Explicitly create and destroy the opaque-only RT before and after rendering, so that it remains valid throughout. Fixes the ESRAM-related visual jittering issue on Xbox One when auto-reactive or auto-TCR is enabled.
3 years ago
Nico de Poel
53e8164f0e
Clear the atomic counter used by the luminance pyramid pass. This fixes auto-exposure being broken and causing a black screen on some platforms (Xbox, OpenGL).
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
8b3a1a7545
Implemented auto-TCR generation feature in BiRP integration example
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
fad865f8bc
Went back to HDR being derived from camera HDR settings. Maybe not entirely correct, but definitely less error prone.
3 years ago
Nico de Poel
6dbf4b69e2
Added checks to avoid problems when an invalid render size is used
3 years ago
Nico de Poel
490a76986c
Enable HDR by default and clarified the tooltip somewhat
3 years ago
Nico de Poel
9f887a5c3c
Check shader after loading it, throw an exception with a message on failure. This is better than having a random nullref happen, if the shaders cannot be loaded for whatever reason.
3 years ago
Nico de Poel
b1a7f48abb
Made HDR into an explicit toggle that can be set by the application, rather than a best guess based on the camera settings
3 years ago
Nico de Poel
e335624ae1
Removed the backbuffer check, as it caused a false positive when a second overlay camera is active on top of the FSR2 output.
Turns out blitting to an intermediate render texture works just fine if all FSR2 needs to do is output a color buffer.
3 years ago