MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / PreSim

Method PreSim

Source/Engine/Particles/Graph/GPU/GPUParticles.cpp:143–167  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

141}
142
143void GPUParticles::PreSim(GPUContext* context, ParticleEmitter* emitter, ParticleEffect* effect, int32 emitterIndex, ParticleEmitterInstance& data)
144{
145 uint32 counterDefaultValue = 0;
146 const uint32 counterOffset = data.Buffer->GPU.ParticleCounterOffset;
147
148 // Clear buffers if need to
149 if (data.Buffer->GPU.PendingClear)
150 {
151 data.Buffer->GPU.PendingClear = false;
152 data.Buffer->GPU.ParticlesCountMax = 0;
153
154 // Clear counter in the particles buffer
155 context->UpdateBuffer(data.Buffer->GPU.Buffer, &counterDefaultValue, sizeof(counterDefaultValue), counterOffset);
156
157 // Clear custom data
158 for (int32 i = 0; i < CustomDataSize; i += 4)
159 {
160 const uint32 offset = counterOffset + 4 + i * 4;
161 context->UpdateBuffer(data.Buffer->GPU.Buffer, &counterDefaultValue, 4, offset);
162 }
163 }
164
165 // Clear destination buffer counter
166 context->UpdateBuffer(data.Buffer->GPU.BufferSecondary, &counterDefaultValue, sizeof(counterDefaultValue), counterOffset);
167}
168
169void GPUParticles::Sim(GPUContext* context, ParticleEmitter* emitter, ParticleEffect* effect, int32 emitterIndex, ParticleEmitterInstance& data)
170{

Callers 1

UpdateGPUFunction · 0.80

Calls 1

UpdateBufferMethod · 0.45

Tested by

no test coverage detected