Skip to content

PBR Textures

PBR Textures should follow some guidelines. Important note : Using VTFedit ( for example ) for converting textures does not allow you to use 16b/c textures, at all! When converting a 16b/c texture, vtf edit will convert it to 8b/c first and then convert that.

For all Textures

If you use compressed Ported Formats ( .vtf image formats ), export your textures as the next power of 2 and then clamp downwards. This will make the end result look less compressed ( speaking from experience )

$BaseTexture

BaseColor of the material. Export Format ( when export from Substance for example ) should be :

  • 8 bits/channel source format ( Just use .tif 16b/c for everything )

  • sRGB ( non-linear ) sRGB8 is the default format for BaseColor in Substance Painter.

Ported Format ( when imported to .vtf )

  • sRGB flag when importing

  • Preferably format that is 8 b/c ( Don't use formats such as rgba16161616f, rgba16161616 ) Other formats will just waste Disk-space, basically.

$NormalTexture / $BumpMap

Also known as Normal Map. Export Format ( when export from Substance for example ) should be :

  • Just do whatever, but export as 16b/c. ( just use .tif at 16b/c )

Ported Format ( when imported to .vtf )

  • DirectX Normal Map Directions. ( Turns out that Textures.com Normals are OpenGL Format ) If your format is OpenGL, just flip the green channel ( 1.0f - Green Channel, or er ctrl + i in Photoshop ) If you don't know what any of this means, you should learn what it means via search engine here

  • VTF Normal Map flag. This does some wacky stuff regarding mip-maps, just do it, don't question it. Normal maps should be flagged as such?? Big surprise!

  • Preferably use BGR565, unless alpha channel is needed or the file is too large...

$MRAOTexture

  • Red = Metallic
  • Green = Roughness
  • Blue = Ambient Occlusion

Export Format ( when export from Substance for example ) should be :

  • 8 or 16 bits/channel source format ( Just use .tif 16b/c for everything )

Ported Format ( when imported to .vtf )

  • Preferably not compressed. But when compressed, BGR565

Suggestions :

  • Use BGR565 for Rough Materials with low/no Metallic That is because in this format, the Channel including Roughness will have least compression and it will make the file the smallest, whilst still looking very HQ

  • Preferably don't use Formats with preserved Alpha Channels ( RGBA8888 or DXT5 )

$EmissionTexture

Additive Self-Illumination of the material. If you want resulting bloom, the $BaseTexture must be non-black.

Export Format ( when export from Substance for example ) should be :

  • 8 bits/channel source format ( Just use .tif 16b/c for everything )
  • sRGB ( non-linear ) sRGB8 is the default format for Emissive Substance Painter.

Ported Format ( when imported to .vtf )

  • sRGB flag when importing
  • Preferably format that is 8 b/c, and compressed ( DXT5 ) ( Don't use formats such as rgba16161616f, rgba16161616 ) Other formats will just waste Disk-space, basically.

$SSSTEXTURE

Thickness Map and Color Texture for Models.

  • Red = Thickness
  • Green = Red Channel of desired SSS-Color
  • Blue = Green Channel of desired SSS-Color
  • Alpha = Blue Channel of desired SSS-Color

Now hold on a second, this might look a bit odd, why is Thickness on the Red Channel instead of Alpha? Glad you asked!

Using advanced statistical analysis on the probability of Blue Color in Sub-Surface Scattering. ( We tried to come up with things that are blue and have Subsurface Scattering ) We determined that... Blue is not all that likely... I mean... Blue Mushrooms, Butterflies... Duh?! By saying RIP to alpha ( blue color in an SSS-Texture ), you may be able to use compressed formats such as BGR565 or preferably DXT1! This was done as a diskspace saving measure. If your SSS Texture only has Thickness and Blue color, you may use a format such as IA88 Just make sure to set $SSSTint to "[0 0 1]" otherwise it will interpret thickness for Red and Green Color.

Export Format ( when export from Substance for example ) should be :

  • 16 bits/channel source format ( Just use .tif 16b/c for everything )
  • Linear Data

This is very important, because the blue channel of the color is in the alpha channel. Alpha Channels will not get converted from Gamma to Linear, so sRGB is out of the question.

Ported Format ( when imported to .vtf )

  • DXT1 or BGR565 ( if less compression is desired ) for when there is no blue
  • DXT5 for when there is blue
  • Preferably format that is 8 b/c, and compressed such as DXT1 - DXT5 or BGR565. Don't use formats such as rgba16161616f, rgba16161616. Other formats will just waste Disk-space.

$BentNormal

Bent Normal Map. Export Format ( when export from Substance or Marmoset ) should be :

  • Tangent Space Normal Map. ( This can be done via Substance or Marmoset Toolbag )

  • Linear Data

  • Just use .tif, hope you learned that by now

  • If you can somehow include usual Normal Map data in this, don't. ( Do tell us that its possible? )

Ported Format ( when imported to .vtf )

  • BGR565, or higher res DXT1

  • Flag as Normal Map...

$PropertiesTexture

Wetness/Porosity Masking Texture, that also includes mask and roughness from the $VectorLayerTexture.

Red  = Wetness Mask
Green = Porosity Mask
Blue = VectorLayer Mask
Alpha = VectorLayer Roughness

Export Format ( when export from Substance or Marmoset ) should be :

  • Linear Data

Ported Format ( when imported to .vtf )

  • BGR565, or higher res DXT1 when no VectorLayer Data.

  • RGBA8888 when VectorLayer Data and Wetness/Porosity Data

  • IA88 when VectorLayer Data but no Wetness/Porosity Data

$VectorLayerTexture

RGB  = VectorLayer Color
Alpha = VectorLayer AO

Export Format ( when export from Substance or Marmoset ) should be :

  • 8 bits/channel source format ( Just use .tif 16b/c for everything )

  • sRGB ( non-linear )

Ported Format ( when imported to .vtf )

  • sRGB flag when importing

  • Preferably format that is 8 b/c, and compressed ( DXT5 ) ( Don't use formats such as rgba16161616f, rgba16161616 ) Other formats will just waste Disk-space, basically.