====== Detailtexturen ======
Seit es Steam gibt, kann man Detailtexturen in Half-Life benutzen. Detailtexturen verleihen den normalen Texturen eines Levels zusätzliche Struktur oder können auch eine höhere Texturauflösung faken.

===== Voraussetzungen =====
Detailtexturen sind nicht für jedermann zu haben. Es gibt einige Vorraussetzungen:
  * [[http://www.steampowered.com|Steam]] + Half-Life
  * Eine DirectX 8 kompatible Grafikkarte mit entsprechenden Treibern
  * Eine oder mehrere Detailtexturen (unkomprimiertes TGA, 24 Bit, Graustufen, 512*512 Pixel oder kleiner)
  * Die Variable **r_detailtextures** muss in Half-Life via Konsole auf **1** gesetzt sein
  * Eine Map, auf die wir die Detailtexturen anwenden

==== Die Grafikkarte ====
Detailtexturen sind zwar eine an sich einfache Angelegenheit, dennoch können sie in Half-Life nicht nicht von allen Grafikkarten dargestellt werden.

Auf der sicheren Seite ist man mit einer halbwegs aktuellen Grafikkarte von [[http://www.ati.com|ATI]] (z.B. einer Radeon) oder einer [[http://www.nvidia.com|Nvidia]] der Familie Geforce TI oder besser. Wichtig ist, dass sie DirectX 8 kompatibel sind. Aktuelle Treiber sind selbstverständlich auch erforderlich.

Auch mit einer GeForce 4 mx oder älterem Gerät kann man versuchen, Detailtexturen zum Laufen zu bringen. Dazu benötigt man das Programm [[http://downloads.guru3d.com/downloadget.php?id=163&file=1&evp=3dd4bb8da7a55799f2d49e3dcfc0e6aa|Riva Tuner]].

In diesem Programm kann man unter **OpenGL Settings** den **OpenGL hardware acceleration mode** verstellen. Hier experimentiert man am besten ein wenig mit den angebotenen Modi. Das ganze **kann** am Ende Detailtexturen zum laufen bringen, muss aber nicht funktionieren und kann auch die Performance stark beeinträchtigen.

Erfahrungsgemäß bringtder Modus **NV40** die besten Ergebnisse, doch ob es letztendlich funktioniert, und wenn ja, wie gut, das ist letzlich einfach Hardware-Abhängig.

==== Funktionieren Detailtexturen bei mir? ====
Das lässt sich schnell raufinden: Einfach Half-Life mit Konsole starten, einen beliebigen Level laden und versuchen **r_detailtextures 1** in die Konsole einzugeben. Das Steam-Interface müsste den Befehl schon vorschlagen, wenn **r_de** eingegeben ist; steht in der Auswahlliste dann nur **r_decals** aber nicht **r_detailtextures**, dann sieht es für Detailtexturen auf deinem Rechner eher düster aus.
Wenn es funktioniert sollten wir die Variable **r_detailtextures** direkt auf **1** setzen, denn das brauchen wir für weitere Schritte.

==== Die typische Detailtextur ====
Eine normale Detailtexur trägt eine bestimmte einfache Struktur (z.B. Metall oder Stein), die über normale Texturen in den Levels gelegt werden. Dadurch haben die Texturen, auch wenn man direkt vor ihnen steht, einen beachtlichen Detailgrad.

Detailtexturen sind immer **Graustufenbilder**, bei denen die Grundfarbe 50% Grau (RGB 128 128 128) ist. **Dunklere Teile erhellen** später im Spiel an dieser Stelle die Grundtextur, *helle Teile verdunkeln* hingegen.

Eine typische Detailtextur sieht in etwa so aus:
(Bild)

==== Der technische Aspekt ====
Eine Dateiltexur für Half-Life muss folgende Kritieren erfüllen:
  * Sie darf höchsten 512*512 Pixel groß sein.
  * Sie muss als unkomprimiertes 24Bit-TGA vorliegenn.
Werden diese Kritieren nicht eingehalten, stürzt Half-Life ab.

===== Anwendung =====
Wenn alle Vorraussetzungen erfüllt sind, können wir uns daran machen, die Detailtextur anzuwenden.

==== Wohin damit? ====
Zunächst müssen wir die Detailtextur dort ablegen, wo Half-Life sie auch wiederfindet. Das ist das Verzeichnis **gfx/detail**. Existiert dieses nicht, erstellen wir es einfach.
**Anmerkung**: Wenn die Map released wird, ist von Vorteil wenn die eigenen Detailtexturen ein eigenes Unterverzeichnis in **gfx/detail** bekommen, z.B. **gfx/detail/cs_leetness**. Das verhindert, dass sich Custom Maps gegenseitig die Detailtexturen überschreiben.

==== Die Definitions-Datei ====
Jetzt müssen wir HL verklickern, auf welche Gametextur die Detailtextur angewendet werden soll. Dazu erstellen wir im maps-Verzeichnes (genau da, wo auch die BSP der Map liegt) eine Textdatei mit dem Namen **mapname_detail.txt** (z.B. **cs_leetness_detail.txt**).

In diese Datei schreiben wir jetzt mit einem einfachen Texteditor Zeilen in folgendem Format:
''Gametextur    Detailtextur    X    Y''
Das ganze aufgeschlüsselt bedeutet:
  * **Gametextur**: Der Name der Textur, auf die die Detailtextur angewendet werden soll.
  * **Detailtextur**: Der Name der Detailtextur **ohne .tga**, die verwendet werden soll.
  * **X**: Eine Zahl zwischen 1 und 25 (kann vermutlich auch höher sein, ist aber kaum noch sinnvoll), die beschreibt wie oft die Detailtextur auf der Gametextur wiederholt wird. Dadurch legt man die X-Skalierung/Streckung der Detailtexturen fest.
  * **Y**: Eine Zahl zwischen 1 und 25 (kann vermutlich auch höher sein, ist aber kaum noch sinnvoll), die beschreibt wie oft die Detailtextur auf der Gametextur wiederholt wird. Dadurch legt man die Y-Skalierung/Streckung der Detailtexturen fest.

Es folgen ein paar Beispiele für die Skalierung, deren System nicht ganz leicht zu Verstehen ist.

  * Gametextur: 256*256 Pixel
  * Detailtextur: 256*256 Pixel
  * Ziel: Die Detailtextur soll genau ein Mal pro Gametextur vorkommen
  * X/Y-Werte: ''1.0  1.0''

  * Gametextur: 64*64 Pixel
  * Detailtextur: 256*256 Pixel
  * Ziel: Die Detailtextur soll genau ein Mal pro Gametextur vorkommen
  * X/Y-Werte: ''1.0  1.0''

  * Gametextur: 512*512 Pixel
  * Detailtextur: 128*128 Pixel
  * Ziel: Die Detailtextur soll genau 4 Mal pro Gametextur vorkommen
  * X/Y-Werte: ''4.0  4.0''

  * Gametextur: 256*64 Pixel
  * Detailtextur: 128*128 Pixel
  * Ziel: Die Detailtextur soll pro Gametextur genau 2 Mal auf der X-Achse und ein Mal auf der Y-Achse vorkommen
  * X/Y-Werte: ''2.0  0.5''

Nach etwas herumprobierei ist das ganze aber zu überblicken :)

==== Und jetzt? ====
Jetzt speichern wir die Definitionsdatei, starten Half-Life, laden unsere Map und geben, falls noch nicht geschehen, **r_detailtextures 1** in die Konsole ein. Detailtexturen sollten jetzt auf allen Flächen zu sehen sein, die in der Definitionsdatei eingetragen sind.

===== Anhang =====
Detailtexturen kann man zu mehr als zu einfachen Strukturgebung verwenden. LePrau hat beispielsweise eine Methode ausgetüftelt, wie man Detailtexturen zur [[half-life:tutorials:overlays_durch_detailtexturen_ersetzen|performanceschonenden Verschönerung von Textlights]] einsetzen kann.

Im Tutorial [[goldsrc:tutorials:colored_detailtextures|farbige Detailtexturen]] wird eine Methode beschrieben, mit der sich mithilfe von Detailtexturen hochauflösende und farbechte Texturen in Half-Life verwenden lassen.