Articol:
GPU/CUDA Collision Detection
Autor:
Pintea, postat pe 28 Feb 2009 10:04:43
Salut !
Data fiind lipsa de activitate constructiva pe forum (mai ales de cand nu mai posteaza Dark...) am zis sa pun eu ceva ce am facut recent.
Numele spune tot.
Am modificat aplicatia prezentata la GDROCon (unde facusem rigid body sim) si am modificat collision detection sa mearga pe GPU.
Puteti downloada prezentarea de aici (e facuta foarte simplist, in vreo 2 zile, si trebuia prezentata unora care nu au treaba cu asa ceva):
http://www.riftgame.com/download/GPU_CollisionDetection.zipDemoul inca nu l-am pus, dar cand e finalizat o sa-l urc si pe el.
Ideea e destul de basic, se foloseste la baza tehnica de face counting cu stencil bufferul (ca la stencil shadows de ex) pentru verificarea intersectiilor edgeurilor cu fetele obiectelor (ale caror id-uri sunt codate in culoare). Dupa care se descarca imaginea pe CPU si se proceseaza raspunsul la coliziuni (aici intra in scena CUDA, pentru accelerarea procesului de readback).
Castigul de performanta este extrem de mare si creste cu atat mai mult cu cat creste numarul obiectelor din scena.
Daca o sa fac vreun articol mai serios trebuie sa-mi pun si Vista, fiindca se pot face niste treburi foarte misto cu geometry shaders.
Cam atat, enjoy, iar daca aveti vreo idee constructiva please share.
| Autor |
Mesaj |
Ilidur
|
Postat la 01 Mar 2009 22:20:05 Subiect: < fara subiect >
|
|
|
Status:
Înregistrat pe: 14 Apr 2007 01:43:09
Vârsta: 20 ani
Mesaje: 59
Locatie: Iasi
Programator junior
|
Suna foarte interesant ce propui tu aici dar acele probleme despre care vorbesti sunt atat de mari? Nu am inteles daca poti sa corectezi problema aceasta prin introducerea in textura sau poate am inteles gresit.
|
| |
Black_Knight
|
Postat la 02 Mar 2009 09:31:20 Subiect: < fara subiect >
|
|
|
Status:
Înregistrat pe: 07 May 2007 19:49:43
Vârsta: 28 ani
Mesaje: 652
Locatie: Bucuresti
Programator
|
interesant conceptul, o sa-l studiez mai in profunzime acasa
oricum e bine ca cineva mai gaseste timp sa mai posteze ceva interesant, ca in ultimul timp a cam fost seceta pe site
|
| |
pin46 [banned]
|
Postat la 04 Mar 2009 14:59:20 Subiect: < fara subiect >
|
|
|
Status:
Înregistrat pe: 06 Aug 2007 23:02:05
Vârsta: ? ani
Mesaje: 683
Locatie: Moldova
PR & Marketing
|
Mersi de prezentare. Deci practic pui algoritmu CD in fishieru de shader?
|
| |
Pintea
|
Postat la 04 Mar 2009 16:45:17 Subiect: Re:
|
|
|
Status:
Înregistrat pe: 05 May 2007 14:50:45
Vârsta: 27 ani
Mesaje: 290
Locatie:
Programator
|
pin46 a scris: Mersi de prezentare. Deci practic pui algoritmu CD in fishieru de shader? Practic nu  In "fishieru de shader"  e putin cod, "algoritmu" se bazeaza pe stencil/z buffers si render states.
|
| |
Raul
|
Postat la 04 Mar 2009 17:44:58 Subiect: < fara subiect >
|
|
|
Status:
Înregistrat pe: 31 May 2007 14:55:15
Vârsta: 23 ani
Mesaje: 533
Locatie: Bucuresti
Programator
Buasi Games
|
pin46 le nimereste tot timpul =)) ontopic: asteptam si o demonstratie 
.NET Programmer TV3D Licensed Programmer
|
| |
pin46 [banned]
|
Postat la 04 Mar 2009 22:14:49 Subiect: < fara subiect >
|
|
|
Status:
Înregistrat pe: 06 Aug 2007 23:02:05
Vârsta: ? ani
Mesaje: 683
Locatie: Moldova
PR & Marketing
|
Pai atunci cum trimiti si colectezi datele prin apeluri directx? ce-i stencil buffer, la ce ii folosit?
Ultima editare efectuată de pin46 pe 04 Mar 2009 22:29:40; 1 editări în total
|
| |
boboS
|
Postat la 04 Mar 2009 22:36:41 Subiect: < fara subiect >
|
|
|
Status:
Înregistrat pe: 03 Oct 2006 15:53:21
Vârsta: 24 ani
Mesaje: 896
Locatie: Galați
|
Stencil Buffer e ceva care daca cauti pe google gasesti in 3 secunde cateva randuri care le citesti intr-un minut si afli ce este.
"Noi ne facem ca muncim , ei se fac ca ne platesc"
|
| |
pin46 [banned]
|
Postat la 12 Mar 2009 14:27:48 Subiect: < fara subiect >
|
|
|
Status:
Înregistrat pe: 06 Aug 2007 23:02:05
Vârsta: ? ani
Mesaje: 683
Locatie: Moldova
PR & Marketing
|
Sinteza imaginilor prin rasterizare nu-i neaparat pasiunea mea.
Ultima editare efectuată de pin46 pe 12 Mar 2009 14:39:40; 1 editări în total
|
| |
nekitu
|
Postat la 14 Mar 2009 11:54:14 Subiect: Re:
|
|
|
Status:
Înregistrat pe: 29 Sep 2006 11:33:12
Vârsta: 30 ani
Mesaje: 929
Locatie: Brasov
Programator
7thFACTOR Entertainment Studios
|
pin46 a scris: Sinteza imaginilor prin rasterizare nu-i neaparat pasiunea mea. pai atunci, ce mai cauti pe acest forum !?!?  , ai rezumat defapt : "nu sunt pasionat de grafica"
SpoOoOoock! Life Is Too Short For Cheap Chocolate
|
| |
pin46 [banned]
|
Postat la 14 Mar 2009 15:51:18 Subiect: Re: Re:
|
|
|
Status:
Înregistrat pe: 06 Aug 2007 23:02:05
Vârsta: ? ani
Mesaje: 683
Locatie: Moldova
PR & Marketing
|
nekitu a scris: pin46 a scris: Sinteza imaginilor prin rasterizare nu-i neaparat pasiunea mea. pai atunci, ce mai cauti pe acest forum !?!?  , ai rezumat defapt : "nu sunt pasionat de grafica" Si gamedevu (saitul) se rezuma la grafica ?
Ultima editare efectuată de pin46 pe 14 Mar 2009 15:53:37; 1 editări în total
|
| |
Black_Knight
|
Postat la 19 Mar 2009 09:24:16 Subiect: Re: Re:
|
|
|
Status:
Înregistrat pe: 07 May 2007 19:49:43
Vârsta: 28 ani
Mesaje: 652
Locatie: Bucuresti
Programator
|
nekitu a scris: pin46 a scris: Sinteza imaginilor prin rasterizare nu-i neaparat pasiunea mea. pai atunci, ce mai cauti pe acest forum !?!?  , ai rezumat defapt : "nu sunt pasionat de grafica" lol AI, fizica etc...  ce naiba nu se rezuma gamedevu la grafica...
|
| |
Mishu
|
Postat la 18 Aug 2009 12:56:50 Subiect: < fara subiect >
|
|
|
Status:
Înregistrat pe: 18 Aug 2009 12:37:02
Vârsta: 27 ani
Mesaje: 3
Locatie:
Programator
|
Salut,
Foarte interesant articolul, desi am trecut repede peste el. Ziceai ca ai facut ca ai facut si un rigid body sim - m-ar interesa prezentarea si pt el. Oricum, foarte non-conformista ideea de detectie a coliziunii din ce am observat - adica diferita fata de ce folosesc majoritatea. Ai vreun fel de broadphase? Pe de alta parte nici nu ma pricep deloc la GPU si nici n-am analizat algoritmul in detaliu. Insa spuneai undeva ca nu s-a mai facut nimic pe GPU din 2003, ceea ce nu cred ca e adevarat. Uite, de exemplu, cei de la Bullet au prezentat la GDC anul asta detectia coliziunii cu CUDA. Christer Eriscon are un capitol in cartea lui "Real-time collision detection" dedicat GPU-ului. Takiro Harada a simulat particule pe GPU si are o si o prezentare, tot la GDC09, despre paralelizarea fizicii pe GPU. Si au mai lucrat si altii.
In fine, foarte frumos ce ai facut si la mai mare.
Numai bine, Mishu
|
| |
Pintea
|
Postat la 18 Aug 2009 13:57:07 Subiect: Re:
|
|
|
Status:
Înregistrat pe: 05 May 2007 14:50:45
Vârsta: 27 ani
Mesaje: 290
Locatie:
Programator
|
Mishu a scris: Insa spuneai undeva ca nu s-a mai facut nimic pe GPU din 2003, ceea ce nu cred ca e adevarat. Uite, de exemplu, cei de la Bullet au prezentat la GDC anul asta detectia coliziunii cu CUDA. Christer Eriscon are un capitol in cartea lui "Real-time collision detection" dedicat GPU-ului. Takiro Harada a simulat particule pe GPU si are o si o prezentare, tot la GDC09, despre paralelizarea fizicii pe GPU. Si au mai lucrat si altii. Prezentarea are deja ceva vechime (intre timp am facut si un articol mai serios, dar nu l-am postat aici), la momentul respectiv nu existau implementari ptr detectarea coliziunilor folosind CUDA in image-space. Existau algoritmi pentru detectarea coliziunilor pe GPU, dar fara CUDA, folosind CUDA am incercat sa trec peste unele limitari pe care le aveau acele metode. Faci o confuzie intre simulari fizice si detectarea coliziunilor.
|
| |
Pintea
|
Postat la 18 Aug 2009 13:58:05 Subiect: Re: Re:
|
|
|
Status:
Înregistrat pe: 05 May 2007 14:50:45
Vârsta: 27 ani
Mesaje: 290
Locatie:
Programator
|
Mishu a scris: Insa spuneai undeva ca nu s-a mai facut nimic pe GPU din 2003, ceea ce nu cred ca e adevarat. Uite, de exemplu, cei de la Bullet au prezentat la GDC anul asta detectia coliziunii cu CUDA. Christer Eriscon are un capitol in cartea lui "Real-time collision detection" dedicat GPU-ului. Takiro Harada a simulat particule pe GPU si are o si o prezentare, tot la GDC09, despre paralelizarea fizicii pe GPU. Si au mai lucrat si altii. Prezentarea are deja ceva vechime (intre timp am facut si un articol mai serios, dar nu l-am postat aici), la momentul respectiv nu existau implementari ptr detectarea coliziunilor folosind CUDA in image-space. Existau algoritmi pentru detectarea coliziunilor pe GPU, dar fara CUDA, folosind CUDA am incercat sa trec peste unele limitari pe care le aveau acele metode. Faci o confuzie intre simulari fizice si detectarea coliziunilor. PS : articolul cu rigid body simulation se afla (impreuna cu demoul) aici pe siteul gamedev.ro, cauta articolele de la gdro conf.
Ultima editare efectuată de Pintea pe 18 Aug 2009 13:58:33; 1 editări în total
|
| |
Mishu
|
Postat la 18 Aug 2009 14:16:47 Subiect: < fara subiect >
|
|
|
Status:
Înregistrat pe: 18 Aug 2009 12:37:02
Vârsta: 27 ani
Mesaje: 3
Locatie:
Programator
|
Pai si putem sa vedem si noi articolul mai serios?
La ce te referi cand zici ca fac confuzie intre simulare fizica si detectia coliziunii? Nu sunt expert in CD, dar stiu ca e foarte legata de fizica. Mi s-a parut neobisnuita ideea cu numarat intersectiile - ti-am zis n-am apucat sa citesc cu atentie. De obicei solutiile de CD pe care le stiu eu se bazeaza pe sweep and prune, ierarhii de bounding volumes si GJK de exemplu.
|
| |