This is because the hardware depth buffer is hyperbolic. As a very rough rule of thumb, imagine half of your precision going towards representing the objects between near and 2*near, and the other half representing objects from 2*near to far.
non-Linear?! well that explains a lot!
ok, i have the near plane at 0.1 d3d unit. in that title, the scale is 1 foot = 1 d3d unit. .0.1 is required to fit the player inside a small lean-to or shelter (pup-tent sized).
so, well i was going to say i should use a 0.1 near plane only for location=INSHELTER, but you can still see the world, and z fighting at 250 range and 16 bit zbuf...
since shelters are a world object, i can't create a "bigger" scene or model that a bigger near plane will fit in. think of a model of a pup-tent, with one end open. now put the camera inside the pup tent in the center, about 1 foot off the ground. the tent is about 3 feet tall. its pretty tight in there. but a nice effect, like you're stretched out on your sleeping bag, gazing out at the world.
i did notice that z fighting got a little worse when i moved the near plane from 1 to 0.1 to squeeze it inside a shelter.
also i do recall something about using as far a near plane as possible, during my last round of directx optimization research.
sounds like i can rely on 24bit being available, and i can do two (or more) passes if needed.
what about setting the near plane of the 1st pass to the far plane of the second, or a little inside it:
pass 1: near=450 far=10000
pass 2: near = 0.1 or 1, far = 500
that would keep the zbuf resolution of pass 1 higher than near=1 far=10000.
that way you could "stack up" zbufs one behind the other, draw out to any range with multiple passes, and still get a high resolution zbuf for each pass.
i think that may be the answer.
fortunately, it looks like i can count on a 24bit zbuf being available for the primary swap chain, so hopefully I won't have to go to a 2 pass method.
"DirectX is like a belt fed machine gun, where every texture change is like hand loading in a new belt of ammo. worse, every mesh (vb) is a new belt of ammo, and a texture is like breaking the gun down, and setting it up again elsewhere, then loading it, then spraying triangles again. so you want to setup the gun once, string all your belts together, load it once, then just spray."
Norm Barrows
Rockland Software Productions
"Building PC games since 1988"