VOGONS


games that use EMBM

Topic actions

First post, by soviet conscript

User metadata
Rank Oldbie
Rank
Oldbie

I'm considering breaking my 1995-1998 hardware rule for my Win95 machine and making an exception (besides the pentium III 500) by swapping out my G200 for my g400 MAX to play some late 90's EMBM games but first does anyone have a list of games that use this feature? I know there arnt many and so far I've found

Expendable
Decent III (?)
Dungeon Keeper II
Drakan
Battlezone II

am I missing any? also from what I read Decent III and Expendable only work with embm with a g400 card. Is this true for the others as well?

Last edited by soviet conscript on 2014-09-15, 17:35. Edited 1 time in total.

Reply 1 of 28, by leileilol

User metadata
Rank l33t++
Rank
l33t++

Command & Conquer Renegade uses EMBM for water. Probably the most recent example I know of, and one of the few non-Matrox EMBM examples as it works on Geforce3, Radeon, KYRO, etc...

Also keep in mind EMBM was only implemented in Direct3D. OpenGL never had this as an extension, so all id Tech games are excluded.

apsosig.png
long live PCem

Reply 3 of 28, by soviet conscript

User metadata
Rank Oldbie
Rank
Oldbie
F2bnp wrote:

Didn't Evolva also use EMBM?

apparently, I found a few references to a embm patch

slightly off topic but does anyone know if the g400 2d image quality and DOS compatibility are the same. worse or better then the G200? its going to be paired with a matrox m3d and 2 voodoo II's in SLI.

Reply 4 of 28, by idspispopd

User metadata
Rank Oldbie
Rank
Oldbie

@leileilol: It seems that ATI_envmap_bumpmap was implemented, but I don't know if developers would have used a vendor specific extension. OTOH ATI TruForm was definitely used.

@soviet conscript: 2D image quality supposedly only became better with Matrox cards, that was their most important selling point. G400 didn't even have DVI so Matrox couldn't afford to skimp on the image quality.
According to Gona's list DOS compatibility is identical for all chips between G100 and G550.

Reply 5 of 28, by swaaye

User metadata
Rank l33t++
Rank
l33t++

I probably wouldn't go for Matrox for DOS compatibility. Or 3D compatibility for that matter. Or DVD playback!!! 😀 There were other cards with good VGA signal btw. It's true. The neatest thing about G400 is surely Dualhead.

G400 slows down considerably doing EMBM. I prefer to use a Radeon of some sort. GeForce 3 or later works too.

Fun EMBM details
https://www.opengl.org/discussion_boards/show … -with-my-Radeon

The so-called "EMBM" (hereafter called DX6 bumpenv, since true EMBM is much more complicated, as I will explain) is not one of m […]
Show full quote

The so-called "EMBM" (hereafter called DX6 bumpenv, since true EMBM is much more complicated, as I will explain) is not one of my favorite features...

If you consider the math behind it, it falls apart pretty quickly. Consider what would be required for true per-pixel environment-mapped bump mapping. You'd want to compute a reflection vector at each pixel, using the standard reflection equation and a normal map for the normals, and you'd want to look that up in some sort of environment map (spheremap, cubemap, whatever).

First of all, DX6 bumpenv is limited to looking up your reflection value in a single 2D texture. That limits you to spheremapping almost right off the bat.

It allows you to use your first texture to perturb the texture coordinates in the second texture. It looks up a (du,dv) pair in the first texture, and it multiplies this pair by a 2x2 matrix. Note that the 2x2 matrix can only be specified per primitive (equivalent to outside of a Begin/End, and thus not per vertex).

If (du,dv) is zero, the surface is flat at that point and you get no offset. So, this means that you would want to compute your second texture coordinate (the one for the spheremap) at each vertex using standard spheremap texgen to get the right results. (It's worth mentioning at this point that DirectX doesn't support spheremap texgen, so this is slightly painful...)

Now, you still have to figure how to set up that 2x2 matrix to get accurate environment mapping. Basically, you're doing a local linear approximation of a nonlinear function. The nonlinear function is:

perturbed spheremap coordinates = reflection_vector_to_spheremap_coords(reflection_v ector(N, E))

reflection_vector is quadratic in N, and reflection_vector_to_spheremap_coords involves a square root and some other stuff.

If your surface is flat, N and the slopes of the surface, which are the values encoded in your du,dv texture, are closely related. In fact, if du,dv are scaled correctly, N = (-du, -dv, sqrt(1-du*du-dv*dv)). If you conjugate all these functions, and if you are willing to assume that E is constant, i.e. the viewer is infinite, you can express the perturbed spheremap coordinates (s,t) as a function of (du,dv). Let's do a local linear approximation using some simple multivariable calculus:

