RPF File Documentation


Summary

An RPF file in imaging is a Rich Pixel Format render image: a multi-channel raster picture that stores ordinary RGBA colour alongside extra per-pixel data such as Z-depth, coverage, surface normals and object/material IDs. It descends from Wavefront’s RLA format and is read by 3ds Max, After Effects and Combustion for compositing. Extension .rpf, MIME application/octet-stream. (A game archive also uses .rpf.)

Technical details

FeatureValue
Full nameRich Pixel Format
File extension.rpf
MIME typeapplication/octet-stream (no registered image type)
Format typeRaster render image, multi-channel (G-buffer)
DeveloperSoftimage / Avid; format popularised and maintained by Autodesk in 3ds Max
LineageExtends Wavefront RLA (Run-Length encoded, type A)
PurposeRender output for post-production compositing (depth, relighting, masking)
Colour channelsRGBA (red, green, blue, alpha)
Extra G-buffer channelsZ-depth, coverage, surface normals, object ID, material ID, UV coordinates, non-clamped (HDR) colour, node render ID, velocity/motion
CompressionRun-length encoding (RLE), per scanline
Bit depth8-bit and 16-bit integer; 32-bit floating point per channel (HDR)
Floating-point colourYes — supports unclamped high-dynamic-range values
Scanline accessEach row compressed independently (random row access)
Read/written byAutodesk 3ds Max, Adobe After Effects, Autodesk Combustion
Related extensions.rla, .exr, .tga, .tiff
SuccessorOpenEXR (.exr) for multi-channel HDR render output
Byte orderBinary; header and scanline tables (offsets not publicly specified)
Extension collision.rpf is also Rockstar’s RAGE Package File (a game archive), an unrelated format
Referencehelp.autodesk.com (3ds Max RPF Files)
Structure at a glance

An RPF is a binary render image built on the .rla (Wavefront Run-Length encoded, type A) scanline model. A header records the image dimensions and declares which optional channels are present; each scanline is then stored as a run-length-encoded row, so any single row can be read without decompressing the whole image. Beyond the base RGBA colour, an RPF carries per-pixel G-buffer channels — Z-depth, coverage, surface normals, object ID, material ID, UV and non-clamped floating-point colour — that compositors read for depth blur, relighting and masking. The exact header byte offsets are not published by Autodesk, so they are not listed here.

What is an RPF file?

RPF stands for Rich Pixel Format. It is a raster render image: a grid of pixels where each pixel holds not just a colour but a bundle of extra data produced by a 3D renderer. The format originated in Softimage’s rendering tools and was carried forward by Autodesk, which built RPF support into 3ds Max as the successor to the older Wavefront RLA format. Where an ordinary image records only red, green, blue and alpha, an RPF records those plus per-pixel Z-depth, coverage, surface normals, object and material identifiers, texture coordinates and more.

Those extra layers are the whole point. They let a compositor change a rendered image after the fact: blur by distance, add fog, relight a surface, or recolour one object, without going back to the 3D scene and re-rendering. Autodesk 3ds Max writes .rpf, and Adobe After Effects and Autodesk Combustion read it to drive their depth and channel effects. The extension has no registered image MIME type, so it is served as application/octet-stream.

One warning up front. A second, unrelated format also uses .rpf: Rockstar’s RAGE Package File, a game-data archive found inside Grand Theft Auto and Red Dead Redemption. If your .rpf came out of a game folder rather than a render, it is that archive, not the image described here, and it needs a tool such as OpenIV. The rest of this page is about the Rich Pixel Format image.

The RLA lineage: where Rich Pixel Format comes from

RPF is a direct extension of RLA, the Wavefront image format whose name is usually read as “Run-Length encoded, type A”. Wavefront Technologies created RLA in the late 1980s and 1990s as the render output for its film and broadcast visual-effects pipeline, and it was designed from the start to carry more than colour. An RLA file already held a depth channel and other auxiliary data so that a compositor (Wavefront’s Composer, later others) could do depth compositing and re-lighting without a re-render.

Rich Pixel Format keeps RLA’s file mechanics — the same header idea, the same run-length scanline body — and widens the set of channels it can store. Autodesk’s own developer notes are candid about the heritage: internally the 3ds Max reader and writer still refer to RLA structures even when handling RPF, because RPF was grafted onto the existing RLA code as a superset. In practice that means a program that understands RPF can generally read RLA too, and the two are documented and discussed together. If you think of RLA as the base and RPF as the extended edition, you have the relationship right.

Both formats support 8-bit and 16-bit integer channels and 32-bit floating-point channels, which is what makes them usable for high-dynamic-range render output rather than just display-ready 8-bit pictures.

The extra channels: RPF as a G-buffer on disk

The term for “a set of per-pixel attributes beyond colour” is a G-buffer (geometry buffer). A renderer computes these values anyway while shading a frame, and RPF is essentially a way to freeze that G-buffer to a file so a compositor can use it later. When you set 3ds Max to render to RPF, a dialog lets you tick which channels to include; each one you enable is stored as an additional per-pixel layer.

