Unity 5 中的全局光照技术详解.pdfVIP

  • 13
  • 0
  • 约1.53万字
  • 约 18页
  • 2020-10-06 发布于陕西
  • 举报
Unity5 中的全局光照技术详解 简介 GI 全局光照,简称 ,是一个用来模拟光的互动和反弹等复杂行为的算法, 要精确的仿真全局光照非常有挑战性,付出的代价也高,正因为如此,现代游戏 会先一定程度的预先处理这些计算,而非游戏执行时实时运算。 ( ) ( ) ( ) 同一场景里:没有照明 左 ,只有直接光源 中 ,和有间接光源的全局光照 右 ” ” 的表现,注意颜色如何在不同的表面进行光的反弹 ,产生更真实的结果。 在本文中,我们会描述全局光照如何在Unity里运作,带领你通过不同的照 明技术解释如何在项目里设定照明,并思考如何透过各种工具帮场景打光。 选择一个照明专案 Unity ” ” ” ” 广义的来说, 的全局光照是 实时 或是 预先计算好 的,在某些情况 下两种方法可以结合使用,照出更逼真的场景。本节我们会针对两种技术的差异 优势和使用时机做个简单的描述。 实时照明(REALTIMELIGHTING) 预设情况下,Unity的灯源直接光源 投射灯 点光源 都是实时的,代表这( , , ) 些灯源会把光线照射到场景并以每一帧的频率更新,由于光源是可以在场景内移 动的对象,场景灯光的更新是实时的,你可以在游戏窗口和场景窗口看到改变。 实时照明的影响:注意到因为没有反射光源的关系阴影是全黑的,只有投射 光锥体范围内的对象表面才有光源影响。 实时照明是场景里照亮物体最基本的方法,用来照亮角色和会动的对象,可 惜的是,Unity实时照明里的光线不会反射,因此我们才导入了全局光照系统, 启用了预先计算的技术,都是为了表现一个更逼真的场景。 烘焙全局光照(BAKEDGILIGHTING) 当烘焙一张光照贴图(Lightmap)时,场景内的静态对象会基于光的影响算出 一张贴图成果,并迭在场景对象之上建立照明效果: 左:一个简单的光照贴图场景成果,右:由Unity产生的一张光照贴图 阴影和( 光源信息都被纳入计算) 这些 光照贴图 可以包含场景内投射到物体表面的直接光源,以及在不同物” ” 体间反射的 间接光源 ,这样的光照贴图可以透过物体材质上的着色器” ” (Shader) 描述像是颜色的表面信息(Albedo)和凹凸(Normals)信息。 烘焙光照所产生出来的贴图,是无法在游戏运作的时候变更运算的,因此被 定义为静态(Static),虽然仍可在这层贴图上继续迭加光源计算,但两者已无法 交互运算,通常我们采用这光照法来让低阶的手机能顺利执行,解决光在游戏中 运行的效能问题。 预计算全局光照(PRECOMPUTEDREALTIMEGILIGHTING) 虽然传统的静态光照贴图无法在游戏执行时改变场景光照条件,但预先计算 的实时全局光照系统能帮我们实时运算复杂的场景光源互动,透过这种方法,就 能建立昏暗的环境带有丰富的全局光照反射,并实时反映光源的改变。好比做个 日晷,阴影的位置和颜色会随着光源移动改变,这在原本的烘焙光照系统是无法 达成的。 GI 一个用 呈现的日晷案例 为了在合理的帧率实现这些效果,我们需要在实时运算之前先将一堆垄长的 数字数据做 预计算 ,预计算负责计算游戏过程中光的复杂行为,它可以在时间” ” ” ” 空档时进行计算,我们称作一个 脱机 运算。 如何运作? 最常见的需求是我们希望间接光源能够列入场景光照贴图的计算,幸好,原 理上这些间接光源都是从直接光源慢慢转变过来的颜色,只有少部分特定情况有 比较大幅度的颜色改变,这样的Unity的全局光照预计算,利用间接光源漫反射 (diffuse)特性对运算有利

文档评论(0)

1亿VIP精品文档

相关文档