Old NeHe Projects

Acid Burn II


Being the huge Atari fan that I am... It was only a matter of time before I ported one of my favorite Atari ST(e) demos over the the PC. I hope you guys enjoy the port as much as I enjoyed making it. Coding the demos was not all that hard. Unpacking the original .exe to get the fonts, images and sound was brutal! Sound was found by playing through the entire program until I heard what sounded like music. I found the graphics by using a modified version of my Atari 8bit rom viewer. Once the audio was found, it was ripped, cleaned up and resampled. The original song was composed on the fly using different samples (many parts repeated). This version is one long sample with the repeating parts already mixed in. The audio quality is MUCH better in this version. The size of this demo has been reduced from 2.14megs to 693k. Some people had said there were stray pixels over top of the scroll text. I think the problem has been fixed (hard to tell, because I never saw the problem before). Most important... the text in the scroller now bends, just like the original demo! Greets to -An Cool- and the rest of the Carebears... Atari Forever!!!

Features:
  • Pixel Perfect Graphics...?
  • Audio Converted, Cleaned Up, Rebuilt.
  • Funky Scrolling Text & Flashing Colors!
Download: acid_burn_2.zip

Box-In


Another fun filled game by J.D. Casten. This game is not nearly as complex as Escape From Epsilon but it's definitely fun! Try to trap the bad guy by pushing blocks around the screen. Sounds easy, but it's definitely not! The bad guy can move at angles, and easily squeezes through cracks. Hope someone finds this game entertaining... took about 30 minutes to convert from Atari Basic to OpenGL for Windows (Visual C++). F1 - Toggle Fullscreen
F3 - Select Level
F4 - Start Game Greets to J.D. Casten Wherever you are... P.S. Some video cards break the tiles for some reason (lines appear between tiles). Atari Forever!!!

Features:
  • Animation
  • Sound Effects
  • Custom Plot and Drawto Routines
Download: box-in.zip

OpenGL Calendar


Had to stay up late and needed something to kill the time. Coded this in about 20 minutes. It's a simple conversion of a Java calendar I wrote for my old web page way back in 1991. Lighting definitely makes a difference when the calendar is spinning. Without it you can barely tell the letters are 3D. Use the Up / Down / Left / Right arrow keys to spin it around. Like I said... Nothing more than a time waster. I should probably convert it to a screensaver.

Features:
  • 3D Comic Font
  • Simple Lighting
  • Grabbing The Current Date
  • Keyboard Interaction
Download: calendar.zip

Christmas 2000


Christmas was one of my favorite projects. It was almost Christmas day, I had already written a Halloween demo, but had nothing on my site to do with Christmas. So, I started browsing the net for ideas. While browsing I came across a 3D model of a cabin. One winter I rented a cabin in Jasper Provincial Park (Alberta) for the weekend. The view from our cabin loft was the most incredible view ever. An endless ice covered lake and lots of snow. Just beautiful!

Immediately my mind went into over drive. I started with the big field of snow, added the insanely detailed cabin (piece by piece), and finally I added the falling snow. The candy canes are just eye candy {grin}. After coding the demo it still needed something. I added day to night, and a very cool soundtrack. Who doesn't like "Holly Jolly Christmas"!?! Voila a Christmas demo just in time for Christmas! Experiment with code. If you find you're stumped or stressed out, take a break. Browse the net or leave your computer for a while. I've come up with most my ideas by looking around me. Taking a break from the code every now and then is almost like a recharge. Burning out on code is no fun... I know :)

Features:
  • MP3 Soundtrack
  • Complex Models
  • Cool Blended Falling Snow
  • Moving Camera (Tilts Up/Down, Etc)
Download: christmas_2000.zip

Color


Color is a small demo that rotates through all the colors of the rainbow. The color cycling is so gradual, you barely notice it happening. The Wavy pattern gradually changes as well. I wrote this demo after coding a similar ASP demo featuring color cycling with calculations done on the fly. Of course the GL version looks much nicer :)

Features:
  • Smooth Cycling Colors
  • Color Calculation On The Fly (No Precalculations)
  • Nice Wavy Line Pattern That Gradually Changes
Download: color.zip

Colors


Colors is a mini demo. I have always been a huge fan of the demo scene and wanted to see how much work goes into writing a demo, and whether or not I had enough creativity to write a mini demo of my own. Colors is both eye candy, and a wonderful way to show off some of the cool things that can be done in OpenGL. The models used in this demo were designed by my brother Sean Molofee ( Kismet ), and a friend of ours Jeff Carlson ( Leper Tomato ). I designed the graphics and textures, and Rymix wrote the music. Unfortunately I don't know Rymix, so I am unable to thank him for writing such a cool song. Without it, the demo wouldn't be the same. I think the song compliments the effects quite nicely! This demo was written in roughly 1 week, a few hours of coding each day. I hope this demo not only peaks your interest in OpenGL, but inspires you to create demos and effects of your own!

