The Post Image object has an important role in all post processing configurations: it allocates the image buffer, which other post effects modify. It also acts as a parent effect, having a number of child effects, which modify the parent's image buffer.
A post image can be configured by adding a set of suitable effects to its Active Effects list. The child effects can be added by drag & drop from the Available Objects list or by using the Add popup menu item. Effects can be removed from the Active Effects list by selecting them and using the Remove popup menu item. The child effects are rendered in the order they appear in the Active Effects list - sometimes this has importance.
The Channels tab of the post image property gadget contains a list of all installed channels. When you select a channel from the upper Channel list, the Storage field displays the data type, which is used for storing the channel values. Byte takes the smallest amount of memory space but is inaccurate. Float is the most memory hungry but very accurate. The most suitable data type depends on the channel - Byte is usually enough for storing the color, but never accurate enough for the distance channel and cannot represent a wide enough value range. The default types are suitable for most cases, but sometimes using higher accuracy is necessary (see the image flare documentation for an example of this).
Float data type usually gives fastest rendering times, because it is the render engine's native way of representing channel data. Use of other data types leads to data type conversions. However, due to high memory consumption, it is seldom possible to use the float data type for all channels.
For integer based data types (8 bit BYTE, 16 bit WORD, 32 bit INTEGER), the user can also define how floating point values are converted to the fixed point number form. The Norm value defines the conversion factor: integer value = float value*norm value. For example, for an usual byte based color channel, a suitable norm value is 255. Because this is also the largest value which 8 bits can represent, such a byte channel can only store float values between 0 - 1. Value -0.5 will be truncated to zero and 1.5 to 1. This is perfectly OK for the image color, but unsuitable for e.g. XYZ components of a surface normal vector.
Another related control is the Signed option. Turning it on makes it possible to store negative values to the channel.
All channels define convenenient defaults for these controls, so changing them is rarely necessary. Below are some examples:
The default norm value of a word based color channel is 4095. Because the largest value which a 16 bit unsigned word can store is 65535, the maximal signal which you can store to the channel is 65535/4095 = 16. In other words, this kind of channel chan store 16 times brighter values as the standard white signal (1,1,1). It is also 4095/255 = 16 times more accurate as a byte channel. Summary: of the extra 8 bits of a word compared to a byte, 4 bits are used for the higher precision and 4 bits for the wider value range.
If you wish to use a word channel to store the Z (distance) buffer and you know that the scene diameter is 100 meters, set the norm value to 65535/100 = 655. Then you do not need to rescale distance values at rendering time to prevent data overflows.
The suitable byte options for storing a surface normal are: Signed enabled, Norm value=127. X, Y and Z components of an unit vector run from -1.0 to 1.0, so the value range available must be split between negative and positive values. For example, you can store the bump normal needed for Global Illumination processing to a byte channel without noticeable loss of quality and save lots of memory.
You do not have to define which channels to include in a post image. The post image can find out which channels are used by child effects. It includes them automatically.
Post images can be used hierarchically. Each effect must be added to a post image, then the post image can be added to another post image to obtain the hierarchy. The example image shows a simple hierarchical post image configuration.
Both 'Main image' and 'Post Image' are post image objects. The sub image 'Post Image' allocates a new image buffer and glow effect is rendered into it. The VSL effect does some custom manipulations after that. The final step is star filter effect rendering into the main image.
If Initialize All option (see the channel tab image above) is set, the post image automatically reads the contents of all the channels being used by its child effects from the parent image. In other words, when the effect drawing of the sub post image starts, the situation is exactly the same as in the parent image. You can clear the Initialize All option and define manually which channels should be initialized in the beginning. Other channels will have zero contents. You can add channels to the Initialize Selected list by using the popup menu of the Channel list gadget. Removing channels happens by using the popup menu of the Initialize Selected gadget.
If the Output All option is set, all included channels are written to the parent image after sub effect rendering. To overrule this, clear the option and build a list of output channels to the Output Selected list.
Sometimes it is useful to clear the Initialize All option, but leave the initialization list empty. The effects will be drawn over a black background and the result can be, for example, added to the parent image. Anyway, it never makes sense to disable Output All and leave the output list empty - rendering effects without outputting the result somewhere just wastes rendering time.
The Scaling tab contains four values for scaling image data. Input scale X and Y rescale the incoming data, and Output Scale X and Y rescale the post processed data before outputting it further.
1. If both input scales are 2.0 and output scales are 0.5, the post image doubles the resolution before the post effects are executed. Since these input and output scales compensate each other (2.0 * 0.5 = 1), the scalings have no effect outside the post image in question.
2. If input scales of the top level post image are 1.0 and output scales are 0.5, also the ray tracing resolution is doubled. The resolution drops to half after post processing. This can be used as an antialiasing solution which covers all post effects. Ray tracing antialiasing level can be reduced correspondingly.
Note, that post images can be stacked hierarchically, and therefore you can change resolution between execution of each post effect.
The Recommended Use gadget tells how a post effect configuration should be applied: per box, per image, per field or per frame. The fifth alternative is Not Defined, which usually means that the effect can be applied per box or per image equally efficiently.
The usage recommendation provides information for the user, who is selecting a post effect configuration manually. Secondly, the automatic post effect selection feature at project loading uses the recommendation, when selecting the post effect configuration for each view window from a loaded project.