Skip to main content

Materials and Textures

Learn how to manage materials, supported texture formats, and automatic PBR texture mapping in Sketchfab to optimize rendering performance on your 3D models

Written by Elaine

Sketchfab's viewer is based on PBR (Physically Based Rendering) methodology.

Materials

Sketchfab supports multiple materials and objects in your scene. Give each material a unique name because the 3D editor merges objects by material name. Avoid special characters when naming.

If possible, you should join every mesh that shares a material because it helps performance.

When uploading the Wavefront (.OBJ) format, the material library file (.MTL) should be included for best results.

Sketchfab supports a maximum of 100 materials. Learn more here.

Colors

If you are not using texture images, you can choose a color for any slot from the color picker.

See also Vertex Colors.

Textures

Textures are images mapped to the surface of your model. For details on shaders/texture slots, see Materials (PBR).

Importing

Upload textures with your model file or embed textures in the model file (e.g. .BLEND, .FBX). You can put image files in the same folder/directory as the model file, or a sub folder/directory. If your textures are properly referenced by the model file or use our naming conventions, they will be automatically applied to your model.

When using the Wavefront (.OBJ) format, the material library file (.MTL) should be included for best results.

If you need to add textures after uploading, you can use the texture manager or drag and drop images into their slots in the material editor.

Supported Formats

Different image formats can be used depending on whether you uploaded them together with the model file, or upload them in 3D Settings after the model is processed.

During upload:

.JPG, .PNG, .TIFF, .TGA, .DDS, .GIF, .BMP, .VTF

Anything that is not .JPG or .PNG is converted to .PNG. See Processing & Compression below.

In 3D Settings:

.JPG, .PNG, .TGA

.TGA is converted to .PNG.

The maximum supported file size per texture is 75MB and the maximum supported resolution is 8192px × 8192px. However, we recommend staying well below this limit whenever possible. Such large images use a lot of resources, and are usually overkill.

Sketchfab only supports RGB and Linear images. Using another color space such as CMYK can have unexpected results.

Processing & Compression

Textures are compressed to minimize model download times. We convert any image that is not .JPG or .PNG to .PNG. Then, we generate compressed versions of every texture. The format and level of compression depends on the image attributes and channel requirements: RGB, Luminance, or Alpha. We do our best to minimize file size without affecting visual quality.

We also generate multiple resolutions of each texture at every "power of 2" between 32×32 pixels and the original (up to 8192×8192). For example, if you upload a 1024×1024 texture, we will generate 32, 64, 128, 256, and 512 versions. Depending on your device, these are used in "LD" and "SD" modes in the viewer.

For performance reasons, non-"power of 2" textures will not be used; the viewer uses the closest, smaller version.

Textures are re-processed each time you change Material settings, with a small delay. This can take 10-15 minutes to complete. 3D Settings always uses full resolution, uncompressed textures.

Automatic PBR Mapping

Use our texture naming conventions to help us automatically choose settings and apply textures to the right shader slots. The format is "MaterialName_suffix.extension". For example, if you have a material named "Material1", you could name your textures like "Material1_diffuse.png", "Material1_metallic.png", etc.

Avoid material names with special characters, especially periods '.', underscores '_', and hyphens '-' because it can break the match.

Avoid material names with matching substrings, for example "handle" and "woodenhandle" in the same scene.

If the model has only one material, we will apply textures based on the shader name match regardless of the material's name or the position of the string in the name of the image file.

These are the strings we look for in the suffix: Diffuse / Albedo / Base Color ('diffuse', 'albedo', 'basecolor'), Metalness ('metalness', 'metallic', 'metal', 'm'), Specular ('specular', 'spec', 's'), Specular F0 ('specularf0', 'f0'), Roughness ('roughness', 'rough', 'r'), Glossiness ('glossiness', 'glossness', 'gloss', 'g', 'glossy'), AO ('ambient occlusion', 'ao', 'occlusion', 'lightmap', 'diffuseintensity'), Cavity ('cavity'), Normal Map ('normal', 'nrm', 'normalmap'), Bump Map ('bump', 'bumpmap', 'heightmap'), Emission ('emission', 'emit', 'emissive'), Opacity ('transparency', 'transparent', 'opacity', 'mask', 'alpha'), Subsurface Scattering ('scattering', 'subsurface'), Subsurface Translucency ('translucency', 'thickness'), Clear Coat ('clearcoat'), Clear Coat Roughness ('clearcoat roughness'), Clear Coat Normal Map ('clearcoat normal map').

Troubleshooting

  • Make sure you include the image files with the upload, and the .MTL file when uploading .OBJ.

  • Make sure the path and file names linking the textures are correct.

  • Try uploading your textures manually in 3D settings.

  • If applying a texture does nothing, or seems to apply a solid color, this can indicate a UV-mapping problem.

  • 3D scans and models with baked lighting often look best in Shadeless mode.

  • Avoid spaces and special characters in your material, texture, and file names. Name everything with ASCII / UTF-8 compliant characters.

  • Avoid image sizes bigger than 8192×8192 pixels.

  • Avoid image file sizes bigger than 10MB.

  • Avoid color spaces like CMYK.

For performance tips, see Viewer Performance.

Filtering

There are four options for texture filtering:

  • Trilinear: Usually the best choice, especially for large textures.

  • Nearest (mipmap): Can be useful for block textures like Minecraft blocks and pixel art with very small textures

  • Bilinear: Can be useful for masking and hiding texture seams

  • Nearest: Legacy, use Nearest (mipmap) instead.

Color Formats

Depending on the shader slot you're working with, you'll see different color encoding options under Format: RGB (Red, Green, and Blue color channels), Alpha (Alpha transparency channel only), Luminance (R channel only).

By choosing the appropriate format, texture opacity can be encoded either as an alpha mask or by grayscale levels.

UV Channels

If you have more than one UV channel on a single material, you will see an additional interface option to switch between them.

UV Offset and Tiling

UV Offset and Tiling are not currently supported.

Texture Wrap Modes

Texture UV coordinates (u, v) map to surface ST coordinates (s, t). UV coordinate values can only range from (0, 0) to (1, 1), so there are several ways to wrap a surface with a texture. Mapping options can be changed with Wrap S and Wrap T: Repeat (the texture is tiled, 2.6 → 0.6), Mirror (the texture is mirrored, 1.2 → 0.8), Clamp (texture pixels outside the [0, 1] range will be clamped to the border of the texture).

3rd Party Rendering Engines

Proprietary renderers/shaders like V-Ray, Mental Ray, Corona, Arnold, etc. should have their lighting and textures baked for best results. The 3ds Max Exporter, for example, is able to bake materials and upload to Sketchfab automatically.

We encourage KeyShot users to use version 10+ to export glTF.

Did this answer your question?