96 : UntypedIndexData(nullptr)
122 const void* UntypedIndexData;
149 return !bAllowCPUAccess || CachedNumIndices == 0 || IndexStorage.
Num() > 0;
260 return CachedNumIndices >= 0 ? CachedNumIndices : (b32Bit ? (IndexStorage.
Num()/4) : (IndexStorage.
Num()/2));
309 inline bool Is32Bit()
const {
return b32Bit; }
316 int32 CachedNumIndices;
364 UE_DEPRECATED(5.7,
"Use IsSRVCreatedByDefault or IsShaderResource instead, which gives more granular control over platform specific behavior")
378 bool bIsShaderResource
395 , CachedNumIndices(0)
397 static_assert(
sizeof(
INDEX_TYPE) == 2 ||
sizeof(
INDEX_TYPE) == 4,
"FRawStaticIndexBuffer16or32 must have a stride of 2 or 4 bytes.");
453 Indices.BulkSerialize(Ar);
454 CachedNumIndices = Indices.Num();
459 Ar << CachedNumIndices;
470 void CacheOptimize();
481 return CachedNumIndices;
492 return (
uint32)Indices[Idx];
497 return (
void*)(&Indices[Idx]);
502 CachedNumIndices +=
Num;
503 Indices.InsertUninitialized(Idx,
Num);
504 check(CachedNumIndices == Indices.Num());
509 CachedNumIndices -=
Num;
510 Indices.RemoveAt(Idx,
Num);
511 check(CachedNumIndices == Indices.Num());
516 Indices.Empty(Slack);
517 CachedNumIndices = 0;
522 return Indices.GetResourceDataSize();
529 CachedNumIndices = Indices.Num();
535 if (CachedNumIndices)
539 CachedNumIndices = Indices.Num();
543 sizeof(
INDEX_TYPE) == 4 ?
TEXT(
"FRawStaticIndexBuffer32") :
TEXT(
"FRawStaticIndexBuffer16"),
568 int32 CachedNumIndices;
#define check(expr)
Definition AssertionMacros.h:314
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
float Val(const FString &Value)
Definition UnrealMath.cpp:3163
Definition Archive.h:1208
Definition RawIndexBuffer.h:92
FIndexArrayView(const void *InIndexData, int32 InNumIndices, bool bIn32Bit)
Definition RawIndexBuffer.h:108
uint32 operator[](int32 i) const
Definition RawIndexBuffer.h:117
FIndexArrayView()
Definition RawIndexBuffer.h:95
int32 Num() const
Definition RawIndexBuffer.h:118
uint32 operator[](int32 i)
Definition RawIndexBuffer.h:116
Definition RenderResource.h:509
FBufferRHIRef IndexBufferRHI
Definition RenderResource.h:524
Definition NameTypes.h:617
Definition RHIResources.h:1581
Definition RHICommandList.h:455
FShaderResourceViewRHIRef CreateShaderResourceView(FRHIBuffer *Buffer, FRHIViewDesc::FBufferSRV::FInitializer const &ViewDesc)
Definition RHICommandList.h:975
Definition RHIResourceReplace.h:55
Definition RHIResources.h:3304
Definition RawIndexBuffer.h:36
void ForceUse32Bit(bool bIn32Bit)
Definition RawIndexBuffer.h:59
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition RawIndexBuffer.cpp:110
friend FArchive & operator<<(FArchive &Ar, FRawIndexBuffer16or32 &I)
Definition RawIndexBuffer.cpp:153
void ComputeIndexWidth()
Definition RawIndexBuffer.cpp:89
void CacheOptimize()
Definition RawIndexBuffer.cpp:82
TArray< uint32 > Indices
Definition RawIndexBuffer.h:43
FRawIndexBuffer16or32()
Definition RawIndexBuffer.h:38
Definition RawIndexBuffer.h:17
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition RawIndexBuffer.cpp:50
friend FArchive & operator<<(FArchive &Ar, FRawIndexBuffer &I)
Definition RawIndexBuffer.cpp:69
TArray< uint16 > Indices
Definition RawIndexBuffer.h:20
void CacheOptimize()
Definition RawIndexBuffer.cpp:43
Definition RawIndexBuffer.h:326
virtual void Empty(int32 Slack=0)=0
ENGINE_API bool IsShaderResource(bool bAllowCPUAccess) const
Definition RawIndexBuffer.cpp:466
void ReleaseRHIForStreaming(FRHIResourceReplaceBatcher &Batcher)
Definition RawIndexBuffer.cpp:498
virtual void * GetPointerTo(uint32 Idx)=0
virtual int32 Num() const =0
ENGINE_API bool IsSRVNeeded(bool bAllowCPUAccess) const
Definition RawIndexBuffer.cpp:479
virtual void SetMetaData(int32 InCachedNumIndices)=0
virtual void Remove(int32 Idx, int32 Num=1)=0
virtual void Insert(int32 Idx, int32 Num=1)=0
void InitRHIForStreaming(FRHIBuffer *IntermediateBuffer, size_t IndexSize, FRHIResourceReplaceBatcher &Batcher)
Definition RawIndexBuffer.cpp:490
virtual int32 GetResourceDataSize() const =0
virtual void Serialize(FArchive &Ar)=0
virtual void SerializeMetaData(FArchive &Ar)=0
static ENGINE_API FBufferRHIRef CreateRHIIndexBufferInternal(FRHICommandListBase &RHICmdList, const TCHAR *InDebugName, const FName &InOwnerName, int32 IndexCount, size_t IndexSize, FResourceArrayInterface *ResourceArray, bool bIsShaderResource)
Definition RawIndexBuffer.cpp:506
virtual FShaderResourceViewRHIRef GetOrCreateSRV(FRHICommandListBase &RHICmdList) const =0
virtual bool GetNeedsCPUAccess() const =0
virtual uint32 Get(uint32 Idx) const =0
ENGINE_API bool IsSRVCreatedByDefault(bool bAllowCPUAccess) const
Definition RawIndexBuffer.cpp:455
virtual int32 AddItem(uint32 Val)=0
FShaderResourceViewRHIRef SRVValue
Definition RawIndexBuffer.h:382
FRHIShaderResourceView * GetSRV() const
Definition RawIndexBuffer.h:351
Definition RawIndexBuffer.h:387
void ReleaseRHIForStreaming(FRHIResourceReplaceBatcher &Batcher)
Definition RawIndexBuffer.h:560
virtual int32 AddItem(uint32 Val) override
Definition RawIndexBuffer.h:484
virtual void * GetPointerTo(uint32 Idx) override
Definition RawIndexBuffer.h:495
void InitRHIForStreaming(FRHIBuffer *IntermediateBuffer, FRHIResourceReplaceBatcher &Batcher)
Definition RawIndexBuffer.h:555
virtual void Serialize(FArchive &Ar) override
Definition RawIndexBuffer.h:451
virtual int32 Num() const override
Definition RawIndexBuffer.h:479
virtual FShaderResourceViewRHIRef GetOrCreateSRV(FRHICommandListBase &RHICmdList) const override
Definition RawIndexBuffer.h:420
virtual void ReleaseRHI() override
Definition RawIndexBuffer.h:413
FBufferRHIRef CreateRHIBuffer(FRHICommandListBase &RHICmdList)
Definition RawIndexBuffer.h:533
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition RawIndexBuffer.h:403
virtual void Remove(int32 Idx, int32 Num) override
Definition RawIndexBuffer.h:507
FRawStaticIndexBuffer16or32(bool InNeedsCPUAccess=false)
Definition RawIndexBuffer.h:393
virtual void AssignNewBuffer(const TArray< INDEX_TYPE > &Buffer)
Definition RawIndexBuffer.h:525
virtual void SetMetaData(int32 InCachedNumIndices) override
Definition RawIndexBuffer.h:462
virtual void Insert(int32 Idx, int32 Num) override
Definition RawIndexBuffer.h:500
virtual void Empty(int32 Slack) override
Definition RawIndexBuffer.h:514
virtual bool GetNeedsCPUAccess() const override
Definition RawIndexBuffer.h:477
virtual uint32 Get(uint32 Idx) const override
Definition RawIndexBuffer.h:490
virtual int32 GetResourceDataSize() const override
Definition RawIndexBuffer.h:520
virtual void SerializeMetaData(FArchive &Ar) override
Definition RawIndexBuffer.h:457
Definition RawIndexBuffer.h:130
void ReleaseRHIForStreaming(FRHIResourceReplaceBatcher &Batcher)
Definition RawIndexBuffer.cpp:385
bool Is32Bit() const
Definition RawIndexBuffer.h:309
int32 GetIndexDataSize() const
Definition RawIndexBuffer.h:277
void ExpandTo32Bit()
Definition RawIndexBuffer.cpp:293
void InitRHIForStreaming(FRHIBuffer *IntermediateBuffer, FRHIResourceReplaceBatcher &Batcher)
Definition RawIndexBuffer.cpp:377
void SerializeMetaData(FArchive &Ar)
Definition RawIndexBuffer.cpp:439
uint32 GetIndex(const uint32 At) const
Definition RawIndexBuffer.h:196
virtual ENGINE_API ~FRawStaticIndexBuffer()
int32 GetNumIndices() const
Definition RawIndexBuffer.h:258
SIZE_T GetAllocatedSize() const
Definition RawIndexBuffer.h:266
void Discard()
Definition RawIndexBuffer.cpp:449
bool GetAllowCPUAccess() const
Definition RawIndexBuffer.h:271
void ClearMetaData()
Definition RawIndexBuffer.cpp:444
ENGINE_API void RemoveIndicesAt(const uint32 At, const uint32 NumIndicesToRemove)
Definition RawIndexBuffer.cpp:259
ENGINE_API void AppendIndices(const uint32 *IndicesToAppend, const uint32 NumIndicesToAppend)
Definition RawIndexBuffer.cpp:254
ENGINE_API const uint32 * AccessStream32() const
Definition RawIndexBuffer.cpp:324
void SetIndex(const uint32 At, const uint32 NewIndexValue)
Definition RawIndexBuffer.h:157
ENGINE_API void SetIndices(const TArray< uint32 > &InIndices, EIndexBufferStride::Type DesiredStride)
Definition RawIndexBuffer.cpp:172
bool TrySetAllowCPUAccess(bool bAllowCPUAccess)
Definition RawIndexBuffer.h:145
ENGINE_API const uint16 * AccessStream16() const
Definition RawIndexBuffer.cpp:315
ENGINE_API FIndexArrayView GetArrayView() const
Definition RawIndexBuffer.cpp:333
FBufferRHIRef CreateRHIBuffer(FRHICommandListBase &RHICmdList)
Definition RawIndexBuffer.cpp:339
ENGINE_API void GetCopy(TArray< uint32 > &OutIndices) const
Definition RawIndexBuffer.cpp:269
virtual ENGINE_API void InitRHI(FRHICommandListBase &RHICmdList) override
Definition RawIndexBuffer.cpp:393
ENGINE_API void InsertIndices(const uint32 At, const uint32 *IndicesToAppend, const uint32 NumIndicesToAppend)
Definition RawIndexBuffer.cpp:219
virtual void ReleaseRHI()
Definition RenderResource.h:90
FName GetOwnerName() const
Definition RenderResource.h:127
FBufferRHIRef CreateRHIBuffer(FRHICommandListBase &RHICmdList, T &InOutResourceObject, uint32 ResourceCount, EBufferUsageFlags InBufferUsageFlags, const TCHAR *InDebugName)
Definition RenderResource.h:160
Definition ResourceArray.h:77
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
UE_NODEBUG UE_FORCEINLINE_HINT SIZE_T GetAllocatedSize(void) const
Definition Array.h:1059
UE_FORCEINLINE_HINT bool IsValid() const
Definition RefCounting.h:594
UE_FORCEINLINE_HINT void SafeRelease()
Definition RefCounting.h:599
Definition DynamicRHIResourceArray.h:31
virtual bool GetAllowCPUAccess() const override
Definition DynamicRHIResourceArray.h:101
virtual void SetAllowCPUAccess(bool bInNeedsCPUAccess) override
Definition DynamicRHIResourceArray.h:109
Definition RawIndexBuffer.h:75
@ false
Definition radaudio_common.h:23
static FBufferSRV::FInitializer CreateBufferSRV()
Definition RHIResources.h:3124