Write your own Winamp music visualizer with the Visualization Mega SDK (VMS)!

VMS is a simple, feature-rich, and well-documented code framework on which you can build your own music visualization plug-in. Uses DirectX 8 and Microsoft Visual C++ 6.0.


Graphics / Programming Articles and Resources:

Unicode Made Easy [Visual Studio .NET 2003]
Try loading a filename into your program with funky foreign characters in it - it will probably break. Believe it or not, it's pretty easy to fix! Here's your guide.

Source Code for Smooth Image Resampling [Visual C/C++]
Some fairly-well-optimized code to do a high-quality resample (smooth resize) of 32bpp RGB images.

Timing in Win32
Getting accurate timing information in Windows can be a pain. timeGetTime only has a resolution of 1 millisecond, at best. This article explains how to get reliable, microsecond-resolution time readings, as well as get super-accurate framerate throttling.

Metaballs
Otherwise known as 'blobs'. Learn how to render these strange shapes.

Raytracing Fractals
An attempt to partially demystify the way fractals work, and to illustrate how to use them to create cool 3D shapes.


( Note: some of the stuff below this point is a bit old by now... )


How to Learn Graphics Programming
I've fielded the question many times in emails, so I thought I'd write up a good answer and post it here.

Software rendering in a DX8 environment (8/2002)
Code illustrating how to render custom images, using the CPU, in a DX8 environment (by using system-memory textures). This is good for creating procedural textures, as well as just creating cool 2D graphics to be shown fullscreen (such as 2D/3D blobs, raytraced scenes, fractals, scientific visualization, and so on). The code also easily handles various color formats for you, such as 8-8-8, 5-6-5, 5-5-5, and 4-4-4.

Using the Pentium MMX Unit (Geiss used as example program)
Unbelievable optimization power is here, when it's applicable.

Using the Pentium Floating-Point Unit (FPU)
A bit unorganized, but informative nonetheless. Only for super-nerds; the truth is that regular compilers tend to optimize FPU usage very well.

Video and other misc. routines for in-line x86 Assembly in (cringe) DOS Real Mode.
Not for use in a Windows environment (unless in a DOS box)!
-putpixel, getpixel, getsubpixel (highly unoptimized! beware!)
-waitkey, set13, settext, wait_refresh (waits for video retrace)
-setRGB, getRGB (palette functions)
-buffer_paste, buffer_clear, buffer_copy (using virtual screens)


Some of my older old raytraced images:

    Images       generated in C
    Animations generated in C
    Images       generated with Imagine
    Animations generated with Imagine



Little Graphics Demos (old)

Old executables, from the 100-200 MHz days, nothing too special; although the original (DOS) version of Geiss (called FX) is here and is pretty cool!

DOS Lava Lamp prototype [download]. Make sure you try hitting SPACEBAR a few times while watching this one! Size: below 100k. (1999)

Miscellaneous realtime stuff (more eye candy) [download]. Size: 500k. Updated: 2/98. Includes example output of my flat- and gourand-shaded polygon engines, a Julia fractal that changes in realtime, the earliest (DOS) version of GEISS (but it's called FX), and some other misc. things from long past that serve as decent eye candy.

PCGC game engine [download]. Sort of a cross between Qbert, Populous, and Doom. Not too impressive. =) Size: below 100k. For OSU's PC Game Club. (1998)

Javascript Julia Fractal Generator. Runs in your web browser; set the constants and watch your browser render a julia fractal... ANSI/ASCII enthusiasts will enjoy this one. (1997)


[ back ]