Part 2 - Render & Conversion

If you are starting this tutorial here you will need to download the textures and the result of the previous section here.

Render Using Unprocessed Textures

Now that the scene is complete, you are ready to render.

When textures are used the log displays statistics from the OpenImageIO ImageCache.

Your stats will be different as it's dependent on the power of your machine. Take a note of your stats to use as a comparison later.

Render Time - 00:00:43

File I/O time : 4m 10.4s

Peak cache memory : 394.9 MB

Auto-mipmap

You will notice that there is a significant delay before the render starts. This is because Auto-mipmap is enabled by default. If a texture map file is not natively mipmapped (like the ones we are currently using), enabling this option will trigger the automatic generation of a mipmap that will be stored in memory for the duration of the render. Only the most recently used tiles are kept in memory, in a texture cache of default size 1024 MB. This mipmap generation increases render time, especially for scenes with many high-resolution textures.

So it is faster but let's see what effect converting the textures will have.

Convert Textures With MakeTX

Textures will be converted with maketx, a command-line utility which is part of OpenImage IO.

maketx -v --oiio wood-flooring-041_d.jpg -o wood-flooring-041_d.tx

The -v flag is verbose, to output the status messages. The flag --oiio will generate .tx files optimized for Arnold that can render even faster by forcing the tile size to be optimal for OpenImageIO (64x64). It also stores channels interleaved (RGBARGBA...) making them faster to read and enables constant color detection: if the image is a constant color it will convert it to a tiny single color .tx file. -o must come before the output file.

Swap Textures

While we could go through all the image nodes and update the textures, there is a quicker way. Open the Render Settings Window, under Textures enable Use Existing .tx Textures.

Even though the unprocessed textures are still specified in the shader, with this parameter enabled Arnold will search for the same filename but with a .tx extension.

Render again, and it should be obvious the render is much faster. Take a look at the log for the statistics.

Compared to the original render, the render time is now less than half. File I/O is virtually nothing and the cache memory used is 9% of what it was. Well, that should convince you it's worth taking a little more time, in the beginning, to convert textures as it will save a lot of render time.

Many thanks to Arroway Textures for giving us permission to use their texture maps.