Features:
  • Animation Synchronized To Music
  • Blending Of Multiple Colors And 3D Objects
  • Complex 3D Models Demonstrating Environment Mapping
  • Rolling Textures, Movement Based On Object Direction And More!
Download: colors.zip

Cubes


I received an email from someone asking how to eliminate the jaggies around cubes placed closely together. Although I wasn't able to eliminate the problem completely, I was able to reduce the jaggies considerably. A combination of blending and modifying the depth testing. It's important to note that the jaggies are only visible when lighting is enabled. As usual, while coding this project, I got carried away and threw in a few keys to make things more exciting. 1 and 2 toggle blending modes. W toggles wireframe mode. L enables and disables lighting and S causes the cubes to spin. This demo is nothing more than eye candy. A few minutes worth of coding. If you've read through the first 12 tutorials, this effect to should be easy to recreate on your own.

Features:
  • Display Lists
  • Keyboard Interaction
  • Color Material / Lighting / Blending
Download: cubes.zip

Dancing Quad


A simple demo that distorts a quad to music. Copy any .MP3 to the DATA directory and rename to Song.Dat. Use songs with silent portions, bass and a good range of sound for the best effect. A tiny sound clip was included to demonstrate the effect. Use the Up / Down arrow keys to enhance/decrease the effect. Spacebar toggles the effect to rolling hills. This project was made in under 20 minutes. It started out as a spectrum analyzer, and quickly changed to an animated quad. Nothing fancy... nice to look at :)

Features:
  • MP3 Playback
  • Use of FFT data
  • Color blending
  • Keyboard interaction
Download: dancing_quad.zip

Dolphin


I wrote dolphin as a test to see if I could animate a mesh. I ripped two models from the popular 3 dolphin .3DS file. I then converted the two models into usable data for my program. The animation is done by morphing from one mesh to the other. It's not the best way to animate the dolphin but it requires very little code. The hardest part was making all the points move at the correct speed. Without timing, the body may bend before the tail even starts moving. You'll notice the model is a wireframe. I did this for two reasons. I never bothered to create texture coordinates, so texturing would require some extra work. Using smooth colors looks ok, but not very realistic. So I decided to use wireframe and points. If you'd like to switch to point mode, press M. Up and Down arrows make the dolphin roll. Perhaps in the future I'll spend some more time animating models. I'd like to play around with skeletal animation. Just have to figure out how it's done :) Although this project is quite small, I hope it inspires you to play around with code of your own. Playing is the best way to discover new effects and come up with original ways to get things done!

Features:
  • Cool Soundtrack
  • Keyboard Interaction
  • Wireframe & Point Drawing
  • Model Animation Done With Simple Morphing
  • Random Animation (Dolphin Jumps From Each Side)
  • Fancy Water Blending (Dolphin Enters Water In The Middle)
Download: dolphin.zip

Escape From Epsilon


A long time ago, when my world revolved around the Atari 8-Bit, one of my favorite things to do was type in programs from magazines like Antic and Analog. Most of the programs were pretty simple and most of them were pretty dull... BUT... once in a blue moon, an extremely talented individual would send in their masterpiece and the magazine would publish it. One of these talented individuals was a guy named J.D. Casten. He wrote games that were both fun, and brilliant! He wasn't afraid to use 6502 assembly code, and his basic code was clean and very organized. Any way... One of the first games I ever typed into my computer by J.D. Casten was a game called Escape from Epsilon. It was a multi-level, multi-screen platform game. The goal was to jump over pits, avoid spikes, ride conveyors, get the key and get the heck out! Being the kind of person that just jumps into a project without really considering the difficulty, I decided I would convert this game to OpenGL for Windows. It started off not to bad. Basic engine took little time to code. Then it came time to rebuild the custom font, convert the asm code, rebuild the levels, handle the display lists and deal with the delay created by swapping the buffer in GL. Not all that fun! Two days later, this is the final product. I have tested the first three games, and they work perfect (alpha, beta, gamma). I didn't have time to go through all 80 levels in Epsilon, so there may be a few bugs. Hope you guys enjoy it... nothing compared to games of today, but definitely a classic! F1 - Toggle Fullscreen
F3 - Select Level
F4 - Start Game Greets to J.D. Casten Wherever you are... P.S. Some video cards break the tiles for some reason (lines appear between tiles). Atari Forever!!!

