|
|
@ -13,15 +13,18 @@ public class SubsampleTest : MonoBehaviour |
|
|
private Camera outputCamera; |
|
|
private Camera outputCamera; |
|
|
|
|
|
|
|
|
[SerializeField] |
|
|
[SerializeField] |
|
|
private float renderScale = 0.5f; |
|
|
|
|
|
|
|
|
private Fsr2.QualityMode qualityMode; |
|
|
|
|
|
|
|
|
[SerializeField] |
|
|
[SerializeField] |
|
|
private bool enableJitter; |
|
|
private bool enableJitter; |
|
|
|
|
|
|
|
|
private Fsr2Controller _fsr2Controller; |
|
|
private Fsr2Controller _fsr2Controller; |
|
|
|
|
|
private float _renderScale; |
|
|
|
|
|
|
|
|
private void OnEnable() |
|
|
private void OnEnable() |
|
|
{ |
|
|
{ |
|
|
|
|
|
_renderScale = 1.0f / Fsr2.GetUpscaleRatioFromQualityMode(qualityMode); |
|
|
|
|
|
|
|
|
gameCamera = GetComponent<Camera>(); |
|
|
gameCamera = GetComponent<Camera>(); |
|
|
if (outputCameraObject == null) |
|
|
if (outputCameraObject == null) |
|
|
{ |
|
|
{ |
|
|
@ -36,7 +39,7 @@ public class SubsampleTest : MonoBehaviour |
|
|
_fsr2Controller = outputCameraObject.AddComponent<Fsr2Controller>(); |
|
|
_fsr2Controller = outputCameraObject.AddComponent<Fsr2Controller>(); |
|
|
_fsr2Controller.gameCamera = gameCamera; |
|
|
_fsr2Controller.gameCamera = gameCamera; |
|
|
_fsr2Controller.outputCamera = outputCamera; |
|
|
_fsr2Controller.outputCamera = outputCamera; |
|
|
_fsr2Controller.renderScale = renderScale; |
|
|
|
|
|
|
|
|
_fsr2Controller.renderScale = _renderScale; |
|
|
_fsr2Controller.enabled = true; |
|
|
_fsr2Controller.enabled = true; |
|
|
|
|
|
|
|
|
//outputCamera.CopyFrom(gameCamera);
|
|
|
//outputCamera.CopyFrom(gameCamera);
|
|
|
@ -49,8 +52,10 @@ public class SubsampleTest : MonoBehaviour |
|
|
_fsr2Controller.enabled = true; |
|
|
_fsr2Controller.enabled = true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Fsr2.GetRenderResolutionFromQualityMode(out var renderWidth, out var renderHeight, Screen.width, Screen.height, qualityMode); |
|
|
|
|
|
|
|
|
gameCamera.targetTexture = new RenderTexture( |
|
|
gameCamera.targetTexture = new RenderTexture( |
|
|
(int)(Screen.width * renderScale), (int)(Screen.height * renderScale), |
|
|
|
|
|
|
|
|
renderWidth, renderHeight, |
|
|
24, // Can we copy depth value from original camera?
|
|
|
24, // Can we copy depth value from original camera?
|
|
|
RenderTextureFormat.ARGBHalf); // Can we copy format from original camera? Or renderer quality settings?
|
|
|
RenderTextureFormat.ARGBHalf); // Can we copy format from original camera? Or renderer quality settings?
|
|
|
|
|
|
|
|
|
@ -61,13 +66,13 @@ public class SubsampleTest : MonoBehaviour |
|
|
|
|
|
|
|
|
// Adjust texture mipmap LOD bias by log2(renderResolution/displayResolution) - 1.0;
|
|
|
// Adjust texture mipmap LOD bias by log2(renderResolution/displayResolution) - 1.0;
|
|
|
// May need to leave this to the game dev, as we don't know which textures do and don't belong to the 3D scene
|
|
|
// May need to leave this to the game dev, as we don't know which textures do and don't belong to the 3D scene
|
|
|
float biasOffset = Fsr2.GetMipmapBiasOffset(renderScale); |
|
|
|
|
|
|
|
|
float biasOffset = Fsr2.GetMipmapBiasOffset(_renderScale); |
|
|
Fsr2.GlobalCallbacks.ApplyMipmapBias(biasOffset); |
|
|
Fsr2.GlobalCallbacks.ApplyMipmapBias(biasOffset); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void OnDisable() |
|
|
private void OnDisable() |
|
|
{ |
|
|
{ |
|
|
float biasOffset = Fsr2.GetMipmapBiasOffset(renderScale); |
|
|
|
|
|
|
|
|
float biasOffset = Fsr2.GetMipmapBiasOffset(_renderScale); |
|
|
Fsr2.GlobalCallbacks.ApplyMipmapBias(-biasOffset); |
|
|
Fsr2.GlobalCallbacks.ApplyMipmapBias(-biasOffset); |
|
|
|
|
|
|
|
|
gameCamera.targetTexture.Release(); |
|
|
gameCamera.targetTexture.Release(); |
|
|
@ -109,6 +114,10 @@ public class SubsampleTest : MonoBehaviour |
|
|
|
|
|
|
|
|
_fsr2Controller.SetJitterOffset(new Vector2(jitterX, jitterY)); |
|
|
_fsr2Controller.SetJitterOffset(new Vector2(jitterX, jitterY)); |
|
|
} |
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
_fsr2Controller.SetJitterOffset(Vector2.zero); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void OnPostRender() |
|
|
private void OnPostRender() |
|
|
|