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?
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.
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.
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.
Virtual Texturing - Brinks 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.
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)?
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.
@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 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.
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.
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.
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.
Replies
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.
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
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.
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.
@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.
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.
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.
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.
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.