UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PlanarReflectionSceneProxy.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 PlanarReflectionSceneProxy.h:
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "RHI.h"
11#include "RenderResource.h"
12#include "UnrealClient.h"
13#include "Matrix3x4.h"
14
15// Currently we support at most 2 views for each planar reflection, one view per stereo pass
16// Must match FPlanarReflectionUniformParameters.
18
20
22{
23public:
24
28
51
52 virtual FIntPoint GetSizeXY() const { return Size; }
53
55 virtual uint32 GetSizeX() const
56 {
57 return Size.X;
58 }
60 virtual uint32 GetSizeY() const
61 {
62 return Size.Y;
63 }
64
65 virtual float GetDisplayGamma() const { return 1.0f; }
66
67 virtual FString GetFriendlyName() const override { return TEXT("FPlanarReflectionRenderTarget"); }
68
69 virtual FRHIGPUMask GetGPUMask(FRHICommandListImmediate& RHICmdList) const override
70 {
71 return ActiveGPUMask;
72 }
73
74 // Changes the GPUMask used when updating the reflection capture with multi-GPU.
76 {
78 ActiveGPUMask = InGPUMask;
79 }
80
81private:
82
83 FRHIGPUMask ActiveGPUMask; // GPU mask copied from parent render target for multi-GPU
84 FIntPoint Size;
85};
86
88{
89public:
90
92
93 void UpdateTransform(const FMatrix& NewTransform)
94 {
95
98
99 // Extents of the mesh used to visualize the reflection plane
100 const float MeshExtent = 2000.0f;
102 FBox LocalBounds(-LocalExtent, LocalExtent);
103 WorldBounds = LocalBounds.TransformBy(NewTransform);
104
105 const FVector XAxis = NewTransform.TransformVector(FVector(1, 0, 0));
106 const FVector::FReal XAxisLength = XAxis.Size();
108
109 const FVector YAxis = NewTransform.TransformVector(FVector(0, 1, 0));
110 const FVector::FReal YAxisLength = YAxis.Size();
112
114 // Using TransposeAdjoint instead of full inverse because we only care about transforming normals
117 }
118
119 void ApplyWorldOffset(const FVector& InOffset)
120 {
121 WorldBounds = WorldBounds.ShiftBy(InOffset);
122 PlanarReflectionOrigin+= InOffset;
124 }
125
126
143
146};
#define check(expr)
Definition AssertionMacros.h:314
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define FVector
Definition IOSSystemIncludes.h:8
UE::Math::TVector4< double > FVector4
Definition MathFwd.h:49
UE::Math::TPlane< double > FPlane
Definition MathFwd.h:52
@ PF_FloatRGBA
Definition PixelFormat.h:27
const int32 GMaxPlanarReflectionViews
Definition PlanarReflectionSceneProxy.h:17
@ AM_Clamp
Definition RHIDefinitions.h:341
@ SF_Bilinear
Definition RHIDefinitions.h:328
CORE_API bool IsInRenderingThread()
Definition ThreadingBase.cpp:273
#define UE_DELTA
Definition UnrealMathUtility.h:186
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition PlanarReflectionSceneProxy.h:22
virtual uint32 GetSizeY() const
Definition PlanarReflectionSceneProxy.h:60
virtual FIntPoint GetSizeXY() const
Definition PlanarReflectionSceneProxy.h:52
FPlanarReflectionRenderTarget(FIntPoint InSize)
Definition PlanarReflectionSceneProxy.h:25
virtual float GetDisplayGamma() const
Definition PlanarReflectionSceneProxy.h:65
virtual uint32 GetSizeX() const
Definition PlanarReflectionSceneProxy.h:55
virtual void InitRHI(FRHICommandListBase &RHICmdList)
Definition PlanarReflectionSceneProxy.h:29
virtual FString GetFriendlyName() const override
Definition PlanarReflectionSceneProxy.h:67
virtual FRHIGPUMask GetGPUMask(FRHICommandListImmediate &RHICmdList) const override
Definition PlanarReflectionSceneProxy.h:69
void SetActiveGPUMask(FRHIGPUMask InGPUMask)
Definition PlanarReflectionSceneProxy.h:75
Definition PlanarReflectionSceneProxy.h:88
FName OwnerName
Definition PlanarReflectionSceneProxy.h:142
FVector4 PlanarReflectionXAxis
Definition PlanarReflectionSceneProxy.h:132
float PrefilterRoughness
Definition PlanarReflectionSceneProxy.h:137
FPlane ReflectionPlane
Definition PlanarReflectionSceneProxy.h:129
FPlanarReflectionRenderTarget * RenderTarget
Definition PlanarReflectionSceneProxy.h:145
FMatrix3x4 InverseTransposeMirrorMatrix
Definition PlanarReflectionSceneProxy.h:141
float DistanceFromPlaneFadeEnd
Definition PlanarReflectionSceneProxy.h:131
FBox WorldBounds
Definition PlanarReflectionSceneProxy.h:127
FMatrix ProjectionWithExtraFOV[GMaxPlanarReflectionViews]
Definition PlanarReflectionSceneProxy.h:139
FVector PlanarReflectionOrigin
Definition PlanarReflectionSceneProxy.h:130
float PrefilterRoughnessDistance
Definition PlanarReflectionSceneProxy.h:138
int32 PlanarReflectionId
Definition PlanarReflectionSceneProxy.h:136
FIntRect ViewRect[GMaxPlanarReflectionViews]
Definition PlanarReflectionSceneProxy.h:140
FVector4 PlanarReflectionYAxis
Definition PlanarReflectionSceneProxy.h:133
void ApplyWorldOffset(const FVector &InOffset)
Definition PlanarReflectionSceneProxy.h:119
FVector2D PlanarReflectionParameters2
Definition PlanarReflectionSceneProxy.h:135
FVector PlanarReflectionParameters
Definition PlanarReflectionSceneProxy.h:134
void UpdateTransform(const FMatrix &NewTransform)
Definition PlanarReflectionSceneProxy.h:93
bool bIsStereo
Definition PlanarReflectionSceneProxy.h:128
Definition RHICommandList.h:455
FTextureRHIRef CreateTexture(const FRHITextureCreateDesc &CreateDesc)
Definition RHICommandList.h:941
Definition RHICommandList.h:4626
Definition UnrealClient.h:30
FTextureRHIRef RenderTargetTextureRHI
Definition UnrealClient.h:172
Definition RenderResource.h:354
FTextureRHIRef TextureRHI
Definition RenderResource.h:358
static RENDERCORE_API FRHISamplerState * GetOrCreateSamplerState(const FSamplerStateInitializerRHI &Initializer)
Definition RenderResource.cpp:452
FSamplerStateRHIRef SamplerStateRHI
Definition RenderResource.h:361
static RHI_API const FClearValueBinding Black
Definition RHIResources.h:359
Definition MultiGPU.h:33
Definition RHIResources.h:1938
FRHITextureCreateDesc & SetFlags(ETextureCreateFlags InFlags)
Definition RHIResources.h:2063
FRHITextureCreateDesc & SetExtent(const FIntPoint &InExtent)
Definition RHIResources.h:2067
FRHITextureCreateDesc & SetFormat(EPixelFormat InFormat)
Definition RHIResources.h:2075
FRHITextureCreateDesc & SetInitialState(ERHIAccess InInitialState)
Definition RHIResources.h:2078
FRHITextureCreateDesc & SetClearValue(FClearValueBinding InClearValue)
Definition RHIResources.h:2065
static FRHITextureCreateDesc Create2D(const TCHAR *InDebugName)
Definition RHIResources.h:1944
Definition RHI.h:232
TBox< T > TransformBy(const TMatrix< T > &M) const
Definition Box.h:871
UE_FORCEINLINE_HINT TBox< T > ShiftBy(const TVector< T > &Offset) const
Definition Box.h:352
Definition IntPoint.h:25
IntType Y
Definition IntPoint.h:37
IntType X
Definition IntPoint.h:34
TVector4< T > TransformPosition(const TVector< T > &V) const
Definition Matrix.inl:184
TVector4< T > TransformVector(const TVector< T > &V) const
Definition Matrix.inl:204
TMatrix< T > TransposeAdjoint() const
Definition Matrix.inl:404
static CORE_API const TVector< double > ZeroVector
Definition Vector.h:79
double FReal
Definition Vector.h:55
T Size() const
Definition Vector.h:1716