ANDRES REINOT
home     art gallery     code gallery     blog    
©2005 Andres Reinot
Code Gallery

Here are some of my cooler graphics demos and examples of my programming work. Everything here is written in C++ using OpenGL. Please excuse any broken links, the VRAC file server has just recently disowned me.

G a m e s

Treefort Wars

Treefort Wars is a real-time strategy game with water balloons and squirt guns. The object of the game is to start a club with other neighborhood kids, design and build a treefort, and wage a water-war against rival clubs.

Treefort Wars was developed by a group of students, including me, for a game design class. The group consisted of 4 artists and 5 programmers. We designed the game concept and implemented a prototype within 2 months for submission to the Independent Games Festival (IGF) Student Showcase.

Treefort Wars was accepted into the IGF and exhibited at the 2004 Game Developers' Conference (GDC) as one of 10 student entries from around the world to receive this top honor. And most importantly, at the GDC Will Wright, the man behind Sim City, gave us props saying: "[Treefort Wars] is very approachable."

I helped design the game and developed the graphics engine using OpenGL. The engine features hardware shaders using Cg and cel-shading, as well as a basic particle system.

Rhino

Rhino is also a game designed and developed for the same game design class as Treefort Wars. Rhino was actually worked on by many members of the Treefort Wars team, including me, and was our second submission to the IGF Student Showcase.

Rhino is a PC game about an orbital maintenance ship with the duty to protect a space station from asteroids and dangerous debris. The game controls are freeform, frictionless space flight designed for a Playstation 2 style gamepad, though keyboard controls are available also.

I was the lead programmer for this project and helped a bit with the art as well. The game uses the Open Dynamics Engine (ODE) for physics and an OpenGL engine that I wrote called Pronto. ODE integration is done through an open-source library I helped develop called Open Physics Abstraction Layer (OPAL).

The graphics coolness featured in this game is extensive. Rhino has per-pixel lighting using normalmaps generated from geometry, specular maps, glow maps, a bloom effect for glowing objects, infinite camera projection to get rid of those pesky clipping planes, and multiple levels of shader complexity for slower computers and older graphics cards. Graphics configurations are auto-detected but can also be changed manually.

more

Metropolis

Metropolis was a semester project for a software engineering class. I worked on it together with 3 other programmers, with my friend Jeff Russell and I providing the art.

The game is a sort of RPG with turn-based combat, similar to Fallout. You play the role of a pimp wandering a run-down coastal city killing your evil-clone-pimps.

Though it does not feature a lot in terms of gameplay, Metropolis does have several technical features such as a tile-based level editor, an infinite hex-grid world, path-finding through the world, hardware accelerated key-framed character animation, and other shader effects using the Cg shading language.

I wrote the OpenGL rendering engine and some of the game core. I also modeled some of the various city pieces and wrote the ocean shore effect.

Connect 4

Connect 4 was a final project for a programming class. It was written in Visual Basic of all things and all the graphics are pre-rendered. I like it still because it has great ambient music and a sleek style.

I worked on this project with Evan Rothmayer who deserves most of the programming credit. I did the art and design of it, as well as some of the VB programming.

more






D e m o s

High Dynamic Range Lighting

This demo shows off floating-point texture support in Pronto, my game engine and latest pet project. The environment map is a floating-point high dynamic range (HDR) cubemap I got from Paul Debevec's site.

The gyroscope is made of reflective and partially reflective materials and a certain exposure threshold is given to the glow effect that blooms off hilights.

Here are some videos of it in action (divx compressed):

black | blue | obsidian

What is HDR lighting? - In a regular, low dynamic range picture both a 100W bulb and the sun may appear as white pixels. In actuality the sun is millions of times brighter and an accurate environment map needs to capture this fact. A dark and dull object might not reflect much of the 100W bulb's light but the reflection of the sun may still appear bright and white. What's great about floating-point textures is that pixel values "brighter" than white can be stored, so an accurate environment map can be captured and used.


Spider

This is a real-time focal blur demo I wrote for my own amusement. The spider scene and it's depth buffer are rendered to textures and redrawn to the screen. Every pixel is blurred based on it's depth value and distance from the camera. The result is the effect of a camera with a very narrow field of focus, where distant and nearby objects become increasingly blurry.

