using Register Combiners for DotProduct Bump Mapping...

I’m relatively new to OpenGL and I want to master my knowledge in most advanced issues, so I decide to emphasize on Bump Mapping as a technique that greatly improves visual appearance of a textured(skinned) mesh, I’ve read NeHe’s Tutorial #22, and I found that Emboss Bump Mappping really is “a hack” or “a fake”, and also the visual and performance results are not good. Then I read some papers about this issue and I learn that DotProduct Bump Mapping maybe is the best method to apply to my project/demo(except Environment Embossed Bump Mapping, but I think it’s to advanced despite I haven’t see inplementation and/or code in OpenGL).
I need an advise: is it good to emphasize and learn nVidia’s Register Combiners Technlogy in turn to implement DotProduct Bump Mapping or ATi’s analogical technology? I realize that in that cases I’ll loose some hardware independance, but these cards(nVidia and ATi) are most commonly on the market today.
And last, would you recommend me an some book, including theory about that subject?


Before jumping on either register combiners or fragment shaders you might want to take a look at GL_ARB_texture_env_dot3. It’s enough for basic bumpmapping and is widely supported.

Hi there! You DON’T need a book to do suck a basic thing. EVERYTHING you need is in nVidia site, download all the papers and demos about it and also check the nVidia OpenGL SDK(if you use OpenGL, off course) or check DirectX SDK(if you use D3D). What is your graphics card ? If you use a GeForce3+ it is a lot easier to implement because you can normalize vectors in the register combiners, if your graphics card isn’t a GeForce3+ than you will need to use a cube map for normalization. All of this theory is in nVidia papers.

Go read them and then come back here if you have doubts.


here is a tutorial (better a code demo) about card independent dot3 bump mapping using ARB extension:

but it’s a heck to understand, because of little comments in the code.

thanx for the link

despite this demo(from NitroGL site) not runs on my machine because in this moment I have Matrox G400 video card and this card haven’t all the extensions that is required by the demo(it has GL_ARB_multitexture, but hasn’t GL_EXT_texture_env_combine or GL_EXT_texture_env_dot3). Soon I’ll have at least GeForce 2 and I think I’ll can to emphasize on nVidia Technologies especially Register Combiners.

huh werent matrox the first ones to have dot3?
there is combine but no dot3.
u are correct ignore emboss bumpmapping it looks terrible, it might look halfway good for a single quad but try doing a realscene with it uggg.
as backup to what humus saiz u dont need register combiners to do bumpmapping. dot3 is suficant

Matrox gotta be the last one to have dot3, the Parhelia supports it, but not the G400/450/550. Matrox were the first to support EMBM though.

Does your card support ARB_texture_env_combine and ARB_texture_env_dot3?

If so, it’s trivial to convert from the EXT versions to the ARB versions. Since the ARB versions are required for OpenGL 1.3, there’s a pretty good chance that they’re supported. I did this to run NitroGL’s demo on Intel hardware, which currently doesn’t support EXT_texture_env_dot3, but does support ARB_texture_env_dot3.

[edit - Just checked. At least on Delphi3d there’s no mention of the ARB version either… sorry.]

– Ben

[This message has been edited by bashbaug (edited 11-02-2002).]