Z-Correct Bump Mapping (OT?)

How does it differ from normal DOT3 bump mapping?

(Sorry if this is OT)

I don’t think it’s off topic at all

I believe that z-correct bump mapping “perturbs” the value that would be written into the z buffer at each point on a bump-mapped surface. So, for instance, if you had two bump mapped walls intersecting at a corner, that intersection would be rough instead of perfectly flat. This helps add to the illusion that there is real depth to the object.

nVIDIA’s tide pool demo shows this off really well.

– Zeno

Ok, so in addition to the DOT3, it does a depth replace too, to “displace” the surface.

That’s pretty cool.

i want finally an official statement or document showing HOW to do this… its so annoying… they present a feature and dont tell you how to do it…

So where is this tide pool demo? You mean the box with the water in it and a light bulb suspended above?

Im wondering if it can handle corners
If a cube is bump mapped and if you look at it from one face, will it look alright at the edges? Im guessing no.


I think the feature is currently exposed through a new texture shader operation GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV as part of GL_NV_texture_shader3. See http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_texture_shader3.txt .

The texture shader docs ( http://developer.nvidia.com/view.asp?IO=IO_20010903_3281 ) currently only describe GL_DOT_PRODUCT_DEPTH_REPLACE_NV.

UPDATE (for V-Man):

[This message has been edited by SnowKrash (edited 04-02-2002).]

The affine depth replace is just a subset of the regular depth replace. (However, if you can use it, it saves a stage and some performance. Since stages are limited in number it does enable new possibilities.)

I think the coolest thing that has been done with depth replace has got to be the OIT technique it enables…

  • Matt

and matt? yet a statement how it is done, the z-correct bumpmapping? it was promoted that nice and after releasing the specs it got not mentoied at all anymore…

I think this is a case where there are a lot of ways of doing it.

  • Matt

you mean slicing/layering around? or highly subdivided surfaces… but there is no new hardware-feature wich does it, right?

This is the same feature more or less which did the fast depth buffered sphere rendering using simple bilboarded quads. Subdivision you mentioned would be better. The depth displace is a screen Z displace. The only time you will see a visible effect is when there is some depth buffering between the surface and another object. the surface when viewed at an angle will still look flat. When it’s used it looks very good. The water waves against rock is the perfect demo for this.