Valve: The Lab Renderer for Unity

来源

https://www.assetstore.unity3d.com/en/#!/content/63141 https://steamcommunity.com/games/250820/announcements/detail/604985915045842668

前几天Valve放出来他们在The Lab中基于Unity做的一些渲染优化相关的东西, 对于VR开发者来说还是非常有参考价值的.

分析

Single-Pass Forward Rendering and MSAA

正好前不久Oculus也开源了他们在UE4基础上实现的Forward+渲染器, 大体上能看出一个趋势, 那就是延迟渲染方式不是非常适合VR下的渲染. 我觉得可以从这几个角度去分析:

  • 延迟渲染对于带宽的消耗非常大, 与VR渲染的高分辨率和高刷新率相矛盾
  • 延迟渲染只能使用后期反锯齿技术, 而现阶段VR分辨率不足更加重了对反锯齿的需求, 前向渲染器可以使用硬件的MSAA, 相对于后期反锯齿可以保留更多的细节
  • VR中很多后期效果不再需要, 引擎默认的渲染器中可以屏蔽掉这些效果, 结省资源从而提高效率

The Lab的渲染器支持18个动态光, 并且可以投影.

Adpative Quality

其实就是Dynamic Resolution Rendering, 对于PC平台还是有意义的, 因为需要兼容很多性能不一样的显卡. 在VR中帧率的重要性是大于分辨率的, 宁愿降画质也不能降帧数.

不过SteamVR一直不肯加AsyncTimeWarp, 可能就是因为这个原因, 觉得可以用这个技术来保证流畅. 但是并不是所有的性能问题或者顿卡都是GPU瓶颈, 有时候也是CPU瓶颈, 所以我觉得AsyncTimeWarp的Reprojection技术还是非常有用的, 我们自己开发的一个CPU-Bound VRDemo在Oculus上明显比在Vive上体验要好.

Custom Shaders

说是渲染器, 但并没有包含Native代码, 只是一些Shader, 而且不能与Unity的Shader材质混用.

  • Renering Mode增加了Additive, 做特效的同学用得比较多
  • Specular Mode可以选择None, 对没有高光的表面有性能提升
  • Cube Map Scalar, 可以单独为每个物体调节环境贴图的强度
  • Override Lightmap, 配合Component可以替换Lightmap

GPU Flushing

这个本来不是应该Unity做的工作吗? 不知道有多大的性能提升

使用方法

  • 在Player Settings中打开Forward Rendering
  • 把Color Space改成Linear(Unity就是一直赖在Gamma空间)
  • 把ValveCamera.cs加到主相机上
  • 把ValveRealtimeLight.cs加到所有实时的灯光上
  • 设置Shadow Cascades的分级成No Cascades
  • 设置Pixel Light Count成99

其实一些设置在导入时就会自动提示的, 如图:

其它

camera里的Shadow Texture比较有意思, 把多个灯的阴影打包到了一起

Unity默认的雾效不再兼容, 需要使用ValveFog.cs, 支持距离雾和高度雾:

总结

总的来说, 这不是一个完整的渲染器实现, 更像是一套自定义光照系统, 在前向渲染的基础上支持了足够多的实时灯光, 比较适用于PC平台的真实感材质.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

推荐30款最佳的数据可视化工具

各个互联网公司通过大量的用户数据、信息进行统计分析,而这些大量繁杂的数据在经过可视化工具处理后,就能以图形化的形式展现在用户面前,清晰直观。随着各种数据...

7015
来自专栏钱塘大数据

从入门到精通,全球20个最佳大数据可视化工具

数据可视化之初级篇 零编程工具 1. Tableau ? Tableau 是一款企业级的大数据可视化工具。Tableau 可以让你轻松创建图形,表格和地图。...

3714
来自专栏Pytorch实践

【Python】Selenium辅助海量基金数据获取

今天主要给大家介绍一下Selenium测试工具,它是一款浏览器测试专用的工具,能够模拟用户对浏览器进行鼠标点击、页面滑动等功能。一方面能够用于网页...

3874
来自专栏FreeBuf

一枚邪恶的输入法浅析

“输入法”或许是计算机软件领域最伟大的发明之一了,也是我们日常的计算机使用中最常用到的软件,一款好的输入法能让我们事半功倍。随着计算机的软硬件不断发展,输入法的...

2006
来自专栏IMWeb前端团队

使用React全家桶高仿「Eyepetizer」开眼

简介 Eyepetizer是个人比较喜欢的美而小的短视频日报应用 原站使用jquery实现, 正好api没有限制, 于是用react高仿了一下. 应用不复杂但是...

2917
来自专栏数据小魔方

Xcelsius(水晶易表)系列——入门篇!

今天是新专题的第一篇——Xcelsius(水晶易表)入门篇! 今天跟大家简单介绍下Xcelsius(水晶易表)这款动态交互式可视化产品。 它是SAP公司首屈一指...

4059
来自专栏做全栈攻城狮

安卓一步步从基础到精通自学教程,纯实战,纯干货(五)

关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活。提供程序员技术及生活指导干货。

1202
来自专栏腾讯社交用户体验设计

那些年苹果做错的设计

1173
来自专栏hightopo

原 基于HTML5的燃气3D培训仿真系统

1343
来自专栏无原型不设计

给你灵感的23个优秀线框原型图示例

如何在产品初始阶段以最快的方式展示设计思路?我想大多数的UX/UI设计人员都会倾向于快速构建一个线框原型图。这的确是一个非常明智的选择。那么问题来了,设计师如何...

6596

扫码关注云+社区