- 用户指南
- 资源商店 (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) 部署
- 使用网络播放器中的信任链系统
阴影大小计算
Unity 计算阴影贴图大小的方法如下:
首先计算屏幕上灯光的“覆盖范围”。以下是灯光在屏幕上照亮的矩形范围:
- 方向 (Directional) 灯照亮整个屏幕。
- 聚光 (Spot) 灯照亮灯光投射到屏幕的圆锥型包围矩形。
- 点 (Point) 光源照亮灯光投射到屏幕的球形包围矩形。
然后选择该范围的宽和高的较大值,调用像素大小
。
处于“高 (High)” 阴影分辨率时,阴影贴图的大小为:
- 方向 (Directional) 灯:
NextPowerOfTwo( pixel size * 1.9 )
,但不超过2048
。 - 聚光 (Spot) 灯:
NextPowerOfTwo( pixel size )
,但不超过1024
。 - 点 (Point) 光源:
NextPowerOfTwo( pixel size * 0.5 )
,但不超过512
。
当图形卡有 512MB 或更高显存,阴影贴图的上限增加(方向 (Directional) 灯为 4096,聚光 (Spot) 灯为 2048,点 (Point) 光源为 1024)。
处于“中 (Medium)” 阴影分辨率时,阴影贴图的大小比“高 (High)” 阴影分辨率的贴图小两倍,“低 (Low)” 阴影分辨率时比“高 (High)” 阴影分辨率的贴图小四倍。
表面看来点 (Point) 光源的低限值是因为使用了立方体阴影贴图。这就意味着处于该分辨率的六面立方体贴图必须在显存内。渲染时也非常耗费性能,因为潜在阴影投射器必须渲染到最多六面立方体贴图上。
接近显存限值运行时的阴影大小计算
接近显存限值运行时,Unity 会自动降低以上计算的阴影贴图分辨率。
一般来说,屏幕内存(后台缓冲、前台缓冲、深度缓冲)和渲染纹理内存位于显存中。Unity 使用这两项来确定阴影贴图允许的内存使用量。根据以上计算的大小分配阴影贴图,其大小将减少,直至适合总显存 (TotalVideoMemory) – 屏幕内存 (ScreenMemory) – 渲染纹理内存 (RenderTextureMemory) / 3
。
假设所有常规纹理、顶点数据和其他图形对象可从显存中换出,阴影贴图可使用最大 VRAM 总显存 (TotalVideoMemory) – 屏幕内存 (ScreenMemory) – 渲染纹理内存 (RenderTextureMemory) / 3
。但屏幕和渲染纹理占用的确切内存量无法确定,某些对象无法换出。如果所有纹理总是换进换出,性能会变得很差。因而 Unity 不允许单个阴影贴图超过“一般可用”显存的三分之一,这规则实践起来效果很好。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论