Šta je novo?

3D Motor

genuine

Slavan
Učlanjen(a)
17.02.2006
Poruke
1,906
Poena
350
-Sta biste savetovalo po pitanju tehnologija koje bi savremeni 3D engine (u realnom vremenu ) trebalo da podrzi. Znaci koje algoritme biste primenili za koje vizuelne efekte... Na primer ono oko cega se ja konkretno dvoumim je Shadow Mapping vs Shadow Volume algoritam za senke( mozda kombinacija oba) ,
GPU skinning/CPU skinning ( problem pri viseprolaznom renderingu kada se koristi prvi ) , OpenGL vs DirectX 9 ( portabilnost / performanse ) i slicno...

-Da li se se VS2.0 smatraju standardom - isplati li se pisati verzije engina koje ih ne koriste(zbog kompatibilnosti sa starim grafickim karticama) - odnosno pitanje sta je danas minimum hardvera sto se tice igrica

kazite mi sta mislite o ovom:
 
Poslednja izmena:
Sto se tice senk poslusaj savet sto ce ti chicha dati:

http://media.pc.gamespy.com/media/014/014934/vids_3.html

Sto se tice skinninga, GPU skinning, NORMALNO 😉

Sto se tice Shader modela, poceti programirati danas bilo sta "ispod" SM 3.0 je besmisleno.

Sto se tice izbora API-a, e tu ne mogu dati dobar odgovor...
 
genuine je napisao(la):
-Sta biste savetovalo po pitanju tehnologija koje bi savremeni 3D engine (u realnom vremenu ) trebalo da podrzi.
Зависи од тога шта правиш - FPS, тркачку игру, или нешто треће. Дај мало више детаља.
 
Pa i ja sam za GPU ali je problem u tome sto ako za vise puta rendiram istu stvar ( zbog razlicitih efekata- recimo senke ) ona gpu vise puta transformise isti model... CPU bi to uradio jednom ali je onda problem propusnost ka grafickoj...
ostaje da se eksperimentise
 
