Чтобы получить из значения буфера глубины обычное расстояние от камеры до пикселя:
float4x4 matProj : MATRIX_PROJ;
...
float Depth = tex2D( DepthSample, texCoords);
1. Избавляюсь от нормализации.
float nedoZed=Depth*zfar+znear;
2. Нахожу 1/z
float pochtiZed=(nedoZed+matProj[2][2])/matProj[2][3];
3. Глубина текущего пикселя:
float finalZed=1/pochtiZed;
...
Правильно?
zfar и znear можно получить семантикой? Или таки надо передавать из хорса руками?