Unity光照与渲染设置学习笔记
学习了一下unity中有关光照和渲染的一些设置,现在才明白之前遇到的一些问题只是没有正确设置而已。
unity不同版本的光照设置会有一些差异,而且可以调节的参数非常多,这里只记录一些重要的参数和使用方法,具体使用时再查阅文档即可。
调节这些参数的主要目的就是在性能和画面效果上达到平衡,所以具体怎么调还是看游戏需求。
作为一个还不懂图形学的萌新,只是从效果出发学习这些设置,并不了解原理,如果写的不好,请见谅。
unity版本:2018.3.2f1
1.色彩空间
打开项目首先要设置的就是色彩空间,unity中有Linear和Gamma两种色彩空间可供选择,这两种色彩空间的效果如下图所示,很明显Gamma空间在表现上不如Linear空间自然、真实,很容易曝光过度,所以如果想要更好的画面效果,建议选择Linear空间,如果追求性能,比如移动平台游戏可以考虑选择Gamma空间。

unity2018.3.2f1中可以在Edit->Project Settings->Player->Other Settings下选择色彩空间。

2.天空盒
天空盒的本质其实是一个材质,要自定义天空盒,只需创建一个材质,将shader选择为Skybox下的一种,赋予对应的图片,然后将材质拖入场景,就能使用自己的天空盒了!


3.环境光
接下来就是最重要的Lighting面板的设置了,unity2018.3.2可以在Window->Rendering->Light Settings打开,这个面板包含了大量与光照和渲染相关的设置,直接影响到游戏的画面效果。
咱们一点一点来,先从Environment选项开始,这里包含了一些与环境光照相关的设置。

Skybox Material用于指定天空盒,跟直接把天空盒材质拖进场景没有区别。
Sun Source不需要设置,unity会默认把场景中最强的平行光作为太阳,这样当你旋转平行光时,天空盒上的太阳也随之移动,并且场景会有白天黑夜的变化。
Environment Lighting用于设置环境光源,选择skybox则环境光来自天空盒,如果将Source设置成color就可以自定义环境光的颜色。
下图为使用天空盒作为环境光和自定义环境光为红色的效果,很多游戏为了营造气氛,都会使用自定义的环境光。



Environment Reflections决定环境反射,如果你的场景中有镜子或其他带有反射性的物体,这个选项决定它们反射什么对象,你可以使用天空盒,或者自定义的CubeMap,值得注意的是,如果你发现反射的内容很模糊,可以调节Resolution参数, 提高反射的分辨率。
4.灯光参数
简单说一说unity里的灯光,unity有四种灯光类型,分别是聚光灯、平行光、点光源、区域光,每种光源有一些特殊的参数可以调节。

光源模式可以选择Realtime(实时)、Mixed(混合)、Baked(烘焙)三种,实时灯光对性能消耗最大,烘焙模式可以将预先将灯光烘焙成光照贴图所以性能最优,而Mixed介于两者之间。

Shadow Type决定了光源对阴影的影响,可以选择无阴影、硬阴影或软阴影,还可以调节阴影的强度、分辨率、偏移等,软阴影最耗性能,硬阴影其次。

5.全局光照(Global illumination)
接下来是两个全局光照选项,分别是实时全局光照和烘焙全局光照,通常这两个只要开一个就行,取决于你的游戏使用实时光照还是烘焙光照。

Mixed Lighting下可以选择Lighting Mode,有Baked Indirect,Subtractive,Shadowmask三种

其中Subtractive效果最差,性能最好,Baked Indirect效果最好,性能最差,Shadowmask居中。
6.烘焙光照参数
下面来看看烘焙光照相关的参数,这决定了你烘焙出的光照贴图是什么样的。

这里只说一些重要的参数。
LightMapper可以选择烘焙方案,一般默认就行。
Lightmap Resolution光照贴图分辨率,这直接影响烘焙的时间长短。
Lightmap Size决定光照贴图大小。
Compress Lightmaps决定是否压缩光照贴图,如果追求更好的画面请取消压缩。
Ambient Occlusion决定是否开启环境光遮蔽,想要更真实的效果请开启。
Indirect Intensity决定间接光的强度,可以调整场景的整体亮度。

设置好这些参数之后记得将场景中的静态物体设置为Lightmap Static,这样才会受到烘焙光照的影响,然后点击Lighting面板最下方的Generate Lighting,即可开始烘焙光照贴图。
烘焙完之后相当于把光照贴到了物体身上,即使把场景中的灯光删除,光照也依然存在,不过此时移动灯光或物体,物体的阴影并不会改变,所以只有不移动的物体才适合烘焙光照。
7.后处理
最后简单说说屏幕后处理,这是一种快速提升游戏画面效果的“黑科技”,在unity asset store上可以免费下载unity官方的后处理插件Post Processing Stack。
使用方法如下:
在project面板中右键Create->Post-Processing Profile创建一个后处理配置文件

后处理配置文件中有很多效果选项,点击前面的勾即可启用,每个选项有各种参数可以调节,感兴趣可以自己尝试,我个人认为Bloom真的非常好用,它能使画面亮部产生光晕效果,让你的游戏瞬间变得如梦似幻,还有Color Grading,可以改变画面的色调、饱和度、对比度等等,非常实用,可以帮助你快速营造出特定的场景氛围。

