记一次Unity URP雾效异常解决
记一次Unity URP雾效异常解决
问题描述
这是一个在项目从builtin升级urp后遇到的问题:和原来一样的fog设置,雾效变成了随着相机角度的不同,会变浓或变淡,最浓的时候甚至白茫茫的一片。。。
心路历程
首先认为是否urp算法不一致,但是各种参数调了后还是这个表现,心想不可能urp的雾这么离谱、根本不能正常使用。
然后看它这效果和角度有关,心想是否和灯光角度关联上了?但是对灯光一顿操作仍然不正常。
真正解决问题
google一顿搜索,发现有一些开发者也遇到了同样的问题:雾的效果和相机角度有关系。但是很多链接也是没人回复。
最后在unity官方论坛里一个同样问题页面,有人说他把地面的cube换成plane之后正常了,另一个人说他认为这个是由于urp的雾效是逐顶点而非逐像素的,,
这是正解,由于雾的浓度只在顶点着色器中计算,而场景中只有一个box或类似的顶点很少的模型时(特别是用作大环境时),屏幕上的大多数像素点的雾浓度都是由仅仅几个三角面的顶点浓度插值出来的。
这种情况下,顶点的位置就很微妙了,假如最终会显示到屏幕的三角面顶点都离相机比较远,那么顶点的雾浓度就很高,由它们一插值。。。白茫茫的一片效果就有了。
那么怎么解决呢,我这里就是把用到的环境模型的网格做细分,这个用blender就可以很方便的做到。
这样就会更多的顶点显示在屏幕上,它们的雾浓度是基于与相机距离正确计算的,由它们再去插值就比较正确了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?