29 return L * (L + 1) + M;
75 template<
int32 OtherOrder>
110 const float B = (1.0f /
Scalar);
268 const float Integral = CalcIntegral();
275 void ApplyWindowing(
float Lambda)
280 for (
int32 l = 0; l < TSHVector::MaxSHOrder; l++)
291 [[
nodiscard]]
bool AreFloatsValid()
const
397 float TableL[TSHVector::MaxSHOrder];
398 float TableB[TSHVector::MaxSHOrder];
403 for (
int32 l = 1; l < TSHVector::MaxSHOrder; l++)
411 B += Coefficient * Coefficient;
418 for (
int32 l = 1; l < TSHVector::MaxSHOrder; ++l)
437 for (
int32 l = 1; l < TSHVector::MaxSHOrder; ++l)
439 float Temp = 1.0f + Lambda *
TableL[l];
446 float delta = -f / fd;
492template<
int32 MaxSHOrder>
503 template<
int32 OtherOrder>
516 return R * LuminanceFactors.
R +
G * LuminanceFactors.
G +
B * LuminanceFactors.
B;
532 Result.R =
R.CalcIntegral();
533 Result.G =
G.CalcIntegral();
534 Result.B =
B.CalcIntegral();
541 R.ApplyWindowing(Lambda);
542 G.ApplyWindowing(Lambda);
543 B.ApplyWindowing(Lambda);
548 return R.AreFloatsValid() &&
G.AreFloatsValid() &&
B.AreFloatsValid();
597 Result.R =
A.R /
InB;
598 Result.G =
A.G /
InB;
599 Result.B =
A.B /
InB;
607 Result.R =
A.R +
InB.R;
608 Result.G =
A.G +
InB.G;
609 Result.B =
A.B +
InB.B;
617 Result.R =
A.R -
InB.R;
618 Result.G =
A.G -
InB.G;
619 Result.B =
A.B -
InB.B;
673 return Ar <<
SH.R <<
SH.G <<
SH.B;
685 *
this += TSHVector<MaxSHOrder>::AmbientFunction() * Intensity;
UE_FORCEINLINE_HINT FLinearColor operator*(float Scalar, const FLinearColor &Color)
Definition Color.h:473
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FArchive & operator<<(FArchive &Ar, FEnvQueryDebugProfileData::FStep &Data)
Definition EnvQueryTypes.cpp:489
#define FVector
Definition IOSSystemIncludes.h:8
int32 BasisL[9]
Definition SHMath.cpp:13
int32 BasisM[9]
Definition SHMath.cpp:14
float NormalizationConstants[9]
Definition SHMath.cpp:12
float LegendrePolynomial(int32 L, int32 M, float X)
Definition SHMath.cpp:67
TSHVectorRGB< 2 > FSHVectorRGB2
Definition SHMath.h:704
UE_FORCEINLINE_HINT int32 SHGetBasisIndex(int32 L, int32 M)
Definition SHMath.h:27
TSHVector< 3 > FSHVector3
Definition SHMath.h:701
TSHVectorRGB< Order > operator*(const TSHVector< Order > &A, const FLinearColor &B)
Definition SHMath.h:691
CORE_API int32 BasisM[9]
Definition SHMath.cpp:14
CORE_API float LegendrePolynomial(int32 L, int32 M, float X)
Definition SHMath.cpp:67
TSHVector< 2 > FSHVector2
Definition SHMath.h:702
CORE_API FLinearColor SHGetLuminanceFactors()
Definition SHMath.cpp:128
CORE_API int32 BasisL[9]
Definition SHMath.cpp:13
TSHVectorRGB< 3 > FSHVectorRGB3
Definition SHMath.h:703
CORE_API float NormalizationConstants[9]
Definition SHMath.cpp:12
FScreenTransform operator/(const FScreenTransform &AToB, const FVector2f &InvertedScale)
Definition ScreenPass.inl:280
FScreenTransform operator-(const FScreenTransform &AToB, const FVector2f &Bias)
Definition ScreenPass.inl:264
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
FStringBuilderBase & operator+=(FStringBuilderBase &Builder, ANSICHAR Char)
Definition StringBuilder.h:582
FORCEINLINE VectorRegister4Float VectorSubtract(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:731
FORCEINLINE VectorRegister4Float VectorDot4(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:901
FORCEINLINE VectorRegister4Float VectorMultiply(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:758
FORCEINLINE VectorRegister4Float VectorLoadFloat1(const float *Ptr)
Definition UnrealMathFPU.h:468
VectorRegister4Float VectorLoadAligned(const float *Ptr)
Definition UnrealMathFPU.h:451
FORCEINLINE VectorRegister4Float VectorAdd(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:704
void VectorStoreAligned(const VectorRegister4Float &Vec, float *Ptr)
Definition UnrealMathFPU.h:534
FORCEINLINE void VectorStoreFloat1(const VectorRegister4Float &Vec, float *Dst)
Definition UnrealMathFPU.h:610
#define UE_PI
Definition UnrealMathUtility.h:129
#define UE_KINDA_SMALL_NUMBER
Definition UnrealMathUtility.h:131
#define UE_DELTA
Definition UnrealMathUtility.h:186
FORCEINLINE VectorRegister4Float VectorZero(void)
Definition UnrealMathVectorCommon.h.inl:16
Definition Archive.h:1208
void Desaturate(float DesaturateFraction)
Definition SHMath.h:519
FLinearColor CalcIntegral() const
Definition SHMath.h:529
void AddIncomingRadiance(const FLinearColor &IncomingRadiance, float Weight, const FVector4 &WorldSpaceDirection)
Definition SHMath.h:677
TSHVector< MaxSHOrder > GetLuminance() const
Definition SHMath.h:512
friend TSHVectorRGB operator*(const float &Scalar, const TSHVectorRGB &A)
Definition SHMath.h:564
friend TSHVectorRGB operator*(const TSHVectorRGB &A, const FLinearColor &Color)
Definition SHMath.h:574
void AddAmbient(const FLinearColor &Intensity)
Definition SHMath.h:683
TSHVector< MaxSHOrder > G
Definition SHMath.h:498
TSHVectorRGB & operator+=(const TSHVectorRGB &InB)
Definition SHMath.h:638
friend TSHVectorRGB operator+(const TSHVectorRGB &A, const TSHVectorRGB &InB)
Definition SHMath.h:604
TSHVectorRGB()
Definition SHMath.h:501
friend TSHVectorRGB operator/(const TSHVectorRGB &A, const float &InB)
Definition SHMath.h:594
TSHVector< MaxSHOrder > R
Definition SHMath.h:497
TSHVectorRGB & operator*=(const float &Scalar)
Definition SHMath.h:662
friend TSHVectorRGB operator*(const TSHVectorRGB &A, const float &Scalar)
Definition SHMath.h:553
TSHVectorRGB(const TSHVectorRGB< OtherOrder > &Other)
Definition SHMath.h:504
TSHVector< MaxSHOrder > B
Definition SHMath.h:499
friend TSHVectorRGB operator*(const FLinearColor &Color, const TSHVectorRGB &A)
Definition SHMath.h:584
void ApplyWindowing(float Lambda)
Definition SHMath.h:539
bool AreFloatsValid() const
Definition SHMath.h:546
TSHVectorRGB & operator-=(const TSHVectorRGB &InB)
Definition SHMath.h:650
friend TSHVectorRGB operator-(const TSHVectorRGB &A, const TSHVectorRGB &InB)
Definition SHMath.h:614
friend FArchive & operator<<(FArchive &Ar, TSHVectorRGB &SH)
Definition SHMath.h:671
friend FLinearColor Dot(const TSHVectorRGB &A, const TSHVector< MaxSHOrder > &InB)
Definition SHMath.h:624
T Normalize(UE::Math::TVector2< T > &Vector, const T Epsilon=0)
Definition VectorTypes.h:46
@ V2
Definition NNEModelData.cpp:18
@ V1
Definition NNEModelData.cpp:17
@ V0
Definition NNEModelData.cpp:16
@ V3
Definition NNEModelData.cpp:19
UE_STRING_CLASS Result(Forward< LhsType >(Lhs), RhsLen)
Definition String.cpp.inl:732
const int32 Order[8][8]
Definition VorbisAudioInfo.cpp:47
float G
Definition Color.h:54
float B
Definition Color.h:55
float R
Definition Color.h:53
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
TVector< T > GetSafeNormal(T Tolerance=UE_SMALL_NUMBER, const TVector< T > &ResultIfZero=ZeroVector) const
Definition Vector.h:2060
Definition UnrealMathFPU.h:20