The channels commonly available in an RPF include:

ChannelWhat it stores
Colour (RGB)The rendered beauty pass, red/green/blue per pixel
AlphaOpacity / matte for the pixel
Z-depthDistance from camera to the surface at that pixel
CoverageHow much of the pixel the front object covers (for clean edge/anti-alias compositing)
Object IDAn integer identifying which object the pixel belongs to
Material ID (material effects)An integer identifying the material, for per-material masks
UV coordinatesThe surface texture coordinates at the pixel
NormalThe surface normal vector, used for relighting
Non-clamped colourThe unclamped, high-dynamic-range colour value
Node render IDAn identifier for the specific scene node
VelocityPer-pixel motion, used for motion-blur and vector effects

Not every renderer writes every channel. Autodesk notes, for example, that the Quicksilver hardware renderer in 3ds Max can only emit a subset (Z-depth, material ID and object ID), whereas a full software render can populate the rest. The floating-point non-clamped colour channel matters because ordinary 8-bit output throws away any brightness above pure white; keeping the unclamped values lets a compositor recover highlights and exposure later.

Run-length scanline encoding

The “RL” in RLA describes how the pixels are packed. RPF inherits it: the image is stored one scanline (row) at a time, and each scanline is compressed independently with run-length encoding. Run-length encoding replaces a run of identical values with a count plus the value, so large flat areas — a plain background, a solid matte, a constant depth region — shrink dramatically while noisy detail is stored closer to raw.

Compressing each row on its own has a practical benefit beyond size: a reader can jump to and decode a single scanline without unpacking the rows above it. That per-row independence is why the format uses a table of scanline offsets after its header, so the decoder can seek to row n directly. Because RPF is a lossless run-length scheme rather than a frequency transform like JPEG, the stored channel values are exact, which is essential when those values are depth or IDs that later drive a mask — a “nearly right” object ID would put the wrong pixels in the wrong mask.

Autodesk does not publish the exact byte offsets of the RPF header and channel tables, and this page will not invent them. What is verifiable is the model: a header declaring dimensions and which channels are present, followed by run-length-encoded scanlines carrying those channels.

The depth compositing workflow

The reason an artist renders to RPF instead of a flat image is the post-render freedom it buys. Once the frame is in After Effects or Combustion, the stored channels become inputs to effects.

With the Z-depth channel, a compositor can add atmospheric fog or depth-of-field blur that respects the scene: distant pixels get more haze or more blur, near pixels stay sharp, all decided from the per-pixel distance rather than a hand-painted mask. After Effects exposes this through its 3D Channel effects (Depth of Field, Fog 3D, Depth Matte) which read exactly these RPF/RLA channels. With object ID or material ID, the artist can isolate one object or one material and colour-correct only it, because the ID channel is effectively a ready-made selection mask. The normal channel supports limited relighting, letting the compositor push apparent light direction without re-rendering geometry. Coverage keeps edges clean when these operations composite one object over another.

All of this happens in seconds in a compositor, versus minutes or hours to re-render a 3D frame, which is why multi-channel render images became standard in film and broadcast pipelines. The TGA and TIFF images an artist might also export hold only colour and alpha; the depth and ID passes are what set RPF and RLA apart.

Why OpenEXR replaced RPF

RPF solved the multi-channel problem for its era, but it has been largely superseded by OpenEXR (extension .exr), released by Industrial Light & Magic in 2003. OpenEXR does the same job — store colour plus arbitrary named channels at high dynamic range — but with a more open and flexible design. Its channels are named strings rather than a fixed enumerated set, so a pipeline can invent new passes (specular, diffuse, sub-surface, cryptomatte IDs and countless others) without the format needing to know about them in advance. It offers several compression options, native 16-bit “half” float storage, tiled and multi-part files, and a published, permissively licensed specification with a reference library.

Because OpenEXR is an open standard with broad support across every modern renderer and compositor, it became the default deep-compositing format, and RPF and RLA are now mostly encountered on legacy projects or older 3ds Max output. The concept an artist learned with RPF — render your G-buffer to disk, composite from its channels — carried straight over to EXR; only the container changed.

The .rpf name collision with the RAGE archive

Because file extensions are only three or four letters, collisions happen, and .rpf has a notable one. Rockstar Games’ RAGE engine (the technology behind Grand Theft Auto IV and V, Red Dead Redemption 1 and 2, and Max Payne 3) stores its game assets in RAGE Package File archives that also use .rpf. Those files are not images at all: they are proprietary, versioned, mostly AES-encrypted archives (with magic tags like RPF7 for GTA V) that bundle a game’s models, textures, audio and scripts, and they are opened with modding tools such as OpenIV or CodeWalker.

The two formats share nothing but four letters. A quick way to tell them apart: a Rich Pixel Format image comes out of a 3D render and opens in 3ds Max or After Effects; a RAGE Package File comes out of a game installation folder (names like update.rpf) and will simply fail to open as an image. If a generic image viewer refuses your file and it lives beside a game, you have the archive, not the render image, and you should look up the RAGE Package File instead.

References