(s) = (ds/ddu ds/ddv) (du) + (s0)
(t) (dt/ddu dt/ddv) (dv) (t0)

where (s0,t0) is simply the value of (s,t) when (du,dv) = (0,0).

Lo and behold, this is the bumpenv equation! Look up (du,dv), multiply by a 2x2 matrix, add in a base value for the texture coordinate, and use the result for your next texture coordinate lookup.

But in the process of deriving this equation, we've made the following simplifications:
- The environment map is in a spheremap. (cubemaps are much nicer to use)
- The surface is flat. (if you've noticed, most of the demos that use bumpenv use flat surfaces; not all, but most)
- The reflection vector is locally linear. (an approximation and can fall apart easily)
- The spheremap coordinates are locally linear w.r.t. the reflection vector. (another approximation)
- The viewer is an infinite viewer. (another approximation; can sometimes work, sometimes causes trouble)

In the end, you've made enough approximations that, mathematically speaking, it is nothing other than a hack.

Now, here's it's saving grace: our brains are REALLY BAD at figuring out whether reflections are accurate!

But the approximations are bad enough that it restricts the cases in which you can actually use the technique, and it does produce lower-quality results. Most bumpenv hardware also has some pretty nasty restrictions on the resolution of the environment map; I think the G400 implementation requires that it must be 32x32 or smaller, or something along those lines.

Fortunately, there is hope in sight. First, although it's slow, Cass did write a demo that can approximate true EMBM using a SW hack that involves reading back the framebuffer:
http://www.nvidia.com/marketing/deve...Frame?OpenPage

Also, with 3D hardware advancing quickly, someone's bound to put the real per-pixel reflection vector calculation in hardware at some point. It wasn't feasible back when bumpenv was first developed (Bitboys' Pyramid3D part; popular web culture assigns credit for the invention to Matrox, but they only popularized it).

Reply 6 of 28, by soviet conscript

User metadata
Rank Oldbie
Rank
Oldbie
swaaye wrote:

I probably wouldn't go for Matrox for DOS compatibility. Or 3D compatibility for that matter. Or DVD playback!!! 😀 There were other cards with good VGA signal btw. It's true. The neatest thing about G400 is surely Dualhead.

G400 slows down considerably doing EMBM. I prefer to use a Radeon of some sort. GeForce 3 or later works too.

Oh, I agree but this rig is neither my main DOS or main Windows machine that's why it has Win95 on it as opposed to 98se. Its really just a win 95 project machine to play around with weird mid 90's API's. my original goal was to only use hardware released before 1998 and the release date of win 98 but i sort of cheated with my pentium III cpu and the Motherboard by a tiny bit. I liked the G200 because it fit my time period and it supposedly gave good 2d quality and "ok" dos compatibility and 3d gaming ability. I figure if the g400 gives the same quality wise plus gives me the ability to play with embm its not to far out of my time period restrictions. The 2 V2's will probably be doing the bulk of the 3d gaming work on this machine anyways.

Reply 7 of 28, by akula65

User metadata
Rank Oldbie
Rank
Oldbie
Evolva Patch - 04/07/00 Updates Evolva to version 1.2.944 […]
Show full quote

Evolva Patch - 04/07/00
Updates Evolva to version 1.2.944

Additions
=========

Bump Mapping
------------
There is now an optional bump mapping mode available in the options screen.

This is only enabled for those cards with bump map capabilities (specifically
the DOTPRODUCT3 blend mode). Currently this includes boards based on the
NVidia GeForce and GeForce2 and the ATI Radeon chipsets.

Checking or unchecking the bumpmapping option will switch between normal
mode and a default bumpmap mode. When in the game, the F12 key can be used
to cycle through different bumpmap modes. Note the current bumpmap mode
is preserved when you quit and restart the game.

Note this form of bumpmapping is "diffuse bumpmapping", and is not the same
as "environmental bumpmapping" or "EMBM" as supported on the Matrox G200/G400.
Diffuse bumpmapping is a form of per pixel lighting which is similar to
normal lighting but adds surface detail at a much higher resolution. EMBM
is a form of environment mapping (making surfaces shiny/reflective) which
perturbs the reflected highlights to make the surface look bumpy.
In summary, DOT3 is matte bumps whereas EMBM is shiny bumps.

Reply 8 of 28, by NJRoadfan

User metadata
Rank Oldbie
Rank
Oldbie

G400 cards did have a DVI daughter card available, I have one on my Marvel G400-TV.

http://www.matrox.com/graphics/media/pdf/supp … als/en_fpg4.pdf

For VGA, Matrox used high end RAMDACs on their cards. You get a blur free picture even at 1280x1024@75Hz. Meanwhile my ATI Radeon 9600 outputs a bleedy blurry picture that only reducing the refresh rate corrects.

Reply 9 of 28, by swaaye

User metadata
Rank l33t++
Rank
l33t++

That reminds me...

Davros posted some screenshots of Evolva bump mapping..
http://forum.beyond3d.com/showpost.php?p=1856 … 11&postcount=25

Evolva uses emboss and dot 3 iirc edit: diffuse bumpmapping according to the readme http://5.t.imgbox.com/xwPM6X9J.jpg http://8. […]
Show full quote

Evolva uses emboss and dot 3 iirc
edit:
diffuse bumpmapping according to the readme
xwPM6X9J.jpg MBtka8SS.jpg 0nokkAw8.jpg

Reply 10 of 28, by Davros

User metadata
Rank l33t
Rank
l33t

descent 3 supports bumpmapping
you need to run it in d3d with the -bumped commandline (its not exculsive to matrox cards)

draken supports bumpmapping (not sure what type)
there is a normal maping mod
http://www.moddb.com/mods/drakan-10th-anniversary

Last edited by Davros on 2014-09-16, 01:47. Edited 2 times in total.

Guardian of the Sacred Five Terabyte's of Gaming Goodness

Reply 11 of 28, by swaaye

User metadata
Rank l33t++
Rank
l33t++
NJRoadfan wrote:

For VGA, Matrox used high end RAMDACs on their cards. You get a blur free picture even at 1280x1024@75Hz. Meanwhile my ATI Radeon 9600 outputs a bleedy blurry picture that only reducing the refresh rate corrects.

The Radeons have one or more high quality internal RAMDAC. They are probably superior to G400's. The problem is not all cards are built with quality analog circuitry to keep the VGA signal sharp as the resolution and refresh go up. It's the same story as NVidia cards.

What make of Radeon 9600 do you have? Photo?

Reply 13 of 28, by Mau1wurf1977

User metadata
Rank l33t++
Rank
l33t++
Davros wrote:

descent 3 supports bumpmapping
you need to run it in d3d with the -bumped commandline (its not exculsive to matrox cards)

draken supports bumpmapping (not sure what type)

I tried both and struggled to see differences. In Descent 3 the ship has a different look but in Drakan I couldn't find anything. Dungeon Keeper 2, at least the GOG.com version, the lava looked the same. The only game that I could tell a noticeable difference is Expendable.

My website with reviews, demos, drivers, tutorials and more...
My YouTube channel

Reply 14 of 28, by swaaye

User metadata
Rank l33t++
Rank
l33t++

Did you use the command line with Dungeon Keeper 2?
-enablebumpmapping -enablebumpluminance -32biteverything

It should look like glossy plasticky lumpy lava.

Reply 15 of 28, by Mau1wurf1977

User metadata
Rank l33t++
Rank
l33t++
swaaye wrote:

Did you use the command line with Dungeon Keeper 2?
-enablebumpmapping -enablebumpluminance -32biteverything

It should look like glossy plasticky lumpy lava.

I believe so. But will check again when the original copy arrives.

My website with reviews, demos, drivers, tutorials and more...
My YouTube channel

Reply 16 of 28, by swaaye

User metadata
Rank l33t++
Rank
l33t++

I found an EMBM list that was originally on Matrox's site...

Ace of Angels™ Aquarius™ Battlezone II: Combat Commander™ Battle Isle: The Andosia war BITM Carmageddon®: TDR 2000™ Colin […]
Show full quote

Ace of Angels™
Aquarius™
Battlezone II: Combat Commander™
Battle Isle: The Andosia war
BITM
Carmageddon®: TDR 2000™
Colin McRae Rally 2
Descent 3™
Descent 3™: Mercenary
Destroyer Command™
Drakan™
Dungeon Keeper™ 2
Echelon®
Echelon®: Wind Warriors
Expendable™
F1 World Grand Prix
Far Gate
Fur Fighters
Hard Truck II™
Hired Team™ Gold
Hired Team™: Trial
Incoming Forces
Parkan: Iron Strategy™
Ka-52 Team Alligator™
Kyodai
Off Road: Redneck Racing
Offshore2000: Pro Surf Tour
Planet Heat
PowerRender™ engine V 3.0*
Private Wars™
Rollcage® Stage II
Silent Hunter II
Silent Space (cancelled)
Silex engine
Slave Zero™
Speed Busters™
Spirit of Speed 1937
Sub Command
Jugular® Street Luge Racing
Totaled™
Warm Up
Wild Metal Country™*

Rollcage II
db76de352210371.jpg

Hired Team (weird UT + Quake 3 clone? ....but EMBM!)
7284de352211512.jpg
https://www.youtube.com/watch?v=mhky2Ze4m8w

Hard Truck 2 (not exactly beautiful....but EMBM water!)
db80de352211750.jpg

Destroyer Command
2d725c352212177.jpg

ATI Radeon's ARK demo
https://www.youtube.com/watch?v=xSQcpVa7paM

Reply 18 of 28, by dr.zeissler

User metadata
Rank l33t
Rank
l33t

EMBM-List

Ace of Angels™
Aquarius™
Battlezone II: Combat Commander™
Battle Isle: The Andosia war
BITM
Carmageddon®: TDR 2000™
Colin McRae Rally 2
Descent 3™
Descent 3™: Mercenary
Destroyer Command™
Drakan™
Dungeon Keeper™ 2
Echelon®
Echelon®: Wind Warriors
Expendable™
F1 World Grand Prix
Far Gate
Fur Fighters
Hard Truck II™
Hired Team™ Gold
Hired Team™: Trial
Incoming Forces
Parkan: Iron Strategy™
Ka-52 Team Alligator™
Kyodai
Off Road: Redneck Racing
Offshore2000: Pro Surf Tour
Planet Heat
PowerRender™ engine V 3.0*
Private Wars™
Rollcage® Stage II
Silent Hunter II
Silent Space (cancelled)
Silex engine
Slave Zero™
Speed Busters™
Spirit of Speed 1937
Sub Command
Jugular® Street Luge Racing
Totaled™
Warm Up
Wild Metal Country™*

Retro-Gamer 😀 ...on different machines

Reply 19 of 28, by Joseph_Joestar

User metadata
Rank l33t
Rank
l33t

So I decided to test the EMBM support in Drakan. After searching through a bunch of old Murc forum posts I came to the conclusion that Drakan mostly used EMBM on the dragon and the water in the later stages of the game. For some reason, the water in the first level doesn't use EMBM.

Anyhow, I wanted to compare my Matrox G400 to my GeForce4 MX400. Since the latter is based on the GeForce2 architecture, it doesn't support EMBM, as can be seen in the screenshots below. All tests were conducted under Win98SE with DirectX 9.0c installed. No third-party patches, unofficial service packs or anything like that were used.

Graphics cards tested:

  • Matrox G400 using Matrox Powerdesk drivers version 5.52.015
  • Nvidia GeForce4 MX440 using Nvidia reference drivers version 40.72

Games tested:

  • Drakan - retail CD version with the latest official patch 445 applied

Drakan engine options

Drakan_Setup.jpg
Filename
Drakan_Setup.jpg
File size
81.85 KiB
Views
1510 views
File license
Fair use/fair dealing exception

In the external setup menu, the bump mapping option is available for use on the Matrox card, while it remains greyed out and unusable on the MX440.

Drakan EMBM Dragon

Drakan_EMBM_Dragon.jpg
Filename
Drakan_EMBM_Dragon.jpg
File size
324.87 KiB
Views
1510 views
File license
Fair use/fair dealing exception

Notice the how differently the scales on the dragon are rendered on the Matrox card compared to the MX440.

Drakan EMBM Water

Drakan_EMBM_Water.jpg
Filename
Drakan_EMBM_Water.jpg
File size
245.26 KiB
Views
1510 views
File license
Fair use/fair dealing exception

The water looks much nicer on the Matrox card, but the effect isn't that visible in a still image. In motion, you can see a bigger difference as the waves look much more natural with EMBM enabled.

P.S.

If anyone else wants to test this, I'm attaching the relevant savegames here. I also tried this on a GeForce FX 5900XT and EMBM worked fine on that card as well. I think Drakan will allow the effect to be used on any card which supports EMBM in hardware, so it's not restricted only to Matrox cards.

Attachments

  • Filename
    Drakan_Saves_EMBM.zip
    File size
    647.38 KiB
    Downloads
    43 downloads
    File license
    Fair use/fair dealing exception

PC#1: Pentium MMX 166 / Soyo SY-5BT / S3 Trio64V+ / Voodoo1 / YMF719 / AWE64 Gold / SC-155
PC#2: AthlonXP 2100+ / ECS K7VTA3 / Voodoo3 / Audigy2 / Vortex2
PC#3: Athlon64 3400+ / Asus K8V-MX / 5900XT / Audigy2
PC#4: i5-3570K / MSI Z77A-G43 / GTX 970 / X-Fi