Unity URP 渲染管线实战:URP渲染管线Shader机制剖析

前言

 

对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!

如图1.4-1所示:

 

URP 渲染管线实现了内置的PBR, Unlit , 地形等游戏开发中常用的Shader。

1: URP Ulit Shader

如图1.4-2所示:

Unlit Shader还是采用的Unity经典的ShaderLab语法,还是熟悉的配方熟悉的味道。主要结构依然是Shader{ SubShader { pass{} pass{} }, SubShader {}, FallBack }与标准的Unity Shader开发不同的是 URP Shader内嵌HLSL的代码,标准的是Cg的代码,其它的差不多。 

对于Unlit Shader有两个SubShader,通过”ShaderModel”的版本来进行区分 (我这边的版本是4.5与2.0)。每个SubShader有3个Pass, Unlit Pass, Depth Only Pass, Meta Pass 

2: URP PBR Shader 如何处理光照

分析完URP的Unlit Shader后,接下来分析PBR Shader, PBR Shader基于物理的光照,支持金属度与粗超度美术工作流,反射与光泽度工作流,这些参数和标准PBR Shader一样,来看下URP的PBR Shader。如图1.4-4:

相比标准的PBR Shader而言,他整理的更清晰和规范,参数的意义都和标准的PBR一样。和标准PBR Shader不同的是,它把两种美术工作流放一起了。Workflow Mode来设置。接下来看下PBR Shader的结构,打开Lit.shader, 仍然也是ShaderLab语法内嵌HLSL的Shader编程语言,结构如下,如图1.4-5所示: 

与Unlit一样Lit也是根据ShaderModel版本来选择SubShader。Lit 每一个SubShader里面有7个pass, 作用如下: 

URP 渲染管线内部实现了(向前+延时)渲染管线,每次绘制的时候,来走不同的Pass,从这里看出来,和标准渲染管线不同,所有的光照都在一个pass里面计算完成了。接下来看下PBR Shader中的光照计算的代码,打开LitForwardPass.hlsl, 主要PBR逻辑如下:

Step1: 初始化双向分布函数BRDF:

Step2: 计算主光源MainLight 光照;

Step3: 计算处理GI;

Step4: 计算处理附加光源光照;

Step5: 处理自发光;

具体代码大家可以到源码中阅读,本期的URP的干货内容暂时告一段落,更多的URP实战与底层原理,我们会在VIP的视频教程中有消息讲解。关注我们,持续给大家分享一些架构师进阶,渲染管线进阶的干货内容。

Unity / Shader进阶 Unity轻量级渲染管线LWRP核心解密https://www.bycwedu.com/promotion_channels/2021819624icon-default.png?t=M85Bhttps://www.bycwedu.com/promotion_channels/2021819624

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>