Chris Riley 4V98 Project Honours COSC - Year 4

::Winamp Raytracing Visualization Plugin


Featuring....

  • Shadows
  • Reflection
  • Refraction
  • Multiple lights (2)
  • Somewhat real-time animation (heh)

Click on a thumbnail to view a screenshot




System Requirements

  • Windows 2000/XP (maybe 98, but really.... who uses that)
  • REALLY FAST CPU - anything below a 2GHz P4 probably doesn't have a chance...
  • Winamp 5 (or above)

CLICK HERE TO DOWNLOAD THE PLUGIN - save it to c:\program files\winamp\plugins (usually...)

PLEASE NOTE: You might also need this file - the Visual C++ 7.1 runtime DLLs. If the plugin fails with some sort of "cannot find shared library MSVCP71.DLL" or similar error, extract this file into your C:\WINNT\SYSTEM32 directory, and you should be set.

Installation: Drop the plugin file into your Winamp plugin directory (typically C:\Program Files\Winamp\plugins). Once it's there, you should see it on the Visualization plugin list. Press CTRL-K to bring up the Viz plugin list.

Love it? Hate it? Don't care? Confused? Let me know... send mail to cr01ab at cosc. brocku. ca.


Notes, thoughts....

Screen Layout Description

The plugin consists entirely of spheres, as this is the only RT primitive with any hope of rendering in something resembling real-time. The sphere in the centre exhibits refraction, and changes its size with the volume of the music. Three spheres orbit the middle sphere, and a volume metre of sorts is displayed on the left and right side of the screen, using a stack of blue spheres. There are two lights in the scene, positioned on the positive z-axis (toward the viewer), one to the left, one to the right.

Why?

This plugin is not really practical, it was done more as an experiment, to see if it could in fact be done. So, can it be done? Yes, but the performance is far from stellar. On a 2.8GHz P4, the plugin is observed to get perhaps two or three frames per second. This certainly leaves something to be desired, although it is still somewhat amusing to watch. In ten years, it just might look great!

Adventures in Programming

The plugin code is based on the "framework" provided by the Winamp Plugin SDK (SVIS.C). Each frame is rendered at 1/4 the size of the Winamp Viz window, and stretched to fit. Rendering at the full viz window size is hopeless on a high-end P4. The original ray tracing engine (from COSC 4V98 assignment one) was modified in various ways, to aid with the Winamp integration. First, the raytracing calls were separated out into their own module (trace_module.cpp/.h) in order to use them from the plugin library file. Also, numerous code optimizations were implemented to extract every last bit of performance possible, without a total engine re-design. Wasteful, costly uses of heap-based objects were replaced by faster, reusable stack-based objects, needless vector normalization was eliminated, and various other minor mathematical optimizations were employed (like using squared norm instead or norm, where possible).



Special thanks - for providing test data ;) (in no particular order)

Ministry, Skinny Puppy, Underworld, Front Line Assembly, The Mars Volta, At The Drive-In, Sasha & John Digweed, Tool, The Pixies, A Perfect Circle, Slayer, The Crystal Method, The Prodigy, Massive Attack

Back to COSC 4V98 Gallery