As I see it, the No-Fog fog is a vertex fog where the fog weighting parameter for every vertex is calculated by the application on the cpu rather than by geometry pipeline.
Yup. And it is also used if vertex fog is enabled but the app draws already transformed vertices.
Anyhow from MSDN: "When using a vertex shader, you must use vertex fog.
Prince of Persia: The sands of time does exactly the oposite. So I am not sure if we can trust that line.
On a sidenote: MSDN also states: "An application can implement fog with a vertex shader, and pixel fog simultaneously if desired."
How does that match with the statement quoted above?
However, I think this is rather a corner case. Which application would want to use two fogs simultaneously?
I think they are called DirectX apps :-)
P.S: I noticed that fog-state management is not yet included in the state table. Should a patch that fixes fog with pixel shaders wait until this is done, or is this of no importance?
No, it should be there :-) See STATE_RENDER(WINED3DRS_FOGENABLE), and states linked to it. Or did I miss anything? The apply handler should be state_fog.
sorry, I misunderstood a comment in the code.
Which comment was that? It could be outdated, or whatever it is confusing, so the comment should be fixed.