光照与渲染(七)- 反射

反射源(Reflection Source)

默认的情况下,场景中的对象会使用Unity内建的标准着色器(Standard Shader)来着色,标准着色器是一个基于物理的着色器(PBS),它会透过模仿真实世界的物理特性像是反射或能量传递等来模拟真实世界里光在材质上的表现。

当使用标准着色器时,每一个材质都会具有一定程度的高光反射(specularity)或金属反射(metalness)属性,在没有强大的硬件来处理实时光线追踪反射的情况下,大家得依赖预先计算着色反射,大家使用了一个由六张描述天空的图片所组成的立方体贴图(Cubemap)或使用从定点搜集环境信息的反射探头(Reflection Probe)产生的所需纹理,然后通过材质的Shader与其他光和表面数据混合运算来模拟大家真实世界看到的反射效果。


默认情况下,在你场景中高度高光的材质或金属光泽的材质将会反射天空盒,由Environment Lighting面板中的Reflection Source属性所定义。这种表现可以通过选择一个不同的Reflection Source,或者通过往你的场景中添加一个反射探针Reflection Probe

默认情况下,Unity场景中的对象将会反射天空盒,然而,你可以在Lightning窗口中设置Reflection Source 属性来全局地改变这种表现,或者更改天空盒,或者使用一个自定义的Cubemap,这个Reflection Source可以被认为是一个场景范围的立方体贴图,它在一个场景中能够被所有对象使用,除非被覆盖------通过添加一个反射探头Reflection Probe

反射探头(Reflection Probes)

天空盒的信息不可能包含所有的场景对象,在许多情况下,对象从天空搜集反射信息时可能会被遮挡,像是室内对象或是在类似桥或是隧道等建筑物里的对象,为了要准确反射这些对象,大家必须用反射探头针对这些对象取样,这种探头从他们的位置对周围取样并把结果写到立方体贴图,可以让周围经过的物体得到环境的反射影像。你可以透过GameObject->Light->Reflection Probe来新增一个反射探头,反射探头的位置会决定立方体贴图取样的内容,以及反射所看起来的样子,一般来说,基于性能考虑反射探头越少越好,请记住,反射探头并非用来让物理得到精确结果,而是让游戏世界有更好的反射,大多数情况下几个安排妥当的反射探头就很足够了。


左图:场景只有预设的反射设定 右图:场景加入了反射探头后的结果

在反射探头的属性面板中大家可以设定Type为实时(Realtime),烘焙(Baked)或自定义(Custom),需要明白的是,实时反射的设定对性能极为不利,每多一个实时反射探头就会多出额外六次的着色运算,因此摆设实时的反射探头应该要有明确的需求,否则一般来说建议设成烘焙的就够了,性能也会好很多。

需要注意的是,只有标记为”ReflectionProbe Static”的对象才会被反射探头取样,从属性接口上静态对象(Static)的下拉选单打勾即可,相反的,实时的反射探头会对所有可见的物体取样,除非你在屏蔽(Mask)选单指定剔除它。

下一篇:光照与渲染(八)-环境光照(Ambient Lighting)

推荐阅读更多精彩内容

  • 概况全局光照,简称GI,是一个用来模拟光的互动和反弹等复杂行为的算法,要精确的仿真全局光照非常有挑战性,付出的代价...
    VR设计云课堂阅读 2,481评论 0赞 32
  • 前言:最近在做一个美术馆的场景,对于灯光的要求非常高,经过几天的调试和在网上查阅一些资料,总结一下。全局光照,简称...
    Tang7阅读 2,037评论 0赞 6
  • 如果把人生比作一条长河,那你的每一天都是这长河中的一个片段,你每天的惊喜,哀伤就是这水面的波纹细浪。如果把历史比作...
    李双鱼阅读 535评论 0赞 0
  • 麦肯锡8堂课主要是围绕培养个人思考方式的习惯展开的,比如对于前景未明的状况与没有正确答案的问题,关键是确定“了解了...
    商未央阅读 329评论 0赞 5
  • 忆 她是我的姐姐,叫若晴。大家不论什么时候,一定是朋友。这段特殊的时光,我好孤...
    小耳朵的旅行阅读 105评论 0赞 0
  • 上周教《回乡偶书》和《赠汪伦》,我忍不住在二年级孩子面前说了句或许他们听不太懂的话——“人生有两种状态,一...
    Neverland_susie阅读 362评论 4赞 2