Jump to content

DirectX 11 teselacija


voodoo_

Recommended Posts

Jedan od udarnih noviteta novog DirectX-a 11, koji stiže uz Windows 7 (a može se instalirati i na Visti, paket "Windows Platform Update" unutar Windows Update, razlike u performansama nema) je teselacija, koja je najgrublje rečeno mogućnost da se grafičkoj kartici pošalje low-polygon 3D objekat, koji će potom grafički procesor, uz odgovarajuće "savete", napumpati tako da bude detaljniji. Ovim se omogućuju bolje performanse nego da se grafičkoj kartici direktno šalje high-poly model, pošto se štedi na bandwidthu itd. Ova tehnika je postojala i na nekim ranijim generacijama grafičkih kartica, ali je niko nije koristio jer nije bila standardna, dok DirectX 11 ima striktne propise kako se teselacija implementira tako da će raditi na svakoj DX11-kompatibilnoj kartici. Za sada je podržavaju samo Radeoni serije HD 5000, bar dok NVidia ne izbaci svoje DX11 kartice.

Prvi test koji ovo koristi za sve pare je Unigine Heaven, i to ne na rudimentalnom nivou nego se baš primećuje razlika, naročito uživo. Imao sam prilike da isprobam Radeon HD 5750 pa sam uhvatio neke screenshotove. E sad, pošto penali direktno zavise od nivoa namunjenosti teselacije, ovde se pad brzine kreće oko 50%. Ova kartica ionako nije neka snaga tako da sa njom nema preterane vajde od DirectX-a 11 (mada u njemu ima i drugih optimizacija u odnosu na DX10), ali su HD 5800 modeli dovoljno snažni da se na njima koristi teselacija a da frejmrejt ostane prihvatljiv i u visokim rezolucijama.

Za kraj, par screenshotova. Po meni, koliki je bamp/normal maping bio korak unapred u dobijanju privida reljefnih površina, toliko je teselacija još veći korak, tim pre što ne pravi privid, nego zaista budži objekte.

Scena 1 - bez teselacije

Scena 1 - sa teselacijom

Scena 2 - bez teselacije

Scena 2 - sa teselacijom

Link to comment
Share on other sites

cisto da napomenem da se hardverska teselacija (ova danas) funkcionise malo drugacije od old skul teselacije koja je prisutna u 3du koliko i poligon :) . Mene malo nervira sto se gadjaju terminima, teselacija u pravom smislu ne bi trebalo da dodaje vec smanjuje detalje i koristi za jedan vid optimizacije. Ova cija je podrska ubacena u dx11 za hardver funkcionise tako sto koristi patcheve (povrsine) i u zavistnosti od jacine izvlaci detalje, sad nisam siguran po kom principu pravi selekciju, ako je auto, onda bi modelari morali mnogo da povedu racuna gde i kako stavljaju geometriju sto odma znaci sporiju implementaciju. Inace cenim da ce bump i normal jos duze vreme koristiti najvise posto je najjeftiniji i najbrzi nacin da se dobije dobar rezultat. Ako se ipak potpuno predje na ovakav nacin kreiranja detalja mozda se cak i smanji zahtevnost igara po pitanju zauzeca memorije.

darko banana ima dvaes poligona :P

Edited by Immz

This video contains content from Jimmy Kimmel Live, who has decided to block it in your country.

[23:47] <manager-> jao dete jao dete :D

chickenonaraft.kom

Link to comment
Share on other sites

cisto da napomenem da se hardverska teselacija (ova danas) funkcionise malo drugacije od old skul teselacije koja je prisutna u 3du koliko i poligon :) . Mene malo nervira sto se gadjaju terminima, teselacija u pravom smislu ne bi trebalo da dodaje vec smanjuje detalje i koristi za jedan vid optimizacije. Ova cija je podrska ubacena u dx11 za hardver funkcionise tako sto koristi patcheve (povrsine) i u zavistnosti od jacine izvlaci detalje, sad nisam siguran po kom principu pravi selekciju, ako je auto, onda bi modelari morali mnogo da povedu racuna gde i kako stavljaju geometriju sto odma znaci sporiju implementaciju. Inace cenim da ce bump i normal jos duze vreme koristiti najvise posto je najjeftiniji i najbrzi nacin da se dobije dobar rezultat. Ako se ipak potpuno predje na ovakav nacin kreiranja detalja mozda se cak i smanji zahtevnost igara po pitanju zauzeca memorije.

