I would like to simulate ocean. So I decided to use a diffuse texture,
a cube map for reflection, and an animated bump map for waves. Now I
have to put all this together, and I found that this is called EMBM.

My problem is I can’t find any sample that explains EMBM without any
super powerful pixel shaders (that I definitely don’t want), or
without vendor specific extentions (ATI EMBM, or Nvidia register

I’d like to use only : ARB_texture_env_combine, ARB_texture_env_dot3,
and ARB_texture_cube_map.
This should be rendered in 1 pass on a 4 texture unit card (1 for
diffuse, 1 for cube map, and 2 for animated bump), and maybe not
renderable directly on a 2 texture unit card (should be better, but
you never get what you want). Anyway, even if this needs 3 passes on a
4 texture unit cards, I’ll go for it.

All suggestions are welcome.


You can’t implement l33t effects without using l33t OpenGL features. EMBM requires dependent texture reads, and the only vendor-independent way to implement it is using GL_ARB_fragment_program.

– Tom

Well, I’ll go for GL_ARB_fragment_program then, but I can’t find some sample that uses this path.

At Nvidia, it’s with register combiners in 2 pass, or it’s with extra super powerful effects (I want the basis, not the additive rain drops). At ATI, it uses their specific extentions.

I tried to understand the Nvidia super powerful method, but there was loads of parasite code, and I couldn’t pass through it. There should be a simple sample somewhere … but where ?