9#include <util/ue-header-guard-begin.h>
10#include "CoreMinimal.h"
11#include "RHIDefinitions.h"
12#include "Containers/ArrayView.h"
13#include <util/ue-header-guard-end.h>
15#include "CameraModelUtil.generated.h"
21class FRHISamplerState;
22class UTextureRenderTarget2D;
38 MaxEnum
UMETA(Hidden),
79 TArrayView<const float>
LUT;
103 TArrayView<const float> Coefficients);
109 TArrayView<const float> Coefficients);
117 TArrayView<const float> Coefficients);
121 TArrayView<const float> Coefficients);
149 FVector2f ImagePoint,
169 TArrayView<const float> Coefficients);
175 TArrayView<const float> Coefficients,
176 int32 Iterations = 10);
182 float Polynomial(
float Distance, TArrayView<const float> Coefficients);
184 float SolveRadius(
float Theta, TArrayView<const float> Coefficients, int32 Iterations = 32);
191 TArrayView<const float> Samples,
198 TArrayView<const float> Samples,
205 FRDGBuilder& GraphBuilder,
206 FRDGTexture* Destination,
207 FRDGTexture** CubeTextures,
208 FRHISamplerState* Sampler,
209 const FDistortCubemapToImageOptions& Options);
212 FRDGBuilder& GraphBuilder,
213 UTextureRenderTarget2D* Destination,
214 UTextureRenderTarget2D** CubeRenderTargets,
215 FRHISamplerState* Sampler,
216 const FDistortCubemapToImageOptions& Options);
218 FRHISamplerState*
GetSampler(ESamplerFilter Filter);
FVector2f Undistort(float Xd, float Yd, TArrayView< const float > Coefficients, int32 Iterations)
FVector2f Distort(float Xn, float Yn, TArrayView< const float > Coefficients)
float SolveRadius(float Theta, TArrayView< const float > Coefficients, int32 Iterations)
float Polynomial(float Distance, TArrayView< const float > Coefficients)
float ComputeCameraPolynomialDerivative(float Theta, TArrayView< const float > Coefficients)
float ComputeCameraPolynomial(float Theta, TArrayView< const float > Coefficients)
float SampleForward(float Theta, TArrayView< const float > Samples, float ThetaMax)
float SampleInverse(float Distance, TArrayView< const float > Samples, float ThetaMax)
float ComputeAngle(ECameraModel CameraModel, float Distance, TArrayView< const float > Coefficients)
float ComputeDistance(ECameraModel CameraModel, float Angle, int32 ImageHeight, TArrayView< const float > Coefficients)
FVector LensDirToUE(FVector LensDir)
FRHISamplerState * GetSampler(ESamplerFilter Filter)
FVector UEDirToLens(FVector UEDir)
void DistortCubemapToImage(FRDGBuilder &GraphBuilder, FRDGTexture *Destination, FRDGTexture **CubeTextures, FRHISamplerState *Sampler, const FDistortCubemapToImageOptions &Options)
FVector ComputeLensRayDirection(const FLensModelDescriptor &Descriptor, FVector2f ImagePoint, ELensColorChannel Channel)
FVector2f ComputeLensImagePoint(const FLensModelDescriptor &Descriptor, FVector Direction, ELensColorChannel Channel)
TArrayView< const float > LUT
bool bRenderEquirectangular
TArrayView< const float > KannalaBrandtCoefficients