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

4
Runtime/OpticalFlow/OpticalFlowContext.cs

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

Loading…
Cancel
Save