|Top Previous Next|
Michael Auerbach has agreed to share with us a lot of information about his latest project - Iridium.
Q: What exactly is Iridium and who is designing it?
A: Iridium is a graphics and rendering extension for 3D Gamestudio Commercial and Professional. Iridium allows you to have access to next-generation graphics while using the lite-C language and Gamestudio interface we have all learned. I am the sole developer of the engine, however, I often consult with my graphics programming professor and graduate students at the University of Maryland to “proofread” my work.
Q: Can you tell us what are the major features of Iridium?
A: Iridium’s most important feature is actually the Iridium Engine itself. Iridium’s architecture allows developers to place objects, lights, particles, and other effects dynamically. Unlike the A7 engine, all of these entities are treated as the same, which means that you can make a mesh a light, an object, a particle, or any combination of these. This may sound useless, but it is in fact far from it. For example, to create and manage a light, you only need to set its light flag and move and orient the mesh itself. The light is automatically adjusted with the parent mesh, which makes linking the two an automatic task. The engine even goes as far as to automatically allocating and linking shadow maps for these lights.
Another useful feature is advanced culling. Iridium actually traces the path between the view and expensive entities (such as high-poly models and lights) and determines if they are actually visible or if they are occluded. This is a must for anyone who plans on making very large levels and works well with the portal system supported with A7 Pro or just the bsp system in Commercial.
Finally we have the graphics. Iridium uses a deferred rendering architecture which decouples the scene complexity from dynamic lighting. In addition, Iridium uses per-pixel materials which allows for the greatest artistic variation possible while streamlining the rendering process. For example, you can make a car with a single mesh – the windows, tires, paint, leather,etc can all be simulated with a single shader by applying specular, reflectance, diffuse, and other material property textures.
Q: Do you plan to sell Iridium in the near future?
A: I plan to sell Iridium eventually, however, I don’t know how long it will be until I have all the features debugged, optimized, and compiled into a single package. Most likely, there will be a small development fee (or possibly free) and a more expensive commercial license.
Q: How big is the impact of Iridium on the frame rate?
A: When compared to the regular A7 engine (just run a level with no shaders or effects) Iridium is much slower. However, because Iridium renders your world with dynamic lighting and advanced shading effects, it actually runs faster. Iridium’s culling and particle system are what pull it ahead of the A7 engine alone. I have found “loopholes” in the design of A7 which allow me to use features of the engine to increase the A7 engine speed itself (such as world culling before rendering and support for post processing). In addition, many of the features of Iridium are not even possible with the A7 engine alone such as rendering dozens of lights per frame or rendering GPU particles.
Q: What are the estimated system requirements in order to run Iridium on our PCs?
A: Iridium’s minimum requirements are the A7 engine Commercial or Professional, windows with DirectX 9.0c (or higher), and a graphics card that supports shader model 2.0. For optimal performance, you will want a graphics card that supports MRTs (multiple render targets), shader model 3.0, and a very fast pixel fill rate. As for RAM, Windows XP should have at least 512MB, and Windows Vista 1.5 GB. Iridium can automatically detect system configurations or can be adjusted manually to provide good performance on almost any machine.
Q: From what I know, there’s at least a game (Ground Tactics) that will use Iridium. How and where will you use Iridium in Ground Tactics?
A: Iridium will be used almost every visual aspect of Ground Tactics. In fact, the entire world for our first level is currently being constructed with Iridium in mind. Lights that had to be baked previously are now being added dynamically and we are crafting the needed material textures for the world. Iridium will also be used to simulate advanced blood and explosion effects in the game as well as dynamic geometry destruction as seen in games such as Crysis. Iridium will also be used to render physics such as cloth, water, fire, and particles.
Q: How will we be able to incorporate Iridium in our own projects? How much programming will be needed?
A: Iridium is designed for client programming. Every feature has both accessor and mutator methods to manipulate the engine through a well documented api. This means that you have the ability to customize the engine, but are also able to just call a few functions to run Iridium “out-of-the-box.” However, the largest part of implementing Iridium in your project will be the art. Iridium requires that your models are constructed with proper normals and texture formats. However, artists often appreciate the added control of per-pixel materials and the work saved by crafting objects as a single mesh often outweigh the work spent creating addition textures for your models.
Q: What would you recommend to a beginner that wants to learn shader programming?
A: I really enjoy learning hands-on and would recommend that beginners should read articles about shader algorithms and download the shaders to try and understand them. Unfortunately, I was self-taught, so I don’t really know where exactly to point for formal courses and such. However, there are many online tutorials and content that can help you learn yourself. Shade-c is a beautifully crafted open-source graphics extension for Gamestudio that is an excellent example of implementing and writing shaders for Gamestudio and DirectX in general. You can also find a lot of simple tutorials and example on the 3dgs wiki and forums. In addition, if you Google Nvidia, they have a nifty developer zone that is full of open source shaders, tutorials, and code. I also teach shader programming online (for free) in my spare time, but I have a very limited capacity and take it very seriously. If you would like to know more about where and how to learn shader programming, feel free to contact me at Michael@groundtacticsgame.com.
Thank you a lot, Michael!