Utilizator / Parola:

 

Am uitat parola... | Cont nou!
» Sectiuni
Forum » Articole » Programare » GPU/CUDA Collision Detection

Articol:
GPU/CUDA Collision Detection
Autor: Pintea, postat pe 28 Feb 2009 10:04:43
Versiune printabilã
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.zip
Demoul 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.

Comentarii pentru acest articol:



Pagina 1 din 2 [ 1 | 2 ]

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 Smile

In "fishieru de shader" Smile 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 Very Happy
.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 !?!? Laughing , 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 !?!? Laughing , 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 !?!? Laughing , ai rezumat defapt : "nu sunt pasionat de grafica"


lol AI, fizica etc... Wink
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.
 

Pagina 1 din 2 [ 1 | 2 ]


Server time: 18:39:35 07.09.2010
Last full backup: @ 10:43 on 12.09.2009


[ Termeni si conditii | Contact | F.A.Q. | Funny Pictures ]

© 2006-2007 Copyright 7thFACTOR Entertainment - All rights reserved