Posted on September 29, 2007, Steve Bungie Weekly Update 09-28-07 – Why Halo 3 is 640p
The post-launch Bungie weekly update is, well, rather short. That’s because there’s probably nothing more for Bungie to give us, or in the immortal words of Austin Powers “… and I’m spent!” Not only that, but many on the Bungie team have been working their butts off the past few week in preparation for the Halo 3 launch. That said, many of those Bungie employees shipped overseas are just now returning home to their families.
Regardless, in the aftermath of the launch, Bungie are still tackling some of underlying Halo 3 issues; many of which aren’t issues at all. To subdue the irritable, Bungie are now providing a convenient Halo 3 Launch Week FAQ to clear up some of the more commonly asked questions. If your question right now is “Where is that damn skull, Bungie!”, don’t expect an answer from any of the Bungie employees as “that’s part of the fun.” Bungie admits that some of the achievements are rather difficult to obtain, but assures us they are indeed possible to obtain.
“OH NOES!!! HALO3 GRAPHIX R TEH SUX!!!”
Of course with a game as largely hyped as Halo 3, it’s almost inevitable the techies would pick it apart piece by piece. Brainiacs over at Beyond 3D have made a big hooplah recently over a discovery of Halo 3 being natively 640p. After taking screen dumps of their 360′s output and dissecting the resulting image, the techies did some quick math to determine that Halo 3 actually scales a 640p image upwards. Scaling isn’t uncommon, as many games are probably doing this to achieve a resulting 720p or 1080p image. The important question is: Does the end user notice the difference? From my point of view, it’s a completely subjective answer. Well, Bungie couldn’t leave this one alone, so they gave their 2 cents on why Halo 3 renders natively at 640p (and trust me, Halo 3 isn’t the only game out there that does something like this):
One item making the interwebs rounds this week was the scandalous revelation that Halo 3 runs at “640p” which isn’t even technically a resolution. However, the interweb detectives did notice that Halo 3’s vertical resolution, when captured from a frame buffer, is indeed 640 pixels. So what gives? Did we short change you 80 pixels?
Naturally it’s more complicated than that. In fact, you could argue we gave you 1280 pixels of vertical resolution, since Halo 3 uses not one, but two frame buffers – both of which render at 1152×640 pixels. The reason we chose this slightly unorthodox resolution and this very complex use of two buffers is simple enough to see – lighting. We wanted to preserve as much dynamic range as possible – so we use one for the high dynamic range and one for the low dynamic range values. Both are combined to create the finished on screen image.
This ability to display a full range of HDR, combined with our advanced lighting, material and postprocessing engine, gives our scenes, large and small, a compelling, convincing and ultimately “real” feeling, and at a steady and smooth frame rate, which in the end was far more important to us than the ability to display a few extra pixels. Making this decision simpler still is the fact that the 360 scales the “almost-720p” image effortlessly all the way up to 1080p if you so desire.
In fact, if you do a comparison shot between the native 1152×640 image and the scaled 1280×720, it’s practically impossible to discern the difference. We would ignore it entirely were it not for the internet’s propensity for drama where none exists. In fact the reason we haven’t mentioned this before in weekly updates, is the simple fact that it would have distracted conversation away from more important aspects of the game, and given tinfoil hats some new gristle to chew on as they catalogued their toenail clippings.
In layman terms, Halo 3 is rendering two scenes and combining (or averaging) the result to give more “realistic” lighting. Of course, we are taking Bungie’s word that the lighting improvement is significant enough to warrant this method. It would be nice if Bungie could provide a side by side comparison of single vs. dual rendering. In any event, the caveat of this dual rendering procedure is performance cost. Rendering two different scenes is almost twice the work (certainly twice the shader work with HDR). Looking at it mathematically, 1280×720 (720p) is 25% more resolution than 1152×640 (640p). Again, looking at it mathematically, 25% certainly sounds like a lot. However, when doing a visual comparison, 640p & 720p are a lot closer than the numbers would have us believe. Let’s take a look at the image below:
Here is my crude attempt at visually showing the “native” difference between 720p and 640p. Obviously, the image above is not a true 720p image, but an approximate ratio. The yellow box in the middle represents where the 640p image would be if placed inside a 720p image. As you can see, a 25% of resolution loss does not seem that much perceptively. Which leads me to side with Bungie when they state consumers won’t notice the difference. If there is indeed a tradeoff here for more stable framerate (and better lighting), then the perceptive loss in resolution is probably acceptable. The ends justify the means.
Of course, technical issues like these are generally one of my biggest beefs with consoles, in that the end user has no control over things like graphical settings. On a PC you can forgo framerate for higher resolution and vice versa. In the case of Halo 3, Bungie made a developer’s call. Unfortunately, as an end user, you are completely at the developer’s whim when judgment calls like these are made. “Control” is why many end up making a big deal out of this. Just remember it’s all about the end user perception.
It’s good these techie guys are dissecting games like this, because it will keep the developers on their toes when it comes to performance tradeoff decisions. In many cases like these, the marketing will try to tout X-brand console game as having 1080p graphics, when in fact it’s just software trickery. And, unfortunately, many consumers get caught up in the whole marketing buzz without really knowing what’s going on behind the scenes. Ignoring the marketing buzz, the question we have to ask is “Will I notice the difference?” In the case of 720p vs. 640p, it’s almost moot since the image gets almost transparently scaled up to 720p. However, when the debate becomes a 720p native render scaled up to 1080p image vs. a native 1080p render, things get very subjective. In fact, we’ll just leave that topic for a future debate.