[PATCH 4/5] wined3d: Don't use the depth range clipping hack when we have ARB_depth_clamp.

Chris Robinson 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 mailing list