Its a very neat effect, though the blurring is a bit costly, especially since it has to be done at full resolution.

more

Japanese Garden

The garden was my final project for an introduction to OpenGL class. The user flies on a spline-based camera path through a japanese house and garden. The demo features all the basics: models, textures, sound, etc. The lighting was all baked in 3D Studio Max, and I used a couple of libraries to load textures and sound.

I later converted this demo to VR Juggler and it was one of the demos exhibited at SIGGRAPH 2003 at the Virtual Reality Applications Center booth.

Clouds

I wrote this demo over a weekend with Jeff Russell. It shows a technique for rendering realistic clouds with billboarded sprites. It emulates light scattering inside the cloud, and light emitted by a source behind the clouds can reach the eye. This can usually be seen naturally when a thin cloud is in front of the moon or sun, and the thinner edges of the cloud appear to glow.

A normalmap texture on the sprite is used to get dynamic lighting on the surface of the clouds and a transmissivity map is used to modulate how much light comes through the clouds defining which parts of the cloud are thick and which are thin. An ARB fragment program does the transmissivity and lighting calculation.

more

Speaker

This is a small real-time application I was hired to write for a video promoting the Iowa State University's Human Computer Interactions program. I was given some music, a general theme of rhythm and vibrations, and I put this demo together in an afternoon.



Raytracer

What kind of a graphics programmer would I be if I had not written my own raytracer? This was for an assignment in my advanced computer graphics class. It features the usual spheres, cones, cylinders, infinite planes, and I also threw in some basic triangle and mesh rendering with oct trees.

For materials it has colors reflections, refractions, and combinations thereof with various falloffs including Fresnel falloff.

It also has limited random super-sampling and high dynamic range lighting. In fact the pictures it renders out are floating point images so the exposure of the render can be adjusted in real-time even after the image has finished rendering.

download the app here.

more

Depth Sprites

This is not much more than a shader I wrote in RenderMonkey, but it's cool looking so I put it up here. Depth sprites are billboarded quads with a grayscale texture for offsetting the depth buffer so that flat sprites appear to have shape and volume. The sprites can then intersect each other or other geometry and not look flat, as demonstrated by this ball of sphere sprites. Since there is no geometry involved, tons of perfect spheres can be drawn all at once. Here the sprites also have a normalmap for dynamic lighting and environment mapping.

Here is another picture of it in action.

Roxor

Roxor was a final project for my Computational Economics class. It is a graphical state machine editor for designing AI agents for the Iterative Prisoners' Dilemma (IPD) problem.

The tool allows users to design state machines with logic-based transitions, save and load them from file, and pit them against each other in a simulation of the IPD game.

Roxor was written in Python using pyOpenGL and wxPython over a period of two weeks by Evan Rothmayer and I.

I have yet to get py2exe working so I don't have a win32 executable of it, but I intend to put a demo of it up sometime.

more






W o r k

Virtual Cell

The Virtual Cell is my current project at the Virtual Reality Applications Center (VRAC) of Iowa State University.

The Virtual Cell is an educational tool designed to aid teachers to take their biology students through a tour of a plant cell and see first-hand what events and reactions take place where. This is a glimpse from the inside of a Chloroplast where light is harvested into energy.

I have been working on this project since Fall 2003 with the aid of a Biology professor here at ISU. All geometry is modeled in 3D Studio Max from various micrographs and diagrams. The application itself is rendered by OpenGL and the OpenSG scenegraph, running on the VR Juggler kernel.

Ashes to Ashes

Ashes to Ashes was my first project at VRAC in 2002. It is an art piece in memorial of the September 11th attack. Ashes to Ashes consists of several illustrated stories told by survivors and eye-witnesses of the tragedy.

I developed much of the art for this project and did some programming as well. I developed a particle system and an animated cloud scheme, but most of my effort went into modeling and concept art.

This project was exhibited at the Brunier Gallery, at IEEE Super Computing 2002, and at SIGGRAPH 2003.

Here are some more images:

123 | 4