OGL: Use floating point arithmetic to scale the depth value.
This commit is contained in:
parent
05d60f4fef
commit
05f42f94a0
|
@ -428,7 +428,6 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data)
|
||||||
}
|
}
|
||||||
D3D::context->Unmap(read_tex, 0);
|
D3D::context->Unmap(read_tex, 0);
|
||||||
|
|
||||||
// TODO: in RE0 this value is often off by one in Video_DX9 (where this code is derived from), which causes lighting to disappear
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
else if (type == PEEK_COLOR)
|
else if (type == PEEK_COLOR)
|
||||||
|
|
|
@ -1019,17 +1019,18 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data)
|
||||||
|
|
||||||
// Scale the 32-bit value returned by glReadPixels to a 24-bit
|
// Scale the 32-bit value returned by glReadPixels to a 24-bit
|
||||||
// value (GC uses a 24-bit Z-buffer).
|
// value (GC uses a 24-bit Z-buffer).
|
||||||
// TODO: in RE0 this value is often off by one, which causes lighting to disappear
|
float val = z / float(0xFFFFFFFF);
|
||||||
|
u32 ret = 0;
|
||||||
if (bpmem.zcontrol.pixel_format == PEControl::RGB565_Z16)
|
if (bpmem.zcontrol.pixel_format == PEControl::RGB565_Z16)
|
||||||
{
|
{
|
||||||
// if Z is in 16 bit format you must return a 16 bit integer
|
// if Z is in 16 bit format you must return a 16 bit integer
|
||||||
z = z >> 16;
|
ret = MathUtil::Clamp<u32>((u32)(val * 65536.0f), 0, 0xFFFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
z = z >> 8;
|
ret = MathUtil::Clamp<u32>((u32)(val * 16777216.0f), 0, 0xFFFFFF);
|
||||||
}
|
}
|
||||||
return z;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
case PEEK_COLOR: // GXPeekARGB
|
case PEEK_COLOR: // GXPeekARGB
|
||||||
|
|
Loading…
Reference in New Issue