Domanda

Voglio iniziare a sviluppare giochi utilizzando XNA di Microsoft.Parte di questo riguarda lo sviluppo di Shader, ma non ho idea di come iniziare.So che Il compositore FX di nVidia è un ottimo strumento per sviluppare shader, ma non ho trovato molti contenuti utili e aggiornati su come iniziare effettivamente.

Quali tutorial consiglieresti?

È stato utile?

Soluzione

Lo sviluppo di shader in XNA (che ovviamente utilizza DirectX) richiede la conoscenza di HLSL o gruppo shader.Consiglierei di familiarizzare con il primo prima di immergersi nel secondo.

Prima di scrivere qualsiasi shader, è una buona idea acquisire una conoscenza approfondita della pipeline dello shader e tentare di capire cosa è possibile fare quando si utilizzano shader programmabili.Quando hai familiarità con la vita di un pixel (dai dati di origine fino allo schermo), comprendere esempi di shader diventa molto più semplice.

Quindi prova a scrivere il tuo HLSL che fa ciò che T&L fissi si faceva una volta l'oleodotto, solo per sporcarsi le mani.Questo è l'equivalente di un programma "ciao mondo" nel mondo vertex/pixel shader.Quando sei in grado di farlo e capisci cosa hai scritto, sei pronto per passare alle cose più divertenti.

Come passaggio successivo potresti voler simulare il basic illuminazione secolare in uno dei tuoi shader da una singola fonte di luce.È quindi possibile adattarlo lungo la pista per utilizzare più luci.Gioca con i colori e il movimento delle luci.Ciò aiuterà anche a familiarizzare con l'uso delle costanti shader.

Quando hai un paio di shader di base insieme, dovresti provare a fare in modo che il tuo gioco/motore utilizzi più/diversi shader su oggetti diversi.Inizia ad aggiungere altri bit come basic colpo O mappe normali.

Quando arrivi a questo stadio, il mondo è la tua ostrica.Puoi iniziare a tuffarti in alcuni effetti stravaganti e persino prendere in considerazione l'utilizzo della GPU per Di più di quanto originariamente previsto.

Per coloro che sono un po' più avanzati, ci sono un paio di buoni libri disponibili gratuitamente online che contengono ottime informazioni da Nvidia Qui E Qui.

Non dimenticare che esiste un'eccellente serie di libri chiamata ShaderX che tratta alcune fantastiche cose sugli shader.C'è 1, 2, 3, 4, 5 E 6 già in stampa, e 7 arriva presto.

Buona fortuna.Se metti in funzione alcuni shader, mi piacerebbe vederli :)

Altri suggerimenti

Vorrei solo ribadire quanto siano fantastici i libri GPU Gems: una risorsa davvero fantastica per qualsiasi sviluppo grafico serio.

OJ ha sostanzialmente riassunto un ottimo processo di apprendimento, aggiungerei solo che avere una buona base di matematica geometrica (vettori/matrici come minimo) non può essere sottovalutato, ma non è così difficile come a volte si pensa.Imparare cosa sono e cosa fanno un prodotto scalare, un prodotto incrociato, un vettore normale e una moltiplicazione di matrice è un buon primo passo :).Cerca di capire esattamente cosa sta succedendo tra Mondo/Vista/Clip di proiezione/Spazio sullo schermo, qual è la divisione prospettica, ecc.

Quando stavo iniziando a imparare, un buon esercizio era implementare effettivamente l'intera pipeline T&L nel software, completa di ritaglio/selezione ecc.Questo è un processo lungo e potrebbe non sembrare utile perché sono sicuro che vorrai immergerti solo nelle cose divertenti, ma avere una corretta comprensione di ciò che sta succedendo è davvero utile e si rivelerà utile quando ti imbatti invariabilmente in situazioni più insidiose e difficili per diagnosticare i bug.

Cerca di non metterti da parte inizialmente con strumenti come FX Composer, sono utili per la prototipazione, ma avere una solida base di base è molto più utile a lungo termine.

