Sigma II

Sigma II is a 3D game engine being written by ika. It is the successor to the Sigma engine, which was used to create red sky. The main goals of the engine are:

  • To support newer graphics API's like Vulkan
  • To implement culling
  • To support 3D models
  • To have cleaner code that is easier to understand
  • To support Linux

Current State of Sigma II


A screenshot of Sigma II with the map hall1.sw4 opened. You can see that the textures have trilinear and 16x anisotropic texture filtering. This can be disabled on the command line. The map also has collision detection using a BSP tree.

Sigma II currently supports rendering in both OpenGL and Vulkan, and supports the FLIF and WebP image formats. Sigma II can load a custom 3D level format that is currently a BSP tree that is used for collision detection. The player can fly around a level that is loaded during initialization. Sigma II can support fullscreen mode, vertical sync, and checks the user's monitor for it's graphics modes. Sigma II is highly customizable and features an in-game command line that allows the user to configure most aspects of how the graphics system works. The rendering engine can do Occlusion Culling, Frustum Culling, and Back Face Culling.

Sigma II Map Editor is the name of the map editor program used to make all of the maps in Sigma II. The editor allows you to place brushes and select textures for them (per face texturing is not yet implemented). You can only place rectangular prism brushes into the world now. The editor has a lot of features that the original editor didn't have, that I can't mention all of them, but they are features that you would take for granted in a real 3D editing program. The map editor also has the code for compiling maps. It compiles maps in two stages: In the first stage it does a CSG intersection between every pair of brushes and then stores the resulting polygon list. It then uses this polygon list to compile a BSP tree which is then used to generate a PVS which is used for occlusion culling. The resulting data structures are saved into a .sw4 (Sigma World format version 4) file that is read by the engine. In the future there will be a lighting stage after all of this where shadowmaps are precalculated. I don't have any other plans for the world format beyond an entity system which is not a "compilation stage" in the same way that the texture cache is not a "compilation stage".

The OpenGL rendering engine has been significantly optimized, but the Vulkan rendering engine is being rewritten and does not work anymore.


A screenshot of Sigma Editor II. It's editing a map that was used to test the PVS system.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License