ZoomFader

Version 2.1 — © 1998-2000 Christian Cohnen

The ZoomFader applet creates a continuously zooming, glowing feedback effect. Each frame, the entire screen is scaled slightly inward using fixed-point arithmetic, then random bright dots are scattered across the surface and the logo image is composited on top. A convolution filter — the same shift-based kernel used in ParticleFire — smooths everything into soft, trailing light streaks that fade as they zoom toward the center.

The logo orbits on a sinus path by default but snaps to the mouse pointer when you hover over the canvas. The zoom factor itself oscillates over time, and you can add randomness to it for a more organic feel. With the add parameter enabled, the logo blends additively instead of overwriting — useful for glowing effects.

The color palette is derived from the brightest color in the logo image, creating a gradient ramp from black to peak brightness. Like many demoscene feedback effects from the Atari ST and Amiga era, the trick is that a simple zoom plus blur, repeated every frame, produces surprisingly complex and mesmerizing visuals from very little code.

Note: This effect was originally a Java applet (1998). It has been transpiled to plain JavaScript / Canvas in 2026. The minified script is zoomfader.min.js (2.8 kB). Configuration is passed via a global ZOOMFADER_CFG object before the script tag.

Features

Parameters

NameTypeDescriptionDefaultRequired
logostringID of hidden <img> element — provides the logo graphic and color palette"img1"no
zoomint (4–100)Zoom factor per frame — lower values zoom faster70no
zoomRandintRange added to zoom — oscillates over time25no
dotsintNumber of random bright dots per frame (star effect)40no
addboolEnables additive blending for the logofalseno
linkURLLink target when canvas is clickednullno
targetWindowstringTarget window for link (_blank, _parent, etc.)"_self"no

Code Example

<canvas id="game" width="200" height="150"></canvas>
<img id="img1" src="zoom_red.gif" style="display:none">
<script>var ZOOMFADER_CFG = { zoom: 90, zoomRand: 0 };</script>
<script src="zoomfader.min.js"></script>

Original Applet Code

<applet archive="ZoomFader.jar"
  code="pixelfx.ZoomFader.class" width="200" height="150">
  <param name="logo" value="zoom_red.gif">
  <param name="zoom" value="90">
  <param name="zoomRand" value="0">
  <param name="dots" value="0">
  <param name="link" value="https://www.chriscohnen.de">
</applet>

Version History