unity 模型闪烁 z-fighting Z Buffer

在Unity中制作科技感城市场景时,遇到安卓设备上窗户Shader闪烁的问题。通过调整相机的near值为1,解决了由于Z-Fighting引起的闪烁。了解到Z-Buffer是用于隐藏面消除的技术,每个像素有深度值以呈现立体感。在不同平台,Z-Buffer位数差异可能导致问题,调整near和far参数可以优化精度。这次经历揭示了跨平台开发中需考虑的细节和Z-Fighting的解决策略。
摘要由CSDN通过智能技术生成

在unity做一个科技感城市的场景时,给窗户加了一个发光的shader,在电脑端显示正常,但是导出安卓端的时候发现相机移动时,窗口会闪烁。
在这里插入图片描述
在翻找了很多博客和教程后,找到一篇博客并解决了问题。
unity shader在实际项目中出现的问题————安卓机型角色眼镜闪烁的问题(Z-Fighting)
以及这篇博客的参考博客
z-fighting在unity中的解决方式
感谢两位博主,我将相机的near值修改到1时重新导出安卓,闪烁问题就解决了。
通过这个问题,了解了z-fighting与z-buffer概念。
百度百科说明,Z Buffer(Z 缓存),Z-buffering是在为物件进行着色时,执行“隐藏面消除”工作的一项技术,所以隐藏物件背后的部分就不会被显示出来。 在3D环境中每个像素中会利用一组数据资料来定义像素在显示时的纵深度(即Z轴坐标值)。Z Buffer所用的位数越高,则代表该显示卡所提供的物件纵深感也越精确。
摘自该博客https://www.cnblogs.com/cnblog-wuran/p/9830994.html
也就是说在这个立体空间维度中,每个物体针对屏幕的每个像素点都有一个深度值,不同深度值表示像素点的远近感,从而在平面上给人以仿佛真实物体的立体感。
原博客中对z-fight说明很清晰,“z-fighting的出现是的不同面上的像素在z-buffer中的值相近,导致前台取像素的时候一会去这个面的,一会取那个面的。改变照相机的near、far属性会涉及到z-buffer中的值的精度。因为在各个平台上z-buffer位数不同,因此改变near和far能给z-buffer中的值的浮点数部分尽量留出空间,消除z-fighting。”
也就是说我的项目中楼房凹进去的部分和窗户模型接近的那个面距离太近了。其实之前项目经常会遇到这个问题,就是用unity简单建模时,比如两个方块叠加时很容易会出现这种闪烁问题。但是这个模型是做好的,而且在电脑端没有出现闪烁,因此忽视了这方面的问题,才了解到了z-buffer位数在不同平台原来还有不同的情况。进行unity的安卓开发与电脑端开发还是有不少问题的,需要时刻有这种跨平台的多维度的考量。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值