[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Neco o vertexech ... (Was: AAA!!!! VooDoo3 JE ZDEEEE!!!)
> Docela zajimavej prispevek, ale potreboval bych k tomu legendu,
> posledni cemu jsem rozumnel je trojuhelnik a polygon. Netusim co je
vertex,
> proc jsou souradnice v prostoru ctyri, co je to specular light...
Polygon je n-uhelnik. 3D hardware pracuje pouze s trojuhelniky,
takze budto muze clovek i scenu stavet z trojuhelniku, nebo muze
pouzit polygony a vydavat je za trifany (trifan si muzes predstavit jako
vetrak :-) a tristrip jako pruh s jednou hranou cik-cak po delce -
detailne popsano v OpenGL dokumentaci). Ve finale ho stejne
nejake 3D API prelozi na trojuhelniky s tim, ze vzdy zachova jednu
hranu a tim to optimalizuje. Nektere chipy mozna umi rovnou trifany
a tristripy, ale to bych kecal...
Vertex je souradnice v prostoru. V podstate do 3D hardware se posila az
Sx a Sy souradnice jakozto pozice promitnuteho bodu do screenu
(takze bylo moje podani jako vertex ponekud zavadejici) , dale
Z souradnice (take otocena do roviny screenu) , ktera se zapisuje jako
hodnota do Z-bufferu a konecne W, coz je scale faktor pro korekci
perspektivy. Prakticky ma W a Z vztah 1/n. Duvod proc je to takto volne
pojato je ten, ze nekdo pouziva pro zapis do Z bufferu hodnotu W,
misto Z (aby citlivost Z stoupala smerem ke screenu) a nekdo Z, protoze
pouzil neperspektivni promitnuti a potrebuje v Z bufferu skutecnou Z
souradnici. Dalsi duvod asi je, ze 3D hardware nemusi umet spocitat 1/z :-)
Jinak do chipu s TL (translate and lightning) se sypou souradnice
v primarni scene, pote matice, ve ktere je obsazena rotace a projekce
a ostatni si spocita GPU v chipu (to umi treba GeForce).
Rozdil v Specular a Diffuse je prosty. Na to abych dosahl osviceni bodu
musim udelat cosi jako P x I , kde P je barva bodu (R,G,B) a I jako
intenzita. Jenze to I by muselo nabyvat vetsich hodnot nez je 1 a tim
by zase u zdrojove svetlejsich bodu doslo k preteceni a vysledna
intenzita bodu se musi orezavat. V ramci zjednoduseni se v 3D hw
delaji dve blendovaci (michaci) metody - scitaci a nasobici, pricemz
faktor I muze nabyvat hodnoty 0 - 1. No a to je ten rozdil - diffuzni
slozka se ta, ktera se pouzije k vynasobeni (takze dosahnu ve vysledku
intenzity cerna - puvodni intenzita pixelu) a potom specular, ktera se
pricita, takze dosahnu intenzity puvodniho pixelu - bile barvy.
Novejsi chipy uz maji i michaci metody, ktere umozni udelat
(P x I) x 2, coz bohate staci na viditelne prijatelny rozsah osviceni,
ci stinovani. Tohle konkretne pouzivam ja...
> Fakt by me to zajimalo, nemohl by bejt odstavecek o tom, jaký je
> vubec princip generovani sceny?
Pokud bude zajem, muzu nastinit par principu, jak se scena stavi, jake
algoritmy na zachovani poradi a konvexnosti prostoru se pouzivaji, jak
dosahnout toho aby se engine stal skutecne realtimovym atd atd...
Fido