前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Valve: The Lab Renderer for Unity

Valve: The Lab Renderer for Unity

作者头像
逍遥剑客
发布2018-05-09 16:40:23
1.5K0
发布2018-05-09 16:40:23
举报

来源

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平台的真实感材质.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年06月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 来源
  • 分析
    • Single-Pass Forward Rendering and MSAA
      • Adpative Quality
        • Custom Shaders
          • GPU Flushing
          • 使用方法
          • 其它
          • 总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档