ALL r200 based ATI cards DON'T support Specular Highlighting

To the coders out here:

All the shiny/glossy specular highlighting effects which even any old Geforce2 MX can render (tested this myself by the way) are not visible on my Radeon Mobility 9000 (equivalent to any Radeon 8500 desktop card) or ANY other r200 based card. it does work on newer r300 based. If you want to try this on your card, you can see this in the game Hegemonia (shiny metal surfaces) and Silent Hill 2 (slimy monster skins) for example. The rolling demo of the game "Hegemonia" is just about 40mb and you can see the effect there perfectly. Without it the satellite in the intro, planets and ships are looking absolutely flat and unrealistic and not very cinematic at all.
I´ve been asking Digital Reality (developers of Hegemonia), those guys said it would be the drivers, since my card SHOULD be able to do that so called "Specular Highlighting" or also "Specular Mapping" (a DirectX 8.1 Vertex Shader effect as far as I know) hence this feature should be recognized by the game and enabled, but it doesn´t happen/remains disabled on my card. A diagnostics tool also recognized this effect to be working on my graphics hardware - i mean even a Geforce2 MX can do it and my card is more Geforce3/4 like.

Screenshots and more info here:
http://www.rage3d.com/board/showthread.php?s=&threadid=33719849

I have reported this often enough to ATI via their report form, report tool, email, forums - they won´t do anything.

Whoever may be able to help me please post to this thread. Is there a way to emulate or force the feature for r200 based cards?

Thank you very much in advance.
 
If there's a problem, it's either a driver or application bug. The R200 certainly does suppose fixed-function specular and any other specular lighting that might be performed using vertex shaders or PS1.x.
 
Ostsol said:
If there's a problem, it's either a driver or application bug. The R200 certainly does support fixed-function specular and any other specular lighting that might be performed using vertex shaders or PS1.x.

just imagine - the r200 unable to do add over color components :devilish:
 
Slimy skins in Silent Hill 2 was supported on all cards when it was released (including all R200 based chips). Sounds like a driver bug thats been introduced since.

And trust me on this one, I really do know how Silent Hill 2 PC works ;-)

IIRC its simple a env map using a modulate add thing-me-bob. Now given R200, you would be using the PS 1.1 path. Now the PS 1.1 path has always been 'emulated on R200 (they are natively PS 1.4). What likely happened it that the driver is missing the coissue (we had to use lots of coissue to fit it int PS 1.1).
Give I haven't seen the code in ~2 years thats the best I can do from memory.
 
Well, thanks for all the answers at first! Great forums so far!! :) Well, YES it is a driver bug - of course. MY problem is, since the card can do it AND ATI will NOT fix this bug (too few r200 card users still around, even fewer playing games with this old dx81 feature in times of pixelshading 2.0..) i have to find a way to fix it MYSELF. I am trying this for a year and a half now in several forums, ATI support etc. whatever, noone helped me. So maybe you coders might know a way how to enable this in the drivers or emulate this, it does not matter if Hegemonia for example runs slower with an emulation of that feature.

Also, one of the Catalyst driver coders said to me that it might be disabled for a reason - maybe causing other games not to work. But I want to get especially Hegemonia to work with this. Please, if you can help me, please post. I know that I am pretty much alone with this, but after so much time, I certainly will NOT give up on this basic feature so easily ;)
 
i tried e-v-e-r-y Catalyst so far. even 2.3 or 2.4, i don´t know, the first one who supported the Radeon 8500, too. Nothing. It is disabled in ALL drivers for the R200 cards. Any other ideas?
 
I think this is something I discovered long ago when testing some GF2-code on an R8500 (I hope I remember it right).
On ATi the specular register reads 0 when specular lighting is disabled with the renderstate.
NVIDIA's drivers do not do this.
It is possible that this game is using the specular register without having the specular lighting state enabled, which means it is using the proper interpolated value on NVIDIA and 0 on ATi (and refrast, and probably other IHVs with drivers that are closer to refrast?).
 
WOW!! what an idea!! this could be the way!! how can i change this? please try to help me!! this is as close to a solution as it can get!! :D
 
yes, this is there because I reported it, and it is there for A YEAR now, they can not do anything since this problem seems to have LITTLE priority. please find a workaround for this, i just wrote ATI again about it, but they are not able/willing to help since this problem is only occurring on r200 cards and in non-mainstream games only.
 
Scali said:
I think this is something I discovered long ago when testing some GF2-code on an R8500 (I hope I remember it right).
On ATi the specular register reads 0 when specular lighting is disabled with the renderstate.
NVIDIA's drivers do not do this.
It is possible that this game is using the specular register without having the specular lighting state enabled, which means it is using the proper interpolated value on NVIDIA and 0 on ATi (and refrast, and probably other IHVs with drivers that are closer to refrast?).

SH2 uses a env-map for the the shiny slime effect. Can't remember if it also uses specular lighting for other things, but the slime effect is definately a texture lookup.

If you look at SH2's device.fix file in a text editor and find the ATI 8500 entry's there should be the internal driver number's it was tested on. The highest tested on was 0006000d 000A17CE, unfortanately I don't know what actual driver number that relates to...
 
i will look this up later, does this mean i can fix something for sh2 with this file?

about the hegemonia issue, is there a fix possible based on the previous posts?
 
SH2 uses a env-map for the the shiny slime effect. Can't remember if it also uses specular lighting for other things, but the slime effect is definately a texture lookup.

If it would modulate it with the per-vertex specular colour then it would not work, I suppose.
But I don't know if this is the problem in this game. I don't know the game. I just know of the issue I encountered myself, and thought it could be related.
 
what Scali said was very close in my opinion, if anyone could just find a way to fix or workaround this..
 
Scali said:
SH2 uses a env-map for the the shiny slime effect. Can't remember if it also uses specular lighting for other things, but the slime effect is definately a texture lookup.

If it would modulate it with the per-vertex specular colour then it would not work, I suppose.
But I don't know if this is the problem in this game. I don't know the game. I just know of the issue I encountered myself, and thought it could be related.

Hmm trying to remember code from two years ago is hard :)

We did use vertex lighting but not specular. I remember encountering the problem (specular renderstate applying to both vertex and pixel pipes on some cards) and it definately worked back then so I kind of assume its not that one but who knows in the crazy world of broken drivers ;-)

Dex:
The SH2 "device.fix" file is a text list of driver/device pairs with fixes. Allowed us to work around broken GeforceFX drivers after the game had shipped. It just changes various rendering options based on driver ID. Don't think its going to help in this case though, you can use it to find the driver ID that did work though (obviously finding which driver matches which driver ID will be hard, probably best to ask ATI).

Driver ID 0006000d 000A17CE definately worked probably on R200 and SH2.
 
you guys here are my only chance as it seems to get Hegemonia fixed :( ATI will be absolutely NO help on this, sorry. I don´t even blame them for this anymore. I just want a fix somehow.. I am not good at c++ so I can´t help very much myself :( it would be even more important to me to fix Hegemonia somehow, i just don´t know how :(
 
Scali is right. Haegemonia assumes that specular is calculated even
if the renderstate is set to false, which is wrong, even tho it worked on
every card & driver available at that time. ATI "fixed" this, so not seeing
the specular is correct. When we started to work on Afrika Korps, i had
to shift these materials to equivalent pixel shaders to prevent the automatic addition of specular.

However, it would be possible to fix this, by separating the material to
two (or more) passes, and using the destination alpha as the specular mask.

Edit: oh, and hello everyone - first post! :)
 
Back
Top