Features:
  • Animation
  • Sound Effects
  • Custom Graphics
Download: escape_from_epsilon.zip

Fake Rasters


Back when I was a kid, I was fortunate enough to own an Atari 8-Bit. Yes I am biased, but I believe the Atari was one of the most incredible lines of computers ever made. The raster trick was the first 6502-assembly program I wrote on the Atari. It was called a trick because on the Atari (C64 too I believe) you either had graphics or text. If you wanted graphics on a text screen you had to do a few tricks. In text modes you were usually limited to 16 colors at most (and no graphics). Using assembly language you could change the background color of the screen on each individual scan line to any one of the 256 available colors. Rasters were bars of color that moved behind the text. By controlling what color each line changed to, you could create moving bars of color. These days we don't have limited colors, and tricks are not needed to create the effect. It's still a cool effect though. Kind of hypnotizing :)

Features:
  • Display Lists
  • Texture Mapping
  • Keyboard Interaction
  • Color Mapped Texture
Download: fake_rasters.zip

Fern


An enhanced version of an old Pascal program I wrote back in 1996. Nothing more than a fractal spinning around the screen as it's drawn. Deep colors like purple, dark blue and red look best. There are no precalculations which is why it takes so long for the fern to fill in. This demo runs in 1024x768... Hopefully in this day and age, everyone has a monitor capable of more than 800x600.

Features:
  • Fractal Math
  • Arced Rotation On Y & Z Axes
  • Random Colors (Nothing To Dark)
Download: fern.zip

GameDev


I wrote GameDev in 1999. Swedie from DemoNews had just contacted me. He had seen a few of my OpenGL demos and wanted to host me. This project was originally called DemoNews. But now that GameDev hosts me, the demo has been modified to reflect the change. I wrote this demo as a way to celebrate being hosted and to advertise the site. This invitro didn't take that long to code, but coming up with the idea took up quite a bit of my time. The background swings from left to right while moving down the screen. A string of GL balls dance around the screen, a transparent teapot floats around the screen reflecting the background off its glass surface, and a message rolls at the bottom overtop a colorful rainbow pattern. The teapot was hand coded from data I found on the net, the GL balls were drawn by Jeff Carlson (Leper Tomato), the music was composed on the C64 (title Last Ninja). Everything else was drawn and coded by myself. When I wrote this demo I wanted to capture the look and feel of older Atari Demos. Lots of action, and a cool chip tune. I'm happy with the final result, hopefully you enjoy it as well! This project is a good example of what can be done with a little imagination. I took ideas that I already knew and combined them to create the invitro.

Features:
  • Fancy Blending (Balls And Message)
  • Fast Moving String Of Animated GL Balls
  • Environment Mapped Teapot (Glass Effect)
  • Rolling Textures (Message And Background)
  • Cool Chip Tune (Last Ninja C64... Thanks To Thomas Olsen For The Info!)
Download: gamedev.zip

Goblet


I wrote GL goblet when I was learning how to load in 3D models. I asked my brother if he could create me a low polygon model so that I'd have something to work with. He got a little carried away with the polygons, but the model was too cool to not use. I removed almost 50% of the polygons by hand. The model looks almost identical, although it's not quite as smooth as the one he sent me. Thank god for smooth shading :) After reducing the number of polygons I started adding some cool effects like sphere mapping, blending, and a special draw mode that draws the goblet polygon by polygon as it spins on the screen (press D to activate). The code could still be optimized more, but I got side tracked. It's still pretty fast considering there are still a few thousand polygons making up the goblet. Keys 1 and 2 select the texture to use, B enables blending, E enable environment mapping, M selects the drawing mode (point, line, solid), enter toggles the background on and off, page up and down zoom in and out and finally the arrow keys spin the goblet. I've always been fascinated by 3D models. You'll notice quite a few of my projects include a 3D model of some sort. If you're interested in loading models into your own code with little to no effort, search the net for a program called Deep Exploration (no longer free as it was when it was called 3D Exploration... pout). It does most the work for you. However if you want complete control over the model, it's better to load the data in yourself.

Features:
  • Fancy Blending
  • 3D Model Usage
  • Special Draw Mode
  • Display List Usage
  • Keyboard Interaction
  • Environment Mapping
Download: goblet.zip

Halloween 2000


