Începutul dezvoltării Shader

Vreau să încep dezvoltarea unor jocuri folosind Microsoft XNA. O parte din asta este dezvoltarea Shader, dar nu am nici o idee cum să încep. Știu că FX Composer-ul de la nVidia este un instrument excelent pentru dezvoltarea de shadere, dar nu am găsit conținut mult mai utile și actualizat cu privire la modul de a începe de fapt.

Ce tutoriale ați recomanda?

0
fr hi bn

9 răspunsuri

XNA Unleashed de către Chad este un excelent punct de plecare pentru XNA și presupune puține cunoștințe despre practici de dezvoltare a jocurilor sau matematici greu înainte de a începe. Are două capitole despre shaderele de bază și avansate.

Ca un sidenote, ține cont de tutorialele Google pentru wpf Shader, acum utilizează aceeași tehnologie pentru a permite shaderelor clienților în aplicațiile și tutorialele wpf pentru care cred că sunt în mare măsură compatibile cu XNA.

0
adăugat

Doresc să reiterez cât de mari sunt cărțile GPU Gems - o resursă cu adevărat fantastică pentru orice evoluție grafică serioasă.

JO a însumat, în esență, un proces de învățare foarte bun, aș adăuga că o bază bună în matematica geometrică (vectori / matrice cel puțin) nu poate fi subestimată - dar nu este atât de greu ca uneori oamenii să facă. Învățarea unui produs punct, a produsului încrucișat, a unui vector normal și a unei matrici înmulțite este și este un prim pas bun :). Încercați să înțelegeți exact ce se întâmplă între spațiul Lumea / Vedere / Proiecție-Clip / Ecran, ce diviziune de perspectivă este, etc.

When I was beginning learning, a good exercise is to actually implement the entire T&L pipeline in software, complete with clipping/culling etc. This is a long process and may not seem worthwhile as I'm sure you want to just dive into the fun stuff, but having a proper understanding of what's going on is really useful and will prove worthwhile when you invariably run into more insidious and difficult to diagnose bugs.

Încercați să nu fiți înlăturate inițial cu unelte precum FX Composer, acestea sunt utile pentru prototipuri, dar având o bază solidă în elementele de bază este mult mai utilă pe termen lung.

0
adăugat

Nu am folosit XNA sau DirectX. Dar, pentru a cunoaște elementele de bază ale programării shader cu Cg, Cg Tutorial este cea mai bună carte pe care am găsit-o.

0
adăugat

M-aș alătura laudelor acordate JO - adevărat un răspuns bun. Cu toate acestea, odată ce ați dobândit înțelegerea de bază, puteți învăța multe și rapid prin descărcarea unuia dintre următoarele două instrumente excelente:

Odată ce faceți acest lucru, mergeți la bibliotecile de proiect și începeți să parcurgeți exemple, începând cu umbrirea de bază și trecerea la umbre, cartografiere normală, materiale, efecte și tot ce vă interesează. luați un proiect, începeți să modificați algoritmii în funcție de anumite obiective pe care le stabiliți și să vedeți cum să le obțineți. Veți găsi că multe dintre exemple sunt într-adevăr avansate și vă vor deschide orizonturile.

A se distra

0
adăugat

Una dintre cele mai bune moduri de a începe cu shaders este să citești Introducere în Programarea jocurilor 3D cu DirectX 9.0c și Shader Approach de Frank Luna. Autorul introduce mai întâi DirectX și HLSL și apoi dezvăluie treptat puterea de shader. El începe cu shadere foarte simple, dar până la sfârșitul cărții știți cum să creați iluminare, umbre, sisteme de particule etc. Cartea Mare.

JO a sugerat că citiți seria ShaderX, dar lucrurile nu sunt pentru începători, deci nu vă vor ajuta mult atunci când faceți primii pași.

Am postat, de asemenea, un articol aici despre cele mai bune cărți care vă vor ajuta să începeți dezvoltarea jocului.

0
adăugat
Arată ca o carte foarte interesantă. Da, m-am uitat atât la ShaderX, cât și la GPU Gems, dar ele par a fi cu adevărat hardcore. Ca și cum ai citit pe Bruce Schneier când nu știi nimic despre criptografie. Cred că voi comanda cartea lui Luna.
adăugat autor Michael Stum, sursa
De fapt am editat cartea pe care ai menționat-o! :)
adăugat autor Rodrigo Lopez, sursa

