PDA

View Full Version : HL2 fails to use partial precision calls despite no quality loss - major tweak here!


Pages : [1] 2 3 4 5 6 7 8 9 10 11 12

Ruined
11-30-04, 03:16 AM
http://www.hardforum.com/showpost.php?p=1026929557&postcount=9

Well, someone at Guru3d using trusty 3danalyze discovered that valve seems to have programmed all shaders in HL2 for full precision, which is why the game runs poorly in dx9 mode on FX cards. Apparently forcing FP16 partial precision in HL2 results in no noticable quality loss, and you can get playable speeds in DX9 mode by doing this on FX cards. By using partial precision Valve could have made HL2 playable in DX9 mode on FX cards. It would of course give the 6800 cards a significant boost, too. But Valve wouldn't want to do that after being paid off by ATI, would they? :)


Open it and follow the numbers:
1. select HL2.exe file in half-life 2 folder
2. select any file inside the folder half-life 2\bin
3. select Steam.exe
than check these options:
- Under the section Pixel and Vertex Shader: FORCE LOW PRECISION PIXEL SHADER
- Under the section Remove stuttering: PERFORMANCE MODE
- on the bottom left: FORCE HOOK.DLL

If you haven't change the file dxsupport.cfg with the method described in the beginnig of this thread, you can obtain the same result typing in the section DIRECTX DEVICE ID'S the ATI Vendor and Device ID, there are just two device though.
....
In the end 3D ANALYZE gives me an error, CREATEPROCESS FAILED, I launch HL2 anyway, the water looked awesome, awesome detail and I noticed a boost in performance too. I think around 20/30% which allowed me to play the WATER HAZARD level with this setting: 1024x768 everything max, water relection to ALL, 2xAA, 4xAnisotropic with a range of fps of 40 and >150.

StoNer
11-30-04, 03:30 AM
ouch hows that feel ATi? :nutkick:

jolle
11-30-04, 03:35 AM
I guess a word of caution might be in order here..
You should prolly NOT try this in onlinegames with CS:Source, wouldnt be supprised if it was detected as cheat and got you banned..
lots of things that hook into the game has been with the old CS, such as HLirc etc..

bit crummy if Valve did this on purpouse, with ATi hardware taking all calls as FP24...

Ruined
11-30-04, 03:38 AM
crummy if Valve did this on purpouse, with ATi hardware taking all calls as FP24...

Obviously they did. I can't think of any major DX9 game released that didn't have partial precision calls. Except this one, which ATI paid Valve 6 million for, despite FP16 looking no different than FP24 or FP32 on most of HL2's shaders.

Just another way Valve can attempt to make ATI look faster by coding against the competitor. Maybe the "ATI Levels" will detect if you have an nvidia card and if so disable half the pipelines on your card :rofl

acrh2
11-30-04, 03:45 AM
http://www.hardforum.com/showpost.php?p=1026929557&postcount=9

Well, someone at Guru3d using trusty 3danalyze discovered that valve seems to have programmed all shaders in HL2 for full precision, which is why the game runs poorly in dx9 mode on FX cards. Apparently forcing FP16 partial precision in HL2 results in no noticable quality loss, and you can get playable speeds in DX9 mode by doing this on FX cards. By using partial precision Valve could have made HL2 playable in DX9 mode on FX cards. It would of course give the 6800 cards a significant boost, too. But Valve wouldn't want to do that after being paid off by ATI, would they? :)

Someone please translate this german/swedish GIBBERISH.

Ruined
11-30-04, 03:49 AM
Someone please translate this german/swedish GIBBERISH.

basically valve made Nvidia cards run in their highest precision mode all the time when they didn't need to, unnecessarily reducing performance. Every other major DX9 game uses partial precision when possible for optimal shader performance with no quality loss - Valve failed to do this on purpose because only Nvidia cards benefit from FP16 partial precision since ATI does not support FP16/FP32 precision, only FP24 (until next generation), and ATI is where they got the big bucks from. It's another way Valve can make ATI cards look faster by coding against Nvidia cards, when they probably could have made the game run 20% faster on FX cards and boost 6800 performance with no quality loss. Instead they chose to take ATI's money and code against NV cards.

easiest way to describe it is that nvidia supports FP16 and FP32, FP16 is faster, FP32 slower but higher precision. ati supports only FP24 in the middle of those two. sm3.0 and next-gen cards will all be using FP16/FP32 or FP32.

most of hl2's shaders are no more than FP16 precision, yet they programmed all of them to run FP32 on nvidia cards at slower speeds instead of FP16, since ATI cards would have to run them at FP24 no matter what they programmed.

lowdog
11-30-04, 04:16 AM
Jokingly you should go and post this over @ Fanatic land rage3d.....man those one eyed tunnel visioned fanATIcs would be frothing at the mouth to here you say all of this. :lol2:

jolle
11-30-04, 04:28 AM
basicly ATi cards take all calls, full or partial precision, and run them in FP24.
Which is fine and good atm cause FP24 is enough right now.
Sweeny mentioned how they had come across minor artifacting on FP24 in UE3.0 tho, but that is a few years away.

But when you go ahead and call all full precision like HL2 is said to do here, then NV cards are given a higher workload, which doesnt affect ATi..
In contrast, running Partial means more work for ATi Compared to NV, since NV runs FP16 and ATi still runs FP24.

Ruined
11-30-04, 04:32 AM
basicly ATi cards take all calls, full or partial precision, and run them in FP24.
Which is fine and good atm cause FP24 is enough right now.
Sweeny mentioned how they had come across minor artifacting on FP24 in UE3.0 tho, but that is a few years away.

