TEXTUREN UND SHADER
Autor: Fragpoint
Downloads: Beispielmap 2
Ich gehe in diesem Tutorial nur kurz auf das Thema Texturen und Shaders im Zusammenhang mit Doom 3 ein, damit ihr wisst, worum es sich handelt und wie Ihr sie einsetzt. Wie man eigene Texturen erstellt, könnt Ihr übrigens in diesen Tutorials erfahren.
Bei Texturen und Shader handelt es sich im Grunde um die gleiche Sache: Es sind Grafiken, die auf Eure Brushes gelegt werden, um diesen ein realistisches Aussehen zu geben. Einziger Unterschied ist, dass Texturen reine Grafiken sind (statisch), wogegen die Shader meist mit Effekten und Bewegungen versehen sind. Bei einem Shader werden über eine kleine Script-Datei eine oder mehrere Texturen in Form und aussehen verändert (z.B. Wellen, Glanz, etc.).

Nun gut, öffnen wir erst mal in Windows unseren Datei-Explorer und begeben uns in das Verzeichnis „C:\Programme\Doom 3\base\textures\“. Dort sind alle Texturen, die ihr derzeit verwenden könnt, im Format JPG, TGA und DDS abgelegt. Falls dort keine derartiges Verzeichnis vorhanden ist, sind die Texturen noch in den Dateien "pak001.pk4" und "pak004.pk4" gepackt. Mit dem Programm WinRAR könnt Ihr sie entpacken, was aber nicht unbedingt notwendig ist.

Die Texturen sind dort in verschiedenen Verzeichnissen – nach Themen sortiert – vorhanden. So findet ihr z. B. im Verzeichnis „textures/base_wall“ logischerweise nur Texturen zum Thema "Basis-Wände". Dies erleichtert Euch später auch die Suche nach geeigneten Texturen für Eure Map. Habt Ihr eigene Texturen, die ihr einbauen wollt, so müsst ihr dafür ein neues Verzeichnis mit einem beliebigen Namen anlegen (z. B. meine-texturen) und die Grafiken dort hinein kopieren.

Doch zurück zum Radiant. Nehmen wir doch wieder unseren Beispiel-Brush aus dem letzten Tutorial. Schaut als nächstes in das Entity-Fenster (vgl. nächstes Bild) klickt dort den Reiter "Media" an. Um eine passende Textur zu finden öffnen wir dort den Ordner "Textures" mit einem Doppelklick. Anschließend bieten sich weitere Unterverzeichnisse an, von denen wir ein beliebiges öffnen. In unserem Fall handelt es sich um "alphalabs".

Um alle Texturen aus dem Verzeichnis zu laden, genügt ein Doppelklick auf den Verzeichnisnamen. Wollt ihr nur eine einzelne Textur daraus öffnen, müsst ihr einzig und allen auf Ihr einen Doppelklick ausführen.

Für unser Tutorial nehmt Ihr bitte die Textur "a_lfwall13f3" aus dem Verzeichnis "alphalabs". Nach dem Doppelklick erscheint im Entity-Fenster sofort eine Voransicht der Textur. Wie Ihr auf dem nächsten Bild seht, hat sich die Oberfläche des Brushes nun auch verändert - vorausgesetzt ihr hattet ihn vorher markiert. Falls nicht, wählt den Brush über "Shift-LMT" an und wiederholt den Arbeitsschritt mit der Texturauswahl. Das Ergebnis sollte in etwa so aussehen:

Das war es eigentlich schon zum Thema Texturieren. Nur noch eine kleine, aber nicht unwichtige Sache: Wenn ihr nicht den ganzen Brush, sondern nur eine Seite mit einer Textur belegen wollt, müsst ihr die gewünschte Seite des Brushes im 3D-Fenster mit der Tastenkombination „Strg-Shift-LMT“ anklicken:

Falls Ihr einen Doppelklick auf das Verzeichnis gemacht habt, könnt Ihr auch den Reiter "Textures" anwählen. Dort werden alle Texturen dieses Ordners dargestellt und ihr könnt Euch darunter bequem eine passende auswählen.

Dieses Fenster könnt ihr übrigens auch direkt über die Taste T aufrufen, sobald ihr dort - wie eben beschrieben - ein Texturen-Verzeichnis geladen habt oder aber eine in Arbeit befindliche Map fortsetzt. In diesem Fall würden die bereits in der Map eingesetzten Texturen angezeigt werden. Noch einen kleinen Hinweis: Es gibt auch Shader/Texturen, die nicht funktionieren, diese werden, wie auf dem vorstehenden Bild zu sehen, vom Radiant als kleine schwarze Kästchen dargestellt. Diese solltet Ihr deshalb nicht benutzen.
Nun kommen wir zu den Shadern. Die bereits oben erwähnten Script-Dateien (Shader, Dateiendung .MTR) findet ihr im Verzeichnis „C:\Programme\Doom 3\base\materials\“. Falls das Verzeichnis bei Euch nicht vorhanden ist, könnt Ihr die Dateien wieder aus der Datei "pak000.pk4" entpacken, was aber nicht unbedingt nötig ist.

Ein solcher Shader kann z. B. wie folgt aussehen (hier aus der Datei "glass.mtr"):
textures/glass/outdoor_glass1
{
noSelfShadow
noshadows
twosided
translucent
glass
forceoverlays
sort decal
qer_editorimage textures/glass/glass1
{
Program heatHaze.vfp
vertexParm 0 time * 0 , time * 0
vertexParm 1 .5
fragmentProgram heatHaze.vfp
fragmentMap 0 _currentRender
fragmentMap 1 textures/sfx/vp1
}
{
maskcolor
map makealpha(textures/glass/glass1)
}
{
blend gl_dst_alpha, gl_one
maskalpha
cubeMap env/gen2
red Parm0
green Parm1
blue Parm2
texgen reflect
}
{
blend filter
map textures/glass/outdoor_glass1fx
}
} Sieht etwas verwirrend aus, nicht wahr? Über die verschiedenen Befehle wird Doom3 bzw. dem Radiant gesagt, wie er diese Textur (textures/glass/glass1) verformen/animieren soll und welche Effekte diese hat (z. B. Wellen mit Reflektionen/Spiegelungen). Shader-Texturen haben außen herum immer einen weißen Rand, wie man auf dem nachfolgenden Beispiel sehr gut sehen kann:

Bei normalen Texturen fehlt dieser Rand, diese gibt es in Doom 3 aber nicht, da ein Shader immer zwingend notwendig ist, damit die Grafik im Spiel angezeigt wird. Deshalb werdet Ihr in Doom 3 auch keine Grafiken ohne Shader finden.