OverDose is a class, team& objective based multiplayer game set on a post apocalyptic Earth, were the Confederate Marine Corps and Marauders battle it out for supremacy over the destroyed cities of a war torn world. Using idTech2 as a base, we are writing our engine from the ground up to take advantage of modern day graphical options and details levels to bring you eye popping class based multiplayer mayhem. This isn’t just war... Its an all out apocalypse!
New per pixel detail texturing preview - See for yourself if it makes a difference?
Posted by Gavavva on Jun 6th, 2010
First of all, if you haven’t noticed, the OverDose site has moved, so if you still haven’t updated your browsers then click the link below to be taken to the new OverDose site:
Detail texturing has been around for many years now, so its nothing new in theory. The idea has always been take a greyscale texture, and blend/tile it over your original surface so that it’s set to a smaller scale than your actual texture, thus simulating a higher pixel density. Even though the main texture was still lower resolution, it always gave the illusion that your textures were in fact high resolution than they really were. This worked quite well as instead of loading dozens of higher resolution textures, you simply loaded a few extra detail textures, and it worked great from a performance/memory stand point. Here is an example from Unreal 1, and while this may seem a tad old, remember that this same technique is in use even today:
There’s nothing wrong with that shot, given its age. The detail texture does a great job of hiding the lower resolution texture under it, and at first glance it really does fake a higher pixel density. But its not exactly high tech is it? Its not “next gen” as they say. So what does OverDose do differently?
Well, if you’ve been keeping track of things you would know OverDose has a full per pixel renderer that works with our lighting in a way that means every single surface is lit, in real time, correctly. Using normal mapping we can create amazing detail at a small performance loss. Its used in a lot of games these days, sometimes called bump mapping, sometimes using different textures, but the end result is the same; Faked detail on a lower polygon surface that gives the illusion of a higher polygon surface.
So you have to understand something… OverDose is able to correctly simulate a crack in a wall to such a degree of accuracy that light from the world actually bounces off of the angles where the crack dips into the surface, thus giving the illusion the crack is really there… So wouldn’t that make detail textures… Well… Pretty pants?
The answer is yes. It does. The detail textures in the shot from Unreal above stick out like a sore thumb. It simply looks like you mapped a really bad overlay over it… Because that’s all it does. It worked back in the day with limited hardware, but now, its just far too cheap. So what does OverDose do differently?
Well, OverDose loads detail textures, and it blends them over the surface correctly. But it does it on a per pixel level. The detail textures are actually normal maps, which are blended to a scale of the designers choosing, over the original normal map. Thus, our detail textures actually work in conjunction with the light sources to accurately reflect light back at you, the same way a normal map would. In short, we are able to fake a hell of a lot of detail, with little performance loss.
Lets take the following shot of OverDose for example:
It’s not a bad texture. Its 512x512, and the light source is smack bang in the middle of the wall, but its not bad, just a tad low res. Keep in mind that for a 512x512 texture such as this we are actually loading three surfaces; The diffuse map, the specular map and the normal map (Four if you want parallax on the surface). It’s not bad, just a little… Bland. It has detail, it works with the lighting correctly so that each brick is set into the wall, its certainly not flat. It’s just… Well, a 512x512 texture, clearly.
So, lets use our new detail texturing on it! This is our result:
Compare the two. See the difference? You should! We have now given our 512x512 the surface detail of a 2048x2048 texture, at little to no extra cost! The detail jump this give us for such little performance loss is actually a fantastic thing as it allows us to push the detail further than ever before.
Here’s a close up of the effect in action. First, the original surface:
And now the detail texture stage added:
I’m sure you’ll all agree that the detail jump is quite nice and really visible, which makes the overall idea quite good for all us designers :)
As always, the latest news for OverDose can be found on the OverDose Discussion forums at our site, so get over there and register if you haven’t already.