Relief mapping without shaders


I have bump mapping working in my program perfectly with the help of the GL_DOT3_RGB texture environment extension and a normalization cube map.

This gives pleasing results but I wish to stray from this and into relief mapping, from which I have read looks better than parallex mapping.

Is there a way to do this without shaders?

Everywhere I look they mention shaders, but I have not yet looked into these as, at a glance, they scare me. Also, they are not as compatible on older cards.

Also, I am going to be jumping into the pool of shaders, which one should I go for? I am leaning towards GLSL or CG.

Sure you could do it without shaders, but you would be doing a lot a re-rendering, readback to CPU, then render again (etc).

Parallex mapping is JUST possible without “shaders” (nvidia texture shader/combiners) but relief mapping is too many dependant texture reads.

Shaders are not hard at all, if anything, they are easier than texture combiners.

If you want to add GLSL to your program, drop me an email and I’ll step you through it.(dtrebilco ‘‘at’’
(I see you are from Australia, if that is Brisbane, I can probably show you in person)

Yes, relief mapping requires looping and therefore requires shaders. Shaders are not really as hard.
What language to choose depends entirely on your own preferences. I am using both GLSL and Cg, with the incline towards the latter (due to the fact that it provides more advanced features such as member functions and good bool4 operations). Cg is also better in the way that it provides a kind of FX and OpenGL state management, so it is possible to use CG runtime for these purposes. By the way, new Cg 1.5 supports GLSLF/GLSLV profiles, so you could just load GLSL code into Cg shaders (!!!) and use all the advantages of the Cg runtime.

Cool. I am going to have a look into CG, of which i have been more inclined to do. Then I will look into GLSL.

As for doing this without shaders, are you talking about a multiple pass function? So far I have been trying to keep everything in a single pass.

sqrt[-1], I am in the south east of SA, so I don’t think in person is possible :stuck_out_tongue: