diff --git a/tests/ComputeParticlesTest/main.cpp b/tests/ComputeParticlesTest/main.cpp index f1b9f4e87..e31d146d3 100644 --- a/tests/ComputeParticlesTest/main.cpp +++ b/tests/ComputeParticlesTest/main.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -255,10 +256,18 @@ int main() } Nz::UInt8* particleBasePtr = static_cast(ptr) + particlesArrayOffset; + Nz::SparsePtr particlePosPtr(particleBasePtr + particlePosOffset, particleSize); Nz::SparsePtr particleVelPtr(particleBasePtr + particleVelOffset, particleSize); - for (std::size_t i = 0; i < particleCount; ++i) - particleVelPtr[i] = Nz::Vector2f(velDis(rand), velDis(rand)); + std::for_each_n(std::execution::par_unseq, particleBasePtr, particleCount, [&](Nz::UInt8& hax) + { + static thread_local std::mt19937 rand_mt(std::random_device{}()); + + std::size_t index = &hax - particleBasePtr; //< HAAX + + particleVelPtr[index] += (particlePosPtr[index] - newMousePos).GetNormal() * 500.f; + particleVelPtr[index] += Nz::Vector2f(velDis(rand_mt), velDis(rand_mt)); + }); particleBuffer->Unmap(); });