[PATCH 4/5] wined3d: Don't use the depth range clipping hack when we have ARB_depth_clamp.
chris.kcat at gmail.com
Wed Jan 20 02:17:43 CST 2010
On Tuesday 19 January 2010 11:38:18 pm Stefan Dösinger wrote:
> Am 20.01.2010 um 01:08 schrieb Chris Robinson:
> > The comment says that it's using MinZ/MaxZ to suppress depth clipping,
> > which could otherwise occur with 0..-1. GL_DEPTH_CLAMP needs to be
> > enabled if 'untransformed' is false, to suppress depth clipping as
> > intended.
> > Since the transformed-vertex path is there to bypass transformation and
> > frustum clipping, it would make sense to clamp and disable user clip
> > planes, too (but as you said, that's not current behavior, so may need to
> > be tested; same for viewport clipping).
> I am ok with the patch being committed, as in the worst case this is just a
> hack replaced by another hack, and it seems right to me.
From what I understand, the idea of the patch (map z to 0..-1 with depth-
clamp) is correct. It may even fix the issues with HL1 as it will write the
correct (unmodified) depth values, and avoid clipping the weapon on the near
plane. The problem I see with the patch is, depth-clamping is left to the
D3DRS_CLIPPING state which is supposed to be bypassed for transformed
Essentially, if D3DRS_CLIPPING is on and ARB_DEPTH_CLAMP isn't supported, it
would use the hack on transformed vertices to attempt to suppress clipping on
the near/far planes. If D3DRS_CLIPPING is on and ARB_DEPTH_CLAMP /is/
supported, then it would avoid the hack even though the exact same GL clipping
rules are in effect.
More information about the wine-devel