Indigo Image File Format Specification

As of Indigo 4.2

Background

String format:

uint32 len // num bytes in string. <= 1024
char string_bytes[len] // data

The string is a Unicode string with UTF-8 encoding.

Indigo Image (.IGI) specification

// IGI Header

uint32 MAGIC_NUMBER = 66613373
uint32 version // latest version is 9
double num_samples
int original_width
int original_height
int32 supersample_factor
double total_render_time_elapsed
uint32 last_rng_seed
string scene_path
string node_xml

// Followed by render channels:

uint32 version // current is 2
uint32 internal_width
uint32 internal_height
uint32 stride // number of float32s per pixel
uint32 region_data // 1 if region data is present, 0 otherwise.
uint32 num_channels

// For each channel:

// chan_type is one of:
// ChannelType_MainLayers = 0
// ChannelType_Alpha = 1
// ChannelType_NonBeauty = 2
// ChannelType_MatMasks = 3
// ChannelType_ObMasks = 4
// ChannelType_Beauty = 5
// ChannelType_Spectral = 6
uint32 chan_type

// channel_name is one of:
//
// ChannelType_MainLayers:
// as defined in scene file
//
// ChannelType_Alpha:
// "alpha"
//
// ChannelType_NonBeauty:
// "normals"
// "normals_pre_bump"
// "depth"
// "position"
// "material_id"
// "object_id"
// "direct_lighting"
//
// ChannelType_MatMasks: any string
//
// ChannelType_ObMasks: any string
//
// ChannelType_Beauty:
// "direct_lighting"
// "indirect_lighting"
// "specular_reflection_lighting"
// "refraction_lighting"
// "transmission_lighting"
// "emission_lighting"
// "participating_media_lighting"
// "sss_lighting"
//
// ChannelType_Spectral
// "spectral"
//
string channel_name
int32 offset // Offset in floats, counted over all enabled channels. -1 if the channel is not enabled/used. >= 0 if the channel is used.
int32 num_components // Number of float components in this channel. Will be either 1, 3 or 4.

// End for each channel

float image_data[internal_width * internal_height * stride] // image data, with render channels interleaved per-pixel.