The code can be downloaded here.
Probably the best space saving trick in the code is:
This allows the time to be passed into the shader without either using glGetProcAddress calls for the extensions or using glColor3f which is smarter but still not as good. So long as t is bigger than 1 (it will be as GetTickCount is a millisecond counter from boot time of the PC) the screen will be drawn and the value of the vertex can be used for the timer.
The recursive raytracer is no use to anyone outside this code as the maths is corrupted to give a more detailed image and smaller bytes. However, Pohar found a trick worth mentioning. The nested loops in the fragment shader both use i as the variable (rather than say i and j). This allows crinkler to really go to work and compress this code down. Its legal in shaders and, I'm told, C too.
One other byte saving trick I haven't seen anywhere else is I have no background test in the code when rays do not intersect objects. Normally this would be an if and some calculation to assign colour for the background. Instead, I place the scene inside a sphere so I know the ray will always hit one object. This also adds a lot of visual complexity to the scene.
There are pragma statements like:
scattered through the code. These are to assist crinkler as it may reorder the code more, saving here, 6 bytes. These are placed just before data and just before every function and the main entry point.