Browse Source

Further tweaks to camera jitter parameters and now IT'S WORKING!! 🥳

mac-autoexp
Nico de Poel 3 years ago
parent
commit
dafae40776
  1. 5
      Assets/Scripts/Fsr2Controller.cs
  2. 3
      Assets/Scripts/Fsr2Pipeline.cs
  3. 4
      Assets/Scripts/SubsampleTest.cs

5
Assets/Scripts/Fsr2Controller.cs

@ -122,13 +122,14 @@ public class Fsr2Controller : MonoBehaviour
_dispatchDescription.PreExposure = 0; _dispatchDescription.PreExposure = 0;
_dispatchDescription.EnableSharpening = performSharpenPass; _dispatchDescription.EnableSharpening = performSharpenPass;
_dispatchDescription.Sharpness = sharpness; _dispatchDescription.Sharpness = sharpness;
_dispatchDescription.MotionVectorScale.x = gameCamera.pixelWidth;
_dispatchDescription.MotionVectorScale.y = gameCamera.pixelHeight;
_dispatchDescription.MotionVectorScale.x = -gameCamera.pixelWidth;
_dispatchDescription.MotionVectorScale.y = -gameCamera.pixelHeight;
_dispatchDescription.RenderSize = RenderSize; _dispatchDescription.RenderSize = RenderSize;
_dispatchDescription.FrameTimeDelta = Time.unscaledDeltaTime; _dispatchDescription.FrameTimeDelta = Time.unscaledDeltaTime;
_dispatchDescription.CameraNear = gameCamera.nearClipPlane; _dispatchDescription.CameraNear = gameCamera.nearClipPlane;
_dispatchDescription.CameraFar = gameCamera.farClipPlane; _dispatchDescription.CameraFar = gameCamera.farClipPlane;
_dispatchDescription.CameraFovAngleVertical = gameCamera.fieldOfView * Mathf.Deg2Rad; _dispatchDescription.CameraFovAngleVertical = gameCamera.fieldOfView * Mathf.Deg2Rad;
_dispatchDescription.ViewSpaceToMetersFactor = 1.0f; // 1 unit is 1 meter in Unity
_context.Dispatch(_dispatchDescription); _context.Dispatch(_dispatchDescription);

3
Assets/Scripts/Fsr2Pipeline.cs

@ -93,8 +93,7 @@ namespace FidelityFX
commandBuffer.GetTemporaryRT(UavDilatedDepth, maxRenderSize.x, maxRenderSize.y, 0, FilterMode.Point, GraphicsFormat.R32_SFloat, 1, true); commandBuffer.GetTemporaryRT(UavDilatedDepth, maxRenderSize.x, maxRenderSize.y, 0, FilterMode.Point, GraphicsFormat.R32_SFloat, 1, true);
// FSR2_LockInputLuma: FFX_RESOURCE_USAGE_UAV, FFX_SURFACE_FORMAT_R16_FLOAT, FFX_RESOURCE_FLAGS_ALIASABLE // FSR2_LockInputLuma: FFX_RESOURCE_USAGE_UAV, FFX_SURFACE_FORMAT_R16_FLOAT, FFX_RESOURCE_FLAGS_ALIASABLE
// TODO: should be at render resolution according to the docs (at least when output from Reconstruct & Dilate)
commandBuffer.GetTemporaryRT(UavLockInputLuma, displaySize.x, displaySize.y, 0, FilterMode.Point, GraphicsFormat.R16_SFloat, 1, true);
commandBuffer.GetTemporaryRT(UavLockInputLuma, maxRenderSize.x, maxRenderSize.y, 0, FilterMode.Point, GraphicsFormat.R16_SFloat, 1, true);
// FSR2_DilatedReactiveMasks: FFX_RESOURCE_USAGE_UAV, FFX_SURFACE_FORMAT_R8G8_UNORM, FFX_RESOURCE_FLAGS_ALIASABLE // FSR2_DilatedReactiveMasks: FFX_RESOURCE_USAGE_UAV, FFX_SURFACE_FORMAT_R8G8_UNORM, FFX_RESOURCE_FLAGS_ALIASABLE
commandBuffer.GetTemporaryRT(UavDilatedReactiveMasks, maxRenderSize.x, maxRenderSize.y, 0, FilterMode.Point, GraphicsFormat.R8G8_UNorm, 1, true); commandBuffer.GetTemporaryRT(UavDilatedReactiveMasks, maxRenderSize.x, maxRenderSize.y, 0, FilterMode.Point, GraphicsFormat.R8G8_UNorm, 1, true);

4
Assets/Scripts/SubsampleTest.cs

@ -116,8 +116,8 @@ public class SubsampleTest : MonoBehaviour
_fsr2Controller.SetJitterOffset(new Vector2(jitterX, jitterY)); _fsr2Controller.SetJitterOffset(new Vector2(jitterX, jitterY));
jitterX = -2.0f * jitterX / gameCamera.targetTexture.width;
jitterY = -2.0f * jitterY / gameCamera.targetTexture.height;
jitterX = 2.0f * jitterX / gameCamera.targetTexture.width;
jitterY = 2.0f * jitterY / gameCamera.targetTexture.height;
var jitterTranslationMatrix = Matrix4x4.Translate(new Vector3(jitterX, jitterY, 0)); var jitterTranslationMatrix = Matrix4x4.Translate(new Vector3(jitterX, jitterY, 0));
gameCamera.projectionMatrix = jitterTranslationMatrix * gameCamera.nonJitteredProjectionMatrix; gameCamera.projectionMatrix = jitterTranslationMatrix * gameCamera.nonJitteredProjectionMatrix;

Loading…
Cancel
Save