MG is using the shaders published by microsoft on their XNA catalog. Today you can find those shaders here.
XNA produced different results on Desktop that what it produced on WindowsPhone7 & 8.
The results of MG look like the Phone version of XNA, therefore the shaders that Microsoft made available are more likely the ones they used on the phone.
Here is a semi- official post on the blog of the XNA designer about the optimizations they did to get the shaders run on the phone.
Quote: “One place we slightly changed the final output is the fog equation. Previous versions used distance fog, which is computed from the distance between camera and vertex. We now use depth fog, which only considers how far in front of the camera each vertex is, ignoring any sideways offset. The visual difference is subtle, but depth fog is much cheaper to evaluate.”
I suppose they changed the final output on other places too. In the first post somebody has given the changes they did to the shaders to fix the over-saturation.
I have dropped BasicEffect and just written my own shader. In my case it was my own stupidity that caused the visual effect you can see in the video. It’s vertex fog, I only had four vertices all should have been fully fogged. My shader does the fog calculation in the pixel shader.
But the code does still look wrong,
It’s passing the input position on to the fog calculation when it should be passing the view space position.
The optomisation is to do a dot product with the position and a fog vector to calculate the fog value
Not a bad optomisation, but it should be in view space so you have a depth, not in object space