Post news RSS Of Heights, Solidity and EnvRooms

Adding new texture properties for more effects with less work.

Posted by on

Height, Solidity and EnvRooms

This one here is now again a bit about graphics and engine work.

The most interesting parts of all the recent work are most probably the caching system as well as height and solidity addition. The game engine has now a proper caching system on the module layer. Every module obtains a per-game local and global cache area which it can work on. These are permanent caches the modules fill up with data to improve performance. The first time a game is loaded it takes somewhat longer to build up the caches but then things load fast. This also allows modules to improve quality and performance on game parts a player visits often. All of this though is under the hood so unless you want to you don't get in touch with it.

The other interest part is the addition of solidity and height texture properties. I'll add the Wiki entries later on but in general they add more possibilities to fake complex geometry in a simple and quick way.

The solidity texture property alters the physical solidity of materials. So what is solidity for if you have transparency already? The answer is quite simple. If you have physically based rendering you have view dependent transparency due to fresnel. Hence if you have a fully transparent sphere it still turns into a mirror at grazing angles. This is physically correct since transparency is actual just the ratio between transmitted/refracted and reflected subsurface light rays not how much it actually interacts with the material at all. This is where solidity comes into play. It defines the chance of a light ray actually interacting with the material at all. The images below show why this is required. You can use this for holes in geometry or ghost like objects or fading out/in objects. Both solidity and transparency can be used at the same time.

Solidity comparison

Last but not least the height texture properties. They are used in conjunction with normal maps and tell the graphic module about height difference on the material surface. Graphic modules can use this information for different kinds of algorithms (for example tesselation). Right now the graphic module uses it to create an image-space illusion of depth as shown in the video. Even more interesting it becomes if height and environment rooms are combined. By just defining a couple of texture properties you can get nifty materials in no time that work out of the box for all kind of objects (components, decals, particles, height terrains, asf) in all kinds of situations. Try doing that with UE4 ;)

The video shows the various texture properties in action on different object types including perspective Blender rendered environment room maps. (YouTube higher quality)

The possibilites are quite endless here. Combine height, solidity and envrooms and you can even slap windows and doors on walls with decals in no time to spice up your maps without messing with geometry. It can't beat true geometry but especially for games with lower polygon count it matters a lot.

More to come next time.


That's some pretty cool looking stuff you've got there.
Are you using a deferred pipeline? You may have talked about it before but I've kind of forgotten.
Wondering how you're dealing with translucent/semi-transparent objects in a deferred pipeline.

Reply Good karma Bad karma+1 vote
Dragonlord Author

Yes, the rendering is deferred. Basically it's . It evolved since then but the basic principle is still in use.

Reply Good karma+1 vote
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.