darko banana ima dvaes poligona :P

Teselacija je matematički termin i označava prekrivanje određene površine skupom figura bez preklapanja. Nikada do sada nisam čuo za teselaciju u kontekstu smanjivanja detalja, bilo u 3D grafici, bilo u matematici.

Što se implementacije u DX11 tiče, ja se ipak pre kladim na Geometry shader jer koliko mi se čini, patchevi nisu hardverski podržani primitivi u komercijalnom GPUovima.

You're all gonna die. Then you'll be dead for way longer than you're alive; like, that's mostly what you're ever gonna be. You're just dead people that didn't die yet...

Link to comment
Share on other sites

ne pricam o matematickom terminu nego o teselaciji u 3d-u, i da teselacijom se smanjuju detalji.

Teselacija jeste originalno matematički termin i u grafiku je pojam teselacije došao iz matematike, tj. nije nevezano počeo da se koristi. Nisam uspeo da nađem ni jednu jedinu referencu gde se pojam teselacije koristi da opiše smanjivanje broja poligona.

Što se implementacije sa patchevima tiče, tu si bio u pravu. DX11 radi sa patchevima i zahteva DX11-specific hardver.

You're all gonna die. Then you'll be dead for way longer than you're alive; like, that's mostly what you're ever gonna be. You're just dead people that didn't die yet...

Link to comment
Share on other sites

ne znam koliko poznajes nurbs i subd povrsine, ali tamo je teselacija primarni faktor pri optimizaciji, to pominjem samo kao primer. ne znam zasto ti je to toliko cudno, ako te bas zanima okacicu primer kako ja to radim pri optimizovanju rendera.

evo iz jednog manuala

Determine which objects never get close to the camera and which ones either are (for static images) or do (for animated objects).

* If an object is far from the camera at all times, decrease the default settings.

* If the object is middle distance away from the camera, leave the default settings.

* If the object gets close to the camera at some point during the scene, increase the tessellation settings a little more, but only enough to achieve an acceptable level of smoothness.

naravno ovde se pominje povecanje detalja, poenta je sto se danas ti detalji smanjuju ispod difolt vrednosti vecine render softvera i time postize optimizacija

Edited by Immz

This video contains content from Jimmy Kimmel Live, who has decided to block it in your country.

[23:47] <manager-> jao dete jao dete :D

chickenonaraft.kom

Link to comment
Share on other sites

ne znam koliko poznajes nurbs i subd povrsine, ali tamo je teselacija primarni faktor pri optimizaciji, to pominjem samo kao primer. ne znam zasto ti je to toliko cudno, ako te bas zanima okacicu primer kako ja to radim pri optimizovanju rendera.

evo iz jednog manuala

naravno ovde se pominje povecanje detalja, poenta je sto se danas ti detalji smanjuju ispod difolt vrednosti vecine render softvera i time postize optimizacija

Kada su u pitanju NURBS-ovi tu se teselacija koristi u punom matematičkom smislu te reči. Imaš parametarski zadanu površinu i da bi mogao nju da renderuješ moraš da proizvedeš poligonalni objekat. To se postiže tako što se NURBS površina prekriva trouglovima bez preklapanja. Parametar o kome ti govoriš kontroliše broj trouglova.

You're all gonna die. Then you'll be dead for way longer than you're alive; like, that's mostly what you're ever gonna be. You're just dead people that didn't die yet...

Link to comment
Share on other sites

Na prva dva screenshota se vidi da je geometrija totalno razlichita - na shotu bez teselacije nema geometrije crepova i cigala oko prozora, tako da tu teselacija ne bi dala onakav rezultat kao u shotu sa teselacijom. Po meni je cela ta pricha sa teselacijom jedan veliki hype koji Ati gura josh davno (serija 2900 je vec imala podrshku teselacije, pa to niko nije koristio). Ako se gleda po 3D modelima, da bi lowpoly model lepo izgledao posle teselacije, treba ga praviti po odredjenim pravilima koja usporavaju proces (to shto je Immz vec napomenuo). Chisto sumnjam da ce developeri prihvatiti to, pogotovo u pochetku.

