unity当中实用的光雾

本文素材地址https://github.com/Unity-Technologies/VolumetricLighting

该素材使用方式很简单,但还是赘述一下。因为没有导入过官方写出来的组件,所以也是走了一些弯路的。留给同样的初学者一些方便。
首先这是一个工程文件,将工程文件解压在文件夹可以用hub读出关卡内容,在关卡内能够实现任意数值变换以供实验,方便清楚后续参数用途。这个包的导出方法可以参考百度。也可以和我一样,简单直接的把除了关卡文件外所有内容复制粘贴进入自己的工程文件。

在此之前,已经看过了一些帖子介绍其功用,还有具体的视频可以参考。在这里是记录一些在使用时遇到的坑点。

以下为效果图,应该算是我丑丑的游戏里比较能看得过眼的东西了。。
在这里插入图片描述
(请不要在意丑陋的背包按钮,谢谢…)
以及我做的,基于此光雾的回城点效果(在代码里设定来的点为红色,去的点为蓝色)

在这里插入图片描述

还有水里的光雾,水里的视角一直挺让我为难的,这样的效果不算太差,但应该还是少了一些细节
在这里插入图片描述

暂时光舞所使用的内容只做了这些,下面来总结使用此组件时遇到的一些坑点。

坑点1:所谓局部雾并非局部雾
使用这玩意的时候,所有人都可以注意到,这个雾气,并非是局部雾,而是像fog一样的全局雾。这样的设定会有何影响呢。可以说是有较大影响的。例如只是想实现水里的雾气效果,却调出了全局雾的效果,其实现效果有悖初衷。
想要解决这个问题,其实并不困难。在我们camera上挂载的volumetic fog中将global density muit的值调小,可将全局雾的效果降低。相应的,我们需要将挂载在相应light上的fog light中intensity muit的数值增大。以实现其局部光雾的可视度。
以上做法能够尽可能控制并非局部雾的全局雾全局效果的降低。而突出我们要的局部雾效果。

坑点2:挂载volumetic fog后出现的shader错乱
在挂载该组件后,我的自定义shader曾经一度出现透视的效果。针对其出现的原因,我探究了数个光照shader后,发现其与正常光照并没有关系,使其出现透视效果的原因是,缺少了Fallback “Specular”。
该行代码为shader最后一行所留,为了防止出现无法渲染的情况而给渲染管道留下的后门。具体原因可能是该行脚本为了使程序内,从底部升腾的雾气有凭据的原点而对光线附加了镜面反射的效果。(只是猜测,如何附加并不清楚)因为此镜面反射并未在我的shader中进行处理,而我的shader又关闭了后门,因此出现了没有渲染地面的透视情况。
因此,加入此行代码即可,具体原因,可能需要深究该组件内部代码,我学习此组件时间尚短,后续可能查看源码内容另开一贴。

坑点3:不知如何表述的坑点
该坑点我个人感觉不算坑点,因为局部雾效果已经算很强大,至于该问题纯粹是我个人使用问题。
如上博客所写,我使用地图为自己编写的随机地图,会随机选取一个高度为1的地面为其填充我自己写的水体。这个水体需求一个水底光雾效果。因此我将局部雾效果导入其中。按照初版预算,我是认为,此局部雾只会在光照的情况下产生,这里的光照应该会受到遮蔽物的限制,因此如果将其放在水体的正中央,它的光雾应该不会产生逸散。因为水面还有一个反面,以应对水下视角往水面上望。然而出现的效果却是,这个光雾所带的光组件不受遮蔽物的影响,会将其光照效果洒到指定范围内所有雾气上。
若仅仅如此,尚还能够接受,只需小心调整其空间位置即可。但它的形状却是规则的正方形。(我并没有使用管状光效等其他光效,因此在这不参与讨论。)无法变迁的正方形,使得不规则形状的水体,不可避免的会产生光雾的逸散(大致可以理解成,我一个三角形的水,为了填充满光雾,会产生逸散在三角形之外的其他光雾。)
针对以上的坑点的解决方案,我的方法也很草率,我将其放置到合适高度后,将其关闭,当检测到玩家进入水体时,将其打开。当然,这可能会对我后续想要实现水下山洞产生不可预知的影响。具体等我进程达到再做讨论。

坑点叙述完

扫描二维码关注公众号,回复: 11305737 查看本文章

个人猜想

关于光雾是如何实现的这一点,我在没有查看源码的现在拥有一些假设。大致就是让很多细小的可被渲染的圆点漂浮在空中,为其设定可以根据相应light变换颜色的shader。当然,这些圆点应该需要被深度优化,否则恐怕以其庞大的数量就足以使程序发生卡顿。

如上是我学习该组件所总结的一些东西。当然其中连具体操作也没提到,这些还是个人探究来的更重要一些就不再细述。因为两天后需要接受面试的原因,所以今天更新的博文内容并不多。同时也是总结以下我最近使用光雾的心得和思考。

顺带一提,现在正在编写游戏内的随机物品及人物,势力等的生成,极其资源和资源文件的多端映射,下次更新更可能使这个方向。

同时,还是希望各路大佬如果觉得文章中有错漏或是我使用的过程走了弯路能够指正,毕竟大多内容都是个人摸索,在未接触商业游戏开发流程的前提下,很多使用习惯和领悟方式并不规范。

猜你喜欢

转载自blog.csdn.net/qq_35465882/article/details/104783145