I started on the project 2 days before Halloween, and had it posted on the net Halloween morning (just about didn't make it). I originally wanted to do a much larger project, but time was limited, and my creativity wasn't flowing. I tried to make the demo fun to watch. There's dripping blood, a flying witch, a pumpkin that pops out of the screen and more. I especially like the music (grin). Nice mood music. Halloween is another good example of what can be done with a little time, and a bit of creativity. The demo was built in layers. I started with the tombstones, the music, the background, rolling blood, pumpkin and lastly I added the flying witch :) All simple effects on their own, but combined they look pretty cool!

Features:
  • Scary Music
  • 3D Model Usage
  • Simple Blending
  • Moving Background
  • Display List Usage
  • Cool Dripping Blood
Download: halloween_2000.zip

Hearts


I wrote hearts on Valentines Day for my GF. She's a big fan of Scooter (rave), and I wanted to surprise her when she woke up. The version I gave her was a little more personal, but pretty much the same thing. I modified the orignal version to allow a personal voice message of your own (.WAV file), and a custom text message of your own. Space bar plays your personal voice message. Hearts was one of them projects I felt motivated to do. I guess you could call it an electronic Valentines Day card for my GF. She enjoyed it so I must have done something right :)

Features:
  • Blending
  • Audio Soundtrack
  • Recorded Message (.WAV)
  • Text Message (read from a file)
  • Keyboard Interaction (space bar)
  • Lots of Movement On The Screen
Download: hearts.zip

Hellraiser


Hellraiser was one of the first programs I wrote that used lighting. I was a big fan of the movie Hellraiser, and that little box always fascinated me. So when I lucked out and found textures from the box, I just had to code something :) I think the lighting looks really cool in this project. You can see the sides of the cube fade in as it spins. Arrow keys allow you to spin the cube, page up and down zoom in and out, and 'a' and 'z' rotate the cube on the z-axis. Even though Hellraiser is not a very complex program, it's still nice to look at. All the effects come together to create a very nice onscreen image. Hellraiser is a good example of what new GL programmers can accomplish once they've mastered the basics.

Features:
  • Lighting
  • Texture Filtering
  • High Detail Textures
  • Keyboard Interaction
Download: hellraiser.zip

OpenGL Lights


Lights was my first attempt at moving lights. The objects are now hand coded (no more aux library). Each light points at the object as it spins around the object. Any part of the object that is hit by the light will light up with the correct color.

If more than one light hits the object, the colors mix. All three lights mixed together create white light. There is a steady white light hitting the front of the object. This light can be turned off and on with '0'. Keys 1, 2 & 3 turn the red, green and blue lights on/off. L turns on/off lighting. S turns on/off smooth shading (I like flat shading). Space changes to another object, and finally R turns reflections off and on. Reflections are cool. You can see the lights reflecting in each other. Lights was a big project. The effect used in lights can be used to light up a hallway as a missile flies down the middle of it, etc. It's good to learn about spotlights. Having control over the light really adds to the scene.

Features:
  • Multiple 3D Shapes
  • Keyboard Interaction
  • MP3 Soundtrack (Enya)
  • Lighting (Reflective, Spotlight, Etc)
Download: lights.zip

Meteors


Meteors was my first BIG break in the GL community. I was browsing one of my favorite sites (3D Files) when I happened to see a posting about an OpenGL screensaver contest they were having. Unfortunately the contest was over in 2 days. I wrote to the guys at 3Dfiles and asked if I could still enter. Luckily they said yes. I programmed for 2 days straight. At the end of two days I had finished programming Meteors. I ran into quite a few problems while making the demo. The biggest problem was the fact that I had never written a screensaver before. I couldn't find any helpful information so I wrote code of my own to allow the program to work as a screensaver. In actuality it's a normal .exe made to watch for Windows screensaver messages. Although I was extremely happy with the final project, I didn't think I'd place. At the end of judging, my screensaver won! The prize I won was the Elsa Erazor II TNT card. I'd like to thank 3Dfiles once again. This card helped me out so much while learning GL. The GL support on this card was excellent at the time. This project is the standalone version of the demo. This program was the breaking point for my GL hobby. Not only did I get recognition from Meteors, winning inspired me to learn even more! If you're interested in getting your stuff noticed, be persistent. Don't give up!

Features:
  • Midi Soundtrack
  • Texture Blending
  • Object Animation
  • Texture Smoothing
Download: meteors.zip

NeHe CD


This project was created to advertise the release of my first NeHe Productions OpenGL CD. Creating the CD was a huge undertaking on my part, and I wanted to get word out so that people unfamiliar with NeHe Productions might be interested enough to purchase a CD, or to at least stop by and check the site out. This is the result of a few late night coding sessions. Please distribute this demo freely! You have full permission to include it on CDs, in Magazines, etc. Thanks to everyone that contributed to the CD! Your work is greatly appreciated! Thanks so much to everyone that has already purchased a CD! Happy Coding!

