Fix Global Surface Atlas flickering in scenes with lots of objects
This commit is contained in:
@@ -712,7 +712,7 @@ bool GlobalSurfaceAtlasPass::Render(RenderContext& renderContext, GPUContext* co
|
|||||||
|
|
||||||
// Calculate optimal capacity for the objects buffer
|
// Calculate optimal capacity for the objects buffer
|
||||||
objectsBufferCapacity *= sizeof(uint32) * 2; // Convert to bytes and add safe margin
|
objectsBufferCapacity *= sizeof(uint32) * 2; // Convert to bytes and add safe margin
|
||||||
objectsBufferCapacity = Math::Clamp(Math::AlignUp<uint32>(objectsBufferCapacity, 4096u), 32u * 1024u, 1024u * 1024u); // Align up to 4kB, clamp 32kB - 1MB
|
objectsBufferCapacity = Math::Clamp(Math::AlignUp<uint32>(objectsBufferCapacity, 4096u), 32u * 1024u, 16 * 1024u * 1024u); // Align up to 4kB, clamp 32kB - 16MB
|
||||||
surfaceAtlasData.CulledObjectsUsageHistory.Add(objectsBufferCapacity); // Record history
|
surfaceAtlasData.CulledObjectsUsageHistory.Add(objectsBufferCapacity); // Record history
|
||||||
objectsBufferCapacity = surfaceAtlasData.CulledObjectsUsageHistory.Maximum(); // Use biggest value from history
|
objectsBufferCapacity = surfaceAtlasData.CulledObjectsUsageHistory.Maximum(); // Use biggest value from history
|
||||||
if (surfaceAtlasData.CulledObjectsUsageHistory.Count() == surfaceAtlasData.CulledObjectsUsageHistory.Capacity())
|
if (surfaceAtlasData.CulledObjectsUsageHistory.Count() == surfaceAtlasData.CulledObjectsUsageHistory.Capacity())
|
||||||
|
|||||||
Reference in New Issue
Block a user