How to add Textures to The Dark Mod: Difference between revisions

From The DarkMod Wiki
Jump to navigationJump to search
No edit summary
Peter spy (talk | contribs)
→‎Create your Shader Definition (Material): - removed the section about ambient textures
 
(21 intermediate revisions by 6 users not shown)
Line 1: Line 1:
__NOTOC__
== Create your texture ==
== 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]].
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]]
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|
<div style="background-color: #E5E5E5; border: 1px solid #CCCCCC; padding: 5px; padding-top: 0px">
=== Things to remember ===
* Use good source material
* 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
* Avoid lighting baked into the diffusemap
* Keep your PSD/Gimp working version safe!
* Keep your PSD/Gimp working version safe!}}
</div>
 
== Save your Texture in the correct Format ==  
== 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).
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).
Line 19: Line 14:


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 <code>mytexture_ed.jpg</code>).
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 <code>mytexture_ed.jpg</code>).
 
{{Things-To-Remember|
<div style="background-color: #E5E5E5; border: 1px solid #CCCCCC; padding: 5px; padding-top: 0px">
=== Things to remember ===
* Most textures don't need speculars
* Most textures don't need speculars
* Create DDS for your diffusemap and specularmap.
* Create DDS for your diffusemap and specularmap.
* Keep TGA version of your diffusemap and specularmap.
* Keep TGA version of your diffusemap and specularmap.
* Create a TGA version of your normalmap (uncompressed, no RLE).
* Create a TGA version of your normalmap (uncompressed, no RLE).
* Create a JPG editor image (max. 256px)
* Create a JPG editor image (max. 256px)}}
</div>
== 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:
 
# '''Object Type''' descriptor first (mostly for very specific-use textures) - it's a window, a door, a chest...
# '''Material''' descriptor next - made from marble, wood, mud...
# '''Size''' descriptor next - it is large, small...
# '''Quality''' descriptors next - texture-wise, it is rough, new, cracked...
# '''Color''' descriptors next - what color is it? red, green...
# '''Number Increment''' next - which of the list is it? 001, 002...
# '''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.
 
 
'''Examples:'''
 
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'.


== Name your Texture ==
You should give your texture a descriptive name, usually three words, like '''rough_dark_flagstones01.dds'''.  Try to think about what mappers might want to know when looking for your texture.  If the name is really distinctive, then a number is probably not necessary, but for other names a number might be appropriate.


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).
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).
Line 37: Line 57:


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.
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|
<div style="background-color: #E5E5E5; border: 1px solid #CCCCCC; padding: 5px; padding-top: 0px">
* Choose descriptive names for your texture, while following TDM convention
=== Things to remember ===
* Add the suffix '''tiling_1d'''/'''nontiling''' to the filename where appropriate
* Choose descriptive names for your texture.
* Add the suffix '''tiling_1d'''/'''nontiling''' to the filename where appropriate.
* Diffusemap: '''mytexture.dds''' (note the '''lowercase''')
* Diffusemap: '''mytexture.dds''' (note the '''lowercase''')
* Normalmap: '''mytexture_local.tga'''
* Normalmap: '''mytexture_local.tga'''
* Editor image: '''mytexture_ed.jpg''' (max. 256 pixels in size)
* Editor image: '''mytexture_ed.jpg''' (max. 256 pixels in size)
* (Optional) Specularmap: '''mytexture_s.dds'''
* (Optional) Specularmap: '''mytexture_s.dds'''}}
</div>


== Move the Texture to the right Location ==
== 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.
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. 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.
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).  


<div style="background-color: #E5E5E5; border: 1px solid #CCCCCC; padding: 5px; padding-top: 0px">
Note: At one time, the Doom 3 engine and early TDM could not load DDS textures that were more than five folders deep. The deepest level allowed would be something along the lines of dds/textures/darkmod/door/metal/. This is no longer the case.
=== Things to remember ===
{{Things-To-Remember|
* Move the DDS textures into the '''dds/textures/...''' tree.
* Move the DDS textures into the '''dds/textures/...''' tree.
* Move the TGA textures into the '''textures/...''' tree.
* Move the TGA and JPG files into the '''textures/...''' tree.}}
* Don't save DDS files into folders more than 5 levels deep.
</div>


== Create your Shader Definition (Material) ==
== 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, '''tdm_wood_panels.mtr'''.
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, '''tdm_wood_panels.mtr'''. 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.)
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.)''
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|
<div style="background-color: #E5E5E5; border: 1px solid #CCCCCC; padding: 5px; padding-top: 0px">
* Create your shader in the correct file (tdm_xxx_yyy.mtr) following the [[Material File Naming Convention]]
=== Things to remember ===
* Create your shader in the correct file (tdm_xxx_yyy.mtr)
* The shader name for tiling textures is the same as the diffusemap
* 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/
* Nontiling/tiling_1d textures go into a "virtual" subfolder nontiling/ or tiling_1d/
Line 75: Line 88:
* You don't need the '''dds/''' folder prefix to reference the DDS textures.
* 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#Add_the_Frob_Highlight_Stage|Basic Material File]])
* Be sure to include the frob highlight code (see [[Basic Material File#Add_the_Frob_Highlight_Stage|Basic Material File]])
</div>


== Upload the 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.  
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 .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.
Line 87: Line 99:


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 '''<nowiki>https://<InsertDarkmodServerHere>/svn/texture_src/</nowiki>'''.
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 '''<nowiki>https://<InsertDarkmodServerHere>/svn/texture_src/</nowiki>'''.
 
{{Things-To-Remember|
<div style="background-color: #E5E5E5; border: 1px solid #CCCCCC; padding: 5px; padding-top: 0px">
=== Things to remember ===
* Upload the diffuse, normal, (specular,) and editor image to the regular darkmod SVN.
* 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 (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.
* Upload the working source file (PSD/Gimp) to the '''texture_src''' repository.}}
</div>
 
{{tutorial-textures}}
{{tutorial-textures}}
__NOTOC__

Latest revision as of 07:25, 11 December 2020

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.


Examples:

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: mytexture.dds (note the lowercase)
  • Normalmap: mytexture_local.tga
  • Editor image: mytexture_ed.jpg (max. 256 pixels in size)
  • (Optional) Specularmap: mytexture_s.dds


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: At one time, the Doom 3 engine and early TDM could not load DDS textures that were more than five folders deep. The deepest level allowed would be something along the lines of dds/textures/darkmod/door/metal/. This is no longer the case.

Things to remember:

  • Move the DDS textures into the dds/textures/... tree.
  • Move the TGA and JPG files into the textures/... tree.


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, tdm_wood_panels.mtr. 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 (tdm_xxx_yyy.mtr) 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)

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.