Unity支持多种类型的渲染路径:前向渲染路径,延迟渲染路径,顶点照明渲染路径(好像没了,我也没用过)。
在项目设置里可以设置整体的渲染路径,摄像机里也可以设置是否采用项目设置里的渲染路径。
这里列出的都是在Pass Tags LightMode 里的标签,看情况加。
先说说关于前向渲染:前向渲染里有三种光照方式:逐顶点,逐像素,球谐函数(SH)处理,。光源的渲染模式是设置该光源是否重要,根据是否重要在前向渲染种决定是使用哪一种光照方式。
前向渲染是两个Pass,一个是BasePass,就是计算平行光,环境光,自发光,光照纹理,平行光的阴影
,简单理解就是 逐像素计算平行光,其他的都是逐顶点的。
在BasePass里的平行光默认是支持阴影的计算,对于环境光和自发光,都是放在了这个pass计算,这两个是因为只要计算一次,而不是在后面的AddPass里再计算,造成OverDraw。
第二个pass是Additional Pass,我简称为addpass,这个pass就是补充了第一个pass的不足,去计算之前没有逐像素计算的一些灯光(就是那些你认为影响比较大的灯光),出现一个逐像素的灯光,这个pass就被调用一次。
配套使用的编译指令:BasePass “LightMode”=“FordwardBase”
#pragma multi_compile_fwdbase
AdditionalPass “LightMode”="FordwardAdd
Blend One One(用One One,是与上一个pass中得出的计算结果进行线性减淡的叠加(这在我之前的02笔记里提到了这种混合方式),不加就会覆盖上一个计算)
#pragma multi_compile_fwdadd
下面上个代码:
Shader “Unlit/Forward Rendering” {
Properties {
_Diffuse(“Diffuse”, Color) = (1, 1