home | support | tutorials & scripts



please login or register.


forget your password? click here.

Using Textures Efficiently


Textures are one of the most important components for realism, but it is important that users understand that larger textures bring with them increased memory consumption and rendering time. Nobody would ever consider wrapping an 8 inch birthday gift with 50 square yards of wrapping paper, but some users think nothing of using a 1024 x 1024 pixel image to map an object that may appear very tiny in a rendered scene.

Textures for RPC Content are automatically optimized by the RPC Plug-in. Depending on the location of RPC Content in a scene, textures are dynamically scaled to reduce memory consumption. This is just one more way that RPC Content makes life easier for the user. For Non-RPC textures you have to do the work. Following are some tips.

Rendering professionals all want realistic textures, but using too many pixels may result in adverse effects without improving the overall rendering quality. Rendering errors may include disappearing RPC objects, strange multi-colored artifacts and increased rendering times. Many of these memory errors can be eliminated by using textures wisely.

Below you will see an example of two different renderings. The renderings appear identical, but Image 1 requires approximately 4.2 MB of memory to render, while Image 2 requires only 66 Kb of memory. The difference comes from using correctly sized textures.

Image 1 (4.2 MB)

Image 2 (66 KB)

As you can see there is no visible difference between the two images, but I have saved 4 MB of memory just for this brick wall. In a larger scene where you are using hundreds of textures this technique can save you an incredible amount of memory.

In this simple scene I have created a wall that is 6 meters wide and 2 meters tall. To render the first image I used a 1024 x 1024 pixel texture that represents a 1 meter x 1 meter area. To make this image cover the entire wall I have tiled it 6 times along the width and twice along the height.

Test Rendering

When I analyze the rendered image in Photoshop I can see that my wall is 465 pixels wide (530 - 65), and 155 pixels tall (200 – 45). Since the texture is tiled 6 times in the width the rendered resolution of my texture is 77.5 (465 divided by 6). For the height the texture is only tiled twice (2 times) so the vertical resolution of my rendered texture is also 77.5 (155 divided by 2). This means that a 78 x 78 pixel texture will look just as good as a 1024 x 1024 pixel texture in this rendering.

Rendered Image Analysis

To generate Image 2, I went into Photoshop and scaled my brick texture to 128x128. I then created a new material in the material editor that used this smaller image and applied it to the wall.

Large Texture 1024 x 1024

Image was cropped to fit this web page.

Small Texture 128 x 128

Actual Size Shown.

It is not always necessary to use the full technique I described above. Often times a simple estimation will be good enough. If we are rendering 640x480 video, and the wall will fill most of the frame (640 pixels) and is tiled 6 times then 107 pixels (640 / 6) would be a large enough texture. But even estimating very conservatively and using a 256 x 256 pixel texture would only use 263 KB of memory compared to 4.2 MB for the full 1024 x 1024 image.

When selecting or resizing a texture always consider the geometry that it will be applied to. Objects that will render larger in the scene will require larger textures. Objects that will render smaller should use smaller textures.

People often concern themselves with the file size of a particular texture. What they should instead consider is the actual number of pixels. A bitmap file that is 3 Megabytes in file size, but only 512 x 200 pixels uses the same amount of memory during rendering as a 500 KB jpg file that has the same number of pixels.

Note: If you really want to know how we are calculating the memory usage it is (pixel height * pixel width * number of channels * 1.333). In our case the number of channels is always 3 (red, green, and blue), and the value 1.333 is the amount of extra memory required for Pyramidal filtering in Max. If you were using Summed Area filtering you should replace the 1.333 with 4.

Why RPC is Smarter

The development team at ArchVision had all of this in mind when they developed the RPC Plug-in. You may have noticed the RPC Preperation dialog, which appears before rendering each frame in a scene. During this phase, the RPC Plug-in optimizes the texture sizes for each RPC so that you get great looking renderings with maximum memory efficiency. An RPC that is a great distance from the camera will load a smaller texture, whereas an RPC very close to the camera will load the largest texture from the RPC to provide better render quality.

This is one more reason why RPC is a smarter choice than using traditional mapped texture techniques or costly high poly models. ArchVision's goal is to provide tools that make rendering easier and more efficent without you having to do a thing. Sit back and let the RPC Preperation dialog do all of the work.

For additional assistance using RPC Technology, please visit www.archvision.com or contact our live Support Team Monday-Friday 9am-5pm.

(859)252-3118 ext 103

Copyright 2005 ArchVision, Inc
shopping cart delivery methods your account return policy privacy policy
about archvision contact archvision join our team legal notices