Shader Depth Offset [Polygon Offset]
来源:互联网 发布:淘宝封号能自动解封吗 编辑:程序博客网 时间:2024/06/04 19:18
Offset Factor, Units
factor
Specifies a scale factor that is used to create a variable depth offset for each polygon. The initial value is 0.
units
Is multiplied by an implementation-specific value to create a constant depth offset. The initial value is 0.
WhenGL_POLYGON_OFFSET_FILL
, GL_POLYGON_OFFSET_LINE
, or GL_POLYGON_OFFSET_POINT
is enabled, each fragment's depth value will be offset after it is interpolated from the depth values of the appropriate vertices. The value of the offset is 如果英文不太好理解,请参考:
每一个Fragment的深度值都会增加如下所示的偏移量:
offset = (m * factor) + (r * units)
m是多边形的深度的斜率(在光栅化阶段计算得出)中的最大值。这句话难以理解,你只需知道,一个多边形越是与近裁剪面(near clipping plan)平行,m就越接近0。
r是能产生在窗口坐标系的深度值中可分辨的差异的最小值,r是由具体实现OpenGL的平台指定的一个常量。
一个大于0的offset 会把模型推到离你(摄像机)更远一点的位置,相应地,一个小于0的offset 会把模型拉近。
注:因为深度缓存的值是非线性的,所以使用Offset的话,当相机比较近的时候,相对深度偏移(深度偏移相对于物体本身的深度值)会比较小,相机比较远时,相对深度偏移会比较大(如覆盖在本来不应该覆盖的物体上面).所以如果我们是需要设置Offset的值比较大的时候,建议直接设置相机空间或者Clip空间的Z值(线性),保证Z值的偏移总是符合预期。
深度缓存计算参考:
a= zFar/( zFar- zNear)
b= zFar* zNear/( zNear- zFar)
z= distancefrom the eye to theobject
- z_buffer_value= a+ b/ z
参考:
https://docs.unity3d.com/Manual/SL-CullAndDepth.html
https://www.opengl.org/archives/resources/faq/technical/polygonoffset.htm
https://www.opengl.org/sdk/docs/man/html/glPolygonOffset.xhtml
http://www.cnblogs.com/bitzhuwei/p/polygon-offset-for-stitching-andz-fighting.html
- Shader Depth Offset [Polygon Offset]
- opengl Polygon Offset
- offset
- offset
- offset
- 使用Polygon Offset解决Z-fighting和stitching
- OpenGL 多边形偏移高亮物体边 Polygon offset
- 用Polygon Offset解决z-fighting和stitching问题
- Unity3D中的shader,视角,和贴图范围offset
- offset 宏
- jquery offset
- excel OFFSET
- jquery offset
- offset.dat
- Specular Offset
- 弄清offset
- JS offset
- offset()方法
- JavaScript重难点基础笔记
- 关于搭建Linux项目运行环境
- C#获取IP
- HDU 1710 Binary Tree Traversals
- bean的加载(七)创建bean
- Shader Depth Offset [Polygon Offset]
- vim 环境配置
- 用平方根判断素数
- java实现Http协议
- 环境变量
- HDU 1392 Surround the Trees
- Shell脚本中计算字符串长度的5种方法
- 指针p,q,r依次指向某循环链表中三个相邻的结点,交换结点*q,*r在表中次序的程序段是
- 跳转微信