Fix (and document) depth linearization
parent
aeb5d906bb
commit
37deea46c5
|
@ -582,7 +582,7 @@ static vector3d projectToScreenSpace(const vector3d &pos, RefCountedPtr<CameraCo
|
|||
float znear;
|
||||
float zfar;
|
||||
Pi::renderer->GetNearFarRange(znear, zfar);
|
||||
proj.z = -((zfar * znear) / (proj.z * (zfar - znear) + znear));
|
||||
proj.z = -znear / proj.z;
|
||||
|
||||
// set z to -1 if in front of camera, 1 else
|
||||
if (adjustZ)
|
||||
|
|
|
@ -82,6 +82,8 @@ namespace Graphics {
|
|||
const vector3d vVP = {
|
||||
vNDC.x * 0.5 + 0.5,
|
||||
vNDC.y * 0.5 + 0.5,
|
||||
// FIXME: this isn't a proper linearization into viewspace (needs -znear / zNDC)
|
||||
// but it accomplishes the goal of positions behind the camera having z > 0.
|
||||
-vNDC.z // undo reverse-Z coordinate flip
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue