GI是什么?GI=直接光照+环境光+反射光

GI是什么?GI=直接光照+环境光+反射光

要完全理解GI,首先要讲一下Lighting面板。 先说关键的Scene页面。 EnvironmentLighting控制场景的整体灯光信息,包括天空盒的设置,可以为其分配天空盒材质。 Unity5中天空盒材质也进行了更新。 这很有趣。 你可以尝试一下。 创建材质并选择天空盒。 /程序就可以了。 Sun---如果你的天空盒材质是Skybox/Procedural,那么你可以在这里指定DirectionalLight。 尝试旋转这个 DirectionalLight,您就会知道它的作用。 AmbientSource---环境光源,通常是天空盒。 如果你的天空盒在游戏运行时会实时变化,一定要在AmbientGI中选择Realtime,否则可以选择Baked。 ReflectionSource---镜面反射的来源。 说到镜面光,我们就需要谈谈ReflectionProbe。 可以理解为ReflectionProbe会指定一个区域。 任何进入该区域的物体的镜面反射信息都会被覆盖,而无需进入任何ReflectionProbe。 物体的镜面光的信息就是这个ReflectionSource指定的内容。

ReflectionBounces---当您使用ReflectionProbe时,镜子最多允许来回弹跳几次。 例如,如果两个镜子面对面,就会出现无限次的反弹,这显然会带来性能成本。 在此指定来回反弹。 最大次数。 PrecompulatedRealtimeGI的概念是预先计算场景中所有静态物体的信息。 我们开发者不用担心具体的计算信息。 计算出的信息将用于实时 GI。 RealtimeResolution控制实时GI的分辨率。 建议不要调得太高。 CPUUsage越大,调整Realtime光源时GI效果响应越快。 BakedGI是烘焙光影贴图的内容。 可以与PrecompulatedRealtimeGI同时存在。 BakedResolution---Bounce效果的分辨率。 既然是Baked,就不需要设置得像Realtime那么小​​。 BakedPadding---防止光照贴图像素在对象之间溢出。 它是在物体之间而不是 UV 簇之间。 Unity 不够智能,无法自动帮助我分离对象的 UV技能特效,然后再次合并它们。 压缩---是否压缩光照图,提高性能,减少容量,但图像质量会降低。 不用说AO,FinalGather---开启后效果确实有很大提升,但是会减慢烘烤速度,成品必须开启。

RayCount---与 FinalGather 相关。 值越大,效果越好。 烘烤速度也较慢。 仔细对比一下,默认的1024和4096几乎没有区别,但是4096的烘烤速度出奇的慢。 事实上,1024 和 128 之间几乎没有区别。在我的小测试场景中几乎没有区别。 GeneralGI 组的这些参数适用于实时 GI 和烘焙 GI。 定向模式真的很有趣! 图为静态物体+Bake光源。 可以看到,如果选择Directional,Unity4对静态物体的处理也很差,但如果选择DirectionalSpecular,图像质量立刻提高了一个档次。 不仅改进了静态物体+烘焙光源,还改进了静态物体+实时光源。 但对于动态物体则没有任何改进。 这两张图是静态物体+动态光源。 可以说DirectionalSpecular直接改善了静态物体对直接光和间接光的影响。 但有一个警告必须认真对待,说DirectionalSpecular无法支持SM2.0和GLES2.0。 如果我选择DirectionalSpecular,就意味着我要提高我的PC游戏的最低配置要求(当然,如果是八年前的话那就是我想说的)! 这里先说说GLES(OpenGLES)和SM(ShaderModel)。

OpenGLES针对手机平台unity 天空盒动态变化,SM针对主机和PC平台。 从iPhone5s开始支持OpenGLES3.0版本。 至于SM版本,目前卡在SM2.0的显卡基本不存在了。 IndirectIntensity---同时调整Bounce,静态物体的自发光对其他物体的影响,以及环境光照的强度。 BounceBoost,顾名思义,DefaultParameters---设置一个LightmapParameters资源。 这样做是为了可重用性。 AtlasSize---图集大小。 Fog组合OtherSettings组的内容在Unity4中已经可用。 新功能教程我就不详细说了。 我们来看看Lighting窗口的Object页面上的PreserveUVs、AutoUVMaxDistance和AutoUVMaxAngle——说到这三个UV选项,就不得不说一个新的知识点了。 在 Unity 中,每个对象将使用最多 3 个 UV 通道。 UV1是纹理通道,UV2是光照贴图通道,第三个UV Unity自动生成PrecompulatedRealtime GI。 您会在这里看到差异。 最后两个使用照明。 贴图的UV通道,而前五个使用第三组UV,这三个参数用于控制如何生成这第三组UV。

这三个选项你自己测试一下就可以得出结论,这里就不多说了。 话虽如此,如果你执意要看到这个,而且还没有打开Unity手动测试和做笔记,我建议你不要这样做。 我不是专门写教程的。 我写不好。 如果您不能同时测试和观看教程,您可能什么也学不到。 重要GI---在比较大的场景中,Emission物体足够大、足够亮。 但有些物体并没有被他照亮unity 天空盒动态变化,所以你可以为它们打开这个Important GI。 好吧,我们就在这里谈谈Emmission。 在第一章中,我们提到两个内置的 PBS Shader 都可以使用 Emmision。 关键点:如果你想让Emmission影响其他物体,那么Emmission物体必须是Static Baked的。 不同的是,Realtime 允许在游戏运行时改变发射颜色和强度来影响整体 GI。 当然,改变Emmion颜色之后,需要调用一个API,就是DynamicGI。 UpdateMaterials,Unity官方文档说Unity正在寻找方法来降低这个操作的性能消耗,并使其能够实时刷新。 高级参数---允许单个对象的 LightParameter 设置覆盖默认参数。

我们来谈谈LightmapParameters。 为了可重用性,LightmapParameters 被制作成资源。 LightmapParameters 资源可以全局分配,也可以分配给单个对象以覆盖全局设置。 预计算实时 GI 该组与预计算实时 GI 相关。 分辨率---实时分辨率将乘以该值以获得用于实时GI的最终分辨率。 集群解决方案——太大的集群光/影渗色太小的集群会减慢预计算速度。 值越小,效果越准确游戏开发素材,但烘烤速度会较慢。 IrradianceBudget---值越小,效果越平滑。 但它消耗更多的内存和更少的CPU。 辐照度质量——值越大效果越好,但预计算速度越慢。 游戏运行时对性能消耗没有影响。 Backface Tolerance---值越小,GI越容易忽略物体的背面。 同时,两个完全贴合的物体的贴合部分更容易被GI忽略。

Modeling Tolerance---值越小效果越好,但不能为0。 Edge Stitching---不能说完全消除,但可以缓解UV接缝的视觉瑕疵。 透明——还记得我刚才说的吗? LightmapParameters 资源可以全局分配,也可以分配给单个对象以覆盖全局设置。 是的,将可以覆盖全局设置的LightParameters分配给透明对象,并在这个LightParameters中打开IsTransparent是更好的选择。 系统标签---与透明一样,使用单个对象的LightParameter来确定该对象被考虑​​到哪个系统。 说到System,可以理解为Atlas of Precompulated Realtime GI。 Baked GI 这里的选项都是Baked GI BlurRadius——光照贴图的模糊。 可用于柔化烘焙阴影。

文章来源:https://www.docin.com/p-2013619491.html