View dependent textures

Many surface textures are 3D in reality, but the 3D features are too small to implement using true geometry. These 3D bits change the appearance of the surface depending on the view angle. Now, using 3D textures you can use different slices to supply different textures of different viewing angles! Take a grass surface, under different view angles it looks different (different light effects) with 3D textures its all within reach !

Volumetric Light Maps

We all know how the Quake games use 2D lightmaps to create stunning looking 3D environments. One problem with these lightmaps is that they are static. You can not move them unless you want to provide lightmap textures for each and every position of your light source. With 3D textures this is solved. Imagine creating a volume containing a sphere of light, bright white in the middle and more and more translucent towards the edges. Now, every object that enters this cube of material can get an extra lightmap layer from this 3D texture, fully automatically the right intensity is found based on the distance to the light source. The closer your object gets to the center of the cube the brighter the 3D texture is. Just think of this: imagine a wall, move the volume closer to the wall. Notice how the wall intersects the cube and the spherical light blob in it. Automatically a spherical white flash appears on the wall, and as when you keep on moving all the correct slices are selected! Now, imagine zooming the volumetric 3D texture to create a flashing light, or morphing the shape by extending it. The possibilities are endless! This is probably one of the key uses for 3D textures. Note that this effect can be used on any kind of geometry, 2D lightmaps only tend to look good on flat surfaces. 3D lightmaps will look cool on any kind of surface.

(John Carmack suggested this technique in his plan, a copy of his text can be found in our forum at this link)

To infinity and beyond…

The techniques above are just some idea’s I had. I am sure that experienced game developers can come up with many more effects. Maybe you can come up with something cool, so place it in the forum. After all, some developer might see it and implement it! We already have some suggestion at the following link, included is an "infinite non-tiling surface texture" idea by Scott C.

Q&A

  1. How does VTC work? Is it related to S3TC or VQ as described in the article?

  2. Do you use special data re-ordering for more optimal memory access, like 2D textures have swizzled (many names for it) non-linear orders?

  3. Can you give some more cool applications, or maybe expand the ones I mentioned above?

  4. Did you get any feedback from developers about this new feature? Do they like it?

  5. Since Microsoft is licensing this VTC does this mean that other 3D IHV can implement this technique without costs for D3D? Also in OpenGL, or will they need a special license from NVIDIA for other APIs? If a license is needed how much would it be?

  6. S3TC took ages before it was used, how will you avoid this problem?

  7. The key to compression is a good compression utility, will you make a user friendly tool freely available?

  8. …

Conclusion

3D textures are cool, but they come with a huge cost: their size. Hopefully NVIDIA's VTC can compensate this cost and make 3D texture a truly usable and cool feature.