"Huge bright outdoors" and "32 player matches" are likely not the first thoughts that come to mind when one talks about the DOOM 3 engine but Splash Damage and id Software are planning to change this perception with Enemy Territory: QUAKE Wars.
Roughly a year ago today id and Splash Damage sent out a press release announcing the game and MegaTexture, a which was described simply as: "Battlefields are perfectly rendered using MegaTexture, a totally new rendering technology developed by id Software that crunches millions of polygons and a gigabyte-scale texture into a single, seamless and un-tiled landscape with unique detail down to the square inch or the un-obscured distant horizon." It has later surfaced that MT has the ability to handle a unique texture of 32,768 x 32,768 pixel size while only using around 8MB of video memory at all times. ETQW uses this for terrains only but John Carmack has stated, during the QuakeCon 2005 keynote, his intent to use this unique texturing capability on everything in the new engine id is currently working on.
The team is hard at work on the game and finishing up the demo they will let people play in a couple of weeks at E3 but Arnout van Meer, ETQW’s Technical Director, graciously answered a few questions about the game’s improved renderer. Like most at the company, Arnout comes from the mod community where he worked on Quake 3 Fortress and Wolfenstein: Enemy Territory as Lead Programmer.
MegaTexture is probably the most well known improvement that ETQW will have over DOOM 3. The 32,000 by 32,000 6GB source texture you mentioned in previous interviews suggests you're not using any procedural textures at run-time but considering the multiple DVDs implication, are the .MEGA files compressed, and if so, are you compressing by tile or as a whole (single file)?
Enemy Territory: QUAKE Wars features a tool suite for creating MegaTextures called MegaGen. Once the Artist or Level Designer has completed the artwork, MegaGen outputs two entirely unique 4GB textures - a diffuse map containing colour data, and a normal map - and then combines them into a single 5GB data file. This data file is then split into unique tiles suitable for streaming, and then compressed to reduce disk space usage.
The resulting unique MegaTexture is around 500MB in size. This represents a reasonable tradeoff between ETQW’s visual quality and disk space usage (maintaining a shippable size for the game).
Does MegaTexture require any sort of custom fragment program to render? If so, could you tell us how complex it is in terms of instruction count/texture reads? How does it compare to the other fragment programs you use?
The low level ETQW rendering engine has moved on a fair bit since Doom 3. The fixed function pipeline has been dropped, resulting in a pure shader-based renderer. The MegaTexture shaders are a set of special case version of our normal ones which deal with ambient lighting, normal light interaction and the other stages in our pipeline. They are some of the more expensive ones in the game, and fairly heavy on texture reads. Depending on the target hardware, some of the texture lookups get replaced by ALU instructions to improve performance.