Resistance Force is team based multiplayer FPS game with focus on close combat and realism.
Introduction of a new technology for detailed texturing of large models like terrains.
Posted by jezek2 on Mar 5th, 2010
It has been some time since last blog activity, more than it should be. It has two main reasons. The one is that I've been distracted with unrelated matters more than usual. The second is that I'm working on a new technology for Resistance Force's engine: something I called the composite texture.
When I started working on extending the existing map and adding more details I've very soon ran across a big problem with detail texturing of large areas like terrains. You can either repeat some detail texture over and over (as done for regular "blocky" geometry, often called brushes), but you'll lose control about any details. Or have one big texture for the whole area. But due to memory/speed constraints you can't have really big textures.
In other engines there is usually special case for terrains using technique called texture splatting. Instead of one repeating detail texture there are 4 detail textures (like rocks, grass, dirt, ...) in addition to control texture with 4 color channels (red, green, blue and alpha channels), each controlling how much any given detail texture is visible. This works great, but it's often limited with maximum of 4 detail textures (the reason is that it can be easily done in single pass using one control texture) and it's available only for regular grid terrains.
Another interesting technique is MegaTexture developed by id Software. It allows you to have one really big texture for all geometry. The big texture is heavily compressed and stored on disk and dynamically streamed from it depending on what area player sees. The advantages are big: in engine it has practically constant performance characteristics so artists can go wild and touch any individual pixel they want to without worrying about anything. There are also disadvantages though: hugely increased amount of disk storage needed (even more for editing) and increased workload for artists, both not much indie friendly.
I've taken different approach for Resistance Force with composite texture: basically I took the idea of texture splatting and extended it by removing limit of number of detail textures (layers) and by ability to use it on any mesh, not just regular grid terrains. By having unlimited layers it also opens new possibilities such as placing any number of decals or even touching individual pixels by transforming some detailed area to decal and editing it in graphics editor. This way I have much more freedom when texturing while maintaining minimal disk storage and performance costs.