The Umbra optimization process assumes a basic Physically Based Rendering (PBR) model and provides the necessary texture channels and functionality. The provided renderers in turn implement similar but slightly varying PBR models using the textures provided by the optimization system. The optimization, and most of the renderers, support diffuse, normal, metal and smoothness maps.
Umbra provides several renderer integrations, based on the same models (Disney diffuse, GGX Specular), with slight differences in their approximations and available parameters. While some of the listed model contain more parameters, Umbra uses the same set of maps on all of them.
While the provided renderers use very similar models, API users are free to use the available texture maps in other ways, including custom material models.
Umbra supports basic diffuse, normal, metal and smoothness maps. Diffuse maps are RGB(A) textures with values in the range [0,1] for non-HDR modes and [0, FLT_MAX] for HDR mode. The alpha channel is only used for transparent objects but may be present even if unused. Normal maps are generic tangent space normal maps stored in the [0, 1] range and remapped to [-1,1] when used. Output normal maps use an implicit Z component (
z = sqrt(1 - x*x - y*y)). Metal and smoothness maps are stored in the same texture, both in the [0,1] range.
Optimization accepts any subset of the supported texture maps, and outputs a user-controlled set that is not necessarily limited to the ones input. Input and output maps follow the same semantics and are generally produced by downsampling the input maps. Diffuse maps can be produced from vertex colors even if no diffuse map is provided as input. Likewise normal maps can be generated from geometry normals, and will account for both geometry normals and any input normal maps. Umbra attempts to preserve distribution of normal samples in smoothness maps, when possible. All maps are resampled and compressed (see texture options in Parameters).
Umbra also allows baking (physically incorrect) global illumination into the diffuse texture. This behaviour can be toggled using 'ao-enabled' in Parameters. When enabled, Umbra computes an approximate single bounce ambient lighting solution. This lighting includes only omnidirectional soft shadows (ambient occlusion), with limited color contribution from any occluding surfaces. Any occlusion further than 'ao-distance' from a surface will be ignored. The computed lighting value is premultiplied with the diffuse term, resulting in a reasonable approximation if no further lighting is applied at runtime.