For the next part in Gamasutra’s ‘Tooling Around’ feature, which profiles and interviews middleware and tools developers about their products, today’s interview is with Julian Davis, CTO of Geomerics
, developers of Enlighten.
Announced at the beginning of March, Enlighten is a lighting SDK that allows developers to use dynamic global illumination effects and accelerated precomputation of light sources, effectively meaning that lighting can be generated in real time. The company intend to ship the finished version of the software in “late summer”.
Though the product was originally Xbox 360 exclusive, shortly after announcing that the SDK would be integrated into Epic’s Unreal Engine 3, Geomerics announced that it had been signed as a tools and middleware partner for the PlayStation 3 as well.
“We’re really excited about the potential of the PS3 version as we have real-time radiosity being calculated with a fraction of the available SPU resource and lots of head room for new features,” says Davis.
We spoke to Davis lately about the company, the Enlighten SDK and the challenges in developing the product.
When and why was Geomerics formed?
Geomerics was formed in 2005 with the goal of commercialising intellectual property in Geometric Algebra (GA), image processing, compression and other fields with a specific focus on the games industry.
Our view was that with the next generation platforms on their way there would be a further increase in the complexity and difficulty of the problems that needed solving for games technology, and that the expertise embodied in the founders and the IP would offer real opportunities to attack these.
What were the aims and goals of the company at this time?
The first goal was to talk to a good variety of developers to try to understand the problems they actually wanted solving and to map those requirements Geomerics’ capabilities. Our IP has the potential in an amazing number of applications including lighting, physics, animation, surface modeling and compression, but we needed to focus on one area initially.
Originally there was a leaning towards game physics where GA has some amazing potential to increase realism and performance. But after a number of discussions with developers it became clear that lighting was a big issue that they wanted a solution for.
After identifying the problem to solve, we then needed to demonstrate our capabilities, create awareness amongst developers and publishers and start to explain the reasons why they might want to work with us.
As games get bigger and more complex, and consoles get more powerful, the investment needed to solve really challenging problems gets harder and harder to justify for developers and publishers. Increasingly, developers don't want or need to keep re-inventing the wheel - creativity in content is the key. Companies like Geomerics can bring together expertise and IP and then focus on solving these problems allowing developers to focus on their ideas.
How did you realise the need for a product like Enlighten?
I’ve believed for a number of years that lighting and shadows were one of the most important areas of game technology, the amount of time spent lighting great games is amazing and it’s incredibly important to the feeling of immersion because humans take so many cues from the effects.
So when we talked to developers it was very much on our list of options. We talked to a fair number of developers and, though some wanted physics solutions and others bits of animation technology, they all wanted better lighting.
What was the development time on the product, and what challenges did you run into in preparing the product for industry use?
Work on Enlighten as a package began in March '06 as a result of research that had been carried out over a period of several years. The first demonstration of its capabilities were shown in the following July and development has continued through to GDC rounding out the capabilities and making it cross-platform. The first general release of Enlighten is expected in late summer this year.
There were number of challenges in making Enlighten; to name a couple:
Coming up with the technology, people having being trying to create real-time radiosity for years and before last year it still seemed a long way away; in fact, overcoming the disbelief that we had succeeded was itself one of the minor challenges. It's been very satisfying to be able to say, 'we told you so!' to one or two naysayers! Until we’d done it there were particular doubts about the PS3, but now the radiosity is entirely calculated on an SPU and it may even turn out to be the fastest of the three platforms.
For a product like this it is essential that the solution is practical and usable in real games, and not just a technology demonstration. The enormous variety of game engines and game styles Enlighten must work with this creates a need for a careful balance. We have had to keep the SDK compact and with a simple interface so it is quick to learn and understand. However we also have to make it configurable and flexible and make sure to leave all the resource management under the user’s control. This all leads to a requirement for high quality sample code, but the benefits are very clear.
How has the product developed over the time you worked on it?
It started out as a pure technology demonstration, proving we could solve the core problem and creating some credibility for Geomerics in the market place. We received lots of feedback from developers and we had to go back and solve a bunch of additional problems to round out the tech. Then we had to go through a major re-factoring process to make it the basis for a real product.
As a major goal for us was to have Enlighten working on the now current gen platforms and we started on PC, the next step was porting and optimizing for Xbox 360 and PS3. We learnt a lot doing this and lots of new ideas and capabilities came out of this process.
Now, as we’re finalizing the SDK and working with our first partners the product is evolving further to maximize the practicality and ease of use.
What feedback have you received that you will act on to improve Enlighten?
After the demo last year we received a lot of great feedback, people wanted cross-platform, characters, real game artwork, larger worlds, specular, bump mapping, lower memory footprint, faster run-time and pre-computes. Our GDC demo addressed all of these things and most of the feedback at GDC was excitement and questions about when it would be ready to evaluate and integrate into games.
The rest of the feedback has been about the priorities for new features and increasing the breadth of the product. We’ve been asked to add more practical soft shadows and new lighting models as well as things like reliable implementations of standard shadowing techniques.
How does the product work on a technical level?
Enlighten’s most fundamental feature is indirect lighting and this is done by generating light maps every time the lighting changes - normally every frame. Direct lighting is calculated by standard methods and then passed to the Enlighten SDK which does the magic to generate light maps containing the full indirect lighting. The SDK is also called to generate directionality information maps and static or dynamic position light probes. The game then samples the data generated in its shaders or using the shaders we provide. I can’t really comment on what’s going on behind the scenes to make the magic happen.
How will the integration of the product into the Unreal Engine change the development of it in the future?
Integrating into Unreal is a great opportunity for us, there’s some fabulous games in the pipeline using it and we believe Enlighten can really enhance them.
The development of this version is going to let us broaden the coverage of Enlighten and focus - tightly on optimizing for a very specific platform. I’m certain we’ll learn things that will feed back into the main SDK.
Do you feel your product works best when combined with other middleware?
Working with other middleware partners allows us to make our customers lives easier as they can just switch on Enlighten and immediately see benefits, but as Enlighten is compact and easy to use it can be used on its own. Our ultimate aim is for all developers to be able to use Enlighten regardless of what other middleware - proprietary or third party - that they use.
What are some of the more notable examples of the product's use?
One of the most exciting effects of using Enlighten is the freedom it brings. At the moment artists are forced to use muted and de-saturated palettes to make their worlds and characters look realistic under dynamic lighting, with radiosity colour bleeding and other effects break this restriction. Artists can put colour into their worlds and the scenery and characters pick them up beautifully creating a much stronger feel of immersion and tying all the objects together.
Simple things like torches are transformed, when a character shines a torch at a wall in current games, you get a circle of light on the wall, but nothing else is lit. In reality there should be a back wash of light seen all around, even round corners and if the light is shone on something coloured the reflected light should change the appearance of everything. Without these effects people know something is wrong but can’t quite figure out what it is.
There is great potential to create a much stronger feeling of atmosphere and mood from these effects. Radiosity is the reason why you paint rooms yellow or orange for warmth and blue or green for cool, and why people look so different places like a white walled hospital, a restaurant in the evening or a disco.
What I’m really looking forward to though is the uses I don’t expect. There’s no reason Enlighten just has to be used for photo-realistic affects, I can see it being used to enhance cartoon style graphics as Pixar did with Cars
or being combined with other NPR renderers. One idea we had was a painting game, where you can paint the walls and move the lights around at will just to see what happens, every stroke will change the way the world looks – it would be painting with light.
Who is currently using the product?
We intend to ship the finished SDK in late summer and we are currently in discussions with a number of partners who want early access to Enlighten and to help define the product. We're planning to make announcements very soon.
What do you see as the next evolution of the product?
Version 1 of Enlighten is focused on bringing dynamic real-time GI to games, in future releases Geomerics will provide solutions for other lighting and shadowing problems challenging the industry and broaden the product to offer good implementations of current tech.
Amongst the features we may see are hard and soft edge direct lighting shadows, atmospherics, cloud and tree foliage lighting and more practical reflectance models - BRDF, etc.