Difference between revisions of "Development:Graphics Requirements"

From VsWiki
Jump to: navigation, search
(Image Compression Codec)
m (Image Types)
Line 8: Line 8:
 
* HUD images (cockpit, shield, armor, ships, gauges, ...)
 
* HUD images (cockpit, shield, armor, ships, gauges, ...)
 
* Main menu images
 
* Main menu images
 +
* Interface images
 
* Cargo images
 
* Cargo images
 
* Space backgrounds
 
* Space backgrounds
 
* Animation images
 
* Animation images
 
* Planet textures
 
* Planet textures
 +
* Base/planet background images
  
 
=Graphic Files Requirements=
 
=Graphic Files Requirements=

Revision as of 15:47, 25 February 2008

Introduction

Image Types

For completeness purposes, the following graphics files are being referred to on this page

  • Unit textures
  • Cockpit mesh textures
  • HUD images (cockpit, shield, armor, ships, gauges, ...)
  • Main menu images
  • Interface images
  • Cargo images
  • Space backgrounds
  • Animation images
  • Planet textures
  • Base/planet background images

Graphic Files Requirements

Overview of Graphics Requirements

Textures ready for submission should fulfill:

  • Ratio (horizontal:vertical): depending on specific image type (1:1, 2:1, 4:1)
  • Dimensions: following the POT rule (power-of-two), size depending on specific image type
  • Codec: dds with compresion type DXT1 (opaque only), DXT1a, DXT3, or DXT5 (with transparency)
  • Extension: png (or jpg, bmp)
  • Quality: RQ or CQ
  • Mipmaps: required for units, not required for 2d images (hud and ui)
  • Tilable (seamless): for some image types

Image ratio

The image ratio horizontal:vertical will depend on the image type. The recommendations are always assuming that pixel ratio is 1:1. This means, no matter what image ratio is used, a circle must show as a circle when viewing the image in an image viewer.

For example, it's 2:1 for planet textures, 1:1 for cargo images, planet hud images and space background faces, 4:1 for current shield and armor face images.

Square things make sense to be 1:1, however other things can be pretty arbitrary, usually you need to round to obtain the closest power of two, for example 400x300 -> 512x256.

Image dimensions

The vertical and horizontal size of the image should be a power of two (POT). Really, non-POT (non-power-of-two) textures are troublesome, time and memory consuming, since otherwise they need to be scaled when loaded and it's just best to skip that step. It'd be ideal if they were also power of two in masters, but that's not required, but the exports to data4.x should always be some power of 2.

Just use POT. Love the POT. The POT is the mother, the POT is the father. Trust the POT.

That leaves few options for the horizontal or vertical resolution:

  • 64 px
  • 128 px
  • 256 px
  • 512 px
  • 1024 px
  • 2048 px

1x1 images are allowed, for example if using a texture with a single color, or a transparent image.

The size recommendation will depend on the image type. Please refer to the specific image type requirements in the art-related Development section.

Keeping original high resolution image (e.g. 1024 or 2048) versions in stock (and in svn masters directory) helps maintaining quality and scalability as game development progresses or typical screen resolutions rise in the future with better hardware available to the players. Also, keeping original 3D-models in stock provides for unplanned future changes.

Image Compression Codec

The graphics format for the game is dds format, (though the file extension can be either png (preferred), jpg, or bmp).

Allowed compression types are:

  • DXT1 for opaque, non alpha layered images only (no transparency).
  • DXT1a for 1 bit alpha layered images. (alpha has only black masking, not shades of grey; simply: parts of the image have full transparency or are completely opaque).
  • DXT3 for semi-transparent images where the transparent layer values are distinct (if the alpha is the same shade across the image, or only varies in chunks).
  • DXT5 for transparent or semi-transparent images (that are translucent and if the translucence varies a lot but not distinctly).

Further clarification: DXT1 is used when the image has no transparent parts at all. DXT1a (DXT1 with alpha channel) is used when the images alpha layer is just 1 value. It's either on or off. If it's off, we should remove the alpha layer from the master and compress with regular dxt1. DXT3 is used if the image has an alpha layer with values other than 0 and 100% but they are not close together. DXT5 takes the same amount of space but it interpolates the alpha layer, for smooth transitions between values.

Mipmaps

It is recommended to create the following images without mipmaps:

  • HUD images (cockpit, shield, armor, ships, gauges, ...)
  • Main menu images
  • Cargo images
  • Interface images

While this image types require mipmaps:

  • Unit textures
  • Cockpit mesh textures
  • Space backgrounds
  • Animation images
  • Planet textures

In case of doubt please ask one of the developers or on the forum.

Compression with nvcompress

You will need nVidia's free texture tool nvcompress to transform your original textures to optimized dds textures. Get the tool here: NVIDIA Texture Tools

The following applies to NVIDIA texture tools version 0.9.4. More recent versions exist.

Due to a bug in handling 1 pixel mipmaps in the original (0.9.4) version, you will be further required to patch the tools with safemode's patch. The patch can be obtained here: save nvidia-texture.patch file

Patch the texture tools, compile, and install them.

Transform your original texture using nvcompress using one of the recommended DXT1, DXT1a, DXT3, or DXT5 formats including or excluding mipmaps (option -nomips).

For DXT1 (opaque) images:

  • nvcompress -bc1 (-nomips) texture_original.png texture_dds.png

For DXT1a images with transparency:

  • nvcompress -bc1 -rgb (-nomips) texture_original.png texture_dds.png

For DXT3 images with transparency:

  • nvcompress -bc2 (-nomips) texture_original.png texture_dds.png

For DXT3 images with smooth transparency gradient:

  • nvcompress -bc3 (-nomips) texture_original.png texture_dds.png

Compression with Gimp dds plugin

Gimp plugin produces dds images with lower quality than that one produced by the nvcompress tool. It is recommended as an alternative method only.

Validation and Testing

Verify the optimized texture either by opening it with GIMP (with gimp-dds plugin installed) and making sure that all mipmap layers (e.g. 12 layers for 2048x2048 original image resolution) are contained in the file, or by checking it with:

  • nvddsinfo texture_dds.png

It is strongly recommended to actually test the texture or image in game before submitting.

Image Naming (Extension)

The extension for your image file will depend greatly on three things:

  • 1) the extension currently used in data for that image type
  • 2) the ability to change that without corrupting the data, engine code and python scripts
  • 3) future developments

Currently extensions range from png, through jpg, or bmp.

Artistic Image Quality

Committed textures are classified as:

  • DQ - Development Quality: textures with very low horizontal resolution and low degree of artistic quality
  • RQ - Release Quality: textures with at least medium horizontal resolution and medium to high degree of artistic quality
  • CQ - Cinematographic Quality: textures with high horizontal resolution and very high degree of artistic quality

Specific resolution requirements can be found on the development pages specific to each image type.

Committing to SVN

The subversion (svn) repository has two directories for graphics data:

  • \masters that holds the original hi-resolution textures plus optionally the source/project files that were used to create the textures
  • \data4.x that holds the optimized textures

See Also (References)

External:

Forum:


Author: pyramid