Dezvoltarea shaderelor în XNA (care utilizează în mod evident DirectX) necesită cunoașterea HLSL sau ansamblu shader. Aș recomanda să vă familiarizați cu cei dintâi înainte de a vă scufunda în cel de-al doilea.

Înainte de a scrie orice shadere, este o idee bună să înțelegeți temeinic conducta de shadere și să încercați să obțineți mintea în jurul valorii de ceea ce este posibil atunci când utilizați shadere programabile. Când sunteți familiarizați cu durata de viață a unui pixel (de la datele sursă până la ecran), atunci înțelegerea exemplelor de shadere devine mult mai ușoară.

Next make an attempt to write your own HLSL which does what the Fixed T&L pipeline used to do, just to get you hands dirty. This is the equivalent of a "hello world" program in vertex/pixel shader world. When you're able to do that and you understand what you've written you're ready to go onto the more fun stuff.

Ca următorul pas, este posibil să doriți să simulați un element de bază iluminare septică într-unul dintre shaderele dvs. de la o singură sursă de lumină. Puteți apoi adapta acest lucru în jos pentru a utiliza mai multe lumini. Joacă cu culorile și mișcarea luminilor. Acest lucru vă va ajuta să vă familiarizați și cu utilizarea constantelor de shader.

Când aveți un cuplu de shader de bază, împreună, ar trebui să încerce să-l facă, astfel încât joc / motor utilizează mai multe shadere / diferite pe diferite obiecte. Începe adăugarea unor alte biți, cum ar fi href="http://www.paulsprojects.net/tutorials/simplebump/simplebump.html" ciocni sau hărți normale .

Când ajungeți în această etapă, lumea este stridiul dvs. Puteți începe să vă scufundați în unele efecte funky și chiar să luați în considerare utilizarea GPU-ului pentru mai mult decât a fost inițial destinat.

Pentru cei care sunt puțin mai avansați, există câteva cărți bune care sunt disponibile gratuit online, care au câteva informații extraordinare de la Nvidia aici și aici .

Nu uitați că există o serie excelentă de cărți numită ShaderX care acoperă câteva lucruri minunate. Există 1 , 2 , 3 , 4 , 5 și 6 deja în print și 7 se vor afla în curând.

Mult noroc. Dacă veți face niște shadere, aș vrea să le văd :)

0
adăugat
Vă mulțumim pentru răspunsul detaliat. Asigurați-vă că, de îndată ce voi face ceva și voi rula, voi adăuga o legătură :) Pot să dureze câteva luni.
adăugat autor Michael Stum, sursa

Un gand rapid asupra editorilor de shadere vizuale. Acești tip de editori sunt un lucru foarte distractiv de jucat, dar aș recomanda cu adevărat să rămânem la lucru cu HLSL bazat pe text (acolo atât RM, cât și FXC fac treaba). Lucrez ca un joc dev și am construit câteva sisteme de shader (unul din Battlefield 2 și Farcry 2, de exemplu) și, sincer, am constatat că HLSL este mai valoros decât orice rețea de shader grafic până în prezent.

Există lucruri cum ar fi urmărirea fluxului de execuție, depanarea shader-ului sau repetarea rapidă a cazurilor de testare care vă oferă o perspectivă care este aproape imposibil de obținut printr-un instrument vizual.

Am folosit constructorii vizuale pentru shadere și le plac și într-o zi, când umbrirea nu este la fel de performantă ca în prezent, ar putea fi instrumentul potrivit pentru această slujbă.

..deși presupunem că vom vedea iluminarea amânată și, probabil, realizarea completă a software-ului înainte de acea zi;)

0
adăugat

Ar trebui să te uiți și la RenderMonkey. Este un instrument bun. În ceea ce privește cărțile, verificați XNA 2.0 Rețete de programare a jocurilor de la Riemer Grootjans ... carte excelentă.

0
adăugat

Deși au fost deja oferite multe sfaturi bune, dacă aveți un loc de muncă grea, luați mintea în jurul pașilor implicați, Mental Mill oferă o modalitate vizuală de a construi Shaders (Artist Edition este asociat gratuit cu Fx Composer - el însuși, de asemenea, gratuit!).

Deși ați fi mai bine să învățați direct codul HLSL direct, Mill Mental poate genera aceste fișiere Fx pentru dvs. (astfel încât să puteți privi la schimbări). Rețineți, la fel ca toate generatoarele de coduri, este puțin mai detaliat decât este posibil să faceți după ce ați înțeles HLSL!

Progresia vizuală a efectelor, de la o metodă la alta, este foarte impresionantă!

0
adăugat