UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CanvasRender.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CanvasTypes.h"
7
9{
10public:
12
13 template <typename ExecuteLambdaType, typename ParameterStructType>
15 {
17 [LocalScissorRect = ScissorRect, LocalViewportRect = ViewportRect, LocalExecuteLambda = Forward<ExecuteLambdaType&&>(ExecuteLambda)](FRDGAsyncTask, FRHICommandList& RHICmdList)
18 {
19 RHICmdList.SetViewport(static_cast<float>(LocalViewportRect.Min.X), static_cast<float>(LocalViewportRect.Min.Y), 0.0f, static_cast<float>(LocalViewportRect.Max.X), static_cast<float>(LocalViewportRect.Max.Y), 1.0f);
20
21 if (LocalScissorRect.Area() > 0)
22 {
23 RHICmdList.SetScissorRect(true, static_cast<uint32>(LocalScissorRect.Min.X), static_cast<uint32>(LocalScissorRect.Min.Y), static_cast<uint32>(LocalScissorRect.Max.X), static_cast<uint32>(LocalScissorRect.Max.Y));
24 }
25
26 LocalExecuteLambda(RHICmdList);
27 });
28 }
29
30 template <typename ExecuteLambdaType>
37
38 template <typename T, typename... TArgs>
39 T* Alloc(TArgs&&... Args)
40 {
41 return GraphBuilder.AllocObject<T>(Forward<TArgs&&>(Args)...);
42 }
43
44 template <typename T>
46 {
47 // Hold the reference until completion of the graph.
49 }
50
51 template <typename T>
52 void DeferredDelete(const T* Ptr)
53 {
54 struct FDeleter
55 {
56 FDeleter(const T* InPtr)
57 : Ptr(InPtr)
58 {}
59
60 ~FDeleter()
61 {
62 delete Ptr;
63 }
64
65 const T* Ptr;
66 };
67
68 Alloc<FDeleter>(Ptr);
69 }
70
72 {
73 return RenderTarget;
74 }
75
77 {
78 return ViewportRect;
79 }
80
82 {
83 return ScissorRect;
84 }
85
87
88private:
90 FIntRect ViewportRect;
91 FIntRect ScissorRect;
92};
93
95{
98public:
101
103 {
104 RenderCommands->Add(MoveTemp(Lambda));
105 }
106
107 template <typename ExecuteLambdaType>
108 void AddPass(const TCHAR* PassName, ExecuteLambdaType&& Lambda)
109 {
111 [PassName, InLambda = Forward<ExecuteLambdaType&&>(Lambda)]
113 {
115 });
116 }
117
118 template <typename T>
119 void DeferredDelete(const T* Ptr)
120 {
122 {
123 RenderContext.DeferredDelete(Ptr);
124 });
125 }
126
127private:
128 const FCanvas& Canvas;
129 RenderCommandFunctionArray* RenderCommands;
130};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
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
#define RDG_EVENT_NAME(...)
Definition RenderGraphEvent.h:529
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition CanvasRender.h:9
T * Alloc(TArgs &&... Args)
Definition CanvasRender.h:39
FRDGTextureRef GetRenderTarget() const
Definition CanvasRender.h:71
FIntRect GetViewportRect() const
Definition CanvasRender.h:76
void AddPass(FRDGEventName &&PassName, ExecuteLambdaType &&ExecuteLambda)
Definition CanvasRender.h:31
void DeferredDelete(const T *Ptr)
Definition CanvasRender.h:52
FIntRect GetScissorRect() const
Definition CanvasRender.h:81
FRDGBuilder & GraphBuilder
Definition CanvasRender.h:86
void AddPass(FRDGEventName &&PassName, const ParameterStructType *PassParameters, ExecuteLambdaType &&ExecuteLambda)
Definition CanvasRender.h:14
void DeferredRelease(TSharedPtr< T > &&Ptr)
Definition CanvasRender.h:45
Definition CanvasRender.h:95
void EnqueueRenderCommand(RenderCommandFunction &&Lambda)
Definition CanvasRender.h:102
void DeferredDelete(const T *Ptr)
Definition CanvasRender.h:119
ENGINE_API ~FCanvasRenderThreadScope()
Definition Canvas.cpp:597
void AddPass(const TCHAR *PassName, ExecuteLambdaType &&Lambda)
Definition CanvasRender.h:108
Definition CanvasTypes.h:211
Definition RenderGraphBuilder.h:49
ObjectType * AllocObject(TArgs &&... Args)
Definition RenderGraphBuilder.inl:158
ParameterStructType * AllocParameters()
Definition RenderGraphBuilder.inl:170
FRDGPassRef AddPass(FRDGEventName &&Name, const ParameterStructType *ParameterStruct, ERDGPassFlags Flags, ExecuteLambdaType &&ExecuteLambda)
Definition RenderGraphEvent.h:38
Definition RenderGraphResources.h:571
Definition RHICommandList.h:3819
void SetViewport(float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ)
Definition RHICommandList.h:4015
void SetScissorRect(bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY)
Definition RHICommandList.h:4037
Definition UnrealClient.h:30
Definition Array.h:670
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition AndroidPlatformMisc.h:14
Definition SharedPointer.h:692
Definition RenderGraphDefinitions.h:103
Definition ShaderParameterMacros.h:525