Browse Source

Made block size and texture size available through the optical flow context, which is better encapsulation.

fsr3framegen
Nico de Poel 2 years ago
parent
commit
2ff4b9772b
  1. 7
      Runtime/OpticalFlow/OpticalFlow.cs
  2. 4
      Runtime/OpticalFlow/OpticalFlowContext.cs

7
Runtime/OpticalFlow/OpticalFlow.cs

@ -6,7 +6,7 @@ namespace FidelityFX.FrameGen
{ {
public static class OpticalFlow public static class OpticalFlow
{ {
public static readonly int MinBlockSize = 8;
internal const int MinBlockSize = 8;
internal const int OpticalFlowMaxPyramidLevels = 7; internal const int OpticalFlowMaxPyramidLevels = 7;
internal const int HistogramBins = 256; internal const int HistogramBins = 256;
internal const int HistogramsPerDim = 3; internal const int HistogramsPerDim = 3;
@ -44,11 +44,6 @@ namespace FidelityFX.FrameGen
public Vector2 MinMaxLuminance; public Vector2 MinMaxLuminance;
} }
public static Vector2Int GetOpticalFlowTextureSize(Vector2Int displaySize)
{
return GetOpticalFlowTextureSize(displaySize, MinBlockSize);
}
internal static Vector2Int GetOpticalFlowTextureSize(Vector2Int displaySize, int opticalFlowBlockSize) internal static Vector2Int GetOpticalFlowTextureSize(Vector2Int displaySize, int opticalFlowBlockSize)
{ {
int width = (displaySize.x + opticalFlowBlockSize - 1) / opticalFlowBlockSize; int width = (displaySize.x + opticalFlowBlockSize - 1) / opticalFlowBlockSize;

4
Runtime/OpticalFlow/OpticalFlowContext.cs

@ -1,5 +1,4 @@
using System; using System;
using System.Runtime.InteropServices;
using UnityEngine; using UnityEngine;
using UnityEngine.Assertions; using UnityEngine.Assertions;
using UnityEngine.Profiling; using UnityEngine.Profiling;
@ -10,6 +9,9 @@ namespace FidelityFX.FrameGen
public class OpticalFlowContext: FfxContextBase public class OpticalFlowContext: FfxContextBase
{ {
private const int MaxQueuedFrames = 16; private const int MaxQueuedFrames = 16;
public int BlockSize => OpticalFlow.MinBlockSize;
public Vector2Int TextureSize => OpticalFlow.GetOpticalFlowTextureSize(_contextDescription.resolution, OpticalFlow.MinBlockSize);
private OpticalFlow.ContextDescription _contextDescription; private OpticalFlow.ContextDescription _contextDescription;

Loading…
Cancel
Save