Add more profiler events and naming for particles/animations jobs events
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
#include "Engine/Renderer/RenderList.h"
|
||||
#include "Engine/Particles/ParticleEffect.h"
|
||||
#include "Engine/Engine/Time.h"
|
||||
#include "Engine/Profiler/ProfilerCPU.h"
|
||||
|
||||
ThreadLocal<ParticleEmitterGraphCPUContext> ParticleEmitterGraphCPUExecutor::Context;
|
||||
|
||||
@@ -433,6 +434,7 @@ void ParticleEmitterGraphCPUExecutor::Update(ParticleEmitter* emitter, ParticleE
|
||||
// Update particles
|
||||
if (cpu.Count > 0)
|
||||
{
|
||||
PROFILE_CPU_NAMED("Update");
|
||||
for (int32 i = 0; i < _graph.UpdateModules.Count(); i++)
|
||||
{
|
||||
ProcessModule(_graph.UpdateModules[i], 0, cpu.Count);
|
||||
@@ -442,6 +444,7 @@ void ParticleEmitterGraphCPUExecutor::Update(ParticleEmitter* emitter, ParticleE
|
||||
// Dead particles removal
|
||||
if (_graph._attrAge != -1 && _graph._attrLifetime != -1)
|
||||
{
|
||||
PROFILE_CPU_NAMED("Age kill");
|
||||
byte* agePtr = cpu.Buffer.Get() + data.Buffer->Layout->Attributes[_graph._attrAge].Offset;
|
||||
byte* lifetimePtr = cpu.Buffer.Get() + data.Buffer->Layout->Attributes[_graph._attrLifetime].Offset;
|
||||
for (int32 particleIndex = 0; particleIndex < cpu.Count; particleIndex++)
|
||||
@@ -477,6 +480,7 @@ void ParticleEmitterGraphCPUExecutor::Update(ParticleEmitter* emitter, ParticleE
|
||||
// Euler integration
|
||||
if (_graph._attrPosition != -1 && _graph._attrVelocity != -1)
|
||||
{
|
||||
PROFILE_CPU_NAMED("Euler Integration");
|
||||
byte* positionPtr = cpu.Buffer.Get() + data.Buffer->Layout->Attributes[_graph._attrPosition].Offset;
|
||||
byte* velocityPtr = cpu.Buffer.Get() + data.Buffer->Layout->Attributes[_graph._attrVelocity].Offset;
|
||||
for (int32 particleIndex = 0; particleIndex < cpu.Count; particleIndex++)
|
||||
@@ -490,6 +494,7 @@ void ParticleEmitterGraphCPUExecutor::Update(ParticleEmitter* emitter, ParticleE
|
||||
// Angular Euler Integration
|
||||
if (_graph._attrRotation != -1 && _graph._attrAngularVelocity != -1)
|
||||
{
|
||||
PROFILE_CPU_NAMED("Angular Euler Integration");
|
||||
byte* rotationPtr = cpu.Buffer.Get() + data.Buffer->Layout->Attributes[_graph._attrRotation].Offset;
|
||||
byte* angularVelocityPtr = cpu.Buffer.Get() + data.Buffer->Layout->Attributes[_graph._attrAngularVelocity].Offset;
|
||||
for (int32 particleIndex = 0; particleIndex < cpu.Count; particleIndex++)
|
||||
@@ -504,6 +509,7 @@ void ParticleEmitterGraphCPUExecutor::Update(ParticleEmitter* emitter, ParticleE
|
||||
int32 spawnCount = 0;
|
||||
if (canSpawn)
|
||||
{
|
||||
PROFILE_CPU_NAMED("Spawn");
|
||||
for (int32 i = 0; i < _graph.SpawnModules.Count(); i++)
|
||||
{
|
||||
spawnCount += ProcessSpawnModule(i);
|
||||
@@ -514,6 +520,8 @@ void ParticleEmitterGraphCPUExecutor::Update(ParticleEmitter* emitter, ParticleE
|
||||
spawnCount = countAfter - countBefore;
|
||||
if (spawnCount != 0)
|
||||
{
|
||||
PROFILE_CPU_NAMED("Init");
|
||||
|
||||
// Spawn particles
|
||||
data.Buffer->CPU.Count = countAfter;
|
||||
|
||||
@@ -533,6 +541,7 @@ void ParticleEmitterGraphCPUExecutor::Update(ParticleEmitter* emitter, ParticleE
|
||||
if (_graph.RibbonRenderingModules.HasItems())
|
||||
{
|
||||
// Sort ribbon particles
|
||||
PROFILE_CPU_NAMED("Ribbon");
|
||||
if (cpu.RibbonOrder.IsEmpty())
|
||||
{
|
||||
cpu.RibbonOrder.Resize(_graph.RibbonRenderingModules.Count() * data.Buffer->Capacity);
|
||||
@@ -559,6 +568,8 @@ void ParticleEmitterGraphCPUExecutor::Update(ParticleEmitter* emitter, ParticleE
|
||||
|
||||
int32 ParticleEmitterGraphCPUExecutor::UpdateSpawn(ParticleEmitter* emitter, ParticleEffect* effect, ParticleEmitterInstance& data, float dt)
|
||||
{
|
||||
PROFILE_CPU_NAMED("Spawn");
|
||||
|
||||
// Prepare data
|
||||
auto& context = Context.Get();
|
||||
Init(emitter, effect, data, dt);
|
||||
|
||||
Reference in New Issue
Block a user