Plasma effect

Last updated

The plasma effect is a computer-based visual effect animated in real-time. It uses cycles of changing colours warped in various ways to give an illusion of liquid, organic movement.

Contents

A still screenshot of a typical plasma effect. Plasma effect.jpg
A still screenshot of a typical plasma effect.
Animated color cycling feature as in Fractint -PLASMA-ColorCycling.Gif
Animated color cycling feature as in Fractint

Plasma is the name of a VGA graphics demo created by Bret Mulvey in 1988 and released on CompuServe. It uses a diamond-square algorithm to generate a 2D pattern, and then cycles the colors using hardware palette in its 256-color mode.

Plasma was picked up by demo coders for their demos where the effect was heavily used, especially in the early 1990s. The effect was particularly common on the Amiga where it could be implemented very efficiently with its display hardware features. Plasma can also be implemented easily in software rendering by using sinus tables and pseudocolor palettes, and it has also been the first true demo effect for many beginning PC democoders.

The fractal software Fractint also incorporates an algorithm known as "plasma", which, when combined with the color cycling feature of the software, can provide a result which resembles a typical plasma effect used in demos. The technical basis, however, is completely different, and a color cycling plasma is somewhat less dynamic than a demo plasma.

Similar effects can be implemented on modern GPUs using pixel shaders.

Synopsis

A plasma effect rendered in ANSI art by the AAlib library. AAlib-gradient.png
A plasma effect rendered in ANSI art by the AAlib library.

As there are many "hacked" approaches for implementing a plasma effect, this outline of an algorithm will just describe the theoretical basis for the effect. In order to achieve a sufficiently fast and good-looking real-time implementation (especially on the limited hardware available at the time this effect was at the height of its popularity in the 1990s), one would often do "non-correct" approximations to this algorithm. This, however, can often be done without noticeable visual differences.

This algorithm is given in two dimensions, but could easily be adopted to any number of dimensions or any number of color channels.

Let be a multi-frequency noise function of two variables (e.g., a Perlin noise function). Let each color component at the pixel be a linear function of the expression . Increasing the value of the constant tends to increase the steepness of the color gradients in the image.

See also

Diamond-square algorithm is the fractal used by the original Plasma demo, and is now often called the plasma fractal which was the name given to it in Fractint.

Related Research Articles

<span class="mw-page-title-main">Mandelbrot set</span> Fractal named after mathematician Benoit Mandelbrot

The Mandelbrot set is the set of complex numbers for which the function does not diverge to infinity when iterated from , i.e., for which the sequence , , etc., remains bounded in absolute value.

<span class="mw-page-title-main">2D computer graphics</span> Computer-based generation of digital images

2D computer graphics is the computer-based generation of digital images—mostly from two-dimensional models and by techniques specific to them. It may refer to the branch of computer science that comprises such techniques or to the models themselves.

In digital signal processing, spatial anti-aliasing is a technique for minimizing the distortion artifacts (aliasing) when representing a high-resolution image at a lower resolution. Anti-aliasing is used in digital photography, computer graphics, digital audio, and many other applications.

<span class="mw-page-title-main">Perlin noise</span> Type of gradient noise in computer graphics

Perlin noise is a type of gradient noise developed by Ken Perlin in 1983. It has many uses, including but not limited to: procedurally generating terrain, applying pseudo-random changes to a variable, and assisting in the creation of image textures. It is most commonly implemented in two, three, or four dimensions, but can be defined for any number of dimensions.

<span class="mw-page-title-main">Canny edge detector</span> Image edge detection algorithm

The Canny edge detector is an edge detection operator that uses a multi-stage algorithm to detect a wide range of edges in images. It was developed by John F. Canny in 1986. Canny also produced a computational theory of edge detection explaining why the technique works.

<span class="mw-page-title-main">Iterated function system</span>

In mathematics, iterated function systems (IFSs) are a method of constructing fractals; the resulting fractals are often self-similar. IFS fractals are more related to set theory than fractal geometry. They were introduced in 1981.

<span class="mw-page-title-main">Fractal flame</span>

Fractal flames are a member of the iterated function system class of fractals created by Scott Draves in 1992. Draves' open-source code was later ported into Adobe After Effects graphics software and translated into the Apophysis fractal flame editor.

<span class="mw-page-title-main">Dither</span> Noise that reduces quantization error

Dither is an intentionally applied form of noise used to randomize quantization error, preventing large-scale patterns such as color banding in images. Dither is routinely used in processing of both digital audio and video data, and is often one of the last stages of mastering audio to a CD.

<span class="mw-page-title-main">Gaussian blur</span> Type of image blur produced by a Gaussian function

In image processing, a Gaussian blur is the result of blurring an image by a Gaussian function.

