DaveBaumann said:
The mixed mode does just refer to some of it being forced to PF16, but also because some sahders are dropped down to PS1.4 rather than PS2.0. Also some operations like vector normalisation will be done via cubemaps on the NV30 path (burning texture read/writes and bandwidth) whereas the HLSL path will use maths within the PS (burning ALU cycles).
Just to clarify:
Some site (can't recall which one ATM) claimed that there are actually
two NV3x paths in HL2. The first--which is what Valve labeled "mixed" in their presentation--differs from the full DX9 path by more liberal use of the _pp hint (does the full DX9 path use _pp at all??), replacing computation with lookups to precomputed textures, and by rewriting shaders in more NV3x-friendly ways (is the output of the new versions identical, either by mathematical proof or subjective IQ comparison?). This version would seem to be directed primarily if not exclusively at NV35, as NV34 got a much smaller performance boost, and NV31 actually lost performance running the "mixed" path. (And, FWIW, we can guess that NV30 would also do poorly as a result of trading computation for bandwidth, as this path does.)
The second--dubbed "dx82"--may make use of some or all of the techniques of the "mixed" path, but what differentiates it is that some (not all) of the PS 2.0 shaders in the full and "mixed" DX9 paths are replaced with PS 1.1 or PS 1.4 equivalents. The implication is that the "mixed" path
does not replace any PS 2.0 shaders with DX8 versions, although I'm not sure that was explicitly stated by Valve. This path, then, is intended to be run on NV31 and NV34.
Can you confirm or clarify if this is accurate? On the one hand, I can only recall seeing mention of this new "dx82" path at one site; on the other, it does seem odd that Valve wouldn't have a second NV3x path considering how the "mixed" path leads to lower performance on NV31 and still-unplayable performance on NV34. Of course it could be that they decided nothing short of dropping NV31 and NV34 to the DX8/DX8.1 path would allow playable framerates, and thus didn't bother...