The Sega Saturn is equipped with dual custom VDP chips for graphics processing. The VDP1 chip is primarily responsible for sprite generation. Polygon generation is accomplished through manipulation of the sprite engine. Texture mapping and Gouraud shading is also handled by the VDP1.
The VDP1 renders primitives to two 256 kB frame buffers that can be configured as 512x512x8 or 512x256x16 (Virtua Fighter 2 was the first game to use high resolution, at 60 frame/s on Consoles). Having two frame buffers allows double buffering of the display and provides more time for rendering. The active framebuffer is read out to the display by the VDP2, which can apply data from a coefficient table to modify the scanning process, for effects like rotation, scaling, and general distortion of the entire frame buffer as a single entity.
The SCU (system bus control unit) provides DMA across a dedicated bus commonly labeled as the "B-bus" that the VDP2 and VDP1 are connected to, allowing transfer of data from them to and from main memory. Keep note that transferring data from and to the same bus is prohibited by all 3 SCU DMA levels.
- Rendering engine for command tables: textured and non-textured polygons, untextured "polygons," "polylines," and lines along with command tables that controls the frame buffer.
- "Sprites" are textured polygons with specific rendering modes:
- Normal sprite (one point), shrunk/scaled sprite (two points), distorted sprite (four points)
- Other rendering modes:
- Overwrite (replace frame buffer contents)
- Shadow (underlying frame buffer pixels rewritten with 1/2 brightness, primitive not drawn)
- Half luminosity (primitive rendered with 1/2 brightness)
- Half transparency (primitive and underlying framebuffer pixels averaged together)
- Gouraud shading for RGB-format textures only
- Dual 256KB frame buffers
- Programmable frame buffer depth of 8 or 16 bits per pixel
- Automatic erase feature to clear framebuffer with single color
Some commonly quoted specifications are highly dependent on the rendering modes for the polygons and other factors that burden the system load:
- 200,000 texture-mapped polygons per second
- 500,000 flat-shaded polygons per second
- 60 frames of animation per second
In order to better understand the differences between the PS1 GPU and Saturn VDP1 rendering capabilities, here are some varying factors:
- The GPU has a 2 kB texture cache.
- The GPU has a unified 1 MB block of memory for the texture data and frame buffers. This allows for complex effects where the framebuffer is in turn applied as a texture again.
- The framebuffer portion of the GPU RAM must be manually erased.
- Commands are sent to the GPU via DMA, buffered in a FIFO, and executed in the order of being sent.
- The VDP1 has no texture cache.
- VDP1 memory is split: 512 kB for texture data / command lists, 256 kB for one framebuffer and 256 kB for another.
- The two frame buffers have a high-speed auto-erase feature.
- Commands are stored in a linked list in RAM, multiple lists can be stored, the list can be processed by the VDP1 without wasting a DMA channel.