UnityGI渲染.docx
- 文档编号:4235652
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:16
- 大小:2.13MB
UnityGI渲染.docx
《UnityGI渲染.docx》由会员分享,可在线阅读,更多相关《UnityGI渲染.docx(16页珍藏版)》请在冰豆网上搜索。
UnityGI渲染
GI是什么?
GI=直接光照+间接光照+环境光+反射光.
直接光照先不用说了,
间接光照是光线在物体上反射所带来的光照.核心参数:
每个光源上的BounceIntensity.
环境光可以直接理解为你天空盒的颜色,蓝天白云,那么环境光就是蓝色白色.核心参数:
Lighting视图中的AmbientIntensity.
反射光可以理解为镜面反射一样的存在,核心参数:
Lighting视图中的ReflectionIntensity
请各位逐一尝试这四个参数并且尝试能将场景调成纯黑然后再调回来,就能理解其中的概念了.
GI分为两种,一种是PrecomputedReatimeGI,这种GI需要预先计算,计算场景中所有的Static物体的信息,并且允许在运行时任意修改光源的BounceIntensity或者移动光源的位置.所有的变化都是实时的.
第二种是BakedGI,这种GI不会预先计算但会进行预先烘焙,无法像PrecomputedRealtimeGI那样在运行时更改光源.
GI的重点在于Bounce,可以将Static物体上的光反弹到其他Static物体上,无法将非Static物体上的光反弹到Static物体上.也无法将Static物体上的光反弹到非Static物体上,但是Unity5引入了新的概念,那就是Realtime的LightProbe,Unity4中的LightProbe只能静态烘焙,而Unity5的LightProbe会实时捕捉包括PrecomputedRealtimeGI的Bounce光在内的任何光线信息并且将其赋予非Static物体上.
要想完全理解GI,首先要好好说一下Lighting面板.
先说重点的Scene页面.
EnvironmentLighting这些内容控制的是场景总体的光线信息,包括天空盒的设置,可以赋予一个天空盒材质上去,而天空盒材质在Unity5里面也有更新,很有意思,大家可以试试,新建一个材质然后选择Skybox/Procedural就行了.
Sun---如果你的天空盒材质是Skybox/Procedural那么这里允许指定一个DirectionalLight,你试着旋转一下这个DirectionalLight就知道他是干嘛的了.
AmbientSource---环境光来源,一般都是天空盒.如果你的天空盒会在游戏运行时实时变化,一定要在AmbientGI这里选择Realtime,否则可以选择Baked.
ReflectionSource---镜面反光的来源,说到镜面放光,需要说到ReflectionProbe,可以理解为ReflectionProbe会规定一个区域,任何进入这个区域的物体的镜面反光的信息都会被覆盖,而没有进入任何ReflectionProbe的物体的镜面放光的信息就是这个ReflectionSource所指定的内容.
ReflectionBounces---当你使用ReflectionProbe的时候,最多允许镜面来回反弹几次,举个例子,两面镜子对着放,会有无穷的发射次数,而这显然是有性能消耗的,这里指定这个来回反弹的最大的次数.
PrecomputedRealtimeGI的概念是,预先计算场景中的所有静态物体的信息,具体计算出来了哪些信息咱们开发者不用操心,这些计算出来的信息会用于实时GI.
RealtimeResolution控制的是实时GI的分辨率,建议不要调太高.
CPUUsage这个越大,在调节Realtime光源的时候,GI效果就会响应得越快.
BakedGI就是烘焙光影贴图的内容了.可以和PrecomputedRealtimeGI同时存在.
BakedResolution---Bounce效果的分辨率,由于是Baked的,所以不用像Realtime那样设置得很小.
BakedPadding---防止光照贴图的像素在物体之间溢出.是物体之间而不是UV簇之间,Unity没有智能到可以自动帮我将一个物体的UV拆开来然后再合并.
Compressed---是否压缩光照贴图,提高性能,缩小容量,但画质会降低.
AO不用说了吧
FinalGather---开启后效果的确有很大的提升,但是会让烘焙变慢,成品必开.
RayCount---与FinalGather有关.该值越大效果越好.烘焙也越慢.经过仔细对比,默认的1024和4096几乎没有区别,但4096烘焙得出奇地慢.事实上1024和128也几乎没有区别.反正在我的小测试场景中是几乎没有任何区别.
GeneralGI组的这些参数同时适用于实时GI以及烘焙GI.
DirectionalMode这个真是太有意思了!
图中是静态物体+Bake光源.可以看到如果选择了Directional,会像Unity4一样对静态物体处理得很不好,但如果选择了DirectionalSpecular,画质马上就提升了一个等级.
不仅对于静态物体+Baked光源有提升,对于静态物体+Realtime光源也有提升.但是对于动态物体是没有提升的.
这两幅图是静态物体+动态光源.可以说DirectionalSpecular直接提升了静态物体对于直接光和间接光的效果.
但是这里有一个不得不重视的警告,说DirectionalSpecular对于SM2.0以及GLES2.0无法支持.如果选择了DirectionalSpecular,就说明我不得不在我的PC游戏的最低配置上提升需求(当然了要是在八年前是要这么说的)!
这里说一下GLES(OpenGLES)和SM(ShaderModel).OpenGLES针对手机平台,SM针对主机和PC平台.从iPhone5s开始支持了OpenGLES3.0版本.而对于SM版本来说,目前还停留在SM2.0的显卡基本已经不存在了.
IndirectIntensity---同时调节Bounce,静态物体的自发光对其他物体的影响,以及ambientlighting的强度.
BounceBoost顾名思义
DefaultParameters---设置一个LightmapParameters资源上去.这么做是为了复用性.
AtlasSize---Atlas尺寸.
Fog组合OtherSettings组的内容都是Unity4就有了的.新功能教学中不赘述.
下面来看一下Lighting窗口的Object页面
PreserveUVs以及AutoUVMaxDistance以及AutoUVMaxAngle---说到这三个UV选项,就不得不说一个新的知识点.
每个物体在Unity中最多会使用3个UV通道,UV1是贴图通道,UV2是光照贴图的通道,而第三个UV是Unity自动生成的要用于PrecomputedRealtimeGI的UV通道.
在这里会看到区别,其中最后两个,使用了光照贴图的UV通道,而前面五个使用了第三个UV,
而这三个参数正是用于控制如何生成这第三套UV的.这三个选项自己测试一下就有结论了,不再赘述.说到这里,如果你坚持看到这里还没有打开Unity手动进行测试并且记笔记的话,我推荐你不要这样.我不是专门写教程的我无法写得很好如果你不能一边测试一边看教程你说不定什么都学不到.
ImportantGI---在比较大的场景里面,Emission物体够大够亮.但有些物体没有却没有被他照射到,那么可以为他开启这个ImportantGI.
好了,这里要说一下Emmision了,在第一章里,我们说到了两种自带PBS的Shader都有Emmision可以用,
重点:
要想Emmision影响其他物体,那么Emmision物体必须是Static的.Realtime和Baked的区别在于,Realtime允许在游戏运行时更改Emmision颜色以及强度来影响整体GI,当然了更改了Emmision颜色之后需要调用一个API,这个API就是DynamicGI.UpdateMaterials,Unity官方文档说,之所以没有做成自动刷新显示是因为这方面的刷新比较消耗性能,而Unity正在想办法将这个操作的性能消耗减少并且将这个做成实时刷新的.
AdvancedParameters---允许单独的物体的LightParameter的设置覆盖DefaultParameters.
下面说LightmapParameters,为了复用性,将LightmapParameters做成了资源.
LightmapParameters资源可以赋予全局,或者赋予单个物体来覆盖全局中的设置.
PrecomputedRealtimeGI这组的都是与PrecomputedRealtimeGI相关的.
Resolution---RealtimeResolution会乘以这个值来得出最终要使用于实时GI的Resolution.
ClusterResolution---Toolargeclusterswillresultinlight/shadowbleedingandtoosmallclustersslowdowntheprecompute.数值越小效果越精确,但是烘焙起来也越慢.
什么是Cluster?
看图
IrradianceBudget---数值越小效果越平滑.但是更加消耗内存和少量的CPU.
IrradianceQuality---数值越大效果越好,但是预计算越慢.对游戏运行时的性能消耗无影响.
BackfaceTolerance---数值越小,GI就越容易无视物体的背面.同时,两个完全贴合的物体的贴合部分也越容易被GI无视.
ModellingTolerance---数值越小效果越好但是不能是0.
EdgeStitching---不能说完全消除但是可以缓解UV接缝的视觉纰漏.
IsTransparent---还记得刚才说过什么吗?
LightmapParameters资源可以赋予全局,或者赋予单个物体来覆盖全局中的设置.没错,为透明的物体赋予可以覆盖全局设置的LightParameters,并且将这个LightParameters中的这个IsTransparent开启是更好的选择.
SystemTag---和IsTransparent一样,使用单独物体的LightParameter来确定这个物体被考虑进哪个System.说到System,可以理解为PrecomputedRealtimeGI的Atlas.
BakedGI这里的选项都是针对BakedGI的.
BlurRadius---光照贴图的模糊处理.可用于将烘焙出来的阴影进行柔化处理.
Anti-aliasingSamples---数值越高,烘焙出来的阴影的锯齿越少.
DirectLightQuality---数值越高烘焙效果越精确.烘焙时间也会更长.
BakedAO这组是与AO有关的参数.
Quality---数值越高AO的质量越高.
Anti-aliasingSamples---AO抗锯齿.
BakedTag---这个参数虽然和BakedAO组离的很近,但是注意观察其实是有一定Space的,因此他不属于AO组.控制光照贴图的Atlas编号.
下面说一下GI方面的其他注意事项以及RenderingPath
首先,在LinearColorSpace中PBR才会有最正确的效果
然后是,
光源的Baking模式有三种可选.
`Realtime---对动态物体还是静态物体都使用实时光源.
`Baked---只对静态物体使用烘焙光照.对动态物体没有作用.
`Mixed---对静态物体使用烘焙光照,对动态物体使用实时光源.
首先要明确的一点,那就是提到Bounce,就马上应该联想到静态物体,因为Bounce对动态物体是无效的.那么关于Bounce和光源的Baking模式之间的关系,只有Realtime模式支持实时Bounce,也就是更改Intensity或BounceIntensity会对结果产生影响.与此相对的,Baked以及Mixed都仅仅支持烘焙的Bounce.
下面说一下RenderingPath,请各位集中看一下下面的话,或者反复读两遍.因为个人觉得这个挺重要.
Unity5多了一种RenderingPath,可以取代过去的LegacyDeferred.最大的特点是对于实时光影来说的性能消耗更低了.
Deferred
这个模式是最适合动态光影的.对于次时代PC或者主机游戏,当然要选择这个.通过VikingVillage以及”进化”这些最新游戏的观察我发现次时代游戏几乎不需要烘焙光照贴图了,全都使用实时阴影是很好的选择.通过阴影距离来控制性能消耗.而在VikingVillage的场景中,由于整个场景全部使用了动态光源,Forward的Rendering方面的性能消耗要比Deferred高出一倍!
因此在完全使用动态光源的项目中千万不能使用Forward.
Forward
对于实时光影来说,Forward的消耗比Deferred更高,但是Forward更加适合用于半烘焙半实时的项目.
Forward解决了一个Deferred没能解决的问题.那就是Deferred不能让Mixed模式的DirectionalLight将动态阴影投射在一个经过烘焙了的静态物体上.
比如这里这样,立方体和右边的Plane是静态物体,球体和左边的Plane是动态物体.唯一的DirectionalLight是Mixed的.DirectionalLight烘焙了一下光照贴图,但是球体不是静态物体,Mixed的DirectionalLight现在虽然可以照亮这个球体但是却无法将他的阴影投射在右边的经过烘焙了的静态的Plane上面.但却可以将球体的阴影投射在左边的动态的Plane上面.
而Forward却完美解决了这个问题.
因此,Deferred适用于全动态阴影的主机以及PC游戏.Forward适用于烘焙阴影与实时阴影相结合的手机游戏.
Deferred适用于全动态阴影的主机以及PC游戏.Forward适用于烘焙阴影与实时阴影相结合的手机游戏...
Deferred适用于全动态阴影的主机以及PC游戏.Forward适用于烘焙阴影与实时阴影相结合的手机游戏.....
Deferred适用于全动态阴影的主机以及PC游戏.Forward适用于烘焙阴影与实时阴影相结合的手机游戏......
Deferred适用于全动态阴影的主机以及PC游戏.Forward适用于烘焙阴影与实时阴影相结合的手机游戏.......
只要记住上面五句话就行了.
GI章节结束.复习一下.
`大部分GI功能仅能用于静态物体以及LightProbe上
`动态物体应该受LightProbe所影响.
`GI分为两种,一种动态一种烘焙,手游当然应该烘焙,主机或PC可以选择用实时.
`GI要和Standard以及Standard(SpecularSetup)配合使用才有最佳效果.
`Deferred适用于全动态阴影的主机以及PC游戏.Forward适用于烘焙阴影与实时阴影相结合的手机游戏
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UnityGI 渲染