Minimum Near View-Plane Z ?

Started by
3 comments, last by VladR 11 years ago

Hi guys,

I read that you should try to keep the z-value of the near-view plane (for D3DXMatrixPerspectiveFovLH()) as great as possible but I don't know what an acceptable value is.

Is 0.5 alright ?

Thanks.

Advertisement

It's all about precision as a function of zNear to zFar, not so much about a specific zNear -- if zFar is short, you can get away with a smaller zNear than if you had a zFar that is a greater distance away.

Although it's written in OpenGL terms, this page explains what's going on, and has a calculator that you can play with to explore how different zNear/zFar combinations affect precision.

throw table_exception("(? ???)? ? ???");

It's all about precision as a function of zNear to zFar, not so much about a specific zNear -- if zFar is short, you can get away with a smaller zNear than if you had a zFar that is a greater distance away.

Although it's written in OpenGL terms, this page explains what's going on, and has a calculator that you can play with to explore how different zNear/zFar combinations affect precision.

The ratio of the near and the far plane matters when you chose the scale of the scene based on your clip planes. But I'd say you more often chose your clip planes based on the scale of your scene, and then the far clip plane is pretty much irrelevant.

Go to the link you posted and set Z distance to, say, 10 and see how the precision at that depth is affected by the values of the near and far clip planes. If you start with, for example, znear=1 and zfar=1000, you will see the precision at Z=10. Increase the far plane and you will see that it has almost no effect on the precision of your scene at the depth you are interested in. You can push it all the way to infinity without changing the precision at Z=10 by any significant amount.

Changing the near clip plane, on the other hand, significantly changes the precision at Z=10.

If you have a predefined scale because you have your models made already, then you often don't have to bother with the far clip plane; just push it out as far as necessary, but be sure you push the near clip plane as far out as you can possibly accept because that alone is what determines your effective precision at the scale you have already designed your scene.

What constitutes how “near” a clip-plane is entirely depends on the relationship between the near and far planes, which is often implicitly related to the scale of the scene.

0.5 is extremely far away if your whole scene exists from 0 to 10 units, for example.

Likewise, in Final Fantasy VII, every character spans between 500 and 15,000 units, making 0.5 far too small for a near clip plane.

It is entirely up to your scene and the range of depth values you need, which is directly related to the scale of your world.

To keep things simple, just keep it at the maximum value where there is little or no chance of it clipping objects, bearing in mind that if your scale is similar to that of Final Fantasy VII’s, a near plane between 50 and 100 is perfectly fine.

L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

Also, note that if the ratio between Near and Far plane becomes too big (e.g. 0.001f vs 100000.0f), you will start getting really ugly visual artifacts for triangles near the far plane.

It is especially sickening in motion. To fix that, just adjust the near plane so that the ratio is better (and you will get more precision).

To completely fix the problem, implement a linear Z-Buffer in a Vertex Shader. It is drop-dead easy and is practically free.

VladR My 3rd person action RPG on GreenLight: http://steamcommunity.com/sharedfiles/filedetails/?id=92951596

This topic is closed to new replies.

Advertisement