Unity 3D之自定义SRP(可编程渲染管线)教程2

前言

前述讲过随SRP功能发布的,还有Unity官方提供的两种默认渲染管线:
LWRP HDRP
那么,两个渲染管线与之前的默认管线有什么区别与联系?
同样是渲染管线,LWRP、HDRP与之前的Build-in RP之间也不是只有名字不同而已。
首先我们知道RP(Render pipeline)是什么。

简单总结现代渲染管线

如果不知道的话,这里简单总结一下:

RP定义了我们三维场景中物理被渲染到屏幕中的一种方式。

现代渲染管线中会包括几何处理、光栅化处理。其中有几个阶段是我们可以通过GLSL、HLSL、Cg语言进行编写。
而现代渲染管线中对光线的渲染处理方式有:

  • 前向渲染(forward render)
  • 延迟渲染(delayed render)

两种渲染方式大同小异,一个是老老实实处理网格一个一个处理,一个是先处理可见的网格再进行渲染。

这里是我之间总结的,可以看看。

New or Old

对于SRP,Unity官方说,这是一种提供使用脚本语言控制的渲染管线,你能够通过脚本来编写自己需要的渲染管线。
也就是我们可以使用Unity提供的SRP接口自定义渲染管线的处理流程,达到更大的自由度。

那么,对于现代渲染管线,我们只能视为黑盒,只能通过shader在渲染管线的大框架使用
而对于可编程渲染管线,我们甚至于可以修改框架

对于New SRP:

LWRP

  • 一种单pass的前向渲染管线
  • 对性能要求较低
  • 适用于移动端

HDRP

  • 基于compute shader,性能高,效果好
  • 对GPU硬件有要求
  • 适用于主机等
  • 就是那种热热的,贵贵的

从官方给出的对比图和几个测试Demo中可以看出,LWRP渲染效果没有Build-in RP,HDRP好,但是胜在效率高;而HDRP对性能要求较高,但是能够做出电影级别的特效。

那么可以根据我们项目实际需求来决定使用的,如果项目渲染出现了瓶颈,不妨试试SRP,可能会有意外的优化效果。

但是需要指出的是,由于渲染管线的更改,之前渲染管线的部分Shader将不再被支持,比如Standard Shader。如果使用将会出现我们不希望看到的洋红色。
对于LWRP与HDRP的使用者来说经典的几个shader支持一键转换,可以不用担心。

Other

本博文将着重对Unity3D的自定义SRP进行总结,对于LWRP与HDRP,其实也比较简单,大部分其实可以通过设置的形式来使用,不用去修改代码。这里简单描述了LWRP的设置内容。

Reference

Unity官方SRP博客
SRP测试demo
SRP Wiki
OpenGL渲染管线

你可能感兴趣的:(游戏开发,Unity-进阶,Unity-Shader)