ProjectX : Shader House Demo
Introduction
Welcome to the ProjectX web site.
This is a demo I wrote in late December 2003 and early January 2004.
It is intended to show off some special effects that can be done on
modern GPUs.
The source code is provided along with the executable. Read the license.txt file.
When you run the program, it displays a dialog box where you can setup
some attributes like pixel format, window dimension, windowed or fullscreen,
use v-sync or not, use FSAA or not, cache geometry on video memory or not
and so on. Read the readme.txt.
The demo starts out by showing a kind of animated introduction where
characters run together to form the words "Shader House".
This part does not make use of special features so it will run on any
card. It is nice to watch nonethless.
At this point, a message will be displayed saying if you can proceed to
the next stage of the demo. If your card supports ARB_vertex_program
and ARB_fragment_program, then you can run the second stage without trouble,
otherwise, the demo just stops.
The second stage consists of a series of shaders that are run and 3D objects
are displayed to view the effect. It is kind of informative, like a documentary.
There is some background music as well. It would be nice to have narration too but
it doesn't, so you have to read subtitles.
There are 16 fragment programs and 14 vertex programs, so in total that would
be 30 shader files. Some of the shaders are my invention, others are translations
from D3D ps 1.4 and ps 2.0, others come from documents. There is some 3D models written in a custom file format,
some jpeg files for the textures, some jpeg files for the environment maps,
some mp3 files for the music and sounds, some animation files in a custom file
format.
You can exit the demo anytime you wish by pressing Escape
The second stage is made to run in a loop so it doesn't require any user
interaction.
Any questions?
Technology
Program is written using Visual C++ 6, but can be compiled with others easily.
It uses WinMain
Graphics API is OpenGL. Shaders are written in ASM (ARB_vp & ARB_fp).
It makes use of texture anisotropy filtering, automatic mipmap generation for
base texture, glhlib's function for mipmapping normal maps.
VBO for storing static geometry in video memory, and v-sync with WGL_EXT_swap_control
glhlib is used for normal map mipmap generation, and a few other places.
Fmod is used for the sound and music.
It uses libjpeg from sourceforge for reading JPEG files.
It uses my own functions for loading GL extensions.
It uses my own classes for doing all the animation.
It uses my own classes for reading 3D models, animation files.
It uses Colt "MainRoach" McAnlis functions for getting a FSAA pixelformat
with some tunning by my part.
Animation files were generated with my custom software.
3D objects were generated with my custom software.
Any questions?
Hardware requirements
Processor | >500MHz |
HDD | ~10 MB |
Video Card |
Current generation (Geforce FX and above,
Radeon 9500 and above) with 32MB VRAM Anything below that will only allow you to see the intro. |
OpenGL |
Your video drivers must support version 1.3 minimum
and have certain extensions present : GL_ARB_vertex_program,
GL_ARB_fragment_program, GL_EXT_texture_filter_anisotropic,
GL_SGIS_generate_mipmap, GL_ARB_vertex_buffer_object. Anything below that will only allow you to see the intro. The following extensions are used when present : WGL_EXT_swap_control, GL_ARB_multisample and related extensions. |
Screen | 1024 x 768 and 32 bpp minimum |
Sound | Any sound card with speakers. |
OS | Any Windows |
Download
There is one ZIP file for the artwork (textures, music, 3d models)
ProjectXArt.zip
Another for the executable and DLLs (Win32 only)
ProjectXexe.zip
The license and readme are in this one also.
Note: Small code update on Jan 29, 2004
Another for the source code (Should compile with any C++. This is a VC++6 project)
ProjectXSource.zip
This contains all the CPP, H, RC, LIB and VC++ project files.
The license and readme are in this one also.
Note: Small code update on Jan 29, 2004
In total, it's in a zip file. About 7MB.
The files will be unzipped to a folder names vrej_m\ProjectX
The art will be placed in a folder named vrej_m\ProjectX\Data
If it's not, then move them there.
The exe and DLL will be placed in vrej_m\ProjectX
The source will be placed in vrej_m\ProjectX
I did this because the art file is large. I might want to make a quick
change to the source and the exe, so I wanted my uploads to be quick.
Montage Of Screenshots
|
Copyright (C) 2004 Vrej M. All Rights Reserved.