st/nine: Use perspective correction for ps depth fog
authorAxel Davy <davyaxel0@gmail.com>
Thu, 16 Aug 2018 14:29:31 +0000 (16:29 +0200)
committerAxel Davy <davyaxel0@gmail.com>
Tue, 25 Sep 2018 20:05:24 +0000 (22:05 +0200)
commita9bf82ecf4c284989c40e4e6c1f6962bc9bd58d2
tree895f130102eca8aba74c566ac15d6a10ed760297
parent7ee5e5e239a5528c6eed2d1bb47b48434de74a6e
st/nine: Use perspective correction for ps depth fog

Emulate perspective interpolation of depth for programmable ps fog

ff ps fog uses position z, or 1/w depending on the ff
projection matrix set. This is according to public documents
found describing the algorithm and tests we made.

In the case of programmable ps, we used position's z,
which was sufficient to pass wine tests (which test shaders
don't set w).

Issue https://github.com/iXit/Mesa-3D/issues/315 showed
that this calculation was wrong.
Using perspective interpolation on z, that is using z * 1/w
seems to satisfy both this application and wine tests.

Fixes: https://github.com/iXit/Mesa-3D/issues/315
Signed-off-by: Axel Davy <davyaxel0@gmail.com>
src/gallium/state_trackers/nine/nine_shader.c