UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RHIResourceReplace.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "RHIFwd.h"
6#include "RHIResources.h"
7
8#include "Containers/Array.h"
9#include "Misc/TVariant.h"
10
12{
13public:
14 template <typename TType>
15 struct TPair
16 {
17 TType* Dst;
18 TType* Src;
19
20 TPair(TType* Dst, TType* Src)
21 : Dst(Dst)
22 , Src(Src)
23 {}
24 };
25
28
30
31 enum class EType : uint8
32 {
33 Buffer = TStorage::IndexOfType<FBuffer >(),
34 RTGeometry = TStorage::IndexOfType<FRTGeometry>(),
35 };
36
37 EType GetType() const { return EType(Storage.GetIndex()); }
38
39 FBuffer const& GetBuffer () const { return Storage.Get<FBuffer >(); }
40 FRTGeometry const& GetRTGeometry() const { return Storage.Get<FRTGeometry>(); }
41
43 : Storage(TInPlaceType<FBuffer>(), Dst, Src)
44 {}
45
49
50private:
51 TStorage Storage;
52};
53
55{
56 FRHICommandListBase& RHICmdList;
58
59public:
60 FRHIResourceReplaceBatcher(FRHICommandListBase& RHICmdList, uint32 InitialCapacity = 0)
61 : RHICmdList(RHICmdList)
62 {
63 if (InitialCapacity > 0)
64 {
65 Infos.Reserve(InitialCapacity);
66 }
67 }
68
70
71 template <typename... TArgs>
72 void EnqueueReplace(TArgs&&... Args)
73 {
74 Infos.Emplace(Forward<TArgs>(Args)...);
75 }
76};
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition RHIResources.h:1581
Definition RHICommandList.h:455
Definition RHIResources.h:3729
Definition RHIResourceReplace.h:55
void EnqueueReplace(TArgs &&... Args)
Definition RHIResourceReplace.h:72
FRHIResourceReplaceBatcher(FRHICommandListBase &RHICmdList, uint32 InitialCapacity=0)
Definition RHIResourceReplace.h:60
~FRHIResourceReplaceBatcher()
Definition RHICommandList.inl:161
Definition RHIResourceReplace.h:12
TPair< FRHIBuffer > FBuffer
Definition RHIResourceReplace.h:26
FRTGeometry const & GetRTGeometry() const
Definition RHIResourceReplace.h:40
FBuffer const & GetBuffer() const
Definition RHIResourceReplace.h:39
EType GetType() const
Definition RHIResourceReplace.h:37
EType
Definition RHIResourceReplace.h:32
TVariant< FBuffer, FRTGeometry > TStorage
Definition RHIResourceReplace.h:29
FRHIResourceReplaceInfo(FRHIRayTracingGeometry *Dst, FRHIRayTracingGeometry *Src)
Definition RHIResourceReplace.h:46
TPair< FRHIRayTracingGeometry > FRTGeometry
Definition RHIResourceReplace.h:27
FRHIResourceReplaceInfo(FRHIBuffer *Dst, FRHIBuffer *Src)
Definition RHIResourceReplace.h:42
Definition Array.h:670
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition TVariant.h:48
U & Get() UE_LIFETIMEBOUND
Definition TVariant.h:146
SIZE_T GetIndex() const
Definition TVariant.h:231
Definition RHIResourceReplace.h:16
TType * Src
Definition RHIResourceReplace.h:18
TPair(TType *Dst, TType *Src)
Definition RHIResourceReplace.h:20
TType * Dst
Definition RHIResourceReplace.h:17
Definition TVariant.h:13