viamd icon indicating copy to clipboard operation
viamd copied to clipboard

Add GPU-accelerated particle system for vector field visualization

Open Copilot opened this issue 1 month ago • 2 comments

  • [x] Understand repository structure and build system
  • [x] Design particle system architecture
    • [x] Create compute shaders for particle seeding
    • [x] Create compute shaders for particle advection (integrate through vector field)
    • [x] Create compute shaders for particle lifetime management
    • [x] Create rendering shaders for particle trails with fade-out
  • [x] Implement particle system component
    • [x] Create particlesystem.cpp in src/components/particlesystem/
    • [x] Implement event handler registration
    • [x] Implement GPU buffer management (particle positions, velocities, lifetimes, trails)
    • [x] Implement compute shader dispatching
    • [x] Implement rendering logic
  • [x] Add particle system to CMakeLists.txt
  • [x] Add particle system shaders to CMakeLists.txt
  • [x] Create UI for particle system controls
  • [x] Hook up particle system to application
  • [x] Add example hook for binding volume textures to particle system
  • [x] Address code review feedback
  • [x] Successfully build and integrate into viamd
  • [x] Remove CodeQL build artifacts (unintentionally added)

Changes in this commit

Removed all _codeql_build_dir/ contents and _codeql_detected_source_root symlink that were unintentionally committed. Added these patterns to .gitignore to prevent future accidental commits of CodeQL build artifacts.

Original prompt

I would like you to implement a new component in viamd called particlesystem which simulates particles in vector fields. The input format for the particle system are volumes with 4 components, encoding a gradient in xyz and the scalar value in w. The particle system should use compute shader(s?) to seed, advect and handle lifetimes of particles. The seeding strategy for the first iteration can be based on randomly placing points within the regions where the scalar value is within a certain range. For rendering, since the vector field is static, I'm thinking of having particles with trails that fade out its opacity to provide a hint of where they came from.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot avatar Nov 25 '25 20:11 Copilot