Features:
  • A Complex CD Model Created By Hand
  • Bilinear Filtering For Smooth Graphics
  • Complex Blending (Subtractive Blending)
  • Animated Background Synchronized To The Music
  • A Catchy Oldschool Soundtrack
  • Scanned Textures For Realism
  • Lighting (Proper Normals)
  • Scrolling Credits
Download: nehe_cd.zip

NeHe World


I wrote NeHe World to see if I could write a simple 3D world. Back when I started working on it, I didn't know a lot about OpenGL. Everything was painfully put into place with quads. The original NeHe World had a lot more stuff in it, such as spheres with a moving pattern on them, etc, but I decided to remove it all because you could walk through them. The updated version does have a UFO though. It's a neat little program nonetheless. I've managed to add a nice bouncy feel, a rock pool (?) with some nice clear water in it, etc. Plus the clouds move quite nicely and there's a cool wind sound :) This little world wasn't hard to program. I wrote it back when I was still learning the basics. I'm sure anyone with a good understanding of the basics could do the same. Don't be afraid to try. A lot of the time, the things you may think are hard to do are quite easy.

Features:
  • Blending
  • 3D Movement
  • Rolling Clouds
  • Character Bobbing
  • Audio (Nice Wind Sound)
  • Travel Limits (Can't Go Through Outside Walls)
  • Texture Mapped Lighting
Download: nehe_world.zip

Porsche


Porsche was one of the first 3D models that I converted to OpenGL code. The original model was just one solid car. I broke the car into seperate pieces. Mags, Underbody, Trim, Tires, Tail Lights, Roof Trim, Park Lights, Mirrors, Head Lights, Glass, Fenders and the Body. Each of the pieces are stored in a display list so I can easily remove them from the scene.

Features:
  • Blending
  • Display Lists
  • Complex 3D Model
  • Keyboard Interaction
  • Point, Line & Solid Modes
Download: porsche.zip

Reflection


I wrote reflections to see if I could recreate the reflection effect I saw while playing Unreal (wicked game). Unfortunately I didn't know anything about the stencil buffer at the time so it's just a trick, but as long as the user doesn't go through the floor, no one will ever know :) The effect is fairly convincing. The image reflected is dimmer like it should be. Lighting can appear on the floor, lighting the reflection, and the textures are inverted just like they should be. Notice everything is backwards, the same way it would look in a mirror. Although it's always good to know the right way to do things, you can usually pull off the same effect with tricks, and most the time it can be done faster using your own code. It's nice to say "yeah, I did that too, but I did it this way".

Features:
  • Blending
  • Texture Mapping
  • Negative Scaling
  • Keyboard Interaction
Download: reflection.zip

Rings


Rings started out as a time waster. I had nothing better to do, so I decided to draw a ring on the screen. Then I decided it would be cool to have a smaller ring inside the big ring. To make a long story short, I got carried away, added some cool textures, and some keyboard interaction. S toggles Flat/Smooth Shading. B toggles Blending and the spacebar changes the background texture. Another good example of what can be accomplished by playing around. I could have done a lot more, but I got bored with the rings and stopped working on the program :)

Features:
  • Blending
  • Lighting
  • Torus Code
  • Rolling Textures
  • Moving 3D Models
  • Keyboard Interaction
Download: rings.zip

Risky Rescue


Another J.D. Casten game converted to OpenGL. This game was a total nightmare to convert to GL. There's a lot of stuff going on, even if it does not look like it, and handling things like the moving platforms, disappearing floor and the arrows took a lot of fancy coding. Taken right from the magazine: In Risky Rescue, you play the part of a creature named Igneous. Your arch enemy, Greedo the goblin, has kidnapped your sweet baby Iggy and holds him captive in his creepy caves. He's put Iggy in a trance, and your only hope of rescuing the baby is to get medicine from three medicine pots and then touch him. To get medicine from a pot, land on it. Meanwhile, Greedo is throwing deadly arrows at you. The best way to avoid them is usually to move up and hover while they fly by. Sometimes, though, there's no room to maneuver, so you must use careful timing to get through the tight spots. Hope someone finds this game entertaining... took about 3 hours to convert from Atari Basic to OpenGL for Windows (Visual C++).
F1 - Toggle Fullscreen
ARROWS - Move
CTRL - Fly

Greets to J.D. Casten Wherever you are... P.S. Some video cards break the tiles for some reason (lines appear between tiles). Run Windowed and adjust the window until the screen looks correct. Atari Forever!!!

