Riflessi dinamici Creazione di uno Shader per un materiale ed aggiunta dei riflessi dinamici
Introduzione.
In questo tutorial vedremo come realizzare una superficie riflettente, che rifletta una cubemap, ovvero un set di
sei texture fisse. Questo sistema consente di realizzare un effetto di riflesso molto simile ad uno reale ma che
utilizza pochissime risorse di sistema.
Il tutorial è articolato in tre parti: 1) esempio di shader; 2) analisi dello shader; 3) creazione dello shader.
1. Esempio di shader
Quello che segue è uno “shader”, vale a dire ciò che identifica un materiale nel
motore grafico: viene scritto in un file .mtr. Sia D3 che Q4 utilizzano lo stesso sistema per i materiali e un sistema
simile per i materiali riflettenti. Il Trinity può già creare materiali riflettenti, sia tramite cubemap
(oggetto di questo tutorial) che in tempo reale, tipo gli specchi.
- La prima riga “Textures/Reflection/Tutorial01” identifica il percorso del materiale nell’editor.
Queste parentesi “{ }” vengono utilizzate negli script scritti nel linguaggio C per identificare
l’inizio o la fine di una funzione.
- La Diffusemap indica la texture, o mappa, che contiene la reale immagine applicata al materiale,
ciò che nei vecchi motori era l’unica texture utilizzata su un materiale.
- La Bumpmap indica la texture, o mappa, da cui prendere le informazioni per applicare l’effetto
di Bump mapping al materiale.
- La Specularmap indica la texture, o mappa, da cui prendere le informazioni per applicare l’effetto
di luce Speculare al materiale.
- Maskcolor indica la texture, o mappa, da cui prendere le informazioni per applicare una maschera che
divide il riflesso dal resto delle mappe.
- Il comando Blend serve per mixare il materiale non riflettente da trattare con ciò che si sta dichiarando,
in questo caso il riflesso.
- Maskalpha indica allo shader di utilizzare una maschera che verrà applicata sulla texture originale,
quella non riflettente, per identificare le aree su cui il riflesso avrà effetto; la maschera sarà la mappa
“maskcolor map makealpha (“Percorso mappa .tga”)”.
- Cubemap indica il percorso del set di mappe, cubemap, che rappresenta il riflesso.
- Colored è un comando utilizzato solo in Quake4; ha la stessa funzione di vertexcolor, che viene utilizzato
solo in Doom3; questi comandi servono per effettuare un filtro tra la mappa originale e la mappa del riflesso,
la cubemap, il risultato è un mixaggio delle due, così da ottenere una perfetta unione delle due mappe.
In assenza di questi comandi le due mappe verranno semplicemente sovrapposte ma non mixate,
in questo modo la cubemap apparirà sopra alla mappa originale.
- TexGen settato su Reflection indica il tipo di shader, ovvero tipo riflesso.
3. Creazione dello shader
Per creare il nostro shader, o materiale, dobbiamo usare un editor di testo come Blocco note;
il file dovrà essere salvato con l'estensione .mtr e non .txt, altrimenti il motore non lo vedrà; inoltre, dovrà essere
messo nella cartella:
Doom 3 o Quake 4\nome mod\material\
Aperto il nostro programma di testo, scriviamo il percorso in cui lo shader sarà reperibile nell’editor;
nel nostro primo esempio era “Textures/Reflection/Tutorial01”. Apriamo la parentesi graffa { e scriviamo
la locazione delle texture del nostro materiale, la Bump map, la Specular Map e la Diffuse Map.
Poi apriamo nuovamente la parentesi graffa e scriviamo il comando blend e gli altri comandi per il riflesso;
in cubemap dovremo mettere il nome del set di mappe da usare, senza .tga (nella cartella env in Doom 3, o gfx\env in Quake 4,
troviamo molte cubemap già fatte); poi dovemo mettere “Vertexcolor” se stiamo lavorando con uno shader di Doom3, o
“Colored” se lavoriamo su Quake4. Per ultima cosa, chiudiamo entrambe le parentesi aperte ed abbiamo completato il
nostro shader con riflesso.
Ora noi creeremo delle mattonelle con riflesso, utilizzando le tre semplici mappe principali più il riflesso,
quindi senza maschera (Maskcolor); ed ecco lo script e le varie texture da usare:
Il risultato si può vedere nella prima immagine di questo tutorial :D
Se hai dei dubbi su qualche punto, posta pure le tue domande sul nostro Doom3 & Quake 4 ModdingForum.
Riflessi dinamici. Creazione di uno Shader per un materiale ed aggiunta dei riflessi dinamici non in tempo reale Tutorial by Gyppi for HG&LD
- 18 novembre 2005 -