Originally Posted by ChaosBahamut
Put this under Launch Options.
The FX series suck at DX9. That would be your problem most likely.
Not quite accurate I think; should be +mat_dxlevel 81 as a command line option. And all 5700 chips default to 8.1 already. But I have Athlon XP at 1900 MHz and FX 5700 Ultra and it's barely playable still (although comparable to HL2 of course).
1) In your GeForce control panel (right click display / Properties / Advanced / GeForce FX 5700 tab -- in newer drivers (v90 and above I believe) you have to click Control PAnel User Interface -> Classic nVidia Control Panel to enable the rest of the options there because they have an alternate GUI somewhere -- select Performance & Quality Settings, and set the slider to "High Performance".
2) Further, select View: Advanced Settings, set Trilinear Optimization: On, Anisotropic Sample Optimization: On, Anisotropic Mip Filter Optimization: Off. If you have RivaTuner installed, also adjust mipmap LOD bias to 0.3. You can now use decent quality anisotropic filter without much performance tax.
3) The most performance taxing option in SiN (and HL2) appears to be water, when set to Reflect All (r_waterforcereflectentities "1", r_waterforceexpensive "1"); make sure you select Simple Reflections (r_waterforcereflectentities "0", r_waterforceexpensive "0") or Reflect World (r_waterforcereflectentities "0", r_waterforceexpensive "1") instead -- due to a bug in the Source engine and material definitions, they are equivalent in DX8 modes -- if $forceExpensive is not defined for a material, r_waterforceexpensive "1" does not enable shader reflections either, nor does r_waterforceexpensive "0" disable them).
4) Do not set Texture Detail to "High" (mat_picmip "0") unless you have at least 1024M of RAM; use Medium/Low (mat_picmip "1" or "2") instead. nVidia drivers (unlike 3Dfx BTW) are system memory hogs.
5) Lower resolution; on the first blush it does not seem to affect much because video RAM bandwidth rarely is a bottleneck on modern video boards, but it does
become a bottleneck for per pixel operations (blending -- smoke, fog; pixel shaders -- water reflection/refraction for instance) in high resolutions (above 1024 for 768 for my board, probably lower than that for yours). 1600x1200 and 640x480 may be equally fast in water-free area, but as soon as water is in the view, you will notice quite considerable difference.
6) As a last resort, set DX level to 7.0 (command line: +mat_dxlevel 70; console: mat_dxlevel 70, if you cannot do it in the Advanced Video Options menu for some reason). You will lose water reflections altogether.