Uno dei modi migliori per iniziare con gli shader è leggere Introduzione alla programmazione di giochi 3D con DirectX 9.0c un approccio agli shader di Frank Luna.L'autore introduce prima DirectX e HLSL e poi rivela gradualmente la potenza dello shader.Inizia con shader molto semplici ma alla fine del libro sai come creare luci, ombre, sistemi di particelle, ecc.Ottimo libro.

OJ ti ha suggerito di leggere la serie ShaderX, ma il materiale non è per principianti, quindi non ti aiuterà molto quando farai i primi passi.

Ho anche pubblicato un articolo Qui sui migliori libri che ti aiuteranno a iniziare con lo sviluppo di giochi.

Mi unisco agli elogi dati a OJ: davvero un'ottima risposta.Tuttavia, una volta acquisite le conoscenze di base, puoi imparare molto e velocemente scaricando uno dei due ottimi strumenti seguenti:

Una volta fatto ciò, vai nelle loro librerie di progetti e inizia a sfogliare gli esempi, iniziando con l'ombreggiatura di base e passando alle ombre, alla mappatura normale, ai materiali, agli effetti e a tutto ciò che trovi di interesse.prendi un progetto, inizia a modificare gli algoritmi in base ad alcuni obiettivi che ti sei prefissato e vedi come ottenerlo.Scoprirai che molti esempi sono davvero avanzati e apriranno i tuoi orizzonti.

Divertiti

Anche se sono già stati dati molti buoni consigli, se hai difficoltà a concentrarti sui passaggi coinvolti, Mulino mentale fornisce un modo visivo per costruire Shader (l'Artist Edition è fornito in bundle gratuitamente con Fx Composer - anch'esso gratuito!).

Anche se sarebbe meglio imparare a lungo termine direttamente il codice HLSL, Mental Mill può generare questi file Fx per te (in modo da poter dare un'occhiata alle modifiche).Nota, come tutti i generatori di codice, è un po' più dettagliato di quanto potresti fare una volta compreso HLSL!

La progressione visiva degli effetti, da un metodo all'altro, è davvero impressionante!

SAMS XNA scatenato di Chad Carter è un ottimo punto di partenza per XNA e presuppone una scarsa conoscenza delle pratiche di sviluppo del gioco o dei calcoli matematici prima di iniziare.Ha due capitoli sugli shader di base e avanzati.

Come nota a margine, tieni d'occhio Google per i tutorial di WPF Shader, ora utilizza la stessa tecnologia per consentire gli shader dei clienti nelle applicazioni e nei tutorial WPF che credo siano ampiamente compatibili con XNA.

Non ho usato XNA o DirectX.Ma, per conoscere le basi della programmazione degli shader con Cg, il file Tutorial in CG è il miglior libro che ho trovato.

Dovresti anche guardare RenderMonkey.È un buon strumento.Per quanto riguarda i libri, dai un'occhiata alle ricette di programmazione dei giochi XNA 2.0 di Riemer Grootjans...ottimo libro.

Un breve pensiero sugli editor di shader visivi.Questo tipo di editor è una cosa molto divertente con cui giocare, ma consiglierei davvero, davvero di continuare a lavorare con HLSL basato su testo (lì sia RM che FXC fanno il lavoro).Lavoro come sviluppatore di giochi e ho creato alcuni sistemi di shader (quello in Battlefield 2 e Farcry 2, per esempio) e, a dire il vero, ho scoperto che HLSL è più prezioso di qualsiasi rete di shader grafici fino ad oggi.

Ci sono cose come seguire il flusso di esecuzione, eseguire il debug dello shader o essere in grado di ripetere rapidamente i casi di test che ti danno informazioni che è praticamente impossibile ottenere attraverso uno strumento visivo.

Ho utilizzato personalmente i costruttori di shader visivi e mi piacciono e un giorno, quando l'ombreggiatura non sarà così critica per le prestazioni come lo è oggi, potrebbero essere lo strumento giusto per il lavoro.

...anche se la mia ipotesi è che prima che arrivi quel giorno vedremo un'illuminazione differita e probabilmente il rendering completo del software ;)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top