1. 阴影的作用

  • 加强场景中深度感,显示了原本可能看起来平坦的物体的比例和位置
  • 当阴影按预期表现时,它们会增加体验的真实感。
  • 缺少阴影的游戏,会破坏用户的沉浸感

2. 阴影的实现:阴影贴图 Shadow Mapping

阴影贴图,使用类似于深度纹理( depth textures)的 阴影贴图纹理(shadow maps texture) 进行阴影部分的贴图

通过测试像素是否从光源可见,通过将像素与以纹理形式存储的缓冲区或光源视图的深度图像进行比较来创建阴影。

如果你从光源向外看,你能看到的所有物体都会出现在光中。然而,这些物体背后的任何东西都将处于阴影之中。这是用于创建阴影贴图的基本原理。

渲染阴影场景涉及两个主要的绘制步骤。第一个生成阴影贴图本身,第二个将其应用于场景。根据实现(和灯光的数量),这可能需要两个或更多的绘图通道。

3. 渲染管线资源中的阴影设置

注意: 在渲染管线资源中的阴影设置,会影响当前项目中所有的阴影

  1. Project 窗口中,找到 Assets > CreativeCore_Lighting > Settings > Rendering并选择UniversalRP_HighQuality

  2. 在 Inspector 中,找到Shadows部分。

  • Max Distance : 渲染阴影距相机的最大距离

  • Working Unit : 单位 Metric 默认米

  • Cascade Count (仅适用于定向光): 阴影阶梯(级联、阶段)。解决由定向光产生的阴影像素化问题。

    透视锯齿发生是因为阴影贴图的不同区域被相机的透视不成比例地缩放。来自灯光的阴影贴图只需要覆盖摄像机可见的场景部分,这由摄像机的视锥体定义。

使用 Shadow Cascades 时,Unity 会根据与相机的距离将截锥体区域分成两个区域。近端的区域使用单独的阴影贴图,尺寸减小(但分辨率相同)。阴影贴图大小的这些阶段性减小称为级联阴影贴图(有时称为并行分割阴影贴图)。


在项目中配置影子级联时,可以选择使用 0、2 或 4 个级联。Unity 计算级联在相机截锥体内的位置。您使用的级联越多,您的阴影受透视锯齿的影响就越小。增加数量会增加渲染开销。但是,这个开销仍然比在整个阴影上使用高分辨率贴图时要少

简单来说,使用阴影阶梯,可以提升性能,远处的阴影会变得模糊

比如,下图没有阴影阶梯,所有的影子都是高清的

下面设置了4层阶梯,远处的影子逐渐模糊

  • Last Border : 最后一个阶段的距离

  • Depth Bias和Normal Bias属性有助于解决对象上的像素处于阴影中但实际上应该被照亮的问题(这被称为阴影痤疮) 。

  • Soft Shadows : 软阴影,此属性启用额外处理以使您的阴影看起来更平滑

注意:

  1. 如果你的模型的 mesh(一般为较复杂模型,比如人物)造成的阴影,有很多不应该出现的小洞(光斑),就应该把 Normal Bias 设置为 0

  2. 阴影来自游戏对象,游戏对象离相机越远,阴影就越不明显。这既是因为阴影在屏幕上显得更小,而且因为远处的游戏对象通常不是关注的焦点。您可以通过禁用远程游戏对象的实时阴影渲染来利用此效果。要掩饰超出阴影距离的缺失阴影,您可以使用雾等视觉效果

4. 在光照组件的阴影属性中设置

注意: 在光照组件的阴影属性中设置,只影响当前光照组件所产生的阴影

  • Shadow Type 阴影类型:

    • No Shadows : 无阴影
    • Hard Shadows 硬阴影:硬阴影产生边缘锐利的阴影。与软阴影相比,硬阴影不真实,但它们涉及的处理较少,也可以应用在很多场景下
    • Soft Shadows 软阴影:效果更好,但消耗计算量更大,可以减少阴影贴图的“块状”混叠效果。

    Baked Shadow Angle 烘焙阴影角度:

  • Light 组件 Mode设置为Baked或Mixed,Type设置为Directional,Shadow Type设置为Soft Shadows,此属性会为阴影边缘添加一些人工柔化,并使其看起来更自然。

  • Baked Shadow Radius 烘焙阴影半径:

  • 如果Mode设置为Baked或Mixed,Type设置为Point或Spot,Shadow Type设置为Soft Shadows,此属性会为阴影边缘添加一些人工柔化,并赋予它们更自然的外观。

  • Realtime Shadows 实时阴影:
    这些属性在Mode设置为Realtime或Mixed并且Shadow Type设置为Hard Shadows或Soft Shadows时可用。使用这些属性来控制实时阴影渲染设置。

    • Strength 强度:使用滑块控制此 Light 投射的阴影的暗度,由 0 到 1 之间的值表示。默认设置为 1
    • Resolution 解析度:控制阴影贴图的渲染分辨率。更高的分辨率会增加阴影的保真度,但需要更多的 GPU 时间和内存使用。
    • Bias 偏移:使用滑块控制阴影被推离灯光的距离,定义为 0 到 2 之间的值。这对于避免错误的自阴影伪影很有用。默认设置为 0.05。
    • Normal Bias 法线偏移: 使用滑块控制阴影投射表面沿表面法线收缩的距离,定义为 0 到 3 之间的值。这对于避免错误的自阴影伪影很有用。默认设置为 0.4。
    • Near Plane 近平面: 可以理解为“最小投影距离”。在渲染阴影时,使用滑块控制近裁剪平面的值,定义为 0.1 到 10 之间的值。该值被限制为 0.1 单位或灯光范围属性的 1%,以较低者为准。默认设置为 0.2。

    参考资料:

  • 阴影 官方文档
  • https://www.youtube.com/watch?v=hMnetI4-dNY

