NVIDIA support PCF natively in the texture sampler - i.e. the averaged result will pop out of the texture unit and fed directly into the shader program that may be using it; ATI do not support this and the values need to be sampled then avraged in some shader code which then neds to be fed into the calling shader programme. In this instance its not just a case of replacing one with another because there is nothing directly mappable, probably the entire shader needs to be written - for instance, ATI can't won't atempt to emulate PCF filtering via Fetch4 through their drivers because of this reason. I didn't realise that MS were producing exe's for BC games, so what it appears they are doing is actually changing the game rendering for the engine, akin to a developer coding an ATI and NVIDIA path for dfferent shadowing mechanisms.[maven] said:But with regards to your specific example of PCF, I don't think it's much of a problem as PCF is either a sampler-state or encoded in the tex-instruction (don't know how it is accessed on the Xbox), both of which can easily be found out and suffixed by the additional sampling and averaging instructions.
Well, NV2A is Fixed, whereas Xenos is float. However, with R300 ATI took the decision to remove all fixed function point ALU's and move to Float, but most if its tasks would still have been DX7/DX8 style rendering (and all hardware since uses Float ALU's but still has to render pre-DX9 shader content).I think a bigger problem might be the floating point nature of the pixel-shader pipeline, you could do some clever bit-fiddling with the 12bit (IIRC) fixed-point values, although this (luckily) isn't common on the PC platform (as otherwise every floating-point pipeline emulating PS1.X would be in trouble).