Demo effect

From Wikipedia, the free encyclopedia

A still screenshot of a typical plasma effect.
A still screenshot of a typical plasma effect.

Demo effects are computer-based real-time visual effects found in demos created by the demoscene.

The main purpose of demo effects in demos is to show off the skills of the programmer. Because of this, demo coders have often attempted to create new effects whose technical basis cannot be easily figured out by fellow programmers.

Sometimes, particularly in the case of severely limited platforms such as the Commodore 64, a demo effect may make the target machine do things that are supposedly beyond its capabilities. The ability to creatively overcome major technical limitations is greatly appreciated among demosceners.

Modern demos are not as focused to effects as the demos of 1980s and 1990s. Effects are rarely stand-alone content elements anymore, and their role in programmer showcase has diminished, particularly in PC demos. As for today, PC demosceners are more likely to demonstrate their programming skills with procedural content generation or 3D engine features than with superior visual effects.

Contents

[edit] Hardware considerations

There are demos written for many different devices that vary considerably in their graphical features and data processing capabilities. The variability in hardware also reflects in types of effects invented for each platform as well as in the methods used in the implementation.

The demoscene took off on home computers such as the Commodore 64 and the Amiga, which had relatively advanced and very "hackable" graphics chips. For this reason, most "old school" demo effects were based on the creative exploitation of the features of particular video chips. A lot of effort was put into the reverse-engineering of the hardware in order to find undocumented possibilities usable for new effects.

The IBM PC compatibles of the 1990s, however, used to lack many of the special video chip features typical for the home computers but compensated this with a greater general-purpose computing power. The possibility of advanced hardware trickery was also limited by the great variability of PC hardware. Because of these reasons, the PC democoders of the DOS era preferred to focus on pixel-level software rendering algorithms.

Democoders have often looked for challenge and respect by "porting" effects from one platform to another. For example, during the "golden age" of the Amiga demos, many well-known Amiga effects were remade with Atari ST, Commodore 64 and PC, all of which were considered inferior in the key features required in the effects in question. Since the mid-1990s, when the PC had become a major platform, demos for the Amiga and the C-64 started to feature PC-like "pixel effects" as well.

[edit] Early history

The earliest computer programs resembling demo effects predate the demoscene for several decades. Perhaps the earliest example of these so-called display hacks is a program called Bouncing Ball on the Whirlwind computer in the early 1950s. Another famous display hack, munching squares, was originally created on the PDP-1 in ca. 1962.

[edit] "Old school" effects

Raster bars in an intro by Replicants.
Raster bars in an intro by Replicants.

These effects were typical in the 1980s and the early 1990s and were first implemented on either the Commodore 64 or the Amiga:

  • Raster bars, also called copper bars on the Amiga.
  • Scrollers of various kinds.
  • Moving sprites, with the competition usually focused on the number of visible sprites per frame.
  • Starfields, such as parallax-scrolling and perspective starfields.
  • Smooth horizontal waving of graphics images in a per-scanline basis
  • Shadebobs
  • Infinite bobs
  • Plasma effect
  • Kefrens bars
  • Moire patterns, particularly circles
  • Text zoomers
  • Simple rotating 3D objects rendered in dots, lines or filled polygons.

[edit] Chunky-pixel effects

Effects based on software rendering into chunky-pixel framebuffers were typical in the mid and late 1990s and were usually first implemented on the PC:

  • Effects based on static screen-to-texture lookup tables
    • Texture-mapped tunnels and other objects rotating around their axis of symmetry
    • Wobblers, rotators and other similar effects for 2D images
    • Objects that reflect or refract underlying bitmap images
  • Texture-mapped tunnel with freely moving camera, typically based on realtime raytracing
  • Rotozoomer
  • Mandelbrot zoomer
  • Fire effect and other effects based on 2D filters and feedback
  • Heightfield landscape (often called "voxel landscape")
  • 2D bump mapping
  • Metaballs

[edit] 3D rendering

3D rendering from Second Reality by Future Crew.
3D rendering from Second Reality by Future Crew.

3D computer graphics has been featured in demos since the late 1980s. Nowadays, a general-purpose 3D engine is an integral part of most new demos.

In the late 1980s and early 1990s, rotating 3D objects were simply considered effects of their own. Rather than general-purpose 3D algorithms, democoders often used special-purpose tricks highly optimized for the rotation and rendering of a particular object such as a cube or a sphere. When maximizing the number of 3D points per frame, it was often decided to leave the individual dots unconnected in the rendering.

To a casual viewer, many demo effects look like something attainable by a general-purpose 3D engine. However, classic effects with an apparent 3D look often have no real-time 3D calculation whatsoever. For example, static screen-to-texture look-up tables can be used with symmetrical 3D objects that rotate around their axis of symmetry.

Before the advent of mass-marketed 3D acceleration hardware, democoders often focused on lighting and shading techniques in software 3D engines, including Gouraud shading, Phong shading, texture mapping, bump mapping, environment mapping, radiosity and even real-time ray tracing.

General-purpose 3D engines are very seldom called "effects", although the rendered scenes often contain something that can be regarded as such.

[edit] See also