Oberflächentexturen

Texturen, die auf der Oberfläche eines Blocks angebracht werden, müssen die folgenden Voraussetzungen erfüllen:

Texturen lassen sich sowohl aus WAD-Dateien, als auch aus Ordnern anwenden. Unterstützte Bildformate sind PCS, BMP, TGA und DDS. Für hochauflösende Texturen von 24 oder 32 Bit Farbtiefe verwenden Sie das TGA-Format; für geringen Speicherverbrauch nehmen Sie das komprimierte DDS-Format von nur 4 Bit Farbtiefe. PCX- oder BMP-Texturen werden in niedriger Qualität von 16 bit Farbtiefe gespeichert. Aus Gründen alten Erbes werden auch palettenabhängige 8-Bit PCX- und BMP-Texturen unterstützt, dabei muss aber je Level dieselbe Palette benutzt werden. Die erste Farbe der Palette (color #0) muss immer schwarz, die letzte (color #255) immer weiß sein. Sollten Sie nicht wissen, was eine Palette ist, verwenden Sie besser keine 256-Farben-Bilder.

PCX- und BMP-Bilder können durch eine Skripteinstellung (d3d_texdepth) beim Laden des Levels in das komprimiertes 4-bit-DDS-Format konvertiert werden. Das 4-bit-Format reduziert zwar die Texturqualität und erhöht die Ladezeit des Levels durch den Prozess des Konvertierens, kann jedoch eine Menge Videospeicher sparen. Originale DDS-Bilder können mit dem DirectX Texture Tool, ATI´s Compressionator oder einen Photoshop-Plugin erstellt werden. Sie können Mipmaps enthalten und verwenden auf Kosten der Bildqualität ein komprimiertes 4-bit-Oberflächenformat (DXT1..DXT5) zum Sparen von Videospeicher. Sie haben den Vorteil kleiner Leveldateien, schnellen Ladens und schnellen Renderns und sind das bevorzugte Format für alle alle Oberflächenteturen mittlerer Qualität.

4 Mipmap-Levels für TGA-, PCX-, und BMP-Texturen werden beim Kompilieren des Levels automatisch erstellt. Mipmaps erhöhen sowohl die Rendergeschwindigkeit als auch die visuelle Qualität weit entfernter Texturen. DDS-Texturen enthalten ihre eigenen Mipmaps, daher werden für sie keine extra Mipmaps erstellt.

Ein Alphakanal wird bei 32-Bit-TGA-Texturen und bei den Texturformaten DXT2..DXT5 DDS unterstützt. Bei Levelblocks wird der Alphakanal nicht für die Transparenz, sondern für Shadereffekte verwendet, normalerweise für eine Spiegelmap. Für transparente Objekte müssen Entities verwendet werden.

Sky- Texturen

Eine Textur, deren Name mit "sky" beginnt, kann den Wänden der Sky-Box rund ums Level zugewiesen werden. Die Proportionen der Textur bestimmen die Weise des Mappings (sky mapping). Ist die Textur doppelt so breit wie hoch, wird ihre erste Hälfte zur Wolkenbewegung unter einer Himmelskuppel (sky dome) benutzt und die zweite Hälfte für die Kuppel-Textur (s. Bild).

Ist sie sechs mal so breit wie hoch, wird die Textur für einen "Himmels-Würfel" (sky cube), der das Level umschliesst, verwendet (s. zweites Bild). Um den Sky Cube im 3D-Fenster darzustellen, aktivieren Sie in Preferences -> Advanced `Sky Cube´ .

Kompliziertere Multi-Layer-Himmel können per Skript definiert werden; siehe sky entity section.

Animierte Texturen

Beginnt der Texturname mit einem '+'-Zeichen gefolgt von einer Ziffer (wie "+0blink", "+1blink" etc.), wird die Textur animiert und wechselt zwischen den Texturen gleichen Namens, angefangen bei denen, die mit einem '+0' beginnen, bis hin zu jenen mit einem '+9' vor dem eigentlichen Namen. Dieses einfache Animationsschema kann z.B. für blinkende Lichter etc. verwendet werden.

Normal-Maps

Endet der Name einer Textur mit "_n", wird die Texstur als Normal-Map für eine Grundtextur mit demselben Namen benutzt. Von einer Textur mit dem Namen "stones2_n" wird beispielsweise erwartet, dass sie eine Normal-Map für die Textur "stones2" beinhaltet. Die Normal-Map darf nicht direkt auf eine Oberfläche angewandt werden - sie wird automatisch eingebunden. Um eine Normal-Map zu benutzen, müssen Sie der Oberfläche ein Material mit einem Normalenmapping-Shader zuweisen. (Näheres unter Das Verwenden von Shadern). Die Bibliothek mtlFX.c enthält diverse Normalenmapping-Materialien. A7

Der Alphakanal von Normalentexturen wird für eine Höhenmap in den Parallax- und Okklusions-Shadern verwendet.

Speicher-Voraussetzung

Sowohl die Texturen, als auch Oberflächen mit Shadow-Mapping verbrauchen Video-Speicherplatz. Aufgrund von Mipmaps verbraucht jeder TGA-Texturenpixel etwa 6 Byte an Videospeicher. Jeweils 64 Oberflächenpixel verbrauchen 1...4 zusätzliche Bytes für die Schatten-Maps (hängt von der Lichtauflösung ab). Bei Leveln mit sehr großen Oberflächengebieten, können die Shadow-Maps leicht einige 100 MB verbrauchen. Zum Reduzieren der Shadow-Maps, beugen Sie dem Sahding vor indem Sie auf großen Oberflächen das Oberflächenflag Flat benutzen. Ist die auf der 3D-Karte vorhandene Video-Speicherkapazität überschritten, wird das Spiel immer noch laufen, aber die Engine wird Texturen auf die Harddisk auslagern, was an einigen Stellen der Map zum Verlangsamen und zu plötzlichem `Ruckeln´ führen kann. Anhand des [F11] -Engine-Panels können Sie den momentanen Speicherverbrauch überprüfen.

► Aktuelle Version Online