If someone writes Windows code to open a 1024*768 window, draw a screen sized quad with that shader, and feed glColor4ubv a dword timer per frame then someone can kkapture it. I can't do this as my Windows is broken at the moment.

havoc, just imagine the camera moving through the screenshot. You can even make whoooooshing sounds too and then it's more advanced than the real thing!

I added some parameters to it while I was seeing how the shader worked, and figured I might as well put them in. Brief description:
- Interactive mode - turn it off to see the original. When it's on you can play with stuff. When it's off, only speed works.
- Speed/zoom - obvious/zooms (or stretches on Z) the surface.
- Mouse control: in the view area, hold the left button and move the mouse to move around (handy for exploring those funky tunnels :) and hold the right button and move it to look around.

hoild: curses! Does it crash with an error or anything? If it does, find the crash report in the console and mail it to me (psonice at gmail.com). What GPU is it? Perhaps I can get access to a similar system at work.

psonice: No segfault, no crashdump, doesn't even output anything to stdout/stderr when I directly launch the binary from terminal. Takes an awfully long "bouncey-bouncey" in the Dock until it opens a window, and then it doesn't render any 3D in the window just keeps hogging my system at 100% CPU load.

parapete: Bounces, opens window, doesnt draw anything, pink noise soundtrack using the fan :-). MacBook air. No idea if it should run though but glview says I have shader language support up to 1.2. Hmmm.

Hallo. Any problems re. the Mac port should be directed at psonice as I have no idea about this platform. I will try to get the C and assembly source online soon so people can try to probe problems themselves, but I just haven't found the time to clean it up yet, sorry.

auld: the air has gma950 I think, which probably won't run the shader. If it did, it'd be slow as hell anyway ;)

Hoild: a 6200 would be painfully slow running this anyway. I'd try and run it on something with a reasonable gpu as the shader is pretty heavy (my radeon 2600 is passable so I guess an x1600 or gf7600 is a reasonable minimum).

hitch/pete: Integer overflow is undefined (not defined to wrap-around as hitch seem to suggest). Here's the exact wording of the spec, including the reasoning: "It is not expected that underlying hardware has full support for a wide range of integer operations. Because of their intended (limited) purpose, integers are limited to 16 bits of precision, plus a sign representation in both the vertex and fragment languages. An OpenGL Shading Language implementation may convert integers to floats to operate on them. An implementation is allowed to use more than 16 bits of precision to manipulate integers. Hence, there is no portable wrapping behavior. Shaders that overflow the 16 bits of precision
may not be portable."
Apparently ATI wraps the integer-constant 65536 before passing it to the float-vector constructor, and this is as far as I can tell OK by the spec. I guess the fix is to use "65536." (with the dot - as hitch suggested). I hope this clears things up a bit.