Release Notes for Version 2.1

From C4 Engine Wiki
Jump to navigation Jump to search

Release date: July 8, 2010

Core Engine


  • A new impostor system has been added to the engine for rendering large numbers of objects such as trees.
    • Impostor images are pre-generated for an object for 8 directions (every 45 degrees) about the vertical axis. When rendered, two images are noise-blended in a small transition range between two 45-degree sectors to avoid popping.
    • There is a transition region inside which the real object and the impostor are noise-blended to avoid popping.
    • An impostor has a normal map that encodes polygon orientation so that shading can be made to match the real object.
    • An impostor has a depth channel so that received shadows don't appear streaked across the flat quad on which they are rendered.
    • An impostor has a special shadow mapping texture that encodes depth and masking information for 4 elevation angles. This allows an impostor to cast good shadows, including onto itself.
    • You can generate additional images for use in the impostor shader. For some trees, these could include things like a gloss map and transmission map.
  • Some problems that previously occurred when separate fog spaces were used in the direct perspective and in the refraction perspective simultaneously have been eliminated. These fog spaces no longer interfere with each other.
  • There is a new flag for skyboxes that smears the texture maps below the horizon. This allows you to use a texture that is only half as high as it is wide for the four horizontal directions, but still render the skybox geometry below the horizon.


  • The controller functions for the mover controller wait for the mover to reach the beginning or ending position now before they allow a script to continue.
  • The rigid body controller now has a setting for rolling resistance. A positive value causes a rolling object to gradually slow down. Rigid bodies also have new external linear and angular resistance values.


  • Widgets and mutators can now be identified with a string of up to 15 characters in length. This is a replacement for the four-character codes that had previously been used. When loading an existing world, four-character identifiers for widgets and mutators are automatically converted to strings in the objects themselves and in any script methods that refer to them.


  • A new observable object class has been added to the utility library along with an associated observer class. These are now used for passing events from objects to a group of listeners. The Observable class replaces the previously-existing Triggerable class, which has now been removed from the engine.


Collada Importer

  • The Collada Importer now imports vertex colors if they are present on a mesh. Inside C4, the vertex color can be accessed using the Vertex Color interpolant process in the Shader Editor.