How to add Textures to The Dark Mod

From The DarkMod Wiki
Jump to navigationJump to search

Create your texture

This is mostly artwork. Be sure to start off with useful raw material with a reasonably high resolution. Where possible, work from photo-references. A basic guide can be found here: Texture Creation - Basic Tutorial.

A few things to remember: Make sure your texture dimensions are a power of 2 (eg, 128, 256, 512, 1024, etc). Other common mistakes can be found here: Common Texture Mistakes

Things to remember:

  • Use good source material
  • All image dimensions must be powers of two: 64, 128, 256, 512, 1024 (don't go beyond 1024).
  • Avoid lighting baked into the diffusemap
  • Keep your PSD/Gimp working version safe!

Save your Texture in the correct Format

Save the diffusemap, the normalmap and an optional specularmap to a TGA file. The Texture Guidelines will help you choosing the correct resolution. A TGA version of your diffusemap is supposed to be uploaded to our hi-res repository for future reference (see below).

Once your TGA file is saved, you will have to create DDS files for the diffuse and specular (not the normalmap) as well. These are smaller in size and can be loaded faster by the engine. Follow the DDS creation guide to learn how to create the DDS files in the correct formats.

Also, create an editor image out of your diffusemap. The editor image dimension should be 256x256 pixels and the file should be saved in the JPG format. Add the _ed postfix to the filename name (like mytexture_ed.jpg).

Things to remember:

  • Most textures don't need speculars
  • Create DDS for your diffusemap and specularmap.
  • Keep TGA version of your diffusemap and specularmap.
  • Create a TGA version of your normalmap (uncompressed, no RLE).
  • Create a JPG editor image (max. 256px)

Name your Texture

The following convention should be used for naming all new texture additions to TDM (many existing textures do not follow this convention, and over time effort will be made to update them). The goal is consistency among material names based on ordered characteristics.

Some or all of the following may apply to any given material:

  1. Object Type descriptor first (mostly for very specific-use textures) - it's a window, a door, a chest...
  2. Material descriptor next - made from marble, wood, mud...
  3. Size descriptor next - it is large, small...
  4. Quality descriptors next - texture-wise, it is rough, new, cracked...
  5. Color descriptors next - what color is it? red, green...
  6. Number Increment next - which of the list is it? 001, 002...
  7. Tiling and Image Type descriptors, if needed (file only, not material definition - see below)

If establishing precedent (creating a new Size descriptor, e.g., "huge"), try to avoid ambiguity and unnecessary overlapping with other descriptors (e.g., "enormous"), and set a good example others will follow.


1. slate_large_cracked_grey_001

This name omits an Object Type descriptor, instead starting with the Material descriptor - it is a general, non-specialized texture.

Why is this preferred? Some existing materials are named by quality descriptor first (e.g., 'cracked_slate...'). This is an inconvenience for the user, because they were looking for a 'slate', not a 'cracked'.

2. door_wood_battered_005

This name omits a Size descriptor and a Color descriptor.

Why is this preferred? In the case of a model name (which this convention also covers), or a specific object type texture like the above, some existing assets are named by quality descriptor first (e.g., 'battered_wood...'). This is an inconvenience for the user, because they were looking for a 'door', not a 'battered'.

Be sure to rename all your DDS file extensions to a lowercase .dds (the Compressonator always creates files with uppercase extension, TDM requires them to be lowercase).

If your texture tiles only in one direction, include the phrase tiling_1d at the end of the name. If your texture does not tile (repeat) at all, add the phrase nontiling. So, a normalmap could be names as concrete_dirt01_tiling1d_local.tga.

Diffusemaps should have no extension to their name. Normalmaps should have a _local extension at the end of their name. Specular maps should have a _s extension, the editor images go with an _ed extension.

Things to remember:

  • Choose descriptive names for your texture, while following TDM convention
  • Add the suffix tiling_1d/nontiling to the filename where appropriate
  • Diffusemap: (note the lowercase)
  • Normalmap: mytexture_local.tga
  • Editor image: mytexture_ed.jpg (max. 256 pixels in size)
  • (Optional) Specularmap:

Move the Texture to the right Location

When you upload textures, be sure to upload the files to the right spot. The Texture Folder Structure can help you finding the right folder for your texture.

The .dds diffuse and specular go in the dds/textures/ folder structure. The .tga normalmap goes in the textures/ folder structure. Also, the texture may not render properly unless it's nested inside "../textures/darkmod/.." and for a custom texture (only for FM use) you should use "../textures/darkmod/your_texture_folder" in both the parent Darkmod folder (for mapping) and the same folder structure inside your pk4 (for release). Note that there is a peculiarity of the Doom 3 engine not being able to load DDS textures that are more than five folders deep. The deepest level allowed would be something along the lines of dds/textures/darkmod/door/metal/. This is something to be watched out for.

Things to remember:

  • Move the DDS textures into the dds/textures/... tree.
  • Move the TGA and JPG files into the textures/... tree.
  • Don't save DDS files into folders more than 5 levels deep.

Create your Shader Definition (Material)

Your material entry should be added to the .mtr file that has the same name as the folder your texture is saved in. For example, the material entry for a texture saved in textures/darkmod/wood/panels should be saved in the .mtr file, See also the Material File Naming Convention.

You should name your material entry the same name as your diffuse texture, including the folder path structure (eg, "textures/darkmod/wood/panels/rectangle_oak_face"). (Do not add .tga or .dds to the end, and also skip the dds/ folder prefix.)

The only exception is when multiple shaders are using the same diffusemap, or when your texture doesn't tile (or tiles in only one direction). In the latter case, you would add /nontiling/ or "/tiling_1d/ to the end of the shader folder (a 'virtual' folder, essentially). (The textures used to be separated like that in the actual folder structure, but due to D3's inability to read .dds files five folders deep, they had to be moved.)

