Cyclone graphics system
back to home page
 
Cyclone is an OpenGL graphics system I am programming. I intend to develop it into a graphically updated version of a simple, old style game such as a space shooter. The graphics system's focus is lighting. It utilizes programmable graphics hardware to render realtime shadows and per-pixel lighting effects. Check out these screenshots to see its progress and its features (the newest updates are at the top).
 
   
 
This version runs in window mode, and displays a stereoscopic image that you can view with any pair of red-blue glasses.

 
 
   
 
I recently made an overhaul to the inner workings of the program. It now renders in shader order by sorting each object into a list defined by its respective shader. The new back-end also has data structures in place to facilitate a console variable system. Lights have a finite fall-off radius, so that later I can optimize rendering by culling geometry outside of a light's influence.

 
 
   
 
I'm really into stereoscopic stuff, so I figured out how to adjust the camera frustum to simulate the left and right eyes. Use red-blue glasses to see these images in 3D.

 
 
   
 
I went back to the spinning squares scene, but aligned them vertically this time. I also combined the gray light with the blue and orange lights from before.

 
 
   
 
This spaceship is another OBJ file created in Blender. This could be the basic shape of a ship in the game, but it will look much better in the final version (it will have textures, at the least).

 
 
   
 
I added the ability to import Wavefront OBJ files, or at least ones that contained a single manifold made of triangles. I created this tree trunk in Blender to test the importing code. Notice in the fourth image that the camera is inside the shadow. The depth-pass shadow method does not render shadows correctly when the camera is inside a shadow. I had to add an extra rendering pass to correct the depth-pass error.

 
 
   
 
For a while I played with specular lighting using a fragment program. Apparently this is Blinn's method.

 
 
   
 
Added per-pixel lighting to smoothen the color across triangles. The light casting onto the squares looks round and much more realistic than before. I'm using assembly-style OpenGL vertex and fragment programs for all of the shading in Cyclone.

 
 
   
 
Before I took these first screenshots, I wanted Cyclone to be an environment that a user could navigate, and have real-time shadows. The shadows are created using the depth-pass stencil buffer method. From the beginning, I used an OpenGL vertex program to extrude the shadow volumes on the video card. At this point, lighting is calculated per-vertex by the OpenGL fixed-function pipeline. The squares in the scene spin in a mathematical pattern.