设置好配置文件之后之后,在摄像机上挂载Post Processing Behaviour这个脚本,并把我们刚配置的文件拖上去,然后就大功告成了!

下面是不使用后处理和使用后处理的对比,我没有对物体和灯光做任何改变,只随手调了一些后处理参数,可见后处理的强大。


关于光照和渲染,其实还有太多的知识,但普通的开发者使用这些设置已经能达到不错的效果了。
最近其实还是挺迷茫的,写博客的时候反而能静下心来,倒也是意料之外的收获。
接下来的规划准备学习一些编程模式和算法,时间充裕的话想把游戏美术搞起来,加油!
Unity光照与渲染设置学习笔记的更多相关文章
- PBR(基于物理的渲染)学习笔记2
相关资料 https://www.cnblogs.com/dojo-lzz/p/13237686.html 文档:PBR学习笔记.note 链接:http://note.youdao.com/note ...
- PBR(基于物理的渲染)学习笔记
PBR基本介绍 PBR代表基于物理的渲染,本质上还是 gl_FragColor = Emssive + Ambient + Diffuse + Specular 可能高级一些在考虑下AO也就是环境光遮 ...
- UINavigationController的创建和相关设置---学习笔记四
导航控制器 一.设置字体大小,背景等. 二.自定义返回按钮. 三.设置手势. 一.导航中也有个appearance属性,通过它可以设置所有导航的颜色. 二.自定义返回按钮. 1.首先需要知道的是,要把 ...
- secureCRT简单设置(学习笔记二)
菜鸟记录. 一.更改终端类型 选项-全局选项-默认会话-编辑默认设置-终端-仿真-右侧选择类型,下方设置缓冲区大小 二.设置字体和外观 上方窗口外观-右侧设置-字体设置字体类型大小,下面光标可以设置光 ...
- React学习笔记 - 元素渲染
React Learn Note 3 React学习笔记(三) 标签(空格分隔): React JavaScript 二.元素渲染 元素是构成react应用的最小单位. 元素是普通的对象. 元素是构成 ...
- Stealth视频教程学习笔记(第一章)
Stealth视频教程学习笔记(第一章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提 ...
- Stealth视频教程学习笔记(第二章)
Stealth视频教程学习笔记(第二章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提 ...
- React学习笔记 - 组件&Props
React Learn Note 4 React学习笔记(四) 标签(空格分隔): React JavaScript 三.组件&Props 组件可以将UI切分成一些独立的.可复用的部件,这样你 ...
- React学习笔记 - JSX简介
React Learn Note 2 React学习笔记(二) 标签(空格分隔): React JavaScript 一.JSX简介 像const element = <h1>Hello ...
随机推荐
- Chrome 无法加载Shockwave Flash
遇到的问题 Chrome经常出现上图的提示,把Adobe Flash重装了N多次也是无法解决此问题,经多次尝试终于解决此问题. 解决方法 1.在Chrome地址栏输入:chrome://plugins ...
- 【转】Spring学习---为什么要用spring,springMVC
[原文]https://www.toutiao.com/i6593182323095634445/ 首先,软件里有很多优秀的框架,有一种类型的框架,它的特点是建立在一个现有技术的基础上,提供和现有技术 ...
- jQuery插件实例四:手风琴效果[无动画版]
手风琴效果就是内容的折叠与打开,在这个插件中,使用了三种数据来源:1.直接写在DOM结构中:2.将数据写在配置项中:3.从Ajax()中获取数据.在这一版中,各项的切换没有添加动画效果,在下一版中会是 ...
- div中文本水平居中,垂直居中
div: text-align=center; hight=100px; line-hight=100px;(行高需要和高度设置成一样)
- 修改win下ras/pppoe/l2tp等连接数限制
最近宽带重新拔号一直不换ip,拔了十几分钟IP仍然不变,想起几年前的pppoe多拔,多拔几个PPPOE占着老IP,再拔新的IP出来用 注册表路径,子项中查看MatchingDeviceId判断协议类型 ...
- 软工实践——团队作业需求规格说明书——原型UI设计
登录界面 还包含忘记密码和注册的功能 注册界面 注册成功后会有弹窗提示,且一个手机号只能注册一次. 忘记密码界面 通过手机收到的验证码更改密码. 项目界面 登陆之后的页面就是这个项目界面.在拥有的界面 ...
- 【Ansible 文档】【译文】Ad-Hoc 命令介绍
Introduction To Ad-Hoc Commands Ad-Hoc命令介绍 下面的例子展示了如何使用 /usr/bin/ansible 来运行ad hoc任务. 什么是ad hoc命令? 一 ...
- (转)python3 urllib.request.urlopen() 错误UnicodeEncodeError: 'ascii' codec can't encode characters
代码内容: url = 'https://movie.douban.com/j/search_subjects?type=movie'+ str(tag) + '&sort=recommend ...
- python第三十课--异常(else讲解)
演示else语句和异常处理机制结合使用 try: print('try...') print(10/0) except: print('except...') else: print('else... ...
- linux,添加新硬盘的方法
一.物理机添加一块新的硬盘方法(目的是把后加的磁盘直接加在现有的上面,不用再分区挂载)1.首先要确定现有系统在那块盘上 [root@localhost ~]# df -lhFilesystem ...