UtopiaGL

UtopiaGL is our proprietary 3D middleware platform, written in C++. It allows us to rapidly prototype and produce complex applications with a minimum of effort. Some of the features of UtopiaGL include:

Memory Management

UtopiaGL uses a combination of fragmentation-free memory allocation, and reference counted Garbage Collection. The memory management system includes debugging information to help immediately identify the source of memory leaks.

Shader Engine

The Shader Engine cleanly exposes the full power of OpenGL ES 1.1 on the iPhone and iPod touch. The main features include the ability to adaptively batch render calls, minimize internal state changes and maximize rendering speed. UtopiaGL Shaders are small script files that dramatically simplify the process of writing graphics code. Sophisticated rendering techniques can be prototyped quickly and effortlessly, without touching a line of Objective-C / C++. The standard image formats are supported; including the PVR compressed texture formats. All image loading/decompression is integrated with the Memory Manager, and completely removes memory fragmentation during file IO.

Graphics Engine

Built on top of the UtopiaGL Shader Engine, the Graphics Engine allows rendering of models, meshes, particles, images and fonts. All primitives are rendered using the Shader Engine. Render Targets can be created, and referenced in Shaders, allowing the effortless creation of complex Render-To-Texture effects, including motion blur, and bloom effects.

Sound Engine

The Sound Engine, built on OpenAL, allows playback of wav and ogg files. Sounds can be pre-cached, or streamed in real-time. On iPhone OS 3.X devices, the iPod Music Library is exposed cleanly through the UtopiaGL System API, allowing seamless integration of iPod Music within your App. You can play iPod Music, and App specific sound effects simultaneously.

Math Library

UtopiaGL includes a feature rich math library, hand optimized and ready for the most complex Apps.

Touch and Accelerometer

UtopiaGL cleanly exposes the full potential of the iPhone and iPod touch, including the Touch API and Accelerometer. Touch events are exposed through Touch objects, each of which has a list of events that occurred since the last frame. This ensures that events are never lost, even in sub-30fps Apps, where many events can accumulate on a single Touch object per frame.

File System

The UtopiaGL File System is a zip based system, and integrates cleanly with the Memory Manager to optimize file reads, completely removing memory fragmentation during file IO.

Cleanly Decoupled Front-end and Back-end

UtopiaGL exposes hooks at various points (for example UI elements like buttons) in the form of delegates, allowing very powerful and clean separation of concerns and easy customization. UtopiaGL delegates have no dependency on STL.

Social Connectivity

UtopiaGL integrates with Facebook Connect and Twitter, providing robust, seamless control over publication to a users’ Wall or Timeline.

UtopiaGL Tool Chain

The UtopiaGL tool chain includes the following:

Finite State Machine Compiler

This tool takes a simple script describing a finite state machine and produces C++ code implementing it. This code can be dropped into a project and cuts development time for complex, state based tasks.

Shader Compiler

The Shader Compiler takes a UtopiaGL Shader script file and produces a tiny binary file which is read by the engine.

Model Compiler

The Model Compiler reads the UtopiaGL Model specification format and compiles an optimized binary model which is read by the engine. UtopiaGL includes 3D model exporters for Blender 3D and 3DStudio Max.

Texture Atlas Compiler

The Texture Atlas Compiler takes a list of texture image file names and, using a heuristic packing algorithm, produces a tightly packed atlas of all images. Variable sub-image expansion is supported to overcome mipmapping artifacts.

Font Compiler

The Font Compiler takes a formatted input image representing all glyphs for a font, and using the Texture Atlas Compiler, produces a tightly packed atlas of all glyphs.

Current Work in Progress

We’re continually improving and extending the UtopiaGL feature list. Some of the features we’re working on right now include:

  • Clean, platform independent background worker thread support (for large file IO, long duration tasks etc.)
  • Skeletal animation
  • Bullet Physics integration
  • OpenFeint integration

Comments are closed.