zfighting 的问题

1.对每个mesh 在脚本里加bias 由美术勾 {a. vertex shader b. depth bias slop depth bias rasterizateState}

2.inverse depth

http://outerra.blogspot.hk/2012/11/maximizing-depth-buffer-range-and.html

https://developer.nvidia.com/content/depth-precision-visualized

还有说什么log的depth

 

   gl_Position.z = 2.0*log(gl_Position.w*C + 1)/log(far*C + 1) - 1;
    gl_Position.z *= gl_Position.w;

or
    gl_Position.z = 2.0*log(gl_Position.w/near)/log(far/near) - 1; 
    gl_Position.z *= gl_Position.w;

3.linear depth

-------------------------------这几天测试了下1-z 就是inverse depth 这个方法

目前看很完美,没有引起 近处的zfighting

我们把projectiong matrix z的部分near far交换

避免在pix shader里修改depth 避免取消earlyz hw

还需要在采样depth的时候用1-z

 通过在copy depth出来的时候 统一做一次1-z就能避免在每个使用depth数据的shader里1-z了 目前看比较乐观。测试版没有zfighting了

 

单独把这个matrix clear 和greater equal-zfun应用于大项目的mainpass 有点困难

---------------

inverse depth 作为最终版本.挨个脚本添加zbias的方法 后期不可控.工作量巨大.

对于inverse depth在近处 观察到了 zfighting: 之前存在的近处模型的zfighting 由于inverse depth得到了解决

但是有glowmask的地方 可能是因为太近的缘故,引起了近处的zfighting  通过对glowmask pass 单独添加bias 得到了解决

转载于:https://www.cnblogs.com/minggoddess/p/5729570.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值