UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CanvasRendererItem.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"
8
13{
14public:
26
33 {
34 return this;
35 }
36
45 virtual bool Render_RenderThread(FCanvasRenderContext& RenderContext, FMeshPassProcessorRenderState& DrawRenderState, const FCanvas* Canvas) override;
46
54 virtual bool Render_GameThread(const FCanvas* Canvas, FCanvasRenderThreadScope& RenderScope) override;
55
64 {
65 return(Data->MaterialRenderProxy == InMaterialRenderProxy &&
66 Data->Transform.GetMatrixCRC() == InTransform.GetMatrixCRC());
67 };
68
82 inline int32 AddTile(float X, float Y, float SizeX, float SizeY, float U, float V, float SizeU, float SizeV, FHitProxyId HitProxyId, FColor InColor)
83 {
84 return Data->AddTile(X, Y, SizeX, SizeY, U, V, SizeU, SizeV, HitProxyId, InColor);
85 };
86
87private:
88 class FTileVertexFactory : public FLocalVertexFactory
89 {
90 public:
91 FTileVertexFactory(const FStaticMeshVertexBuffers* VertexBuffers, ERHIFeatureLevel::Type InFeatureLevel);
92 void InitResource(FRHICommandListBase& RHICmdList) override;
93
94 private:
95 const FStaticMeshVertexBuffers* VertexBuffers;
96 };
97
98 class FRenderData
99 {
100 public:
101 FRenderData(
105
106 ~FRenderData();
107
108 void RenderTiles(
110 FMeshPassProcessorRenderState& DrawRenderState,
111 const FSceneView& View,
112 bool bIsHitTesting,
113 bool bUse128bitRT = false);
114
115 const FMaterialRenderProxy* const MaterialRenderProxy;
117
118 inline int32 AddTile(float X, float Y, float SizeX, float SizeY, float U, float V, float SizeU, float SizeV, FHitProxyId HitProxyId, FColor InColor)
119 {
120 FTileInst NewTile = { X,Y,SizeX,SizeY,U,V,SizeU,SizeV,HitProxyId,InColor };
121 return Tiles.Add(NewTile);
122 };
123
124 uint32 GetNumVertices() const;
125 uint32 GetNumIndices() const;
126
127 private:
129 void InitTileMesh(FRHICommandListBase& RHICmdList, const FSceneView& View);
130 void ReleaseTileMesh();
131
133 FStaticMeshVertexBuffers StaticMeshVertexBuffers;
134 FTileVertexFactory VertexFactory;
135
136 struct FTileInst
137 {
138 float X, Y;
139 float SizeX, SizeY;
140 float U, V;
141 float SizeU, SizeV;
142 FHitProxyId HitProxyId;
143 FColor InColor;
144 };
145 TArray<FTileInst> Tiles;
146 };
147
153
154 const bool bFreezeTime;
155};
156
161{
162public:
174
181 {
182 return this;
183 }
184
193 virtual bool Render_RenderThread(FCanvasRenderContext& RenderContext, FMeshPassProcessorRenderState& DrawRenderState, const FCanvas* Canvas) override;
194
202 virtual bool Render_GameThread(const FCanvas* Canvas, FCanvasRenderThreadScope& RenderScope) override;
203
212 {
213 return(Data->MaterialRenderProxy == InMaterialRenderProxy &&
214 Data->Transform.GetMatrixCRC() == InTransform.GetMatrixCRC());
215 };
216
222 inline int32 AddTriangle(const FCanvasUVTri& Tri, FHitProxyId HitProxyId)
223 {
224 return Data->AddTriangle(Tri, HitProxyId);
225 };
226
232 inline void AddReserveTriangles(int32 NumTriangles)
233 {
234 Data->AddReserveTriangles(NumTriangles);
235 }
236
242 inline void ReserveTriangles(int32 NumTriangles)
243 {
244 Data->ReserveTriangles(NumTriangles);
245 }
246
247private:
248 class FTriangleVertexFactory : public FLocalVertexFactory
249 {
250 public:
251 FTriangleVertexFactory(const FStaticMeshVertexBuffers* VertexBuffers, ERHIFeatureLevel::Type InFeatureLevel);
252 void InitResource(FRHICommandListBase& RHICmdList) override;
253
254 private:
255 const FStaticMeshVertexBuffers* VertexBuffers;
256 };
257
258 class FRenderData
259 {
260 public:
264 : MaterialRenderProxy(InMaterialRenderProxy)
266 , VertexFactory(&StaticMeshVertexBuffers, InFeatureLevel)
267 {}
268
269 ~FRenderData();
270
271 inline int32 AddTriangle(const FCanvasUVTri& Tri, FHitProxyId HitProxyId)
272 {
273 FTriangleInst NewTri = { Tri, HitProxyId };
274 return Triangles.Add(NewTri);
275 };
276
277 inline void AddReserveTriangles(int32 NumTriangles)
278 {
279 Triangles.Reserve(Triangles.Num() + NumTriangles);
280 }
281
282 inline void ReserveTriangles(int32 NumTriangles)
283 {
284 Triangles.Reserve(NumTriangles);
285 }
286
287 void RenderTriangles(
289 FMeshPassProcessorRenderState& DrawRenderState,
290 const FSceneView& View,
291 bool bIsHitTesting);
292
293 const FMaterialRenderProxy* const MaterialRenderProxy;
295
296 uint32 GetNumVertices() const;
297 uint32 GetNumIndices() const;
298
299 private:
301 void InitTriangleMesh(FRHICommandListBase& RHICmdList, const FSceneView& View);
302 void ReleaseTriangleMesh();
303
305 FStaticMeshVertexBuffers StaticMeshVertexBuffers;
306 FTriangleVertexFactory VertexFactory;
307
308 struct FTriangleInst
309 {
310 FCanvasUVTri Tri;
311 FHitProxyId HitProxyId;
312 };
313 TArray<FTriangleInst> Triangles;
314 };
315
321
322 const bool bFreezeTime;
323};
#define NULL
Definition oodle2base.h:134
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
TSharedRef< InObjectType, InMode > MakeShared(InArgTypes &&... Args)
Definition SharedPointer.h:2009
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define X(Name, Desc)
Definition FormatStringSan.h:47
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition CanvasTypes.h:794
Definition CanvasRender.h:9
Definition CanvasRender.h:95
Definition CanvasRendererItem.h:13
virtual bool Render_GameThread(const FCanvas *Canvas, FCanvasRenderThreadScope &RenderScope) override
Definition TileRendering.cpp:255
FCanvasTileRendererItem(ERHIFeatureLevel::Type InFeatureLevel, const FMaterialRenderProxy *InMaterialRenderProxy=NULL, const FCanvas::FTransformEntry &InTransform=FCanvas::FTransformEntry(FMatrix::Identity), bool bInFreezeTime=false)
Definition CanvasRendererItem.h:18
int32 AddTile(float X, float Y, float SizeX, float SizeY, float U, float V, float SizeU, float SizeV, FHitProxyId HitProxyId, FColor InColor)
Definition CanvasRendererItem.h:82
bool IsMatch(const FMaterialRenderProxy *InMaterialRenderProxy, const FCanvas::FTransformEntry &InTransform)
Definition CanvasRendererItem.h:63
virtual class FCanvasTileRendererItem * GetCanvasTileRendererItem() override
Definition CanvasRendererItem.h:32
virtual bool Render_RenderThread(FCanvasRenderContext &RenderContext, FMeshPassProcessorRenderState &DrawRenderState, const FCanvas *Canvas) override
Definition TileRendering.cpp:212
Definition CanvasRendererItem.h:161
virtual bool Render_GameThread(const FCanvas *Canvas, FCanvasRenderThreadScope &RenderScope) override
Definition TriangleRendering.cpp:231
virtual class FCanvasTriangleRendererItem * GetCanvasTriangleRendererItem() override
Definition CanvasRendererItem.h:180
void ReserveTriangles(int32 NumTriangles)
Definition CanvasRendererItem.h:242
int32 AddTriangle(const FCanvasUVTri &Tri, FHitProxyId HitProxyId)
Definition CanvasRendererItem.h:222
void AddReserveTriangles(int32 NumTriangles)
Definition CanvasRendererItem.h:232
FCanvasTriangleRendererItem(ERHIFeatureLevel::Type InFeatureLevel, const FMaterialRenderProxy *InMaterialRenderProxy=NULL, const FCanvas::FTransformEntry &InTransform=FCanvas::FTransformEntry(FMatrix::Identity), bool bInFreezeTime=false)
Definition CanvasRendererItem.h:166
virtual bool Render_RenderThread(FCanvasRenderContext &RenderContext, FMeshPassProcessorRenderState &DrawRenderState, const FCanvas *Canvas) override
Definition TriangleRendering.cpp:188
bool IsMatch(const FMaterialRenderProxy *InMaterialRenderProxy, const FCanvas::FTransformEntry &InTransform)
Definition CanvasRendererItem.h:211
Definition CanvasTypes.h:537
Definition CanvasTypes.h:211
Definition HitProxies.h:86
Definition LocalVertexFactory.h:51
Definition MaterialRenderProxy.h:102
Definition RHICommandList.h:455
Definition RawIndexBuffer.h:36
Definition SceneView.h:1425
Definition Array.h:670
Definition SharedPointer.h:692
@ Y
Definition Axis.h:14
@ Transform
Definition AnimationUtils.cpp:594
Type
Definition RHIFeatureLevel.h:20
Definition EngineTypes.h:4113
Definition Color.h:486
Definition MeshBatch.h:371
Definition MeshPassProcessor.h:2118
Definition StaticMeshResources.h:320
static CORE_API const TMatrix Identity
Definition Matrix.h:52