Hasty Briefsbeta

Bilingual

Additive Blending on the Nintendo 64

14 hours ago
  • #Additive Blending
  • #Nintendo 64
  • #Graphics Programming
  • The PlayStation (PSX) supported additive blending using modes like src + dst, which allowed effects like explosions to look brighter by adding sprite colors to the framebuffer, with clamping to prevent overflow.
  • The Nintendo 64 (N64) had a flexible Color Combiner in its Reality Display Processor (RDP) for blending, but it lacked clamping, causing color values to wrap around and produce undesirable visual artifacts when additive blending was attempted.
  • To enable additive blending on the N64 without artifacts, a technique was developed: rendering to a 32-bit RGBA 8888 buffer with sprites at 1/8th intensity (using fog alpha), then converting to a 16-bit RGBA 5551 framebuffer with clamping, optimized via the RSP co-processor to run efficiently.
  • The conversion from 32-bit to 16-bit was initially slow on the CPU (~70ms per frame) but optimized with RSP vector instructions to ~3.1ms, using tools like RSPL (a C-like language) for modern N64 development without hand-writing assembly.
  • This approach allowed for additive blended effects like explosions on the N64, though it had performance trade-offs due to increased memory bandwidth from using a 32-bit buffer, with potential further optimizations like selective rendering or lower resolution for blended elements.