<span class="mw-page-title-main">Floyd–Steinberg dithering</span> Image dithering algorithm

Floyd–Steinberg dithering is an image dithering algorithm first published in 1976 by Robert W. Floyd and Louis Steinberg. It is commonly used by image manipulation software, for example when an image is converted into GIF format that is restricted to a maximum of 256 colors.

<span class="mw-page-title-main">Hilbert curve</span> Space-filling curve

The Hilbert curve is a continuous fractal space-filling curve first described by the German mathematician David Hilbert in 1891, as a variant of the space-filling Peano curves discovered by Giuseppe Peano in 1890.

<span class="mw-page-title-main">Newton fractal</span> Boundary set in the complex plane

The Newton fractal is a boundary set in the complex plane which is characterized by Newton's method applied to a fixed polynomial p(Z) ∈ ℂ[Z] or transcendental function. It is the Julia set of the meromorphic function zzp(z)/p′(z) which is given by Newton's method. When there are no attractive cycles (of order greater than 1), it divides the complex plane into regions Gk, each of which is associated with a root ζk of the polynomial, k = 1, …, deg(p). In this way the Newton fractal is similar to the Mandelbrot set, and like other fractals it exhibits an intricate appearance arising from a simple description. It is relevant to numerical analysis because it shows that (outside the region of quadratic convergence) the Newton method can be very sensitive to its choice of start point.

<span class="mw-page-title-main">Optical transfer function</span> Function that specifies how different spatial frequencies are captured by an optical system

The optical transfer function (OTF) of an optical system such as a camera, microscope, human eye, or projector specifies how different spatial frequencies are captured or transmitted. It is used by optical engineers to describe how the optics project light from the object or scene onto a photographic film, detector array, retina, screen, or simply the next item in the optical transmission chain. A variant, the modulation transfer function (MTF), neglects phase effects, but is equivalent to the OTF in many situations.

<span class="mw-page-title-main">Histogram equalization</span> Method in image processing of contrast adjustment using the images histogram

Histogram equalization is a method in image processing of contrast adjustment using the image's histogram.

<span class="mw-page-title-main">Simplex noise</span> Construction for n-dimensional noise functions

Simplex noise is the result of an n-dimensional noise function comparable to Perlin noise but with fewer directional artifacts and, in higher dimensions, a lower computational overhead. Ken Perlin designed the algorithm in 2001 to address the limitations of his classic noise function, especially in higher dimensions.

<span class="mw-page-title-main">Domain coloring</span> Technique for visualizing complex functions

In complex analysis, domain coloring or a color wheel graph is a technique for visualizing complex functions by assigning a color to each point of the complex plane. By assigning points on the complex plane to different colors and brightness, domain coloring allows for a function from the complex plane to itself — whose graph would normally require four space dimensions — to be easily represented and understood. This provides insight to the fluidity of complex functions and shows natural geometric extensions of real functions.

<span class="mw-page-title-main">Ordered dithering</span> Image dithering algorithm

Ordered dithering is an image dithering algorithm. It is commonly used to display a continuous image on a display of smaller color depth. For example, Microsoft Windows uses it in 16-color graphics modes. The algorithm is characterized by noticeable crosshatch patterns in the result.

<span class="mw-page-title-main">Fractal-generating software</span>

Fractal-generating software is any type of graphics software that generates images of fractals. There are many fractal generating programs available, both free and commercial. Mobile apps are available to play or tinker with fractals. Some programmers create fractal software for themselves because of the novelty and because of the challenge in understanding the related mathematics. The generation of fractals has led to some very large problems for pure mathematics.

<span class="mw-page-title-main">Box counting</span> Fractal analysis technique

Box counting is a method of gathering data for analyzing complex patterns by breaking a dataset, object, image, etc. into smaller and smaller pieces, typically "box"-shaped, and analyzing the pieces at each smaller scale. The essence of the process has been compared to zooming in or out using optical or computer based methods to examine how observations of detail change with scale. In box counting, however, rather than changing the magnification or resolution of a lens, the investigator changes the size of the element used to inspect the object or pattern. Computer based box counting algorithms have been applied to patterns in 1-, 2-, and 3-dimensional spaces. The technique is usually implemented in software for use on patterns extracted from digital media, although the fundamental method can be used to investigate some patterns physically. The technique arose out of and is used in fractal analysis. It also has application in related fields such as lacunarity and multifractal analysis.

<span class="mw-page-title-main">Plotting algorithms for the Mandelbrot set</span> Algorithms and methods of plotting the Mandelbrot set on a computing device

There are many programs and algorithms used to plot the Mandelbrot set and other fractals, some of which are described in fractal-generating software. These programs use a variety of algorithms to determine the color of individual pixels efficiently.