А в чем сила, брат?

Link to comment
Share on other sites

Naravno ali ostaje onda pitanje sta nam donosi osma generacija konzola. Za sledeci XBOX je spekulisan najraniji datum tamo 2012 a za PS tek 2014. Nintendo niko ni ne pominje. Druga strana medalje je najavljivan pravac razvijanja takozvanog "Cloud Computing" za igre. To bi moglo da pretvori sledecu generaciju konzola u nista vise od recivera i kontrolera. Onda bi ovo i bilo viabilno umnogome jer bi se onda to razvijalo za jedan sistem koji opsluzije sve.

Edited by Pekarman

Ljudi se dele na optimiste i one koji znaju bolje.

Link to comment
Share on other sites

Mislim da neće biti potrebe za čekanjem konzola, jer

1. DirectX 11 već ima najmanje 30% korisnika (što je procenat kućnih računara sa instaliranom Vistom), uz sve veću popularnost sedmice

2. DirectX 11 donosi standardizovan GPGPU kompjuting, tako da će sada moći da se prave aplikacije koje ne zavise striktno od NVIDIA CUDA ili ATI Streama, što će dodatnom broju ljudi biti podsticaj da kupuju DX11 kartice ako se bave 3d modelingom ili video obradom, uz dobar marketing (koji neće izostati)

3. Generacije kartica se sada solidno brzo smenjuju, predviđam da za pola godine do godinu dana na tržištu više i neće moći da se nađe DX10 modela osim možda low-low end varijanti od 20 evra koje samo bacaju sliku, ko što sad još uvek ponegde može da se nađe GeForce 7100GS i tako slične

Uglavnom, šta je svaki novi DX doneo kao standard nezavisno od hardvera, to je relativno brzo postalo glavni deal, setimo se šejder modela 3.0 kojeg je posle godinu dana tražila maltene svaka igra.

Link to comment
Share on other sites

Kada su u pitanju NURBS-ovi tu se teselacija koristi u punom matematičkom smislu te reči. Imaš parametarski zadanu površinu i da bi mogao nju da renderuješ moraš da proizvedeš poligonalni objekat. To se postiže tako što se NURBS površina prekriva trouglovima bez preklapanja. Parametar o kome ti govoriš kontroliše broj trouglova.

onda ti je jasno kako se teselacijom optimizuje render? Poenta je bas u toj detaljnosti trijangulacije

This video contains content from Jimmy Kimmel Live, who has decided to block it in your country.

[23:47] <manager-> jao dete jao dete :D

chickenonaraft.kom

Link to comment
Share on other sites

onda ti je jasno kako se teselacijom optimizuje render? Poenta je bas u toj detaljnosti trijangulacije

OK, mislim da ne koristiš najbolju terminologiju ovde. Ti ne optimizuješ NURBS, tj. to nije poligonalni objekat kome moraš da smanjiš broj poligona, već ti proizvodiš poligonalni objekat, tako da tu imaš optimizaciju u smislu nepreterivanja sa brojem generisanih trouglova.

You're all gonna die. Then you'll be dead for way longer than you're alive; like, that's mostly what you're ever gonna be. You're just dead people that didn't die yet...

Link to comment
Share on other sites

ako se vec frljamo sa nurbsima, poligonima i ostalim 3d terminima, ovo sto je vudu opisao je u stvari Normal mapping na nivou graficke kartice, jel tako?

Ne normal mapping ti služi da otkloni normalu fragmenta za određeni ugao i da privid reljefnost. Normal mapping ne menja geometriju i topologiju objekta koji ulazi u vertex shader. Normal mapping se dešava u pixel shaderu.

Teselacija menja i geometriju i topologiju. Ako u vertex shader uće mesh sa 20 trouglova, teselacija će da napravi detaljniji mesh sa npr. 60 trouglova.

You're all gonna die. Then you'll be dead for way longer than you're alive; like, that's mostly what you're ever gonna be. You're just dead people that didn't die yet...

Link to comment
Share on other sites