But when you go ahead and call all full precision like HL2 is said to do here, then NV cards are given a higher workload, which doesnt affect ATi..
In contrast, running Partial means more work for ATi Compared to NV, since NV runs FP16 and ATi still runs FP24.

That's all fine, but if the game's shaders only need FP16 (which appears to be the case), then running in FP32 purposefully is coding against Nvidia cards and inefficient programming at best. FP16 is "enough right now" for most of HL2's shaders, but Valve did not include FP16 calls because it would benefit Nvidia cards.

NoWayDude
11-30-04, 04:35 AM
And could someone bench this new settings and present results?Hear say is very nice, but we need hard evidence.
How did he manage to get 3DAnalyze to run HL2?I can't do it, not even w/ benchemal

msxyz
11-30-04, 04:57 AM
Honestly, even FP16 is overkill in many simple shaders where the 12 bit fixed precision offered by PS 1.4 is more than enough.

Look at 3DSlideshow05 : tons of long shaders yet engines like that of Doom3/HL2 can obtain similar impressive results with more efficient approximations.

Graphicmaniac
11-30-04, 04:57 AM
I want see next ATI and Valve interview about this :D :D :D

jolle
11-30-04, 05:04 AM
That's all fine, but if the game's shaders only need FP16 (which appears to be the case), then running in FP32 purposefully is coding against Nvidia cards and inefficient programming at best. FP16 is "enough right now" for most of HL2's shaders, but Valve did not include FP16 calls because it would benefit Nvidia cards.

yeah, I just tried to elaborate a bit on your post on the issue.. hehe
I guess you need pretty long shadercode to justify use of Full Precision.

Screenshots comparisons (specially with water, spose that is the most advanced shader in the game) and benchmark comparisons are called for..
Someone, get ambitious!

saturnotaku
11-30-04, 05:59 AM
Look at 3DSlideshow05 : tons of long shaders yet engines like that of Doom3/HL2 can obtain similar impressive results with more efficient approximations.

That's just because FM couldn't code a shader properly to save its collective life. This was a problem in 3DM03 as well.

Vapor Trail
11-30-04, 06:17 AM
Wow, just wow.


Maybe Nvidia should pay some of their TWIMTBP partners to code their games to run in 32 bit precision shaders only, that way ATI couldn't run them at all. :lame:

I would really like to see some benches and IQ comparisions on this.

:nanahump: :nanahump: :nanahump: :nanahump:



Take that ATI !!!

hyakki
11-30-04, 06:22 AM
is this with the source engine in general or just in half life 2? for example will the vampire game that uses the source engine have speed benefits from this also?

and other games such as cs source

Toss3
11-30-04, 06:50 AM
I'm just wondering... if ATi is using 24bit and Nvidia 32, then wouldn't ATi cards also gain something by setting it to 16bit? :retard: and could someone please post screenshots :rolleyes:

NyquistLimit
11-30-04, 07:12 AM
I'm just wondering... if ATi is using 24bit and Nvidia 32, then wouldn't ATi cards also gain something by setting it to 16bit? :retard: and could someone please post screenshots :rolleyes:
No, since ATI cards dont support multiple FP precision, only 24bit.

saturnotaku
11-30-04, 08:07 AM
is this with the source engine in general or just in half life 2? for example will the vampire game that uses the source engine have speed benefits from this also?

and other games such as cs source

I'm only quoting this so the poster knows, but you need to shorten your signature. Shrink the font, eliminate some information and/or set it up where you have the specs listed thusly: CPU | mobo | video card | etc.

If you do not do this, one of the administrators will do it for you. Thank you for your cooperation.

Toss3
11-30-04, 08:59 AM
Erhm... just tried this tweak and I got an fps increase of 2fps! woohoo *not* the image quality was still the same... even when running @ 9800pro directX settings... didn't get the result I was hoping for, it still drops to <20 at some points :(

Toss3
11-30-04, 09:12 AM
This was just a waste of time IMO :(

TeaEtchSee
11-30-04, 09:18 AM
AHAHA!
dirty business :D

T-Spoon
11-30-04, 09:26 AM
It would of course give the 6800 cards a significant boost, too.

Why would it give the 6800 series a significant boost? I thought the NV40 series ran full precision (FP32) at practically the same speed as FP16... At least that's what I was lead to believe by nVidia.

Toss3
11-30-04, 09:39 AM
Why would it give the 6800 series a significant boost? I thought the NV40 series ran full precision (FP32) at practically the same speed as FP16... At least that's what I was lead to believe by nVidia.

Obviously it runs it at the same speed (I got a 2fps higher framerate with 16), I thought it would have made some difference... but suprisingly not :) changed the dxsupport.cfg file so that I would run x800xt settings :retard: made my fps more stable... didn't fall under 20 at least :D

Edit:Oops, made no difference after all :D changing to x800xt settings doesn't do anything..

|JuiceZ|
11-30-04, 09:55 AM
Obviously it runs it at the same speed (I got a 2fps higher framerate with 16), I thought it would have made some difference... but suprisingly not :) changed the dxsupport.cfg file so that I would run x800xt settings :retard: made my fps more stable... didn't fall under 20 at least :D

IMO the benefit of running HL2 using FP16 will be more beneficial to GFFX users than those of us w/ 6800 cards since the perf diff between FP16 & FP32 is rather minimal in the newer cards.