@pret83
@bukva: Jo chapu, jsou to vybrany cisla mozna nedokonale. Mozna sem mel rict, ze na mapu (RGBA) 512x512 vychazi cca 37K vrcholu ... respektive (RGB 24bitu) 512x512 na 28K vrcholu (7x4B na vrchol). Ale cilem neni dokazat ze textury sou horsi. Spis poukazat na to, ze bez te komprese a packovani to ukazuje na uplne jina cisla - a jaksi v clanku to je psane tim stylem, jako by kazdy ctenar zde naprosto presne vedel, ze pri bezne uzivane kompresy to samozrejme vychazi v neprospech geometrie. :confused: Jeste bych se pozastavil nad temi 50M vrcholu a 2048x2048 (coz sem kdysi poslal po OpenGL do starsi nVidia grafiky a ta se mohla zblaznit, pac tak velke textury/mapy jeste relativne nedavno nebyly pouzitelne). Tady trosku nevim jak praxe je myslena? Finalni modely pro hry? Unreal Engine 3 pocita s asi 5-20 viditelnejma "vykreslitelnejma" modelama o asi 3-12K trojuhelniku. Detailni model, podle ktereho vytvari normalove mapy (preprocessing) maji kolem 1-8M vrcholu (nevykreslitelne mnozstvi). Mapy pak u takto detailniho modelu maji pak tech az 2048^2. Ja si dokonce vzpominam pred nejakou dobou velke chvastani (a ted nevim jestli iD ci Epicu), ze oni zvladaji i neco lehce prez Mega vrcholu najednou. Takze, neco sem spatne pochopil? O jake praxi to mluvime?
@pret83
@ifkopifko: Displecement v tom kontextu tady opravdu geometrii ovlivni, on dokonce vytvori uplne nove vertexy a opravdu budou videt i z boku. Ale predstav si ze prastis do dveri kladivem a udelas tam prohluben. Kdyz se koukas kolmo - uvidis ji diky tomu, ze se na tom materialu bude jinak odrazet svetlo (oci nemaji hloubkomer, hloubku vnimaj ruznejma figlama a rozdilama v obrazech z praveho a levho oka). Kdyz se budes na ty dvere koukat z uhlu .. porad jeste uvidis tu prohluben diky jinak odrazenemu svetlu. Kdyz se podivas presne podel povrchu ... neuvidis nic nez tenkou linku preci. Takze ze strany odkud si do dveri uhodil, ti vlastne staci upravit jen zpusob osvetlovani. Na to staci vesmes normalova mapa (ta pomaha pri vypoctu jak se ma svetlo odrazet - kterym smerem). Aby to vypadalo lepe tak Parallax Mapping. Kdyby to byla rekneme jen deska zelezna, ne dvere z vice vrstev, tak by na druhe strane vznikl hrbol. Dokud budes koukat kolmo na nej, zase ti staci to same. Ale kdyz budes na povrch koukat z uhlum, casem by ti mela ta boule prelezt prez vzdalenejsi okraj te desky a mela by vystupovat nad tim okrajem. A tady je to misto, kde uz si jen s posunama textury a nasvetlovanim a dalsima blbostma neporadis. Potrebujes novou geometrii a ten hrbol tam dodelat tak, aby pri pohledu z boku proste vystupoval z materialu......... vtipny na tom je, ze na to porad nepotrebujes Teselaci, protoze prilepit kus geometrie na povrch jineho objektu, neni zase za takova veda. Decaly jsou dnes ostatne jen nejaka geometrie s texturou.
:) snad to je tedka trosku vice srozumitelne.
[quote]displacement mapa je definována pozicí vrcholů[/quote] me to porad prijde jako nesmyslna veta. Jak je mapa definovana pozici vrcholu. Chapal bych "vrcholy vznikaji na zaklade mapy". Ale mapa je mapa, nanasi se stejne jako obrazkova mapa/textura. Udava se ktere body na mape odpovidaji kterym vrchlum (texturovaci coordinaty), to aby se vedelo jak mapu napnout na model.
@pret83
@bigfruit: -:-:-:- Mala uvaha. Geometrie se nesnazi vyjadrit kazdy bod na povrchu modelu, spise naopak, body jsou dopocitavany/interpolovany mezi vrcholy. Takze se vezme mensi mnozstvi dat a spoleha se na matematiku, ktera zbyle data dopocita. Zato mapy v idealnim pripade by meli vyjadrit kazdy bod na povrchu modelu (chapejte jako = mela by mit obrovske rozmery). S malou vyhodou. uz ve vzdalenosti nekolika metru je z povrchu modelu videt treba jen polovina pixelu a nikdo nechce koukat na modely nalepe primo na kameru, takze velikost map/textur se muze zmensit.
Ta zasadni uspora je v tak proste veci jako je komprese. Diky komprese textur, ktere dosahuji kompresnich pomeru nekde mezi 4-20:1. (bezne je jestl se nepletu neco mezi 4-8). Ostatne malicko zhorsit texturu neni takovy problem, u geometrie by to bylo horsi). Dalsi vyhodou pro mapovani je dost velky vykon pri zpracovani pixel shaderu. Nekolik generaci grafickych karet bylo optimalizovanych na vykon pri vytvareni post-procesingovych efektu, per-pixel lightinigu a vubec vykonu pri zpracovani pixel shaderu. A dalsi nespornou vyhodou - trosku navazujici na to co sem rikal o vzdalenosti predmetu - pokud pracuju na urovni pixelu, uz pracuju jen nad mnozinou pixelu, o kterych vim ze zrejme budou videt - jde o pixely, ktere vysli na zaklade projekce do 2D. Maly objekt v dalce ktery zabere 15 pixelu bude snadne nejako doupravit. Kdybych vsak premyslel nad geometrii, porad bych musel myslet nad hromadou vrcholu, protoze bych nevedel ktere budou videt a jak moc a ktere se slejou do jednoho nerozeznatelneho bodu. Snad je mozne si to predstavit. (A ano, tohle by mel upravit LOD).
@eXistenZ
No ono se toho naplaca o technologiich o kterych se tu mnoho ctenaru dozvida v podobne zmrsenych clancich.
Displacement mapping je nejaky obecny nazev, ktery zahrnuje mnoho technik "posunu" pixelu z jeho puvodnich souradnic. Ale v kontextu rozlisujme co je displacement pixelu v obrazku a co je displacement jeste nepromitnuteho pixelu na povrchu modelu. UV/Normal mapping nebo Parallax mapping posovaji pixely na urovni pixel shaderu a je to jen nejake napodobeni, ktere funguje jen pro urcite mensi uhly pohledu vuci normale povrchu (pixelu). Vsechno ostatni se povetsinou dela zmenou geometrie (aslespon co se herni grafiky tyka) a to je opravdovy displacement, protoze je videt proste i z boku!
Ohanet se nazvama umi kazdej - ale rad bych videl, kdo je zde schopnej vysvetlit, co ktera technika dela. A ze napriklad Parallax Occlusion Mapping je zjednodusene jenon posun a zmena nasvetlovani pixelu vcetne uvazeni stineni pixelu jinymi pixely (vytvarime virtualni hrboly, ktere by meli i stinit na povrch).
Ad Teselace - ano, nic noveho pod sluncem. Svete div se ona jde delat i softwarove. ATI i nVidia meli teselaci hardwarovou uz kdysi davno. Dokonce v dobach s pevnou pipeline se s teselaci koketovalo. Drive ale slo zejmena o tzv Uniform teselaci - a tady se snad mohu domnivat, ze slo prave o ATI True Form, ktera proste kazdou plochu rozdelila na tri...temer mechanicky. Ta zajimava vec, prichazi az dnes - relane pouzitelny vykon grafickych karet pro vypocet Adaptivni teselace. (adaptivni - napriklad muze vytvaret detaily tam, kde jsou potreba, pripadne ubirat tam, kde to videt neni)
A technologicky nejde opet o nic co by bylo nezname, ostatne nVidia o tom mluvi jako o proveditelnem uz od dob GeForce 6800 (coz byl docela slusny technologicky milnik), ale na realne pouzivani ve vetsi mire do ted karty nemeli dostatek vykonu. (ostatne oni nemaji ani ted .. ale aspon to neco trosku dela)
@pret83
Bandwith to samozrejme setri - jenze metodama, ktery tady nejsou ani trosku naznaceny a rekl bych, ze ani autor netusi o cem ta nVidia vlastne psala... a pardon, mam tam chybku v cislech samozrejme (tri 32bitove slozky na vertex i normalu...samozrejme). Ale jeste chvilku pockam, jestli nekdo nenadhodi to na co narazim ohledne mapovani a jeho vyhodnosti.
@pret83
Moje chybka: Tak moc sem se soustredil na nejakou spolecnou jednotku, az sem zapomnel pripocitat tu normalu a index. :oops: Ale jeste predtim k tem velikostem. [quote]Predstav si vrchol, co ma 3 suradnice, a kazda je double, teda 64 bit. To je dokopy 24 bytov.[/quote] Pro samotne vertex a normaly se pouziva spise ceckovy float (32bitu), double se sice pro nektere vypocty hodi, ale u te geometrie to zrovna neni potreba (alespon sem na to nikde nenarazil v praktickem pouziti). Takze jeste jednou (zjednodusene). Vrchol = 3x4B; Normala = 3x4B; Index = 4B (normala se udava i jako ctyrslozkovy vector..ale to nechme bejt tedka,vse je normalizovane, posledni slozka neni treba..a index muze byt i mensi, ale zarovname to). Pak bude vypocet samozrejme (3+3+1)30K4B = cca 210K4B (mapa mela cca 262K4B). Porad se
[quote]...kde kazdy pixel ma 8 alebo 16 bitovu hodnotu[/quote] Pokud je tady myslena treba 8/16bitova vyskova mapa pro displacement, tak to si dovedu predstavit. Hromada veci se da dopocitat, nejake zakladni osvetleni prez gradienty atd atd. Smer posunuti by se bral dle normaly plochy, na ktere se dana mapa nachazi atd. Ale citim v tom i nektera omezeni (nemoznost si smer displacementu udat a podobne) - ostatne to bylo zmineno, je to vhodne na pravidelne "vystupky".
Co se tyka ostatnich map, treba normalovych map, tak tam je tech dat vice. Klasicky uvazovane RGB/XYZ mapy, s barvou ci souradnici, mohou mit bitu i min, ale pod 24bitu bych to moc neuvazoval. Snad pro ucely toho zjednoduseneho vypoctu mohu nechat ty 4B.
-:-:-:- :idea: Nemejte to za alibismus, ale myslim si ze model o 10K polygonu bude vypadat sam o sobe moc dobre a ze mapa o dnes relativne malem rozmeru 512x512, to moc nezlepsi. A nesmime zapominat, ze na model se nenanasi jedna mapa, ale materialy jich mivaji bezne hned nekolik!
-:-:-:- :?: Mala uvaha. Geometrie se nesnazi vyjadrit kazdy bod na povrchu modelu, spise naopak, body jsou dopocitavany/interpolovany mezi vrcholy. Takze se vezme mensi mnozstvi dat a spoleha se na matematiku, ktera zbyle data dopocita. Zato mapy v idealnim pripade by meli vyjadrit kazdy bod na povrchu modelu (chapejte jako = mela by mit obrovske rozmery). S malou vyhodou. uz ve vzdalenosti nekolika metru je z povrchu modelu videt treba jen polovina pixelu a nikdo nechce koukat na modely nalepe primo na kameru, takze velikost map/textur se muze zmensit.
:!: Ta zasadni uspora je v tak proste veci jako je komprese. Diky komprese textur, ktere dosahuji kompresnich pomeru nekde mezi 4-20:1. (bezne je jestl se nepletu neco mezi 4-8). Ostatne malicko zhorsit texturu neni takovy problem, u geometrie by to bylo horsi). Dalsi vyhodou pro mapovani je dost velky vykon pri zpracovani pixel shaderu. Nekolik generaci grafickych karet bylo optimalizovanych na vykon pri vytvareni post-procesingovych efektu, per-pixel lightinigu a vubec vykonu pri zpracovani pixel shaderu. A dalsi nespornou vyhodou - trosku navazujici na to co sem rikal o vzdalenosti predmetu - pokud pracuju na urovni pixelu, uz pracuju jen nad mnozinou pixelu, o kterych vim ze zrejme budou videt - jde o pixely, ktere vysli na zaklade projekce do 2D. Maly objekt v dalce ktery zabere 15 pixelu bude snadne nejako doupravit. Kdybych vsak premyslel nad geometrii, porad bych musel myslet nad hromadou vrcholu, protoze bych nevedel ktere budou videt a jak moc a ktere se slejou do jednoho nerozeznatelneho bodu. Snad je mozne si to predstavit. (A ano, tohle by mel upravit LOD).
@bigfruit
:::: [quote]Podobný model bychom běžným způsobem vytvářeli dlouho a jeho popis pro GPU by byl rozsáhlý.[/quote] (zminovany ten razeny povrch). Chtel bych jen vedet, jestli ma autor predstavu, kde se berou ty detailni mapy pro displacement/uv/normal/parallax/kdovijakej mapping? On se totiz casto nejdrive udela ten detailni model (ktery by se beznym zpusobem vytvarel dlouho), necha se z nej ta pekna detailni mapa vygenerovat a teprve pak se vytovri nizkopolygonovy model, na ktery se ve hre dana mapa muze nanest. Samozrejme, ze pro nektre modely povrchy to neni nezbytne nutne. :::: [quote]Na rozdíl od normálových a parallax map, které jsou definovány umístěním pixelů, displacement mapa je definována pozicí vrcholů (například barevně odlišených)[/quote] WHAT A ****? To sem asi mozna nepochopil. :::: [quote]Běžně je možné vystřílet stopy kulek do železných dveří, ovšem bez viditelného prohnutí míst kolem vstupů kulek.[/quote] Naproste bezne je umistit Decal s peknou normal/parallax mapou, ktera samozrejme to "prohnuti" krasne napodobi. A zejmena na dverich, kdy z boku prohnuti stejne neuvidim (snad na druhe strane by mohli byt videt kusy rozevirajiciho zeleza vystupujici nad povrch) je to opravdu dost jasne reseni. Mozna jednoho dne bude snadnejsi misto umistovani geometrie Decalu proste jen upravit displacement mapu - ale diky instancovani geometrie modelu, by se musela udrzovat displacement mapa pro kazdou "znicitelnou" instanci objektu... no zkracene, jeste si pockame par let (snad nejsem u tohohle mimo). :::: a vubec, nechci delat ze sebe machra a z autora blba. Ani jedno neni pravda. Snad by se jen sluselo trosku vice to nasprtat, nebo alespon lepe popsat (pokud problem neni ve spravnem pochopeni). Kritika by mela povzbuzovat k lepsim vysledkum priste ... alespon doufam.
(Intelektual scouring aler!) At se to zda sebeuchylnejsim, valna vetsina techto myslenkovych proudu je o politice. Skrze bohulibe zajmy, se da prosadit velice mnoho - at uz to byly krizacke vypravy ve jmenu boha, zavedeni zemedelskych kvot ve jmenu vyvazeni trhu v evropske unii, az k potlaceni prumyslu ve jmenu zachrany planety. Kazda z tech veci dava ci davala pro urcitou skupinu lidi jasny smysl a dovolila nekomu prosadit nejake vlastni zajmy. S tou ekologii to neni jine. Ostatne je to dokonce horsi, neb kdokoliv z nas rekne "nemam rad ekologii", bude vicemene oznacen za blb (aneb vetsinove presvedceni, ze ekologie by nejako mela byt a je dobra). At uz je to Ekologie nebo Enviromentalismus a jine - dost casto se tyto zajmove/politicke skupiny chovaji jako mala levicove teroristicka uskupeni - az na ten rozdil, ze nevyhrozujou bombou ale zanikem planety, kdyz neudelame presne co oni navrhuji. (Zajimave cteni k tomuto fenomenu lze najit v clanku V. Klause "Intelektuálové a socialismus" - Zejmena druha cast textu.)
Muj nahled: Vyroba pocitacoveho cipu a jinych je opravdu EXTREMNE narocna. Vyroba fotovoltaickeho clanku (taktez z velice cisteho kremiku) spotrebuje takove mnozstvi energie (Zonove taveni pro vycisteni kremiku) a dalsi chemie (cisteni, lesteni, atd..), ze se dostavame na uroven spalovani hnedeho uhli! (citovan zastupce jednoho akademickeho projektu vysokoskolske solarni elektrarny). Dokud nebude pro kazdy vyrobek uvadena nejaky indikator - napriklad Carbon Feet (uhlikova stopa - mnozstvy CO2 vypusteneho pri vyrobe a s pridruzenych cinostech) - nebudeme mit nikdy jistotu, jestli ekologicka auta jsou opravdu ekologicka a jestli papirove obaly nejsou horsi nez igelit (doufejme ze ne). Bez moznosti smysluplneho srovnani, si muzem klidne kupovat nakladne zarivky plne chemie misto zarovek, ktere proste jen zerou, ale jestli delame neco pro ekologii vedet nebudem.
dovetek: Regulace prumyslu je na nic, chce to naopak prumysl urychlit, abychom se drive dostali k setrnym ekologickym postupum vyroby.
Ja z vlastni zkusenosti chapu, ze je docela problem se zorientovat v tunach nazvu a technologii/technik. Ale tech velice spornych tvrzeni a vysvetleni proc, co a jak ohleden zpusobu fungovani, tech je na muj vkus az moc. Proto sem prestal poradne cist uz na treti strance. ::: Obrazek s potvorou - je sice hezkou genezi modelu, ale zavadejici. V druhe fazi "jakoze polygonova" sit tam vypada porad stejne, takze vlastne ani neni poradne videt, jak byly polygony deleny/zjemneny/teselovany. V te same fazi se najednou misto klasickeho plocheho osvetlovani objevuje krasne zaoblene osvetlovani (Blinn-Phong nebo neco podobneho s interpolaci normaly). Pokud by hladke osvetleni nebylo zmenou osvetlovani, mela by uz v tehle fazi postava tolik polygonu, ze by zadneho UV/Normal mapovani nebylo treba. Nasledujici faze (treti) proste jen nema na sobe vykreslenou tu sit. Ve ctvrte je nanesena displacement mapa ale dost pravdepodobne i UV/Normal mapa. :::: [quote]Použitím Teselace může herní vývojář poslat do GPU stále datově malou informaci o geometrii objektu nebo postavy[/quote] Jo tohle by me taky docela zajimalo, co bude datove vetsi, seznam vrcholu a indexu, nebo detailni textura pouzita pro normalove/displacement mapovani? Pokud zavedu jednotku 4B (32bitu), ktera mi staci na vyjadreni jednoho vrcholu, jedne normaly, jednoho indexu a jednoho barevneho pixelu. Tri (vrchol, normala, index) jednotky pripadnou na jeden vrchol geometrie. Model o 30K vrcholech (10K trojuhelniku) bude mit tedy nejakych 330K4B = CCA 90K4B. Mapa/textura o rozmerech 512x512 bude mit 5125124B = CCA 262K4B. ...... ted bych poprosil vsechny vedatory a spekulanty co se tu ohani znalostmi, aby rekli proc je mapa pro displacement "datove malou informaci", kdyz vychazi ze neni. :::: [quote]Podobný model bychom běžným způsobem vytvářeli dlouho a jeho popis pro GPU by byl rozsáhlý.[/quote] (zminovany ten razeny povrch). Chtel bych jen vedet, jestli ma autor predstavu, kde se berou ty detailni mapy pro displacement/uv/normal/parallax/kdovijakej mapping? On se totiz casto nejdrive udela ten detailni model (ktery by se beznym zpusobem vytvarel dlouho), necha se z nej ta pekna detailni mapa vygenerovat a teprve pak se vytovri nizkopolygonovy model, na ktery se ve hre dana mapa muze nanest. Samozrejme, ze pro nektre modely povrchy to neni nezbytne nutne. :::: [quote]Na rozdíl od normálových a parallax map, které jsou definovány umístěním pixelů, displacement mapa je definována pozicí vrcholů (například barevně odlišených)[/quote] WHAT A ****? To sem asi mozna nepochopil. :::: [quote]Běžně je možné vystřílet stopy kulek do železných dveří, ovšem bez viditelného prohnutí míst kolem vstupů kulek.[/quote] Naproste bezne je umistit Decal s peknou normal/parallax mapou, ktera samozrejme to "prohnuti" krasne napodobi. A zejmena na dverich, kdy z boku prohnuti stejne neuvidim (snad na druhe strane by mohli byt videt kusy rozevirajiciho zeleza vystupujici nad povrch) je to opravdu dost jasne reseni. Mozna jednoho dne bude snadnejsi misto umistovani geometrie Decalu proste jen upravit displacement mapu - ale diky instancovani geometrie modelu, by se musela udrzovat displacement mapa pro kazdou "znicitelnou" instanci objektu... no zkracene, jeste si pockame par let (snad nejsem u tohohle mimo). :::: a vubec, nechci delat ze sebe machra a z autora blba. Ani jedno neni pravda. Snad by se jen sluselo trosku vice to nasprtat, nebo alespon lepe popsat (pokud problem neni ve spravnem pochopeni). Kritika by mela povzbuzovat k lepsim vysledkum priste ... alespon doufam.
@bigfruit
:::: [quote]Podobný model bychom běžným způsobem vytvářeli dlouho a jeho popis pro GPU by byl rozsáhlý.[/quote] (zminovany ten razeny povrch). Chtel bych jen vedet, jestli ma autor predstavu, kde se berou ty detailni mapy pro displacement/uv/normal/parallax/kdovijakej mapping? On se totiz casto nejdrive udela ten detailni model (ktery by se beznym zpusobem vytvarel dlouho), necha se z nej ta pekna detailni mapa vygenerovat a teprve pak se vytovri nizkopolygonovy model, na ktery se ve hre dana mapa muze nanest. Samozrejme, ze pro nektre modely povrchy to neni nezbytne nutne. :::: [quote]Na rozdíl od normálových a parallax map, které jsou definovány umístěním pixelů, displacement mapa je definována pozicí vrcholů (například barevně odlišených)[/quote] WHAT A ****? To sem asi mozna nepochopil. :::: [quote]Běžně je možné vystřílet stopy kulek do železných dveří, ovšem bez viditelného prohnutí míst kolem vstupů kulek.[/quote] Naproste bezne je umistit Decal s peknou normal/parallax mapou, ktera samozrejme to "prohnuti" krasne napodobi. A zejmena na dverich, kdy z boku prohnuti stejne neuvidim (snad na druhe strane by mohli byt videt kusy rozevirajiciho zeleza vystupujici nad povrch) je to opravdu dost jasne reseni. Mozna jednoho dne bude snadnejsi misto umistovani geometrie Decalu proste jen upravit displacement mapu - ale diky instancovani geometrie modelu, by se musela udrzovat displacement mapa pro kazdou "znicitelnou" instanci objektu... no zkracene, jeste si pockame par let (snad nejsem u tohohle mimo). :::: a vubec, nechci delat ze sebe machra a z autora blba. Ani jedno neni pravda. Snad by se jen sluselo trosku vice to nasprtat, nebo alespon lepe popsat (pokud problem neni ve spravnem pochopeni). Kritika by mela povzbuzovat k lepsim vysledkum priste ... alespon doufam.