Home Technical Talk

id tech 5?

polycount sponsor
Offline / Send Message
malcolm polycount sponsor
Hi there, I did a search on this forum and did not come up with any posts. Just watched some Carmack videos and it appears his new magic is layer as much shit as you want using decals and blends and then the engine bakes this down to a very massive texture and then streams in chunks of the massive texture to the user as they move around the world. Is this correct?

Replies

  • verybad
    Options
    Offline / Send Message
    verybad polycounter lvl 17
    That's essentially what Quake Wars did, Quake Wars only used that method for the environment, Rage supposedly uses that method for all the textures (characters, etc), though it isn't confirmed.
  • malcolm
    Options
    Offline / Send Message
    malcolm polycount sponsor
    I tried quake wars on xbox360 just to check out the mega texture on the terrain. It was mega low res?
  • MoP
    Options
    Offline / Send Message
    MoP polycounter lvl 18
    In ETQW we had 32,768 * 32,768 pixel "megatextures" across each map's entire terrain. All terrains were 32,768 units across each axis (a player is about 72 units high, so a unit is about an inch).

    So yeah, the resolution was quite low, but it was helped with detail textures. And it did mean we could do completely unique stuff everywhere with no extra performance overhead of any sort, which was nice. If you look at some of the maps (particularly Refinery) they have the sort of terrain detail - erosion, weathering, blended surface types - that I don't think any FPS has managed before (or since, yet, until Rage comes out!).

    The Rage stuff is basically like you described. From what little I know, it seems likely that you start out building up a base of tiling textures blended with unique masks (either painted by hand, or generated from tools like World Machine), you'd use these for stuff like grass, rocks, sand etc - the big details.
    I wrote a tutorial for this using the in-game ETQW tools here:
    http://wiki.splashdamage.com/index.php/A_Simple_First_Megatexture

    You can see how you get some nice heightmap blending options to get more uniqueness out of tiling textures. They were called "distribution pattern" maps.

    Hoffa (our lead environment artist) wrote this tutorial for more advanced, detailed terrain texture creation - the end result looks awesome and unique:
    http://wiki.splashdamage.com/index.php/An_Advanced_Terrain_and_Megatexture

    That includes more complex mask editing.

    Then, yes, on top of that, you use decals and overlays (we called them "stamps"), you'd just fly around the level in the game and stamp pre-defined unique textures on top of each other. It seems id Tech 5 improved this technique a little by allowing multiple editable layers of stamps, so you can go back and tweak stuff or toggle parts on and off. In our tools you could just stamp whole sections at once, but once you were done there was no "editing", so you'd either have to erase the stamp, or stamp other stuff over it to hide what you didn't want. It worked pretty well in production though, and artists quite liked doing the stamping work IIRC.

    If you read the Sparse Virtual Texturing PDF that Jan Paul van Waveren from id put out recently, it's here - http://s09.idav.ucdavis.edu/talks/05-JP_id_Tech_5_Challenges.pdf - then you will see that they are actually using virtual texturing for everything in id tech 5 where possible. You can use "traditional" textures too, but you will get better performance if you virtualise, since it cuts down on loading time and just streams in when necessary.

    I seem to remember reading somewhere that the Rage landscapes use something like 128,000 x 128,000 pixel textures, but I might be wrong there.
  • CrazyButcher
    Options
    Offline / Send Message
    CrazyButcher polycounter lvl 18
    though it isn't confirmed

    it is: http://s09.idav.ucdavis.edu/talks/05-JP_id_Tech_5_Challenges.pdf
    you can see different "atlas tiles" on the character models as well

    edit: damn mop beat me
  • TheSplash
    Options
    Offline / Send Message
    • Virtual Texturing - Brink’s proprietary technology, Virtual Texturing, breaks new ground on current-gen consoles and PCs with an even greater focus on highly detailed characters, realistic environments, lighting, effects, and atmospherics,. This competitive lead on the squad-combat genre helps thrust players into the gritty reality of the Ark's epic secluded arcology.
    That quote is from a brink press-release/fact sheet thingo, although kind of vague it sounds like splash damage is using something similar to mega texturing for brink?

    Texture streaming/ Virtual textures are a pretty simple concept, I think its the implementation of the technology that's exciting, I'd love to see the quality obtained when using the same amounts of texture space as rage but on a smaller sized world, you'd get an absurd texel density.
  • CrazyButcher
    Options
    Offline / Send Message
    CrazyButcher polycounter lvl 18
    raising the texel density, also means potentially much more data traffic... which is the key to getting this technique to work well at all.
  • commander_keen
    Options
    Offline / Send Message
    commander_keen polycounter lvl 18
    So if the same texture data is used on world and characters then normal and spec texture data is also saved along with prebaked diffuse texture data? Or would characters be their own texture data and environments could only have very simple dynamic lighting (and no specular from static lights)?
  • malcolm
    Options
    Offline / Send Message
    malcolm polycount sponsor
    Interesting idea, I'm worried the xbox360 won't be able to stream the texture chunks in fast enough so you will see mega low res mip chains if you travel too fast. I'll wait to see if rage pulls it off. I was wondering though do the uv's have to come terrain tool or could I unwrap a building in maya and still get this mega texture benefit of streaming it in chunks? We're currently using 512x512 gets tiled 4 times in world space. I think that works out to be 4 units is one tile of a 512 texture in game. Anything lower res than that is below par in visual quality in my opinion. The other interesting thing about the mega texture is you could do a light bake in it for free, no 2nd uv set and no extra ram used for light maps.

    Mop I am curious did the megatexture kill your production cycle, ie did artists take a million years to do the terrain texturing or did artists pick up the tech and get productivity boosts. Seems like a lot of work to paint every inch of the world, although I guess you could just put the detail where you need it like anything else. Yeah Carmack said in the video I watched last night rage = 128000 pixels. Thanks for those links that pretty much answered my questions.
  • CrazyButcher
    Options
    Offline / Send Message
    CrazyButcher polycounter lvl 18
    @malcolm, I think you are right with your feeling that "detail where its needed" would be the common approach. And with procedural textures you could fill the base content rather quickly and have good quality without repetitiveness of tiling textures.

    @keen, I think one would unify the thing. And have one common atlas system (read 3 textures, diffuse,spec,normal) for everything. Special casing for what in a frame is "character" and what is "environment" wouldn't be efficient. The only thing being different would be the particle stuff, I think that would be rendered old style and after the rest.
  • MoP
    Options
    Offline / Send Message
    MoP polycounter lvl 18
    malcolm wrote: »
    Mop I am curious did the megatexture kill your production cycle, ie did artists take a million years to do the terrain texturing or did artists pick up the tech and get productivity boosts.

    Nah, once we had picked up the tools (and our tools guys were refining them based on our feedback where possible), it was pretty fast. We had 2 people working on megatexture terrains full-time (I was one of them) - the leveldesigners created heightmaps initially, then after playtesting we created unique lowpoly meshes from these and marked out areas which could not change for gameplay reasons, then used World Machine to do erosion, detail and all that stuff - it outputs masks for you and you can get some crazy nice detail out of it without much effort once you have some good erosion node settings.
    malcolm wrote: »
    Seems like a lot of work to paint every inch of the world, although I guess you could just put the detail where you need it like anything else.
    Exactly, detail where needed - a lot of the "distant hills" are just pure world-machine mask based tiling textures with distribution patterns to break up the tiling nature of them. The "stamping" was the final pass which added unique detail where the player would be most, but that took the least time compared with setting up a good solid base of terrain texture.
  • Whargoul
    Options
    Offline / Send Message
    Whargoul polycounter lvl 18
    Streaming shouldn't be as big of a problem as it seems. In the worst case - you're streaming in a screen-space view full of new textures (x3 for spec/norm, etc). If you're rendering 720p, that's sort of like a 1280x720 texture split into many small chunks. Since most are not parallel to the screen, you'll need a bit more than that, plus stuff like detail maps, which are probably resident always. But you can see that even when jumping to a completely new spot, that that is not a shitload of info to stream in compared to a regular streaming game - it actually minimizes the amount of data needed to be streamed in. Now, when you're flying along, you're only streaming in chunks that need the next mip, so the data is less. If you swing your head around 180, those textures should probably already exist in the cache so there won't be any popping.

    In the videos they showed up the tools, when he teleported or did a camera jump-cut, it seemed to fetch the entire world in just a few frames. When the camera was on a demo loop, they might have done something smart for the camera cuts like pre-caching ahead or something to get the data ready... not sure.
  • Eric Chadwick
    Options
    Offline / Send Message
    MoP I wanted to thank you for sharing the info, nice to hear more about the tech from the artist's perspective.
  • Ben Apuna
    Options
    Offline / Send Message
    Yeah MoP, thank you for pointing out those great ETQW megatexture tutorials as well.

    I had heard of World Machine before but had never really spent the time to check it out. Just downloaded the free version last night, it's pretty awesome.
  • PixelGoat
    Options
    Offline / Send Message
    PixelGoat polycounter lvl 12
    World machine is teh shitz alright :)
Sign In or Register to comment.