Capitolul 6 - Privire de ansamblu Shader

Prezentare generală a shaderelor

Chiar și după îmbunătățiri semnificative în Direct3D 7.0 dintre jocuri nu apare mai mult de o diferență, ei fac doar bani rapid, ai putea avea o mulțime de poligoane, utilizarea comprimat texturi și efecte multitexture pentru a afișa mai multe texturi și le amestecă împreună. Adevărata revoluție a venit cu DirectX 8 și DirectX 9. DirectX 8 în cele din urmă eliminat componenta DirectDraw și a introdus shader vertex shader pixel și o mulțime de efecte - impunerea de relief, cartografiere textura non-standard, etc. - dar a acceptat doar modelul shader 1.0 și la început nu a fost prea ușor de utilizat din cauza numeroaselor modificări ale API și a necesității de a scrie shadere în limba de asamblare.







Shaders sunt peste tot în XNA

Ați văzut deja în capitolul precedent. că shaders sunt baza pentru vizualizarea ceva în XNA; fără un shader care scoate pixeli pe ecran, nu puteți desena nici măcar o linie simplă. Sunt sigur că va fi capabil de a utiliza clasele sprite pentru două-dimensionale grafice și interfața poate fi capabil de a utiliza clasa SimpleEffect pentru a afișa ceea ce unele date tridimensionale, dar nu-mi place clasa SimpleEffect și nu-l utilizați în această carte. Cred că este prea complicat de folosit și nu are avantajele de a putea să-ți scriu propriile shadere care să fie mai ușor, mai rapid și mai flexibil. Utilizarea efectelor simple înseamnă că utilizați capabilități predefinite și dacă aveți nevoie de ceva mai mult, trebuie să începeți să vă scrieți propriile shadere. În jocurile ulterioare din această carte, veți utiliza, în mod normal, shader-ul de suprapunere a imaginii normale pentru a afișa date 3D și apoi unele shadere răcoritoare post-ecran pentru a manipula imaginea rezultată afișată pe ecran. Toate aceste shadere nu pot fi implementate utilizând clasa SimpleEffect.

Dacă ați lucrat cu OpenGL sau DirectX, și utilizat numai conducta funcție fixă, s-ar putea întreba de ce este necesar să-și petreacă atât de mult efort pe shadere, și de ce nu se poate vizualiza doar unele date tridimensionale de pe ecran, așa cum a fost făcut până acum. Da, scriind codul a fost ceva mai dificil, și, deși puteți vizualiza în modelul DirectX .x, aproape fără să știe nimic despre matrici și principiile de funcționare GPU interne, nu va fi capabil să facă schimbări semnificative în vizualizarea, dacă nu intrăm în detalii. Posibil să învețe totul despre shader este dificil, dar cel puțin te mai îndeaproape familiarizat cu hardware-ul grafic, să înțeleagă mai bine cum poligoane sunt redate pe ecran, ce pot apărea erori și cum să le rezolvați rapid.







După următoarele două capitole din această carte nu va mai fi vorba despre shadere, și probabil că nu veți cheltui în jocurile lor prea mult timp shader, după începutul va face pe cele mai importante. Apoi, veți folosi doar shaders, și nici măcar nu trebuie să vă faceți griji cu privire la ele.

Și, la final, vreau să menționez încă un lucru - creșterea volumului de muncă din cauza utilizării shaderelor. Nu numai tu, ca programator, trebuie să știi totul despre shaders, deși probabil că vei scrie mai multe, dacă echipa ta nu are un "băiat shader", dar și artiștii (sper că nu e din nou) ar trebui să fie familiarizați cu shader. De exemplu, folosirea unui shader normal de imagine pentru a crește realismul tipului de obiecte ca și în ultimele jocuri (de exemplu, Doom 3) are sens numai dacă datele 3D conțin nu numai geometria de bază, ci oferă și hărțile normale necesare pentru implementarea acestui efect.

Nu treceți până la următorul capitol. în cazul în care efectul de cartografiere normală este discutată mai detaliat, observăm că aveți nevoie, de obicei, o versiune de poli mare (cu milioane de poligoane) de obiecte tridimensionale și versiune low poli (doar câteva sute sau mii de poligoane) pentru vizualizare. Așa cum se poate vedea în fig. 6.2, un obiect poligonal scăzut fără aplicarea unei mapări normale pare rău, dar când efectul este activat (vezi în dreapta), forma sferei se îmbunătățește semnificativ.

Capitolul 6 - Privire de ansamblu Shader

Ca o alternativă la extrem-model, care necesită de obicei o mulțime de muncă, puteți utiliza, de asemenea, un program de desen pentru a „desena“ harta normală, în primul rând pentru a desena o hartă de înălțimi, și apoi ao transforma într-o hartă normală. De obicei, aceste carduri arată mai rugoase și cu această abordare nu veți obține niciodată calitatea graficelor de jocuri de top, dar din când în când veți vedea că implementarea hărților normale economisește astfel bani. În orice caz, artistul dvs. ar trebui să știe despre toate tehnicile noi și ar trebui să vă gândiți la modalități de a crea conținut înainte de a începe să scrieți motorul sau codul de joc.

Exemple de jocuri

Dacă doriți să vedeți shadere în acțiune, doar pentru a juca unele dintre cele mai noi jocuri - aproape toate dintre ele shadere de sprijin și chiar dacă nu veți vedea de cartografiere normală sau post-screen efecte, shadere pot fi utilizate pentru vizualizarea efectivă a modelelor tridimensionale sau tehnologia de acoperire punerea în aplicare umbra .

Alte jocuri, cum ar fi strategică sau rol, de asemenea, să profite de shaderului, dar pentru a observa aceasta necesită o privire mai atentă, deoarece chiar și în prezența shader, aceste jocuri sunt mai mult axat pe gameplay-ul, cum de a vizualiza în același timp cât mai multe unități sau probleme de control al aparatului foto .

Capitolul 6 - Privire de ansamblu Shader

Pentru a vedea un exemplu și mai bun al diferențelor dintre utilizarea shaderelor și o conductă fixă ​​de funcții în jocuri, aruncați o privire asupra suprafețelor apei în jocurile 3D. În ultimii ani, tehnicile de imagistică a suprafeței apei au evoluat atât de mult încât acum este dificil de deosebit de cele reale.







Articole similare

Trimiteți-le prietenilor: