Jako że jutro wyjeżdżam i nie będę miał dostępu do komputera przez dwa tygodnie, postanowiłem zabrać się za coś, o czym myślałem już od kilku miesięcy - GPGPU.
Wziąłem w łapkę dokumentację i napisałem symulator stada (popularne 'boidy') oparty przede wszystkim na OpenCL (kilka rzeczy związanych z liczeniem jest wykonywanych przez CPU, aby nie było race conditions
).
Tak to się prezentuje:
Domyślne ustawienia (pełna symulacja, 800x600, przedstawianie boidów jako trójkąty, 1 000 jednostek, VSync) - 60 FPS.
Włączona uproszczona symulacja, zmieniony tryb renderowania, 300 000 jednostek - 22 FPS.
Pełna symulacja, 1600x700, 10 000 boidów - 10 FPS.
j/w, tyle że z uproszczoną symulacją - 52 FPS.
Programik wykorzystuje także myszkę - używana jest w roli łowcy (od którego boidy uciekają) lub przywódcy (do którego lgną):
Z jednej strony jest to ciekawe zagadnienie optymalizacyjne, lecz z drugiej - mój pierwszy projekt w OpenCL, więc po prostu najlepiej napisane to nie jest (choć imho źle nie ma, biorąc pod uwagę mojego Radeona 7670m);
W paczce jest kod źródłowy i binarka dla Windows x86, wrzucam dla potomnych :)
Jestem w razie czego otwarty na pytania ;)
Edit: avast się rzuca o to, że ZenGL.dll
jest 'podejrzanym plikiem', ale jest to false positive
, nie wiem, o co mu chodzi :P
Edit 2: a paczce jest dodatkowy Readme
, oczywiście.