Introduzione
Cos'è un materiale?
I materiali sono brevi script testuali che definiscono le proprietà di una superficie in termini di come appare e delle sue funzioni nel mondo di gioco (o un tool di modifica compatibile). Convenzionalmente i documenti che contengono questi script hanno lo stesso nome dei file in cui si trova la texture che viene modificata (es: textures_inn, models_mapobjects_crypt ecc.). Diversi documenti con script specifici sono anche stati creati per gestire casi particolari, come i liquidi, gli ambienti e gli effetti speciali.
Per DarkPlaces, gli script dei materiali sono in 'Path_To_The_Game/gamedir/scripts'.
Il file di un materiale di DarkPlaces consiste in una serie di attributi della superficie e di istruzioni per il render, scritte tra parentesi ("{" e "}"). Qui sotto c'è un esempio di semplice sinttassi e formattazione per un singolo procedimento, incluse le parole chiavi in Q3MAP, o "parametri per le superfici", che seguono la prima parentesi e un singolo "livello" tra parentesi:
// Definizione del materiale textures/crypt/stone { // parole chiave qer_editorImage radiant/textures/crypt/stone surfaceparm stone dpglossexponentmod 0.5 // stage di base { map textures/crypt/stone // il motore grafico cercherà textures/mymaterial.tga, textures/mymaterial.jpeg } // stage dell'illuminazione { map $lightmap } }
Nomi dei materiali e convenzioni
La prima riga è il nome del materiale. I nomi dei materiali possono essere lunghi fino a 63 caratteri. I nomi sono spesso identici al percorso fino ad un file .tga senza estensione o cartella alla radice (/Blood Omnicide/kain nel nostro caso), ma non serve che queste cose ci siano.
I materiali che verranno gestiti unicamente dal codice di gioco, non dai tool di modellazione, sono spesso una sola parola, come "collision" o "dpbihclip".
I materiali usati sui personaggi o su altri modelli poligonali devono corrispondere ad un file .tga, per permettere ai modellisti di creare delle normal texture e quindi di far apparire gli effetti speciali nel gioco quando il modello viene caricato.
I materiali posizionati su delle superfici nell'editor delle mappe generalmente corrispondono a un file .tga, ma il parametro del materiale "qer_editorimage" può far mostrare all'editor un'immagine a piaciere.
I percorsi dei nomi dei materiali distinguono maiuscole e minuscole - nelle finestre questo non avviene, ma succede in unix. Meglio cercare di usare sempre e solo minuscole per i nomi dei file, e sempre barre del tipo "/" per i separatori del percorso delle cartelle.
Formattazione degli scripr dei materiali
Affinché i materiali siano facilmente leggibili e modificabili è consigliato formattare tutti gli script dei materiali come segue:
<nomedelmateriale> { <Parole chiave specifiche dell'editor> <Parole chiave specifiche di Q3Map2> <Parole chiave generiche> { <Parole chiave dello stage> } }
Ispirati a Quake 3, ma diversi
Gli script degli shader di Quake 3 sono stati d'ispirazione per il sistema di materiali di DarkPlaces e l'aspetto degli script dei materiali è davvero molto simile a quello degli equivalenti in Quake 3. Quindi, se siete pratici con il sistema di shaders di Id Tech 3 vi sentirete a casa con la sintassi degli script dei materiali. Ad ogni modo, il sistema di materiali di DarkPlaces è stato scritto indipendentemente e presenta alcune importanti differenze:
Illuminazione in tempo reale
Ogni parola chiave degli shader non compatibile con l'illuminazione in tempo reale è stata eliminata. Alcune altre hanno un comportamento leggermente diverso dall'originale.
Puntare ad un'illuminazione in tempo reale cambia il modo in cui funzionano gli stage. Non ci sono passaggi di render (quindi i materiali a più strati possono essere creati solo duplicando delle superfici reali). La catena del render dei materiali di DarkPlaces può usare da 1 a 3 utilizzi prefissati degli stage:
- Nessun disegno (0 stage)
- Texture non illuminata (1 stage)
- Texture illuminata (2 stage)
- Texture illuminata con blending di un terreno (3 stage)
Ogni altra configurazione di stage di Id Tech 3, come i cieli, non è supportata.
Nuove parole chiave
DarkPlaces aggiunge diverse parole chiave proprie che non esistono in Id Tech 3.
Texture Q3 = skinframe DarkPlaces
Id tech 3 ha bisogno solo di informazioni sui colori per le texture. Il motore grafico DarkPlaces usa normal map, mspecularity map, texture di glow e altre texture che contengono informazioni aggiuntive. Tutti questi file di texture messi insieme (colori + normal map + gloss map + glow ecc.) formano lo skinframe. Per ulteriori dettagli leggere la pagina sulle texture.
Costi diversi in velocità
La catena di rendering del motore grafico DarkPlaces è molto diversa da quella di Id Tech 3. Con l'utilizzo di shader di pixel e vertici essa aggiunge nuovi parametri di velocità che non esistono in Id Tech 3:
- intruzioni degli shader - numero di istruzioni per vertex shader e pixel shader generate per un materiale particolare (dipende dagli effetti usati)
- look-up delle texture - numero dei look-up delle texture nel pixel shader, texture aggiuntive in uno skinframe, aumento del numero di look-up delle texture del parallax mapping
- uso del VBO - i modelli non animati vengono renderizzati più velocemente col VBO; alcune parole chiave degli shader (ad esempio tcMod turbulent, deformVertexes) disabilitano il VBO
- uso dell'illuminazione - la luce in tempo reale è più lenta per i blending (aggiunge più disegni sulla superficie, uno per luce) o le superfici su cui si applica un offset mapping (l'offset mapping viene elaborato di nuovo per ogni singola luce)
Il materiale è detto 'shader'
Dato che DarkPlaces usa dei tool derivati da Id Tech 3 i materiali sono spesso chiamati 'shader' da essi. Per non fare confusione, questi termini sono equivalenti nei tool di Q3:
- Shader = Material
- Shader name = Surface shader = Material name = Surface material
- Shader script = Material script
- Shader keywords = Material keywords
- etc.
Tipi di materiali
La parole chiave che agiscono sui materiali sono divise in tre classi. La prima è quella dei parametri globali. Alcuni parametri globali (le "surfaceparm" e tutte le parole chiave "q3map_") sono elaborate da Q3MAP2 e cambiano gli attributi fisici della superficie che usa il materiale. Questi attributi possono avere effetto sul giocatore. Per vedere i cambiamenti in questi parametri bisogna ricompilare la mappa.
Quelle della seconda classe sono le parole chiave compilate dalla parte server del motore grafico (le "surfaceparm", alcune altre parole chiave). Modificano le proprietà fisiche della superficie e possono avere effetto sul gameplay.
Tutte le altre parole chiavi globali e tutte le Stage Specific Keywords (parole chiavi specifiche dello stage) vengono elaborate dal renderer. Riguardano solo cambiamenti di aspetto e non hanno effetto sul gameplay o sulle meccaniche di gioco. Le modifiche a questi attributi avranno effetto non appena il gioco passa ad un altro livello o gli si dice di operare un vid_restart (scrivere il comando "vid_restart" nella console di gioco).
Le parole chiave dei materiali funzionano indifferentemente con maiuscole e minuscole.
Capitolo successivo: Concetti chiave
Torna all'indice | Torna in cima alla pagina