aaron wrote:Hi Joshua,
I'm not quite sure I understand you here. Baking on the normal-map detail can be done now (bump-mapping, yes?), but surely parallax-mapping is view-dependent, so you have to do that at run-time. Have I misunderstood?
You're not too far astray! Parallax mapping simply adds a heightmap to the Alpha channel of a normal map, and then off-sets UV coordinates so that the surface occuls itself. Of course it requires a real-time element (the shader, which could be found in various places on the web, in various forms), but the asset generation is what I was suggesting:
Generate a tangent (if the terrain is deformable) or world (more efficient) space normal map that contains the finest detail level for the terrain's diffuse texture (and not any actual terrain information), including blades of grass and pebbles and such, and create a heightmap that displays the same surface detail as a grayscale heightmap. This texture map could be loaded into any normal/parallax map solution, and we'd see the individal blades of grass occulling each other, and each pebble would look as if it had geometric properties.
Here's an example of Parallax Occulsion Mapping:http://www2.ati.com/stream/radeonx1k/AT ... p-v1.1.mpg
aaron wrote:That's just a matter of switching the grass textures for dirt/moss and baking-on the appropriate detail/bump-map. I'll make a demo climate for this after I've got beta3 out the door.
This is what I'm aiming for with the 'temperate' climate (with reference to this image
). Further improvements are possible, of course, as I've only spend a few minutes tweaking the grass textures.
If anyone can pull it off, I've no doubt it's you.
aaron wrote:Sounds quite reasonable. Hopefully this won't stray too far into the megatexturing thread, but could you discuss the benefits of using a high-res unique texture for the close-up dirt/moss when compared to splatting the same thing? I would have thought that since the close-up ground texture is only visible over a very small distance (<20m), and is largely obscured by grass geometry, splatting would look pretty good. Just curious.
Well admittedly, this technique is implied to have full textures being displayed rather than splats, but the concept could apply to any technique where LODing comes into play.
Splatting, by it's very nature looks good:
This is especially true up-close where high resolution splat textures can show off as much detail as the developers pack into them. You can also attach normal/parallax maps to each splat texture to easily add extra implied detail, without too much complexity.
One downside to the technique though, is that it is very expensive for the GPU. As a result, some limitations are usually put into effect. One technique is to splat only very close to the camera (or world-position), and then alpha blend into a low resolution (which it must be to fit entirely into video memory) standard diffuse texture to represent the rest of the world.
Another limitation is the amount of textures that you can "splat between" on any given area. I've heard that you use over 10 texture blends at a single location, whereas anything over 4 or 5 in a real-time splatting situation quickly becomes expensive. As a result an L3DT user must find a way to smoothly transition between the rather cruder up-close splatted world with the pregenerated, more complex L3DT generated terrain.
And what happens if you decide that the diffuse texture that you've managed to cram into video memory isn't impressive enough (Oblivion
is an example of this problem. While this shot is nice and polished, any time there isn't foliage covering up their second level of detail the terrain looks horrible)? Developers must then design some sort of LODing system to swap out parts of textures to represent the terrain after the "splatting level" at varying levels of detail. Of course they couldn't fit all of this into memory at any one time, and we're front and center where megatextures begins.
So in short, splatting does look great, and while it doesn't offer uniqueness it certainly can contain and blend a good level of detail.
However it is a resource hog, and as a result many crippling limitations must be added to the equation to get it working correctly.
A nested chunk based image solution (not necessarily Megatextures, we're actually using GeoClipMaps
) on the other hand, allows you to use those same complex algorithms that you used to create your beautiful terrains exactly as they are, and intelligently displayed so as to consume less resources and in some implementations require no shaders whatsoever. As a result, we have more control over the solution, and the final results. We can touch up individual areas (more frequently visited roads lets say) by hand. And unlike splatting, our total image detail size has very few limits. With GeoClipMapping, two researchers got a 40GB texture of the US working real-time seamlessly at 60 FPS (http://research.microsoft.com/~hoppe/
). The amount of detail we want to incorporate can scale much more easily as well. With simple user settings, we can easily toggle the highest clipmap size to scale too, so that a game project can scale up as the graphics cards do, to a degree.
The real challenge is developing the art pipeline tools such as L3DT which can create terrain and textures that contain the level of detail needed. I've heard people complain in various forums that Carmack's terrains in his screenshots weren't earth-shattering (although I think they are actually rather good). This has nothing to do with his technology but rather his art creation pipeline.
There is no terrain package out there that can do this to the level demanded by the next-generation of game titles. We worked with a middleware company for terrain for a brief while that I won't name. Basically for over 50,000 USD they would incorporate their solution of terrain rendering, including texturing that would scale with full LOD implementation. The one problem they had, was that their highest detailed terrain was not up to snuff. Our character models literally, looked misplaced in such a low-detail enviornment.
Perhaps you can imagine the excitement me and my dev team felt when we stumbled upon your product, Aaron. I really think that your efforts are the most promising that we've seen and as I've said, if anyone can take the texturing to the next level it's L3DT.
So was that reply long enough?