ORM textures and how they work in 3 simple steps
Table of Contents
What is an ORM map and why is it needed?
ORM stands for occlusion/rough/metal and is a single bitmap which stores these three textures in its red/green/blue channels. This is an efficient way to store three grayscale textures since it only uses a single bitmap file. This speeds up loading and rendering in an interactive real-time renderer, where video memory is a tightly constrained resource.
Here's an example of a rendered model that makes use of PBR textures, including ORM maps:
The individual textures for the ORM maps are illustrated in the following:
Important terms:
- Material Realism: Physically based rendering (PBR) reproduces real-world materials accurately in digital rendering. ORM maps are a key component in PBR materials. These control how surfaces interact with lighting, including reflection, refraction, and absorption.
- Occlusion, Roughness, and Metalness: Occlusion simulates local soft shadows on a model, by mimicking real-world light distribution. Roughness determines how smooth or rough the surface is, how sharp or blurry reflections and refractions will be. Metalness controls whether a material is metallic or dielectric (non-metallic), which changes a material’s reflectivity.
- Packed Textures: ORM maps utilize texture-packing to improve loading times (how long it takes to upload a 3d model onto the GPU for rendering) and reduces how much memory is used by a material.
What does a typical ORM workflow consist of?
An ORM map is three textures combined into one! The red, green, and blue channels each store a single grayscale texture: ambient occlusion, roughness, and metalness. This kind of packed texture is optimized for interactive rendering in real-time 3D and XR applications.
Aspect of ORM maps | Why is it important? |
Three maps are stored in a single texture | Instead of three separate texture files, ORM uses a single file. This speeds up loading the model for real-time rendering and uses less video memory than three files. |
Each texture must be grayscale | Since the RGB channels are being used individually, each can only represent grayscale data. So, each of the three textures can only have gray values. |
Maps must be the same resolution | When packing three textures into the RGB channels, they all must be the same size, otherwise they cannot be combined into the same bitmap file. |
It is OK for channels to be empty, if not used by the material | If a material is all metal, for example, then it does not matter what is in the blue channel of the ORM texture, because the material can just use a single number instead. |
Each material needs its own ORM map | Ambient occlusion (AO) is baked from the geometry shape of the model, so each ORM needs a unique AO map. ORM maps cannot be reused by varied materials unless the models share the same shape and texture coordinates. |
Combining an ORM map in 3 simple steps
- Upload 3D model. Upload your 3D model to RapidPipeline, which supports PBR materials by default. If your materials include separate AO, rough, and/or metal maps, RapidPipeline will auto-detect them, and combine them on export. If you do not have an account yet, sign up for free.
- Launch optimization. Dial in your own target settings (polygon count, texture resolutions, baking settings, …) in a custom preset (option 1) OR choose a factory preset (option 2).
Example for using a factory preset: Choose the “Single-Item Mobile” preset to prepare your asset in a way that works well for most assets and mobile phones, for Web-based 3D and mobile AR. Select the models you want to optimize by checking them in the list and press the “Optimize Selected Models” button to start the optimization. - Download results. Download your resulting files for use in your own application. Typically, people will use .usdz and .glb files for delivering assets with ORM textures, which can be rendered realistically on the web, on mobile devices, and in AR/VR headsets. Your input files with separate occlusion/rough/metal textures are combined into packed ORM textures, but the original look is faithfully preserved, and assets are optimized for efficient delivery.
Learn more about recommended setup for PBR materials in the Khronos 3D Asset Creation Guidelines.
Meet the Author
Eric Chadwick
Senior 3D Technical Artist
Eric is a Senior 3D Technical Artist at DGG. He is a frequent Khronos Group contributor in the 3D Formats and 3D Commerce Working Groups, defining specifications and writing guidelines to streamline 3D asset creation for the retail industry. He has more than 20 years’ experience in real-time 3D content development for games, architectural rendering, and education; and is an administrator for the Polycount web community, the leading forum for 3D game artists to critique each other’s work and share creation techniques. Eric received a Bachelor’s degree in Fine Art from the Rhode Island School of Design with a concentration in illustration, collaborated with the Brown University School of Medicine on anatomy for artists, and studied in the European Honors Program in Rome.