Things to remember:

  • Create your shader in the correct file ( following the Material File Naming Convention
  • The shader name for tiling textures is the same as the diffusemap
  • Nontiling/tiling_1d textures go into a "virtual" subfolder nontiling/ or tiling_1d/
  • You don't need to specify file extensions (.dds/.tga/.jpg) to the material defs, this is automatically guessed by the engine.
  • You don't need the dds/ folder prefix to reference the DDS textures.
  • Be sure to include the frob highlight code (see Basic Material File)
  • You must include Dark Mod's ambient light stage (see Virtual Ambient Light Textures)

Upload the Textures

Once, you have checked your texture in-game (and are pleased with the results), you'll need to upload the files to our SVN repository. This requires that you have a valid username/password for SVN, which you can request from sparhawk.

The .tga of the diffuse and specular is needed as well in case we ever want to make modifications to the texture or new textures based on the old. Opening and resaving .dds files results in loss of detail, so all new versions of textures should be made from the .tga files. So, additional to the textures needed for the engine and editor (diffuse/normal/specular/editorimage) you're encouraged to upload the uncompressed textures to the hires repository.

The hires repository is located at https://<InsertDarkmodServerHere>/svn/darkmod_hires/trunk/tga_backup/. As only diffuse/speculars are compressed in DDS format, these are the only two that need to be uploaded in TGA format. The TGA files should be named just like the DDS versions and should be located in the analogous folder than they are in the main repository, but below the tga_backup/ folder. For instance tga_backup/textures/darkmod/stone/etc.

The hires TGA can be RLE-compressed to save some space, but this is not too important. Uncompressed TGAs are only important for the textures used by the engine itself.

As last part, it would be nice to have the actual working versions (Photoshop/Gimp source files) stored on the server too. This is of course a large upload, but having the source files is very valuable. For this purpose, there is another repository texture_src installed at https://<InsertDarkmodServerHere>/svn/texture_src/.

Things to remember:

  • Upload the diffuse, normal, (specular,) and editor image to the regular darkmod SVN.
  • Upload the (RLE-compressed) TGA diffusemap and specularmap to the darkmod_hires SVN repository (into the tga_backup subfolder).
  • Upload the working source file (PSD/Gimp) to the texture_src repository.