|
|
|
@ -99,9 +99,8 @@ namespace UnityEngine.Rendering.PostProcessing |
|
|
|
[Range(0, 1)] public float autoReactiveMax = 0.9f; |
|
|
|
} |
|
|
|
|
|
|
|
public float dynamicScale { get; set; } = 1.0f; |
|
|
|
public Vector2 jitter { get; private set; } |
|
|
|
public Vector2Int renderSize => GetScaledRenderSize(); |
|
|
|
public Vector2Int renderSize => _maxRenderSize; |
|
|
|
public Vector2Int displaySize => _displaySize; |
|
|
|
public RenderTargetIdentifier colorOpaqueOnly { get; set; } |
|
|
|
|
|
|
|
@ -158,7 +157,7 @@ namespace UnityEngine.Rendering.PostProcessing |
|
|
|
_maxRenderSize = new Vector2Int(maxRenderWidth, maxRenderHeight); |
|
|
|
|
|
|
|
// Render to a smaller portion of the screen by manipulating the camera's viewport rect
|
|
|
|
var scaledRenderSize = GetScaledRenderSize(); |
|
|
|
var scaledRenderSize = GetScaledRenderSize(context.camera); |
|
|
|
camera.aspect = (_displaySize.x * _originalRect.width) / (_displaySize.y * _originalRect.height); |
|
|
|
camera.rect = new Rect(0, 0, _originalRect.width * scaledRenderSize.x / _displaySize.x, _originalRect.height * scaledRenderSize.y / _displaySize.y); |
|
|
|
} |
|
|
|
@ -250,7 +249,7 @@ namespace UnityEngine.Rendering.PostProcessing |
|
|
|
|
|
|
|
private void ApplyJitter(Camera camera) |
|
|
|
{ |
|
|
|
var scaledRenderSize = GetScaledRenderSize(); |
|
|
|
var scaledRenderSize = GetScaledRenderSize(camera); |
|
|
|
|
|
|
|
// Perform custom jittering of the camera's projection matrix according to FSR2's recipe
|
|
|
|
int jitterPhaseCount = Fsr2.GetJitterPhaseCount(scaledRenderSize.x, _displaySize.x); |
|
|
|
@ -287,7 +286,7 @@ namespace UnityEngine.Rendering.PostProcessing |
|
|
|
if (reactiveMask != null) _dispatchDescription.Reactive = reactiveMask; |
|
|
|
if (transparencyAndCompositionMask != null) _dispatchDescription.TransparencyAndComposition = transparencyAndCompositionMask; |
|
|
|
|
|
|
|
var scaledRenderSize = GetScaledRenderSize(); |
|
|
|
var scaledRenderSize = GetScaledRenderSize(context.camera); |
|
|
|
|
|
|
|
_dispatchDescription.Output = context.destination; |
|
|
|
_dispatchDescription.PreExposure = preExposure; |
|
|
|
@ -328,19 +327,19 @@ namespace UnityEngine.Rendering.PostProcessing |
|
|
|
_genReactiveDescription.ColorOpaqueOnly = colorOpaqueOnly; |
|
|
|
_genReactiveDescription.ColorPreUpscale = null; |
|
|
|
_genReactiveDescription.OutReactive = null; |
|
|
|
_genReactiveDescription.RenderSize = GetScaledRenderSize(); |
|
|
|
_genReactiveDescription.RenderSize = GetScaledRenderSize(context.camera); |
|
|
|
_genReactiveDescription.Scale = generateReactiveParameters.scale; |
|
|
|
_genReactiveDescription.CutoffThreshold = generateReactiveParameters.cutoffThreshold; |
|
|
|
_genReactiveDescription.BinaryValue = generateReactiveParameters.binaryValue; |
|
|
|
_genReactiveDescription.Flags = generateReactiveParameters.flags; |
|
|
|
} |
|
|
|
|
|
|
|
private Vector2Int GetScaledRenderSize() |
|
|
|
private Vector2Int GetScaledRenderSize(Camera camera) |
|
|
|
{ |
|
|
|
if (Mathf.Approximately(dynamicScale, 1.0f)) |
|
|
|
if (!RuntimeUtilities.IsDynamicResolutionEnabled(camera)) |
|
|
|
return _maxRenderSize; |
|
|
|
|
|
|
|
return new Vector2Int(Mathf.CeilToInt(_maxRenderSize.x * dynamicScale), Mathf.CeilToInt(_maxRenderSize.y * dynamicScale)); |
|
|
|
return new Vector2Int(Mathf.CeilToInt(_maxRenderSize.x * ScalableBufferManager.widthScaleFactor), Mathf.CeilToInt(_maxRenderSize.y * ScalableBufferManager.heightScaleFactor)); |
|
|
|
} |
|
|
|
|
|
|
|
private class Callbacks : Fsr2CallbacksBase |
|
|
|
|