cekaj,hocesh da mi kazesh da ova tehnologija menja 3d model (povecava broj kontrolnih tacaka koje definishu trouglove) koji je neki game modeler napravio a ne da samo daje privide reljefnosti na 3d modelu, bez povecanja 3d tacaka, na osnovu neke bw mape (normal mape)

It's nice to be good, but it's nothing compared to being bad

Link to comment
Share on other sites

cekaj,hocesh da mi kazesh da ova tehnologija menja 3d model (povecava broj kontrolnih tacaka koje definishu trouglove) koji je neki game modeler napravio a ne da samo daje privide reljefnosti na 3d modelu, bez povecanja 3d tacaka, na osnovu neke bw mape (normal mape)

Da.

You're all gonna die. Then you'll be dead for way longer than you're alive; like, that's mostly what you're ever gonna be. You're just dead people that didn't die yet...

Link to comment
Share on other sites

onda je to displacement, barem u rechniku nekoga ko koristi cinemu 4d ili modo. Ali se sigurno koristi nega bw tekstura za upravljanje shaderom

Ne baš. DX11 dodaje još nekoliko stepena u rendering pipeline. Sada imaš

Vertex Shader Stage -> Hull Shader Stage -> Tesselation Stage -> Domain Shader Stage -> Geometry Shader Stage

Hull Shader iz Vertex Shadera dobija transformisane vertekse i proizvodi kontrolne tačke patcheva i gomilu konstanti, među kojima su faktori teselacije. Domain Shader može da koristi kontrolne tačke patcheva, dok Tesselation stage uzima konstante teselacije iz Hull Shadera i deli patch na sitnije delove.

Kako će Hull shader da proizvodi konstante teselacije zavisi od progamera. To može biti na osnovu bitmape, ali i ne mora.

You're all gonna die. Then you'll be dead for way longer than you're alive; like, that's mostly what you're ever gonna be. You're just dead people that didn't die yet...

Link to comment
Share on other sites

OK, mislim da ne koristiš najbolju terminologiju ovde. Ti ne optimizuješ NURBS, tj. to nije poligonalni objekat kome moraš da smanjiš broj poligona, već ti proizvodiš poligonalni objekat, tako da tu imaš optimizaciju u smislu nepreterivanja sa brojem generisanih trouglova.

Ama bre, nurbse kao savrsene povrsine ne bi ni trebalo da direktno optimizujes. Koristim teselaciju u render procesu kad se oni rastavljaju na trouglove.

Ajde ovako, da bi objekat izgledao priblizno perfektno u renderu potrebno je da je taj jedan trougao manji ili velcine pixela u zavisnosti koja se rezolucija koristi. Direktno kontrolisuci teselaciju pri nurbs povrsini pre rendera postizes optimizaciju. Ako objekat nije u prvom planu zdrav razum je da neces ostaviti difolt teselaciju da ti sredjuje povrsinu.

nurbs sfera

15eu788.jpg

prikaz trijangulisane nurbs sfere sa standardnom teselacijom (ovo i slika ispod nije poly vec prikaz teselacije)

33pa64n.jpg

prikaz trijangulisane nurbs sfere optimizovane teselacijom

ezphqq.jpg

Dakle teselacija se koristi za optimizaciju i smanjene detalja?

inace protivrecis sam sebi

Nikada do sada nisam čuo za teselaciju u kontekstu smanjivanja detalja, bilo u 3D grafici, bilo u matematici.

Ti ne optimizuješ NURBS, tj. to nije poligonalni objekat kome moraš da smanjiš broj poligona, već ti proizvodiš poligonalni objekat, tako da tu imaš optimizaciju u smislu nepreterivanja sa brojem generisanih trouglova.

iguana, teselacija se koristi i pri displejsmentu, savremene teselacione sheme to rade dosta dobro u odnosu na ugao gledanja i vrse auto optimizaciju displejsovane geometrije. najbitnija razlika je sto ce se sad koristiti patchevi umesto trouglova i sve to imati hardversku podrsku sto nije mala stvar.

E da , posto se ovde nece smanjivati vec dodavati poligoni dobicemo smoothovanije oblike, sad koliko ce ovaj proces traziti snage is yet to be tested :)

Edited by Immz

This video contains content from Jimmy Kimmel Live, who has decided to block it in your country.

[23:47] <manager-> jao dete jao dete :D

chickenonaraft.kom

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...