Kapitel 09 · Doom 3

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.).

image021.jpg

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.

image022.jpg

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.

image023.jpg

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".

image024.jpg

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.

image025.jpg

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:

image026.jpg

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:

image027.jpg

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.

image030.jpg

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.

image028.jpg

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:

image029.jpg

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.