Fixing DXT Green Tint Compression
In the Source Engine, textures are stored using the Valve Texture Format (VTF), which can store image data in a great variety of formats. The most common and standard ones are the lossy and compression-based DXT1 (used for textures with no alpha channel) and DXT5 (used for textures with an alpha channel). Due to the technical nature of these format’s sampling methods, a slightly green-tinted output is generated whenever sampling colors from these formats. Usually, this altered result would merit no tampering. However, if a project requires both a texture and a modified version to be side by side, differences will inevitably become evident, calling for a workaround to be implemented.
A natural solution would be to store the texture using a different format, such as an uncompressed and, therefore, lossless one, like BGR888 or BGRA888. However, these formats will considerably increase file size, demanding for yet another workaround to be implemented.
- Open the original texture in the image editor of your choice.
- Create a blank layer with alpha channel support on top of the original texture.
- Bucket-fill the new layer with RGB 7 3 7 (HTML notation #070307).
- Copy the original texture and paste it into the alpha channel of the new layer.
- Set the layer mode to Legacy Addition (GIMP), Linear Dodge (Add) (Photoshop) or the equivalent addition-based blend mode of your editor.
- Flatten the image if the texture has no transparency. Otherwise, merge all visible layers.
- Export as TGA and convert to VTF using VTFEdit. For the image data format, use either DXT1 or DXT5, depending on your source material.
- For GIMP 2.10, the entire program was ported to the GEGL image processing library, which is based around linear RGB color space as opposed to gamma-corrected (perceptual) RGB color space, which modifies the behaviour of several blending modes. This is why switching blending modes from Normal to Legacy is required; for pre-2.10 backwards compatibility.