场景中配置阴影(个人笔记)相关推荐

  1. 在场景中添加光线——在Deferred Shading引擎中添加阴影能力

    问题 虽然你已经掌握了基本的计算机实时光照,但你应该注意到光源还没有投射出阴影.这是因为pixel shader是基于光线与法线的夹角计算光照的.直到现在,pixel shader还没有考虑到光线与像 ...

  2. Linux入门实践笔记(七)——云服务器中配置Java项目的JMX连接失败问题解决记录

    Linux入门实践笔记(七)--云服务器中配置Java项目的JMX连接失败问题解决记录 参考文章: (1)Linux入门实践笔记(七)--云服务器中配置Java项目的JMX连接失败问题解决记录 (2) ...

  3. 【QtDesigner 开发笔记】在PyCharm中配置、使用方法、信号与槽、菜单、Tab Widget、子窗口

    QtDesigner开发笔记 在PyCharm中配置QtDesigner和Pyuic QtDesigner使用:跑起一个最简单的项目 QtDesigner中使用信号与槽 方法1:设计器中连接信号与槽 ...

  4. vscode中写markdown格式笔记的配置过程和相关语法

    vscode中写markdown格式笔记的配置过程和相关语法 一.引言 二.安装相关插件 三.开始使用vscode进行编写 四.相关语法 参考链接: link link 一.引言 以前使用 Typor ...

  5. 多模态人物识别技术及其在爱奇艺视频场景中的应用 | 公开课笔记

    [12月公开课预告],入群直接获取报名地址 12月11日晚8点直播主题:人工智能消化道病理辅助诊断平台--从方法到落地 12月12日晚8点直播:利用容器技术打造AI公司技术中台 12月17日晚8点直播 ...

  6. LR 场景选项配置--笔记

    1 tools-options --设置关系到loadgenerator行为应用于一个场景中的所有的load generator 这些设置用于未来所有运行的场景并且通常只需要设置一次 2 expert ...

  7. 视图解析器中配置前缀和后缀---SpringMVC学习笔记(五)

    springmvc.xml中配置的视图解析器中增加jsp路径的前缀和后缀配置: <!-- 配置视图解析器 --><bean class="org.springframewo ...

  8. 六、Webpack详解学习笔记——webpack的安装、起步、配置、loader的使用、webpack中配置Vue、plugin的使用、搭建本地服务器、webpack配置的分离

    一.认识webpack 什么是webpack? 这个webpack还真不是一两句话可以说清楚的. 我们先看看官方的解释: At its core, webpack is a static module ...

  9. Qt工作笔记-QGraphics框架场景中图元的移除与析构

    1.场景里面使用removeItem函数,这个函数官方给出如下解释 注意这个词remove只是移除,并不是delete掉,所以只是场景中(显示出来的图元)没有了,空间还是存在. 举个代码例子: voi ...

最新文章

  1. 佛弟子有三样东西需要永远保密!
  2. java正则表达式及api_Java魔法堂:深入正则表达式API
  3. 图像分析:二值图像连通域标记
  4. 利用STM32制作红外测温仪之软件设计(MLX90614)
  5. Redis 持久化——混合持久化
  6. TCP/IP,HTTP,Socket的区别与联系
  7. 10067mysql_MYSQL数据库mysql Non-Transactional Database Only(只支持MyISAM)
  8. blog微服务架构代码_Spring Cloud微服务架构代码结构详细讲解
  9. ubuntu安装vncserver实现图形化访问
  10. 秒杀安全狗的经验总结
  11. EXPLAIN mysql性能调优
  12. 2008r2 php mysql_Win2008R2IIS7.5+PHP5(FastCGI)+MySQL5环境搭建教程_MySQL
  13. 一款三搭_今秋内搭无需多,有“小高领”就够了!时髦百搭,配啥上衣都好看...
  14. 接口可维可测;统一管理
  15. 重构实例-消息发送-原始代码及准备-1
  16. Pytorch+LSTM+Encoder+Decoder实现Seq2Seq模型
  17. STM32 CubeIDE 断点失效的解决方法
  18. 破解rar、zip、7z压缩包加密
  19. Google浏览器中扩展插件方法
  20. 苹果官方付费升级内存_趁双十一大促销,赶紧升级苹果一体机升级SSD固态和液态内存吧...

热门文章

  1. 2021.10月自考
  2. 【转】如何在网上查找免费电子书
  3. 翻转棋 dfs+模拟
  4. python 翻转棋(othello)
  5. 音频处理中的瞬态概念 Transient phenomena of Audio Signal Proccess
  6. elementui确认消息区分取消和关闭按钮
  7. Vant Icon 图标
  8. python标准库math中用来计算平方根的函数_python考试复习题库
  9. [转]多媒体封装格式详解---MP4
  10. C语言实现不同进制之间的转换