Features:
  • Animation
  • Sound Effects
  • Custom Plot and Drawto Routines
  • Custom Routines To Move Platforms, Arrows, etc
Download: risky_rescue.zip

Ship


Ship was one of my favorite projects. It was one of the first complex models that I managed to get on the screen. My friend Jeff Carlson designed the ship. The requirements were simple. Make it as low poly as humanly possible. He came through and sent me an incredible looking low polygon ship. The wings actually required the most polygons. The two wings use more polygons than the entire body of the ship, but damn do they look nice! This project has quite a few effects. 'M' toggles the mode. We have point, line and solid. 'B' enables blending. Keys '1' and '2' change the texture. 'E' enables environment mapping. Space resets the view, and the arrow keys spin the ship. For the rest of the features, read the readme file. Playing with 3D models can be alot of fun. Getting reasonable FPS is another story! It's very important that if you plan to include models in your projects that they use as few polygons as humanly possible. Do whatever it takes to make them look nice. Use fancy textures or whatever, but don't go overboard with the polygons. The more you add, the smaller your audience becomes. Ship will run fine on a Pentium 133 :)

Features:
  • Blending
  • Multiple Textures
  • Complex 3D Model
  • Environment Mapping
  • Keyboard Interaction
  • Points, Lines & Solid Polygons
Download: ship.zip

Skull


I wrote 'skull' around the same time I wrote 'ship'. At that point in time I was extremely impressed by environment mapping, and 3D models. The environment map textures I decided to use are quite cool. The skull actually looks metallic and shiny. Blending also looks pretty cool. Arrows spin the skull, page up/down zooms, space resets, '1' & '2' selects the texture, 'E' enables environment mapping, 'B' enables blending, 'M' changes the drawing mode and 'L' makes the skull laugh :) Skull was fairly easy to write. I borrowed the code from my ship project, took out the ship data, added in the skull data, and then made a few changes. Once you've written enough code, borrowing code from your other projects can help you save time and brainpower. Taking the time to make your code understandable (commenting, etc) will make it easier for others to follow through your code, and may help you save time when you're searching for a specific section of code in one of your own programs.

Features:
  • Blending
  • Environment Mapping
  • Keyboard Interaction
  • Point, Line And Solid Polygons
Download: skull.zip

Space Scene


My artist friend Jeff Carlson sent me a video clip he rendered of a ship flying past mars. After watching the beautifully rendered animation, ideas started bouncing around in my head. Rendering big animations using art software can take ages, even on a fast computer. My goal... To recreate his animation (real-time) using OpenGL and as few polygons as possible. I wanted to keep the incredible detail. Could it be done!?! After about 3 hours of coding I had the stars and the planet. I wasn't able to reproduce the same type of stars. His animation has stars of all sizes and shapes. It could be done, but performance is an issue so I decided the stars would have to suffer. The planet uses an incredibly high-resolution picture of mars for the texture. The texture will work on all graphics cards, even the ones that don't support textures larger than 256x256. However... If your graphics card only supports 256x256, the planet detail is reduced by 75%. If you're graphics card supports large textures, you're in for a treat because the planet will look amazing! After a few more hours of coding (about 10 in total) I had the camera movement done, the portal effect done, and the ship flying across the face of the planet. I think I did a pretty good job of recreating the animation. The planet on my system looks real just like his, and the motion is smooth and believable. The ship is environment mapped (more than likely wont show up on Voodoo cards) for a cool metallic look. The portal animation in my program is a lot more simplistic (a lot), and I have no light flare. I could have added the light flare, but I wanted to keep extras to a minimum. The planet looks bump mapped. Pressing 'B' will turn on / off the bump mapping. I learned the effect while coding the demo... It requires 3 passes and is not TRUE bump mapping. I added it because it makes the planet look really cool and because I was happy that I got the effect working :) So I wasn't able to recreate the rendered animation look, but the outcome is still fairly impressive. The project in general was a great experience. I had an idea, acted on it, and dealt with problems as they arose. While tackling the issue of realism I learned a new effect :) So my message to everyone... If you want to do something but you're not sure it can be done... TRY! The results may be great, and you may learn new things along the way. Final Note: This demo requires alot of power. If you have a slow computer or a bad video card it may not run!

Features:
  • Midi Music
  • Environment Mapping
  • Keyboard Interaction
  • Complex Blending / Bump Mapping
  • Mip Mapping / High Resolution Textures
  • Timing Code / Movement Is Based On Time Passed
  • High Level Of Realism (High Poly Ship, Smooth Planet)
