A high-level, open-source game engine, the Firestorm project began in the Winter of 2003 and continues today. The engine is written in C# using the .NET Framework and Managed DirectX. The project was designed to stress a clean, object-oriented design, without sacrificing performance. The engine is centered around a single execution thread and exposes a plug-in architecture to allow additional systems to easily interface with the engine core. The graphics pipeline has seen several iterations, beginning with support for only fixed-function rendering, supporting both fixed-function and programmable rendering, and currently only programmable rendering. The rendering core is built around a hierarchical, scene-management subsystem that stores and updates bounding volumes for all scene objects to allow efficient, recursive scene sampling, facilitating camera-frustum culling, collision detection, and other common scenegraph-centric operations.
A key design criteria for the development of the engine has been maximizing code reuse, both within the engine itself and with respect to its ancestor libraries (.NET BCL, DirectX). Firestorm is built on top of many powerful, tried-and-true DirectX technologies, most notably the DirectX Effects and Mesh Frameworks. While the engine does make extensive use of these technologies, it also abstracts their functionality by an incremental step so that the same techniques can be applied to other code while still taking advantage of the DirectX code base.
During its lifetime Firestorm has shifted focus to align itself with major trends in the interactive graphics industry. Most notable in this regard is the current support for only programmable (shader-based) rendering. The shift away from fixed-function rendering has been accelerated by the rapid pace of hardware advancements that support shaders. As such, Firestorm tries to exploit shaders as easily as possible and has strong bindings to HLSL to allow users of the engine to quickly and easily use existing shaders or write new shaders that can be applied to any rendered object.
- Plug-In Architecture – Simple, clean interfacing with outside components
- Effect Framework – Allows complete control over the appearance of any rendered object
- Programmable Rendering – Strong binding to HLSL language for fast shader setup
- Trigger Framework – Managed event-firing based on engine states
- User Input Subsystem – Built-in support for user input through the mouse and keyboard
- Scene Management – Efficient scene sampling using nested bounding volumes
- Controllers Framework – Deterministically update the state of nearly any engine object through simple interfaces
The very first screenshot ever created in Firestorm, December 30, 2005.
A winter scene created for use in a research project in the H.I.V.E.. By the end of the research project students and faculty were able to walk inside this virtual-reality scene.
A tropical scene created for use in a research project in the H.I.V.E.. By the end of the research project students and faculty were able to walk inside this virtual-reality scene.
Flying in the first stage of the award-winning student game named ‘Homeward Bound’.
A simple tech demo showing the use of blurring post-processing accomplished using screen-space pixel shaders.
Tech demo #1 during early research for a never-completed game with other students from Rose-Hulman.
Tech demo #2 during early research for a never-completed game with other students from Rose-Hulman.
Early work on an integrated scene editor for Firestorm.
Tech demo showing use of image-space pixel shaders to achieve a ‘cloaking’ effect similar to that of a Klingon Bird of Prey from Star Trek or a Spartan from Halo.
Just a cool shot!
The particle-system tech demo that inspired the Firestorm logo design.
The solar system is awesome.