[Unity3D]如何计算某个pixel的depth precision

原创 2015年07月08日 09:52:53

摘要

最简单的避免z-fighting的方法是为camera调整一个合适的near clip和far clip,试一试都能出正确的值,但是如何理解这个值。

正文

参考这篇文章:
http://www.sjbaker.org/steve/omniv/love_your_z_buffer.html
这篇文章中有个计算器,通过这个计算器计算出了以下的depth precision。
其中计算depth precision使用到的函数如下(一般人找不到),其中nbit为depth buffer的精度,z为投影空间的深度。具体原理这个函数中公式以及推倒目前没有找到,回头再仔细看看wiki。

function zprec (nbits,zFar,zNear,z)
{
    var b = zFar * zNear / ( zNear - zFar ) ;
    var res = ( b / ( (b/z) - 1.0/(1<<nbits) ) ) - z ;

    if ( res < 0.0001 )
       return res ;
    else
       return Math.floor ( res * 100000.0 ) / 100000.0 ;
}

这个函数能计算出depth precision,depth precision的意义在于,只要两个pixel的z的精度之间的差值,超过了depth precision,则不会发生z fighting。
例如,near clip为0.1,farclip为10,某pixel的z为2,则算出的precision为0.000002360341147422673,所以在这个位置上两个pixel的z之间差值只要大于这个值,就不会发生z-fighting。

最后

算出这个值也没啥意思,文章里的结论说的挺好。

Always put zNear as far from the eye as you can tolerate.

如果near clip和far clip实在两全,那么就使用两个camera。

Unity3D 游戏画面像素与单位关系,简介。

1.游戏画面像素-》Unity3D单位(Unit) 可以看到屏幕中,正交相机的视口高度,刚好可以填满一个单位的cube,注意2点 1.图中cube 的缩放xyz设置的都是1,这样cub...
  • u012149999
  • u012149999
  • 2017年08月01日 11:32
  • 1737

Unity3D之如何创建正确的像素比在屏幕上

关于这篇文章的命名,实在不知道怎么命名好,大概功能就是:比如一张宽高为100x100的图片显示在屏幕上,那2D摄像头的Size值为多少时,屏幕上显示出来图片大小和图片的实际像素一致。 这里涉...
  • midashao
  • midashao
  • 2012年11月28日 00:40
  • 19241

[Unity3D]如何计算某个pixel的depth precision

摘要最简单的避免z-fighting的方法是为camera调整一个合适的near clip和far clip,试一试都能出正确的值,但是如何理解这个值。正文参考这篇文章: http://www.sj...
  • ngrandmarch
  • ngrandmarch
  • 2015年07月08日 09:52
  • 802

Unreal Engine 4 —— Pixel Depth Offset的使用心得

这篇博客解释了Unreal Engine 4中的Pixel Depth Offset通道的使用心得,并且结合街头霸王Ⅴ对该通道的使用来归纳出一些注意事项。...
  • noahzuo
  • noahzuo
  • 2016年05月10日 12:44
  • 3378

screen.colorDepth(色彩深度) 和 screen.pixelDepth(像素深度)

ColorDepth(色彩深度)ColorDepth(色彩深度)是计算机图形学领域表示在位图或者视频缓冲区中存储1像素的颜色所用的位数,也称为 位/像素(bpp).色彩深度越高,可用的颜色就越多. ...
  • soindy
  • soindy
  • 2017年02月17日 15:18
  • 1895

深入理解Unity5中的StandardShader屏幕像素化特效的实现

概要:续接上文,本文进一步讲解与分析了上文未讲完的Unity5中Standard Shader正向基础渲染通道源码的片段着色实现部分,以及对屏幕像素化后期特效进行了实现。   同样需要声明的是。本...
  • hcud024
  • hcud024
  • 2016年05月10日 05:09
  • 5122

RagePixel一个unity的像素游戏开发工具

  • 2014年01月28日 03:40
  • 50KB
  • 下载

MAP(Mean Average Precision):

 MAP(Mean Average Precision):     单个主题的平均准确率是每篇相关文档检索出后的准确率的平均值。主集合的平均准确率(MAP)是每个主题的平均准确率的平均值。...
  • starzhou
  • starzhou
  • 2016年06月01日 18:37
  • 1310

准确率和召回率(precision&recall)

算法评价指标:准确率和召回率。
  • u010367506
  • u010367506
  • 2014年08月23日 14:26
  • 4456

Unity中关于单位像素与单位长度的关系

开头以下是对unity中关于屏幕像素与世界坐标单位长度的关系的总结。总结在camera处于平行投影状态下时,即orthographic,其size参数的数值实际上是屏幕所对应的高度的一半,举个例子,创...
  • AbstractSky
  • AbstractSky
  • 2016年02月16日 21:24
  • 4384
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Unity3D]如何计算某个pixel的depth precision
举报原因:
原因补充:

(最多只允许输入30个字)