MegaTexture tehnologija?

poruka: 5
|
čitano: 1.419
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
protjeran
offline
MegaTexture tehnologija?

Zanima me na kojem principu radi ta tehnologija?

Koje su prednosti a koje mane?

O čemu se konkretno radi?
Tražio sam po netu, al nigdje nema konkretan odgovor na moja pitanja (samo pisu da ce je koristiti tech 5, al to znaju i ptice na grani).

Hvala.

 
0 0 hvala 0
16 godina
neaktivan
offline
MegaTexture tehnologija?
 
0 0 hvala 1
15 godina
protjeran
offline
RE: MegaTexture tehnologija?

Ako sam dobro shvatio, radi se o tehnologij koja koristi jednu veliku teksturu zamjenjujući male teksture?

Ako je to to, onda koja je prednost u odnosu na manje (valjda u rendeiranju otvorenih prostora)?

trezan a za sebe neznam
15 godina
protjeran
offline
MegaTexture tehnologija?

bump

trezan a za sebe neznam
 
0 0 hvala 0
16 godina
neaktivan
offline
MegaTexture tehnologija?

Megatexturing je konstantni streaming textura u video memoriju da bi postigao unikatnost na levelu jednog pixela a istovremeno ne pojeo cijelu video memoriju.

 

Prva prednost mu je sto dizajneri imaju OPCIJU imati apsolutno unikatno teksturirani teren bez tileanja. Naglasavam "opciju" jer sam proveo dovoljno vremena flameajuci se s ljudima ciji je argument bio "Ma tko ce raditi na texturi 128000x128000????". Prakticno je to ograniceno na 32768x32768 zbog cinjenice da trenutni GPU-ovi ne mogu adresirati vise od toga :-)

Druga prednost je u tome sto, logicno, teren ne mora biti rastavljen u segmente nego moze biti singularna geometrija, a to sprijecava pojavljivanje seamova na rubovima gdje se segmenti spajaju. Seamovi su vidljivi ostri rubovi koji se pojavljuju ili kad UV koordinate nisu jednake na oba vertexa ili kad normala nije jednaka.

 

Megatexturing je samo naziv ID-ove implementacije te tehnologije, dok se tech zapravo zove clipmapping, i postoji kao teorija vec duze vrijeme. Takodjer ID implementacija rijesava neke probleme u vezi teksturiranja interijera, ali nemoj me drzati za rijec jer proslo nesto vremena otkako sam to radio. Sa sigurnoscu znam i da njihova implementacija ne koristi stack nego quadtree kao podatkovnu strukturu za spremanje clipmapa.

 

Princip, tech exploatira nekoliko cinjenica u vezi teksturiranja:

a) mipmapping - detaljnija tekstura sto si blize geometriji, manje detaljna sto si dalje

b) cinjenicu da sto si blize nekoj geometriji, najveca 'dobit' je omjer texel:pixel = 1:1

c) cinjenicu da ako gledas na teksturiranu geometriju pod kutem, fragmenti se racunaju ovisno o udaljenosti od viewporta i fragmenti se bojaju iz razlicitih nivoa mimap stacka.

 

Sto blize prilazis objektu, broj potrebnih pixela se smanjuje jer se nivo mipmape interpolira sa susjednim nivoima (bilinearno, trilinearno ili anisotropic) za texele koji nedostaju u teksturi.

Logicno, kod jedne ogromne teksture, nikad nema potrebe imati je cijelu u memoriji jer ili zbog rezolucije framebuffera ne mozes izrenderirati te detalje i mipmapping kicks in, ili je kamera preblizu pa vidis samo dijelic teksture. Ako clippas texele koje ne vidis van kamere kad si u omjeru 1:1, spasit ces puno video memorije. To clippanje se ponavlja za cijeli mipmap stack dok ne dodjes do mipmap levela gdje vidis cijelu teksturu u viewportu - time se mipmap stack pretvara u clipstack, i to je baza megatexturinga.

U praksi, obje cinjenice se koriste jer viewport najcesce nije orijentiran na geometriju u jedinicnoj direkciji, pa oko viewporta rendas najdetaljnij dio teksture (texel:pixel = 1:1) a sto ides dalje, koristis mipmape jer ti framebuffer ionako ne dozvoljava vecu rezoluciju.

To je sto se tice shadera.

 

Sto se tice aplikacije, potreban je streaming sistem koji svaki game cycle updateira clip stack. Zbog bandwidtha se prostor oko viewporta cacheira u glavnu memoriju gdje se brzo moze uploadirati u video memoriju kad zatreba. Svakako je neophodno i citati sa massmemory nonvolatile medija gdje je cijela megatextura spremljena, i to svaki game cycle. Definitivno se treba koristiti NIO, za kernel file mapping u memoriju. NIO moze ucitati samo dijelove filea u memoriju i dopusta random access, tako da bi trebalo biti dovoljno za neku proof of concept aplikaciju. Nakon toga treba bijesno optimizirati - ne povlaciti pixele koje vec imas, ne rearanzirati cijelu teksturu samo zato jer ti treba jedan row/column vise, nego napraviti pametnije adresiranje u shaderu, etc...

 

Dakle, s obzirom da je detaljnost u krajnosti ogranicena rezolucijom screenspacea i orijentacijom viewporta, ova tehnika omogucava da drzis minimalno tekstura u memoriji (navodno IDov megatexture trosi samo oko 8 MB!!!) a istovremeno imas unikatan pixel svugdje na ekranu. Ovaj, barem sto se tice geometrije koja koristi tech.

 

Ako te stvarno interesira, potrazi na netu Clip mapping, bit ce i dovoljno za kickstart. A i usput ces procistiti neke detalje koje sam mozebiti krivo rekao.

 

 

Edit:

nisam 100% siguran u ovo, ali mislim da je clipmapping bio implementiran prvi put u Black&White - njihova implementacija teksturiranja svijeta pogotovu zbog nevjerojatnog i instanog zooma za to doba mi smrdi na clipmapping samo tako... svijet se razvikao oko Megatexturinga samo zato jer je Carmackov. IdTech 4 je prvi koji ima Megatexturing i QW:ET koristi taj tech. IdTech5 ce imati Virtual mapping, za koji nije bas tesko pogoditi sta radi: prenasa princip kernel memory paginga na problem da je adresni prostor GPU-a ogranicen. Shortly i efektivno, dimenzije megateksture se povecavaju na vrtoglavih 128000x128000 RGBA pixela!

"Fans are clinging complaining dipshits who will never ever be happy for any concession you make. The sooner you shut up their shrilled tremolous voices, the happier are you going to be for it.&q
Poruka je uređivana zadnji put pet 14.8.2009 1:32 (Deus ex machina).
 
2 0 hvala 3
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice