Developer's Blog
November 18th, 2007 - Real time ambient occlusion
![]()
I’ve recently been working on a new feature for the Offset Engine: real time ambient occlusion. Read more…
September 30th, 2007 - Storyboards

Just thought you guys would like to see some of our storyboards Read more…
September 20th, 2007 - 9.5 score
![]()
We were all amazed at the response to our leaked video on GameTrailers (standard / HDVersion)
Everyone at the office was freaking out because our video really had been leaked and we tried our best to control it. The end result was something that we couldn’t complain about and we want to thank all the supporters out there.
September 9th, 2007 - Combining Normal Maps in Photoshop

This tutorial will outline the best way I’ve found to ‘add’ two normal maps in photoshop. This method specifically adds two normal maps it doesn’t average, subtract or multiply.
December 28th, 2004 - Lighting Pipeline
I have implemented the engine’s lighting pipeline for NV40 hardware. It’s fully per pixel and generalized for any type of lighting environment. There are no hacks! For instance, if you tell a light to cast a projected texture into the scene, it does exactly that - casts the texture as light. Read more…
December 20th, 2004 - Daily Log, 12/15 to 12/20
So many things have been done with the engine since the last update, that it’s hard to know exactly what the subject of the update should be!
So, instead of a summary of the work I’ve done over the past two months, I’ve decided instead to provide my daily log, which I started last week. Read more…
October 12th, 2004 - Entity System
Things have been a little slow moving lately while I’ve been working out the design for the engine’s entity system. While I normally prefer to spend most of my time actually writing code, as opposed to designing things out on paper (or, my approach, by writing out “hypothetical” .h files), the consequences of the decisions I make with the entity system are so far reaching that it would be a mistake not to think hard about the design before starting on the implementation. Read more…
September 8th, 2004 - Post Processing Framework, HDR Pipeline
Last week I implemented a post processing framework for the engine. This allows us to do all sorts of image-based framebuffer effects, like specular bloom.
http://www.offsetsoftware.com/images/bloomtest.jpg
It’s set up in a very straightforward way. I created the bloom effect by first making a couple of shaders in the editor (one that does gaussian blur, another which simply does an additive blend), then setting up the passes, 10 in total, using approximately that many lines of code from the engine. Read more…
August 27th, 2004 - Shader Editor Demo
Although my programming / research work has shifted focus now to lighting and shadow algorithms, I’ve also been polishing up the shader editor.
Here’s a demo of the editor in action, showing how to do the popular “virtual displacement mapping” effect, which is an improved version of standard bump mapping: Read more…
August 18th, 2004 - Illumination vs. Illuminance, Bump Mapping
A dilema I recently had with the renderer was how to implement tangent space bump mapping in a clean way. The traditional approach–if you can call it that, since it hasn’t really been around all that long–requires transforming the light vector and sometimes view vector (for specular hilights) inside the vertex shader, then passing that information to the pixel shader, where the lighting calculation takes its normal from the actual bump map texture, and proceeds normally with the rest of its calculations. Read more…
August 9th, 2004 - Renderer, Shader Editor
I would estimate that a good 50% of the code for the renderer is now complete. PS 2.0 is currently the minimum spec for running the engine, because previous versions severely limit what can be done in terms of per pixel shading effects.
I mentioned in the last update that I planned to write a shader editor. In the past couple of weeks I was able to do just that. I think I’ve succeeded in keeping the interface intuitive and simple, while retaining the flexibility and power that you’d want in an editor. Sorry, it’s hard to phrase that in a way that doesn’t sound like market speak, so I didn’t even try. (-: Read more…
June 28th, 2004 - Shader system, part 2
The core code for the “shader network” design I talked about in the previous update is now fully implemented. It takes a non language-specific shader file as input, and outputs HLSL code, complete with comments and proper formatting. Read more…
June 22nd, 2004 - Shader system
I received an NV40 from nVidia a couple of weeks ago. Just trying some complex shaders in RenderMonkey that used to run at about 10fps on my NV35 now run at 60 or more on the NV40. The speed, SM 3.0 and full floating point support is going to help a great deal with engine development. Thanks nVidia (and Keith Galocy, specifically)! Read more…
May 29th, 2004 - Tech update
Engine work is going well. A few basic, but important components are done:
- Console and command parsing system
- OS support layer (everything that deals directly with the underlying operating system)
- File system, with full mod support
- Resource management / hash table lookups
- Profiler / performance stat output
- Generalized “Buffer” class, used for just about every type of buffered IO in the engine (file, network, memory)
- Texture manager
Without a doubt, the code thus far is some of the cleanest and concise code I have ever written. It’s nice to be able to do things from scratch, especially when you get to correct mistakes you made the first time around. Read more…