- 用户指南
- 资源商店 (Asset Store)
- 资源服务器 (Asset Server)(仅限团队许可证)
- 缓存服务器(仅限团队许可证)
- 幕后场景
- 创建游戏
- 运行时实例化预设 (Prefabs)
- 变换 (Transforms)
- 物理
- 添加随机的游戏元素
- 粒子系统(Particle Systems)
- Mecanim 动画系统
- 旧动画系统
- 导航网格 (Navmesh) 和寻路 (Pathfinding)(仅限专业版 (Pro))
- Sound (音频侦听器)
- 游戏界面元素
- 多玩家联网游戏
- iOS 开发入门
- Android 开发入门
- Blackberry 10 开发入门
- Metro:入门指南
- 本地客户端开发入门
- FAQ
- Advanced
- Vector Cookbook
- 资源包(仅限专业版)
- Graphics Features
- 资源数据库 (AssetDatabase)
- 构建播放器管道
- 分析器(仅限专业版)
- 光照贴图快速入门
- 遮挡剔除(仅限专业版)
- 相机使用技巧
- 运行时加载资源
- 通过脚本修改源资源
- 用程序生成网格几何体
- 富文本
- 在 Unity 工程 (Project) 中使用 Mono DLL
- 事件函数的执行顺序
- 移动优化实用指南
- Unity XCode 工程结构
- 优化图形性能
- 减少文件大小
- 理解自动内存管理
- 平台依赖编译
- 泛型函数
- 调试
- 插件(专业版/移动版特有功能)
- 文本场景文件格式(仅限专业版)
- 流媒体资源
- 启动时运行编辑器脚本代码
- 网络模拟
- VisualStudio C 集成
- 分析
- 检查更新
- 安装多版本 Unity
- 故障排除
- Unity 中的阴影
- Unity 中的 IME
- 对集成显卡进行优化
- 网络播放器 (Web Player) 部署
- 使用网络播放器中的信任链系统
方向性阴影详情
本页将详细说明方向 (Directional) 灯的阴影。
注意:在移动平台上,方向灯的实时阴影始终使用 1 个阴影级联,并为硬阴影 (Hard Shadows)。
方向灯大多用于室外游戏的关键性灯光 – 日光或月光 – 中。可见距离非常大,特别是在第一人称和第三人称游戏中,往往需要对阴影进行一些调整,以获得最佳质量和性能平衡效果,适应当时的情况。
首先从第三人称角度游戏效果优良的阴影设置开始:
图中的阴影看起来非常漂亮!
在该图中,可见距离大约为 50 游戏单位,所以在质量设置 (Quality Settings) 中将阴影距离 (Shadow Distance) 设为 50。同样,阴影级联 (Shadow Cascades) 设为 4,阴影分辨率 (Shadow Resolution) 设为高,灯光使用软阴影 (Soft Shadows)。
下列章节仔细分析了方向灯阴影的每个方面:
硬阴影与软阴影
采用相同灯光设置,如果将阴影类型 (Shadow Type) 切换成硬阴影 (Hard Shadows),那么从照明区域到阴影区域的过度为“硬”,对象完全在阴影下或完全在照明区。硬阴影渲染较快,但通常看起来不太真实。
距离为 50,带 4 个级联的硬阴影。
阴影级联 (Shadow Cascade) 数
对于方向灯,Unity 可使用级联阴影贴图 (Cascaded Shadow Maps)(或者叫做“平行分割阴影贴图 (Parallel Split Shadow Maps)”)提供 很好的阴影效果,特别是可视距离较长的情况。级联阴影将可视区域分割成几个逐步变大的部分,每个部分使用相同大小的阴影贴图,使接近观看者的对象的阴影贴图像素比远距离对象的较高。
在下图中,我们将使用硬阴影,因为阴影像素在该图中的可见度更高。
如果未使用级联阴影贴图,整个阴影距离(依然是 50 单位)必须被阴影纹理均匀覆盖。没有级联,硬阴影看起来就像这样:
距离为 50 的硬阴影,无级联。
每个地方的阴影纹理像素大小都相同。在远处看起来还不错,但不是越近质量就越高。阴影纹理覆盖整个可视区域。如果将其可视化,看起来就像这样:
无级联,阴影纹理均匀覆盖整个可视区域。
使用两个阴影级联时,整个阴影距离分成靠近观看者的一小块和远距离的一大块。带两个级联的硬阴影看起来就像这样:
'距离为 50,带 2 个级联的硬阴影。
牺牲一点点性能,我们可获得近处更好的阴影分辨率。
带 2 个级联,两个阴影纹理覆盖可视区域中大小不同的部分。
最后,使用 4 个级联时,阴影距离被分成四个逐渐变大的部分。带 4 个级联的硬阴影看起来就像这样:
距离为 50,带 4 个级联的硬阴影。快看,可以看到了!
带 4 个级联,4 个阴影纹理覆盖可视区域中大小不同的部分。
阴影距离很重要!
阴影距离 (Shadow Distance) 对于方向灯阴影的质量和性能都极其重要。同阴影级联数一样,阴影距离也可在质量设置 (Quality Settings) 中设定,轻松按比例降低性能较低硬件中的阴影。
在阴影距离末端,阴影淡出,更远的对象无阴影。在大多数情况下,游戏中超过特定距离的阴影不会被注意到!
没有阴影级联,阴影距离设为 20 的硬阴影效果见下图。请注意,远处的阴影会淡出。同时,阴影质量比没有级联且距离为 50 单位的质量要高。
距离为 20,无级联的硬阴影。
如果将阴影距离设得太高,效果看起来会很差。在该图中,将距离设为 100 只会降低质量和性能,没有太大意义,场景中没有哪个对象超过 50 米远!
距离为 100,无级联的硬阴影。哎!
带级联大小和距离的阴影贴图要好得多。比如,相机前覆盖 300 单位的 4 级联软阴影见下图。在一定程度上说比本页顶端的图片效果差,但阴影距离增大 6 倍后也不错(当然,在该场景中阴影距离大没有什么意义)。
距离为 300,带 4 个级联的软阴影。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论