Download: space_scene.zip

Stars


Stars was my second attempt at a screensaver. After having so much positive feedback from Meteors, I decided to stick with the space theme. I wanted this screensaver to have the same relaxing music that meteors had, along with lots of on screen action. The two side images I used are actual images taken by the Hubble telescope. The center planet was drawn by my brother Sean Molofee (aka Kismet), and Jeff Carlson of Mystic Arts created the flaming sun. I did the flame animation, along with the various stars flying around the screen. The coding is similar to meteors although I spent alot more time optimizing, and cleaning things up. Theres also a lot more keyboard interaction, along with a simulated high-resolution effect. 3Dfiles appears in the bottom corner because this was a thank you to them for the TNT card I won. Although the theme in stars and meteors is similar, the code is different. Instead of borrowing code from meteors I decided to rewrite the program from scratch. That way any mistakes I may have made in meteors wouldn't be copied to stars. Every now and then it's good to start from scratch. A lot of the time, you may come up with a new way to accomplish something. Sometimes a better way!

Features:
  • Blending
  • Cool Images
  • Secret Image :)
  • Cool .XM Soundtrack
  • Keyboard Interaction
  • Remembers Current Settings
Download: stars.zip

Sun


I wrote sun to thank all those people that supported me and my web site with positive feedback, news and new ideas. If it wasn't for the people mentioned supplying steady feedback, I'm not sure the site would be as big as it is today. So thank you to everyone listed, and also to all my NEW visitors! The 'B' key enables the weird trailing effect, and spacebar toggles the music on and off. Again, I took ideas that I had used before (spinning object in the center, etc), and expanded the program to include even more new features. Nothing really major in this screensaver, but enough to make 'Sun' a unique project.

Features:
  • Blending
  • Cool 3D Model
  • Keyboard Interaction
  • Strange Trailing Effect
  • Relaxing MP3 Soundtrack
  • Warping Background Stars
  • Stores Settings In The Registry
Download: sun.zip

Swirl


A good friend of mine Maxwell Sayles (programmed Tetrisphere and The New Tetris) sent me a cool program that he wrote, that had quads overlapping and spinning at different rates. The effect was mesmerizing. Not only did the quads spin at different rates, the textures rolled across the surface of each quad. It was a simple effect for him,but I had no idea how to do it. I fired up VC, and started coding. After a few minutes I had the textured quads spinning. I then added keyboard control, multiple textures, 3 blending modes, and the cool rolling effect. So I guess I managed to recreate the effect and add lots more while doing it :) Keys '1', '2' and '3' toggle the blending mode, 'Space' changes the pattern, 'END' activates rolling textures and the arrows control the rotation speed. It's always interesting to see if you can recreate effects from games, demos, etc. I spent most my youth trying to recreate the effects I saw in demos from Future Crew, Orange, Complex and other cool groups. There's nothing more rewarding that figuring out how something is done. Usually by playing around with code. A lot of the time the effects you think are impossible to reproduce are not that hard at all once you know what's going on!

Features:
  • Rolling Textures
  • Multiple Textures
  • 3 Blending Modes
  • Keyboard Interaction
Download: swirl.zip

Teapot


I made teapot because I was tired of the painfully slow auxSolidTeapot crap. Being new to OpenGL I didn't know how to create 3D objects. Then one day I was reading about the history of the 'GL Teapot', and at the end of the article was the data for the original teapot. The original teapot was actually 2x taller, and did not have a bottom. I modified the data so that the teapot was back to the size we're all used to, and added a bottom myself. When I ran the program I was blown away! I had a teapot on my screen spinning at over 60fps, while the aux teapot would spin at roughly 5 fps at most. Of course I had to texture map the teapot, and after learning how to environment map, I added code to environment map the teapot. I'd have to say the overall result is very nice. This project shows off some really cool texturing effects. Notice how environment mapping seems to increase the resolution. It gives the object a very professional look, making the teapot look more realistic.

Features:
  • Blending
  • Texture Mapping
  • Environment Mapping
  • Keyboard Interaction
  • Point, Line & Solid Polygons
Download: teapot.zip

Textured Beam


A small demonstration of an effect that I think is pretty cool. Very similar to a radial blur! This is an upgrade to the 'Spinning blocks with rays' demo I put on the downloads page. Hope you guys like the effect. You can replace pattern.jpg with any image you want. Use the up and down arrow keys to adjust the intensity! This demo including the time it took to make the original 'Spinning blocks with rays' demo took less than 30 minutes to make. You never know what's possible unless you invest the time to find out!