ok vise detalja...
za sada jos nije definitivno odredjen pravac. u pitanju je samo rendering tehnika... posto pravac igre najvise utice na organizaciju sveta. recimo octal-tree , pvs , portali i slicni algoritmi a rendering jedne scene ne bi trebalo toliko da zavisi od zanra.. ali recimo da je u pitanju pucacina u prvom licu.... ( gde oruzje zauzima 60 % ekrana 😀 )
znaci ovako ... puno statickih svetala , puno dinamickih svetala na pristojnom rastojanju ( sa dinamickim senkama u razlicitim rezolucijama ( zavisno od rastojanja). Staticki modeli u vise nivoa detalja , animirani modeli ( hijararhiski znaci bez skinninga ) , animirani modeli sa skinningom ( znaci skelet i sl ) [ modeli u vise nivoa detalja - da li precomputed ( brzo i veliko ) ili dynamic mesh ( malo , zeznuto za implementaciju( ako je u pitanju opengl) i sporo ) .
svetla:
phong model ( spot,directed,point i sl ) , racunanje po pixelu u Pixel(Fragment) shader-u
anizotropni model - recimo za metale i slicno
texture:
ne bi preterivao sa tim posto je to usko grlo kod grafickih kartica ( pristup memoriji i sl ) znaci jedna tekstura po primitivi..
e sad sta moze je recimo bump mapping ..

od efekata:
volumetric lightning , fog , lens i sl...
i to bi bilo od prilike..
 
Da bi uopste dobio neke "napredne" rendering efekte moras koristiti multipass resenje. To i nije neki problem dok ne dodjes do character animacije. Da li raditi GPU skining ili CPU skining dosta zavisi od hardware-a ispod, od broja rendering passova i od broja vertexa. Generalno u multipass resenjima za sada je brze da skining radis na CPU i da skinovane vertexe strimujes u GPU memoriju.

Postoji i prelazno resenje.. koristi pixels shader za skining !!! To bi lepo radilo na starim i novim nvidiama i samo na novim radeonima. Ideja je da kreiras rgba32f render target, vertexe 3d karaktera ubacis u rgba32f texturu, normale u drugu, bones matrice u trecu texturu i napises pixel shader koji renderuje quad u render targetu. Posle toga render targetu se nalazi skinovan model. Grebuj pixele i smesti ih u neki vertex buffer. Stari ATI (x850 i stariji) imaju 24bit preciznost u pixel shaderima pa su moguce greske u racunanju.

Na Nv i OpenGL je to lako... Kreireas FBO i PBO, renderujes u FBO, grebujes sadrzaj FBO-a u PBO, proglasis PBO kao VBO, "nabodes" vertex pointere i renderuj...
Mozes vise karaktera smestiti u jednu 256x256 texturu.

Sto se senki tice... ja bih se odlucio za shadow mapping. Shadow volumes ume da bude procesorski skup i zahteva da radis CPU skinning. Takodje, SV zahteva obradu specijalnih slucajeva, kada se posmatrac nalazi u senci i moras da zatvaras "piramidu" senke. Na NV i OpenGL-u ima extenzija koja ti olaksava zivot prilikom rada sa SV (depth clamp & depth range), a za ATI neznam. Shadow mapping ti omogucava i meke senke, mozes da deformises mapiranje tako da dobijes vise detalja na mestima gde ti to treba (PSM).

Ja bih ti predlozio sledece rendering passove:
1. Z-FIll + ambient
2. Postavi additivni blending i iskljuci Z-Write.
3. Za svako svetlo:
- renderuj shadow mapu
- renderuj difuznu komponentu u glavni buffer (koristeci shadow mapu)
- renderuj specularnu komponentu u offscreen buffer (koristeci shadow mapu)
4. Prebaci blending u modulate
5. Renderuj texture
6. Prebaci blending u additivni
7. Renderuj screen aligned quad sa specular texturom (iz specular offscreen buffera)
8. Renderuj selfillumination texture.


yooyo
 
Pa sto se shadow mapping-a tice ima nekoliko problema...
prvo sto je na atiju maksimalna rezolucija Zbuffer-a 512x512 (kada se koristi FBO) sto nije toliko strasno dok se svetlo ne udalji malo vise .. a kad se to uradi onda je senka katastrofalno kockasta.. probao sam to da isfiltriram ali nije mnogo bolje..(ali frejmaza drasticno opadne) jedini mi je izbor bio da smanjim FOV kada projektujem na svetlo ali onda svetlo postaje mnogo "uze" nego sto mi treba..
a onda je problem kada imam tackasto svetlo... shadow mapping ne moze da odradi posao za njega... (koliko sam u toku) jedina je prednost sto je dosta brz i prost algoritam + blage senke
e sad shadow volume daje ostre senke u svim pravcima oko svetla, ali zahteva extrudovanje objekta u vertex shaderu ( verzija sa degenerisanim quad-ovima na
ivicama)
komplikacija-> jer sa brojem svetala raste broj (shadow volume-a) . kompromis bi bio da za senke koristim objekte sa nizim detaljima.. plus komplikacija kada se nalazim u senci plus kada zelim blage senke moram da stavljam nekoliko pomerenih svetala oko primarnog izbora..

sta mislis koliko bi pametno bilo da napravim kompromis pa da koristim i jedno i drugo.. recimo za spot light da koristim shadow mapping a za tackasta shadow volume ( recimo meci kad se ispale i lete ) ?

ideja je bila da sve moze da prima senku i sve moze da daje senku pa nek padne frejmaza i na nulu ako treba

sto se skinnina tice svidja mi se fora sa pixel shaderom (dobra ideja) 🙂
mada u sustini posto je u pitanje mnozenje matrica i vektora i sabiranje matrica to bi sse instrukcije lepo odradile ...
 
Nazad
Vrh Dno