From 07a7571935756ca1fa105c110d21813ee6dadf08 Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Mon, 22 Jul 2024 23:48:05 +0200 Subject: [PATCH] Set up first skeleton for optical flow data structures and dispatching --- Runtime/OpticalFlow/OpticalFlow.cs | 55 +++++++++++++++++++ Runtime/OpticalFlow/OpticalFlow.cs.meta | 11 ++++ Runtime/OpticalFlow/OpticalFlowAssets.cs | 4 +- Runtime/OpticalFlow/OpticalFlowContext.cs | 17 ++++++ .../OpticalFlow/OpticalFlowContext.cs.meta | 11 ++++ 5 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 Runtime/OpticalFlow/OpticalFlow.cs create mode 100644 Runtime/OpticalFlow/OpticalFlow.cs.meta create mode 100644 Runtime/OpticalFlow/OpticalFlowContext.cs create mode 100644 Runtime/OpticalFlow/OpticalFlowContext.cs.meta diff --git a/Runtime/OpticalFlow/OpticalFlow.cs b/Runtime/OpticalFlow/OpticalFlow.cs new file mode 100644 index 0000000..b09884c --- /dev/null +++ b/Runtime/OpticalFlow/OpticalFlow.cs @@ -0,0 +1,55 @@ +using System; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace FidelityFX.OpticalFlow +{ + public static class OpticalFlow + { + public static OpticalFlowContext CreateContext(in ContextDescription contextDescription) + { + throw new NotImplementedException(); + } + + public struct ContextDescription + { + public Vector2Int resolution; + } + + public struct DispatchDescription + { + public ResourceView color; + public ResourceView opticalFlowVector; + public ResourceView opticalFlowSCD; + public bool reset; + public int backbufferTransferFunction; + public Vector2 minMaxLuminance; + } + + [Serializable, StructLayout(LayoutKind.Sequential)] + internal struct OpticalFlowConstants + { + public Vector2Int inputLumaResolution; + public uint opticalFlowPyramidLevel; + public uint opticalFlowPyramidLevelCount; + + public int frameIndex; + public uint backbufferTransferFunction; + public Vector2 minMaxLuminance; + } + + [Serializable, StructLayout(LayoutKind.Sequential)] + internal struct SpdConstants + { + public uint mips; + public uint numWorkGroups; + public uint workGroupOffsetX; + public uint workGroupOffsetY; + + public uint numWorkGroupsOpticalFlowInputPyramid; + public uint pad0_; + public uint pad1_; + public uint pad2_; + } + } +} diff --git a/Runtime/OpticalFlow/OpticalFlow.cs.meta b/Runtime/OpticalFlow/OpticalFlow.cs.meta new file mode 100644 index 0000000..811f536 --- /dev/null +++ b/Runtime/OpticalFlow/OpticalFlow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cb98adb74c696524e900d3b0b965e1dc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/OpticalFlow/OpticalFlowAssets.cs b/Runtime/OpticalFlow/OpticalFlowAssets.cs index 105cc43..6f2871f 100644 --- a/Runtime/OpticalFlow/OpticalFlowAssets.cs +++ b/Runtime/OpticalFlow/OpticalFlowAssets.cs @@ -75,12 +75,12 @@ namespace FidelityFX.OpticalFlow public ComputeShader prepareLuma; /// - /// The compute shader used by the generate SCD histogram pass. + /// The compute shader used by the generate scene change detection histogram pass. /// public ComputeShader generateScdHistogram; /// - /// The compute shader used by the compute SCD divergence pass. + /// The compute shader used by the compute scene change detection divergence pass. /// public ComputeShader computeScdDivergence; diff --git a/Runtime/OpticalFlow/OpticalFlowContext.cs b/Runtime/OpticalFlow/OpticalFlowContext.cs new file mode 100644 index 0000000..17229a1 --- /dev/null +++ b/Runtime/OpticalFlow/OpticalFlowContext.cs @@ -0,0 +1,17 @@ +using System; +using UnityEngine; +using UnityEngine.Rendering; + +namespace FidelityFX.OpticalFlow +{ + public class OpticalFlowContext + { + private bool _firstExecution = true; + private uint _resourceFrameIndex; + + public void Dispatch(CommandBuffer commandBuffer, in OpticalFlow.DispatchDescription dispatchDescription) + { + throw new NotImplementedException(); + } + } +} diff --git a/Runtime/OpticalFlow/OpticalFlowContext.cs.meta b/Runtime/OpticalFlow/OpticalFlowContext.cs.meta new file mode 100644 index 0000000..22fa656 --- /dev/null +++ b/Runtime/OpticalFlow/OpticalFlowContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: baebcaebda3cbd344a546d7f3c47ae0d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: