GpuParticles.h 810 B

123456789101112131415161718192021222324252627282930313233343536
  1. // Copyright (C) 2009-present, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #pragma once
  6. #include <AnKi/Renderer/RendererObject.h>
  7. #include <AnKi/Renderer/Utils/Readback.h>
  8. namespace anki {
  9. // Iterates the scene particle components and initiates GPU simulations
  10. class GpuParticles : public RendererObject
  11. {
  12. public:
  13. static constexpr U32 kMaxEmittersToSimulate = 16;
  14. Error init();
  15. void populateRenderGraph(RenderingContext& ctx);
  16. private:
  17. RendererDynamicArray<BufferPtr> m_scratchBuffers;
  18. class ReadbackData
  19. {
  20. public:
  21. MultiframeReadbackToken m_readback;
  22. U64 m_lastFrameSeen = 0;
  23. };
  24. RendererHashMap<U32, ReadbackData> m_readbacks; // One readback per emitter
  25. };
  26. } // end namespace anki