Features:
  • Fancy Blending
  • Texture Loading
  • Keyboard Interaction
Download: textured_beam.zip

The Snowman


This was one of my favorite Atari ST demos back in the day. I toyed with the idea of porting it to the PC many years ago, but always ran into problems trying to grab both the graphics and the sounds from this demo. The original soundtrack is a raw audio format. Sounded raspy on my Atari STe and just as bad using Steem (emulator). After converting the audio I was happy to hear that the quality of the sample is not really all that bad. The resulting WAV file sounds good, and is almost the exact same size as the original audio file. The audio file is the only file from the original Atari ST demo that must be replaced. I didn't feel like making a player :( The video was a completely different story, and took many hours of late night coding and many more hours reading documentation from the net. The file snowbit1.neo contains the text you see on either side of the animation. NEO for those of you that have never heard of it is an Atari ST format created by an art program called NeoChrome. NeoChrome is not all that complex. However, it's a 4bpp image with a resolution of 320x200. Not exactly an OpenGL friendly format. The bits are reversed, and each palette index is created by calculating the bits on all 4 bitplanes per pixel (alot of work). Alot of struggling, alot of reading the .NEO specs and alot more struggling. Many hours later, I finished coding a basic loader able to convert the image to a 24bit RGB format. YAY!!! The video file snowmain.dat was a little trickier. I wasn't really sure what type of data was in the file. I spent almost an entire day trying to extract data. I went through the entire file with a hex editor at least 20 times. I searched the net for information on the "grabber" software mentioned on the main screen. In the long run, I discovered that the data inside this file is actually NeoChrome images without the header (YAY again!!!). 75 images to be exact. Each image 160 x 100 x 4bpp. Which means each image is 16000/2 bytes or 8000 bytes. 8000 * 75 = 600000 which is exactly the size of snowmain.dat. I wrote a quick console application to rip all the images from the file. I did this in order to map out each frame and so I could grab the colors from each frame using Adobe. The exported files are .IFF format... a nice AMIGA format that is very similar to .NEO. Instead of every bitplane being stored one after another, .IFF's store each bitplane on a seperate line. Plus Irfanview loads .IFF files (more good news). After extracting the data, building a palette, resampling the sound, and coding the NeoChrome loader, I started on the animation. More work! It turns out that the 75 frames of animation are not in order, and some frames are used multiple times. I actually had to watch the original demo MANY times at 10% speed in order to write out a list of which frame to display and how long to keep it on the screen. All in all, it was a long process, but like any project I pushed myself, and learned alot of new things in the process. I hope you enjoy the port as much as I do! * It's interesting to note that there is a frame of animation (frame 13) that is not used in the demo. It's a single picture of a house. Not sure if the original coder forgot to include it or if it's just one of them mysteries :) As mentioned above, if you already have the ST version of this demo... copy The Snowman.exe into the directory. This demo works with the original Atari ST files! ** HUGE RESPECT to the original coders!!! Please share this file with as many people as you can. Hopefully this demo will motivate other Atari fans out there. It would be nice to see some of the classics brought to life on the PC!

Features:
  • Nice Looping Soundtrack
  • An Animated Story
  • NeoChrome File Loader
  • Grabber Animation Player
  • Filtering Option
Download: the_snowman.zip

Walker


Walker was my first BIG attempt at texture animation. My friend Jeff Carlson drew 8 frames of a skeleton walking 8 different directions. I load in all the textures then flip through them according to the direction the character is moving. I've added a few soundtracks, along with the ability to make the skeleton moan :) Nothing fancy, but it was a fun project. The coding isn't great, but like I said, the project was fun. The final result is what I wanted, and in general, it was a good learning experience!

Features:
  • Texture Animation
  • Keyboard Interaction
  • Multiple Sound Tracks
  • Multiple Sound Effects Playing At Once
  • Loading .JPG Images From The Resource File
Download: walker.zip

Water


Water is a small mini project inspired by a post in my message forum. The post was talking about whether or not it would be possible to create a water effect by modifying the waving flag tutorial. I stripped the flag of it's texture, put stars in the background, set up 3 layers of waving material, and used some simple blending to make it look as though the three layers were waves rippling across the screen. The effect isn't great, but it's cool looking! Please don't be to critical of this project, it took less than 20 minutes to code, and was done for fun! Experiment with the code. With some fancy math, you should be able to create groups of waves moving around the grid at different rates. You might want to add a scene of your own around the water. If you have an imagination, the effects can be endless!

Features:
  • Simple Blending
  • 3 Animated Meshes
  • Basic Keyboard Interaction
Download: water.zip

Support this Author