After a while, the output log starts getting spammed with Log Particles warnings. What do these mean? They don’t seem to impact the game, but it would seem best to address them.
LogRendererCore: Warning: FGlobalDynamicVertexBuffer::Allocate(4672), will have allocated 33842864 total this frame
LogParticles: Warning: Panic logging. Allocated 4672 bytes for Resource
The log occurs because the RenderCore module exceeded GMaxVertexBytesAllocatedPerFrame. I’ve seen this happen with a Cascade particle system trail module that was generating a lot of trails. To address it, you probably should look at how many particle systems are running, and how much geometry each one of the systems is creating. You can try reducing the particle lifetimes, reducing the number or particles spawned, reducing the lifetime of the actor the particle system is attached to, and using particle system LODs to reduce geometry when far away from the camera.
The stat particles
command will give you some additional info while the game is running.
Here’s the relevant code.
DynamicBufferAllocator.cpp:
FGlobalDynamicVertexBuffer::FAllocation FGlobalDynamicVertexBuffer::Allocate(uint32 SizeInBytes)
{
FAllocation Allocation;
TotalAllocatedSinceLastCommit += SizeInBytes;
if (IsRenderAlarmLoggingEnabled())
{
UE_LOG(LogRendererCore, Warning, TEXT("FGlobalDynamicVertexBuffer::Allocate(%u), will have allocated %u total this frame"), SizeInBytes, TotalAllocatedSinceLastCommit);
}
...
RenderResource.h
/** Returns true if log statements should be made because we exceeded GMaxVertexBytesAllocatedPerFrame */
bool IsRenderAlarmLoggingEnabled() const;
RenderResource.cpp
bool FGlobalDynamicVertexBuffer::IsRenderAlarmLoggingEnabled() const
{
return GMaxVertexBytesAllocatedPerFrame > 0 && TotalAllocatedSinceLastCommit >= (size_t)GMaxVertexBytesAllocatedPerFrame;
}