Parallax Occlusion Mapping

Published May 16, 2006
Advertisement
I have been experimenting with Parallax Occlusion Mapping over the last couple of days. It is a very interesting algorithm for reducing geometry processing by encoding the surface information into a texture and the details are figured out in the pixel shader.

This of course reduces vertex cost and increases pixel cost, which most of the time is the opposite of what you want to do [smile] but it is still a pretty cool trick to have at your disposal.

I decided to get the parallax portion of the shader up and running first. My first go at it was alright, the second and third were much better. Finally, I compared my implementation with that of Natalya Tatarchuk from ATI (a reference implementation is in the DirectX SDK). There were a surprising number of similarities, but I guess if you are trying to do the same thing then there is a likely similarity in the possible solutions.

Here is a screenshot of the current iterative implementation:

0 likes 2 comments

Comments

Mushu
Wow, that looks amazing. My only gripe would be that in the foremost part of the image the height seems a little granular, probably because of the resolution of the texture or something.

Awesomeness, nonetheless. What kind of FPS are you getting at this point?
May 16, 2006 11:28 PM
Jason Z
You are correct, the scale that I apply to the height read out of the texture is a little bit too coarse. It was actually more for viewing in the snapshot than anything else.

As far as performance goes I am not really sure. I am using an iterative approach with an SM3.0 implementation, but I haven't been able to run it on SM3.0 hardware yet - only the reference rasterizer. My home machine has a GF6200 in it, so it should actually make me optimize quite a bit [smile]!
May 17, 2006 05:13 AM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement