UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GPUFastFourierTransform.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4GPUFastFourierTransform.h: Interface for Fast Fourier Transform (FFT) on GPU.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "Math/NumericLimits.h"
11#include "GlobalShader.h"
12#include "RendererInterface.h"
13#include "RHI.h"
14#include "RHIStaticStates.h"
15#include "Shader.h"
17
18namespace GPUFFT
19{
20
24 enum class FFT_XFORM_TYPE : int
25 {
28
31 };
32
36 static FFT_XFORM_TYPE GetInverseOfXForm(const FFT_XFORM_TYPE& XForm)
37 {
38 return static_cast<FFT_XFORM_TYPE> ((static_cast<int> (XForm) + 2) % 4);
39 }
40
44 bool IsHorizontal(const FFT_XFORM_TYPE& XFormType);
45
49 bool IsForward(const FFT_XFORM_TYPE& XFormType);
50
55 {
56 public:
59
60 // The Transform extent used to construct the description
62 bool IsHorizontal() const;
63 bool IsForward() const;
64 const TCHAR* FFT_TypeName() const;
65
66 // member data public
71 };
72
78 uint32 MaxScanLineLength();// { return 4096; }
79
83 static EPixelFormat PixelFormat() { return PF_A32B32G32R32F; }
84
98 static bool IsActive(const FPreFilter& Filter) { return (Filter.X < Filter.Y); }
99
100
102 {
128 static void MultiPass(
129 FRDGBuilder& GraphBuilder,
130 const FGlobalShaderMap* ShaderMap,
131 const FFTDescription& FFTDesc,
133 FRDGTextureRef DstTexture,
135 const bool bScrubNaNs = false);
136
137 };
138
139
140
142 {
178 static void MultiPass(
179 FRDGBuilder& GraphBuilder,
180 const FGlobalShaderMap* ShaderMap,
181 const FFTDescription& FFTDesc,
183 FRDGTextureRef DstTexture, const FIntRect& DstWindow,
186
187 };
188
190 {
225 static void MultiPass(
226 FRDGBuilder& GraphBuilder,
227 const FGlobalShaderMap* ShaderMap,
228 const FFTDescription& FFTDesc,
231 FRDGTextureRef DstTexture);
232 };
233
234
251 void FFTImage2D(
252 FRDGBuilder& GraphBuilder,
253 const FGlobalShaderMap* ShaderMap,
254 const FIntPoint& FrequencySize, bool bHorizontalFirst,
257
258
259
260
261
285 FRDGBuilder& GraphBuilder,
286 ERDGPassFlags ComputePassFlags,
287 const FGlobalShaderMap* ShaderMap,
288 const FIntPoint& FrequencySize,
289 bool bHorizontalFirst,
292 FRDGTextureRef DstTexture, const FIntRect& DstRect,
293 const FPreFilter& PreFilter,
296
297 FIntPoint Convolution2DBufferSize(const FIntPoint& FrequencySize, const bool bHorizontalFirst, const FIntPoint& SrcExtent);
298
315 void CopyImage2D(
316 FRDGBuilder& GraphBuilder,
317 ERDGPassFlags ComputePassFlags,
318 const FGlobalShaderMap* ShaderMap,
320 FRDGTextureRef DstTexture, const FIntRect& DstWindow,
322};
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EPixelFormat
Definition PixelFormat.h:16
@ PF_A32B32G32R32F
Definition PixelFormat.h:18
ETextureCreateFlags
Definition RHIDefinitions.h:1091
ERDGPassFlags
Definition RenderGraphDefinitions.h:128
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition GlobalShader.h:173
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:839
Definition RenderGraphResources.h:571
Definition GPUFastFourierTransform.h:55
FFT_XFORM_TYPE XFormType
Definition GPUFastFourierTransform.h:67
FIntPoint TransformExtent() const
Definition GPUFastFourierTransform.cpp:50
const TCHAR * FFT_TypeName() const
Definition GPUFastFourierTransform.cpp:68
FFTDescription()
Definition GPUFastFourierTransform.h:58
uint32 SignalLength
Definition GPUFastFourierTransform.h:68
ERDGPassFlags ComputePassFlags
Definition GPUFastFourierTransform.h:70
bool IsForward() const
Definition GPUFastFourierTransform.cpp:63
uint32 NumScanLines
Definition GPUFastFourierTransform.h:69
bool IsHorizontal() const
Definition GPUFastFourierTransform.cpp:58
Definition GPUFastFourierTransform.cpp:80
FFT_XFORM_TYPE
Definition GPUFastFourierTransform.h:25
void CopyImage2D(FRDGBuilder &GraphBuilder, ERDGPassFlags ComputePassFlags, const FGlobalShaderMap *ShaderMap, FRDGTextureSRVRef SrcTexture, const FIntRect &SrcWindow, FRDGTextureRef DstTexture, const FIntRect &DstWindow, const FPreFilter &PreFilter=FPreFilter(TNumericLimits< float >::Max(), TNumericLimits< float >::Lowest(), 0.f))
Definition GPUFastFourierTransform.cpp:967
void ConvolutionWithTextureImage2D(FRDGBuilder &GraphBuilder, ERDGPassFlags ComputePassFlags, const FGlobalShaderMap *ShaderMap, const FIntPoint &FrequencySize, bool bHorizontalFirst, FRDGTextureRef TransformedKernel, FRDGTextureSRVRef SrcTexture, const FIntRect &ROIRect, FRDGTextureRef DstTexture, const FIntRect &DstRect, const FPreFilter &PreFilter, FRDGBufferRef PostFilterParameters, ETextureCreateFlags AdditionalTextureCreateFlags)
Definition GPUFastFourierTransform.cpp:1311
uint32 MaxScanLineLength()
Definition GPUFastFourierTransform.cpp:21
FIntPoint Convolution2DBufferSize(const FIntPoint &FrequencySize, const bool bHorizontalFirst, const FIntPoint &SrcExtent)
Definition GPUFastFourierTransform.cpp:1265
FVector3f FPreFilter
Definition GPUFastFourierTransform.h:97
bool IsForward(const FFT_XFORM_TYPE &XFormType)
Definition GPUFastFourierTransform.cpp:30
bool IsHorizontal(const FFT_XFORM_TYPE &XFormType)
Definition GPUFastFourierTransform.cpp:26
void FFTImage2D(FRDGBuilder &GraphBuilder, const FGlobalShaderMap *ShaderMap, const FIntPoint &FrequencySize, bool bHorizontalFirst, FRDGTextureSRVRef SrcTexture, const FIntRect &ROIRect, FRDGTextureRef ResultTexture)
Definition GPUFastFourierTransform.cpp:1174
Definition GPUFastFourierTransform.h:102
static void MultiPass(FRDGBuilder &GraphBuilder, const FGlobalShaderMap *ShaderMap, const FFTDescription &FFTDesc, FRDGTextureSRVRef SrcTexture, const FIntRect &SrcWindow, FRDGTextureRef DstTexture, FRDGBufferRef PostFilterParameters=nullptr, const bool bScrubNaNs=false)
Definition GPUFastFourierTransform.cpp:978
Definition GPUFastFourierTransform.h:190
static void MultiPass(FRDGBuilder &GraphBuilder, const FGlobalShaderMap *ShaderMap, const FFTDescription &FFTDesc, FRDGTextureSRVRef SrcTexture, const FIntRect &SrcWindow, FRDGTextureRef TransformedKernel, FRDGTextureRef DstTexture)
Definition GPUFastFourierTransform.cpp:1217
Definition GPUFastFourierTransform.h:142
static void MultiPass(FRDGBuilder &GraphBuilder, const FGlobalShaderMap *ShaderMap, const FFTDescription &FFTDesc, FRDGTextureSRVRef SrcTexture, const FIntRect &SrcWindow, FRDGTextureRef DstTexture, const FIntRect &DstWindow, const FPreFilter &PreFilter=FPreFilter(TNumericLimits< float >::Max(), TNumericLimits< float >::Lowest(), 0.f), FRDGBufferRef PostFilterParameters=nullptr)
Definition GPUFastFourierTransform.cpp:1094
Definition NumericLimits.h:41
Definition IntPoint.h:25