UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ColorVertexBuffer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "RenderResource.h"
7#include "RHI.h"
8
11
16{
17public:
18 enum class NullBindStride
19 {
20 FColorSizeForComponentOverride, //when we want to bind null buffer with the expectation that it must be overridden. Stride must be correct so override binds correctly
21 ZeroForDefaultBufferBind, //when we want to bind the null color buffer for it to actually be used for draw. Stride must be 0 so the IA gives correct data for all verts.
22 };
23
26
29
31 ENGINE_API void CleanUp();
32
33 ENGINE_API void Init(uint32 InNumVertices, bool bNeedsCPUAccess = true);
34
39 ENGINE_API void Init(const TArray<FStaticMeshBuildVertex>& InVertices, bool bNeedsCPUAccess = true);
40 ENGINE_API void Init(const FConstMeshBuildVertexView& InVertices, bool bNeedsCPUAccess = true);
41
46 void Init(const FColorVertexBuffer& InVertexBuffer, bool bNeedsCPUAccess = true);
47
56
63 ENGINE_API void Serialize(FArchive& Ar, bool bNeedsCPUAccess);
64
66
68
69 void ClearMetaData();
70
75 void ExportText(FString &ValueStr) const;
76
81 void ImportText(const TCHAR* SourceText);
82
87
88 inline FColor& VertexColor(uint32 VertexIndex)
89 {
90 checkSlow(VertexIndex < GetNumVertices());
91 return *(FColor*)(Data + VertexIndex * Stride);
92 }
93
94 inline const FColor& VertexColor(uint32 VertexIndex) const
95 {
96 checkSlow(VertexIndex < GetNumVertices());
97 return *(FColor*)(Data + VertexIndex * Stride);
98 }
99
100 // Other accessors.
101 inline uint32 GetStride() const
102 {
103 return Stride;
104 }
105 inline uint32 GetNumVertices() const
106 {
107 return NumVertices;
108 }
109 ENGINE_API bool GetAllowCPUAccess() const;
110
113
120
127 ENGINE_API void InitFromColorArray(const FColor *InColors, uint32 Count, uint32 Stride = sizeof(FColor), bool bNeedsCPUAccess = true);
128
134 {
135 InitFromColorArray(InColors.GetData(), InColors.Num());
136 }
137
143 {
144 InitFromColorArray(&InColor, Count, 0);
145 }
146
149
153
154 // FRenderResource interface.
155 ENGINE_API virtual void InitRHI(FRHICommandListBase& RHICmdList) override;
156 ENGINE_API virtual void ReleaseRHI() override;
157 virtual FString GetFriendlyName() const override { return TEXT("ColorOnly Mesh Vertices"); }
158
159 ENGINE_API void BindColorVertexBuffer(const class FVertexFactory* VertexFactory, struct FStaticMeshDataType& StaticMeshData) const;
161
162 inline FRHIShaderResourceView* GetColorComponentsSRV() const { return ColorComponentsSRV; }
163
164 void* GetVertexData() { return Data; }
165 const void* GetVertexData() const { return Data; }
166
167private:
168
170 class FColorVertexData* VertexData;
171
172 FShaderResourceViewRHIRef ColorComponentsSRV;
173
175 uint8* Data;
176
178 uint32 Stride;
179
181 uint32 NumVertices;
182
183 bool NeedsCPUAccess = true;
184
186 void AllocateData(bool bNeedsCPUAccess = true);
187
190};
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define TEXT(x)
Definition Platform.h:1272
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
void Init()
Definition LockFreeList.h:4
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition ColorVertexBuffer.h:16
ENGINE_API bool GetAllowCPUAccess() const
Definition ColorVertexBuffer.cpp:383
void ReleaseRHIForStreaming(FRHIResourceReplaceBatcher &Batcher)
Definition ColorVertexBuffer.cpp:413
void * GetVertexData()
Definition ColorVertexBuffer.h:164
void SerializeMetaData(FArchive &Ar)
Definition ColorVertexBuffer.cpp:240
ENGINE_API void InitFromColorArray(const FColor *InColors, uint32 Count, uint32 Stride=sizeof(FColor), bool bNeedsCPUAccess=true)
Definition ColorVertexBuffer.cpp:354
FColor & VertexColor(uint32 VertexIndex)
Definition ColorVertexBuffer.h:88
ENGINE_API uint32 GetAllocatedSize() const
Definition ColorVertexBuffer.cpp:388
ENGINE_API void SetMetaData(uint32 InStride, uint32 InNumVertices)
Definition ColorVertexBuffer.cpp:245
virtual ENGINE_API void ReleaseRHI() override
Definition ColorVertexBuffer.cpp:437
const void * GetVertexData() const
Definition ColorVertexBuffer.h:165
ENGINE_API bool AppendVertices(const FStaticMeshBuildVertex *Vertices, const uint32 NumVerticesToAppend)
Definition ColorVertexBuffer.cpp:134
const FColor & VertexColor(uint32 VertexIndex) const
Definition ColorVertexBuffer.h:94
static ENGINE_API void BindDefaultColorVertexBuffer(const class FVertexFactory *VertexFactory, struct FStaticMeshDataType &StaticMeshData, NullBindStride BindStride)
Definition ColorVertexBuffer.cpp:475
NullBindStride
Definition ColorVertexBuffer.h:19
ENGINE_API void CleanUp()
Definition ColorVertexBuffer.cpp:60
void InitRHIForStreaming(FRHIBuffer *IntermediateBuffer, FRHIResourceReplaceBatcher &Batcher)
Definition ColorVertexBuffer.cpp:405
virtual ENGINE_API void InitRHI(FRHICommandListBase &RHICmdList) override
Definition ColorVertexBuffer.cpp:421
FRHIShaderResourceView * GetColorComponentsSRV() const
Definition ColorVertexBuffer.h:162
ENGINE_API void operator=(const FColorVertexBuffer &Other)
Definition ColorVertexBuffer.cpp:336
FBufferRHIRef CreateRHIBuffer(FRHICommandListBase &RHICmdList)
Definition ColorVertexBuffer.cpp:400
ENGINE_API void BindColorVertexBuffer(const class FVertexFactory *VertexFactory, struct FStaticMeshDataType &StaticMeshData) const
Definition ColorVertexBuffer.cpp:453
void InitFromColorArray(const TArray< FColor > &InColors)
Definition ColorVertexBuffer.h:133
uint32 GetNumVertices() const
Definition ColorVertexBuffer.h:105
ENGINE_API ~FColorVertexBuffer()
Definition ColorVertexBuffer.cpp:54
void ImportText(const TCHAR *SourceText)
Definition ColorVertexBuffer.cpp:287
ENGINE_API FColorVertexBuffer()
Definition ColorVertexBuffer.cpp:30
void InitFromSingleColor(const FColor &InColor, uint32 Count)
Definition ColorVertexBuffer.h:142
virtual FString GetFriendlyName() const override
Definition ColorVertexBuffer.h:157
uint32 GetStride() const
Definition ColorVertexBuffer.h:101
void ClearMetaData()
Definition ColorVertexBuffer.cpp:251
ENGINE_API void GetVertexColors(TArray< FColor > &OutColors) const
Definition ColorVertexBuffer.cpp:343
void ExportText(FString &ValueStr) const
Definition ColorVertexBuffer.cpp:258
Definition ColorVertexBuffer.cpp:21
Definition RHIResources.h:1581
Definition RHICommandList.h:455
Definition RHIResourceReplace.h:55
Definition RHIResources.h:3304
Definition RenderResource.h:474
Definition VertexFactory.h:661
Definition Array.h:670
Definition Color.h:486
Definition Components.h:72
Definition Components.h:26
Definition Components.h:38