Using The FireFly Render Engine
This chapter describes the FireFly technology features and render settings:
The FireFly renderer includes a wealth of powerful features, all of which help to create beautiful, realistic renders in little time. Those aspects of FireFly that are configurable are described in the following section. The following features enhance FireFly’s performance and results:
- High Dynamic Range (HDR) Image Support for IBL: Poser supports both High Dynamic Range (HDR) and Low Dynamic Range
- HDR images are comparable to analog photo film, with regards to the amount of information stored in the image. HDR light probes have a significantly higher amount of information, but are much harder to produce.
- You can use LDR images with Image Based Lighting (IBL). LDR light probes are relatively easy to create, using a mirrored ball to capture the light information in a given environment. However, the amount of information captured is much less than with an HDR image, and therefore the quality of the light probe is lower. For more information about Image Based Lighting and light probes, see Diffuse Image-Based Lights (IBL).
There are a number of different ways to create HDR images. Several tutorials appear on the Internet for using Photoshop CS2 or later to create HDRI images. Some of them appear at http://www.photoshopgurus.com or http://www.photoshopcafe.com, for example.
- Occlusion Culling: FireFly ignores invisible scene elements while rendering, in order to improve render performance. Occlusion culling determines which scene elements have visible impacts on the scene, and which may be culled (ignored). FireFly runs occlusion culling calculations for both the object and shadow render passes, to determine whether each scene element (a) is visible within the scene, and (b) casts any visible shadows. Occlusion culling cannot be used in conjunction with raytracing, as raytracing calculations include all scene elements, visible or not.
- A scene element’s visibility or invisibility with regards to occlusion culling is not the same as the Visibility setting the Properties palette for that element. When unchecked, the Visibility property setting actually hides an object within the scene, so that the object is not included in any render calculations regardless of its placement within the scene. Occlusion culling calculations apply to items that are set to be visible within the scene, but are obscured from the camera’s perspective by other scene elements.
- Texture Filtering: Texture filtering improves the appearance of surfaces rendered using 2D image maps, giving you better quality images, and avoiding aliasing and other artifacts. Tiled texture loading uses texture filtering to reduce the time required for processing. Texture filtering can be configured for individual textures on the Image Map node in the Material room (see 2D Texture Nodes for more information).
Without Texture Filtering (top); With Texture Filtering (bottom).
- Tiled Texture Loading: Upon your first FireFly render Poser generates temporary files on the hard disk from the textures within the scene, and then selectively accesses them during render time. Poser also creates a cache in memory that contains the most recently used texture tiles. Tiled texture loading makes use of other features, such as texture filtering to reduce processing time. Depending upon your system’s resources, you may wish to increase the memory cache size to offset the amount of disk access required for tiled texture loading, as this feature may use a lot of hard disk space (potentially more than 1 GB). For information about increasing the memory cache size, see Render Preferences.
- Multi-threaded Rendering: The Multi-threaded Rendering feature takes advantage of the increased processing power of the multi-processor or multi-core computer systems that are now available. Using this feature, you can configure FireFly to render any number of separate threads simultaneously, which results in reduced render times for most renders. The number of threads can be specified in the General Preferences dialog (see Render Preferences for more information).
We recommend rendering your scene with as many threads (CPU cores) as your system possesses. This is the default preference after installing Poser. If you are unsatisfied with the resulting performance, or if the render fails to complete, then reduce the number of threads and/or maximum bucket size.
- Rendering in a Separate Process: By default, Poser runs the application and the FireFly render engine within a single process on the CPU. This means that both the application and the render engine share the maximum memory allotment given to a single process. Rendering in a separate process means that the render engine alone has access to that same maximum memory allotment, which can yield significant performance advantages for highly complex scenes, depending upon the memory configuration of your specific system. In addition, rendering in a separate process provides greater stability due to the compartmentalization of tasks, as well as allowing your system to manage memory more efficiently. However, rendering in a separate process does require more resource overhead for setting up the render. Therefore, if you are running primarily area renders or simple small renders, we recommend that you do not use this feature as the setup overhead will negate the performance benefits. However, for large complex renders, rendering in a separate process will definitely yield significant benefits. You can enable or disable this feature in the General Preferences dialog (see Render Preferences for more information).