zoukankan      html  css  js  c++  java
  • Unity 光照系统中的阴影

    阴影类型(Shadow)

    Unity3D 的灯光可以设置不同的阴影类型,分别是:无阴影、硬阴影、软阴影。

    要注意的是,不论是硬阴影还是软阴影,本质上都是用阴影贴图模拟的阴影效果,而不是真实光照而自然形成的暗色区域。

      

    灯光上阴影设置部分会随着Mode参数的不同而变化,Realtime Lighting Mode 对应的选项很多,而 Baked Mode 仅对应 Baked Shadow Angle 一项。

    • 无阴影

    灯光不产生阴影,新建场景后默认生成的平行光就是无阴影的。

    • 硬阴影

    阴影边缘清晰

    • 软阴影

    阴影边缘柔和,有过渡效果

     阴影质量设置

      虽然我们在灯光的阴影设置中可以调节 Resolution 以提高阴影质量,但真正的阴影质量调节应该在 Quality 面板中来进行,灯光中的阴影 Resolution 参数默认设置是 Use Quality Settings,就是从Quality 面板的设定中来选择。
      

    从菜单 Edit > Project Settings > Quality 打开 Quality 面板,这里可以针对不同质量等级设置不同的参数。

      

    这里仅对 Shadows(阴影)部分的属性进行解读:

    • Shadows:在当前质量下是不渲染阴影,还是只渲染硬阴影,还是软硬阴影都渲染

    • Shadow Resolution:在当前质量下阴影贴图分辨率,这就对应了灯光面板中的 Resolution 参数

    • Shadow Projection:阴影贴图的投影方式,Close Fit 方式会优化近处的阴影质量,缺点是运动状态下可能会出现一些波动,Stable Fit 方式不会有波动,但质量比较差

      * 有时候阴影贴图会出错,比如无缘无故多出一条亮缝之类的问题,通常可以选择切换到 Close Fit 方式来解决;

      * 如果不想切换到 Close Fit 方式,可以适当降低灯光阴影参数中的 Normal Bias 参数,或者将对应场景物体设置成双面显示。

    • hadow Near Plane Offset:很近处不渲染阴影

    • Shadow Cascades:阴影贴图叠加方式,可以是单层、2层或者4层

    • Cascade Splits:不同层所对应场景区域的比例分配划分

      

      Shadow Cascadse 是一种阴影贴图算法,比如选择 4 层叠加,那么实际上会计算 4 次阴影贴图,每次对应距离摄影机一定距离范围内的场景物体,而这个距离范围的划分就通过 Cascadse Splits 中所显示的紫、绿、黄、红四种颜色区域所占的比例来区分:

      紫色表示最近处的区域,而红色表示最远处的区域。

      紫色的条形区域越窄表示其对应的那一层阴影贴图所对应的场景区域越小,这样一来该区域的阴影贴图精度就会越高。

    这里的 Shadow Resolution 就对应了灯光面板中的 Resolution 参数。

      

    渲染路径(Rendering Path)

    Unity3D 提供两种渲染路径(Rendering Path),可以理解成是两种不同的渲染器:

    • Forward 渲染路径

      在 Forward 渲染路径下,每个物体会被每个光源渲染成一个“通道”,因此物体受到越多灯光的影响,其渲染次数就会越多。

      Forward 渲染路径的优势在于,在灯光比较少的情况下,Forward 方式的渲染速度会非常快,处理透明贴图也非常快。

      但 Forward 渲染路径的渲染速度会随着灯光的增多而迅速变慢,在一些有很多灯光照明的特定场景中(比如高科技室内环境)并不适合使用 Forward 渲染路径。

    • Deferred 渲染路径

      使用 Deffered 渲染路径,渲染时间不会随着灯光的增多而提高,而是会随着受整体光照影响区域的扩大而提高

      (也就是说,场景中越多像素被照亮,渲染速度就越慢,但全屏被照亮的情况下,灯光设置复杂度并不会进一步影响渲染速度)。

      Deffered 渲染路径在整体上需要更多的计算量,对于一些移动设备,Deffered 渲染路径还不能支持。

      * Unity 默认的渲染路径是 Deffered 渲染,如果场景非常简单,或者希望使用 MSAA,可以自行修改成 Forward 渲染路径。

     

    ***| 以上内容仅为学习参考、学习笔记使用 |***

     
  • 相关阅读:
    MySQL——事务,索引
    Python——多线程
    Python输入输出
    MySQL与Python的交互——增删改
    MySQL与Python的交互————查询
    Python的学习路
    MySQL数据库
    MySQL条件查询
    设计模式笔记 抽象工厂模式
    设计模式笔记 建造者模式
  • 原文地址:https://www.cnblogs.com/ChenZiRong1999/p/13156939.html
Copyright © 2011-2022 走看看