Unity shader 学习记录(复杂光照1-渲染路径 )

本章是对前置章节的进一步补充,主要是针对多光源的解析,分为以下几个方面:

(1)、渲染路径 (2)、光照衰减 (3)、阴影 (4)、标准实现的unity shader

1、渲染路径:

主要分为前向渲染、延迟渲染和顶点照明渲染(已经被抛弃)。

我们可以在Player->Graphics->Rendering path来选择项目所需的渲染路径。也可以在camera中选择是用setting做的设置或是选择别的渲染路径。

做完选择后,unity会自动查找shader中tags lightmode中对应的渲染方式所在的pass进行渲染。所有可供选择的lightmode如下:

1.1 前向渲染

前向渲染共分为:逐顶点处理,逐像素处理,球谐函数(SH)处理。

一般base pass会逐像素处理亮度最亮的一个平行光以及逐顶点处理其他光照。add pass最多会处理四个逐像素光照或若干逐顶点、sh光照。当光源设置为important,会被逐像素处理,但是也要根据quality srtting设置的最大逐像素光源数量,不够补齐,多了去除。

add pass 要设置混合 阴影还要设置对应的编译指令。

前向渲染中内置的字段和函数如下: 

1.2顶点照明渲染

顶点照明渲染运算性能最高,效果最差。他不支持逐像素才能得到的结果:阴影、法线映射、高精度的高光反射等。实际上,他只是使用了逐顶点的处理方式,他的所有效果都可以在前向渲染中实现。

 在unity中,我们可以在一个顶点照明的pass中最多访问到8个逐顶点光源。

内置变量和函数如下:

1.3 延迟渲染

延迟渲染主要是启用了G缓冲,它会存储离摄像机最近的表面。例如:法线、位置、用于光照计算的材质等。

 延迟渲染也需要用到两个pass,第一个pass不进行光照计算,仅仅计算哪些片元是可见的,我们就把它存储到G缓冲里。第二个pass使用G缓冲的数据来进行光照计算。

过程如下:

对于延迟渲染,他主要适合场景光源数目很多,使用前向渲染会造成性能瓶颈的时候。在延迟渲染中,其实每个光源都是按照逐像素进行处理的。

但是他也有一些缺点:(1)不支持真正的抗锯齿功能(2)不能处理半透明物体(3)对显卡有要求。

G缓冲包含以下几个渲染纹理: 

 

 可用变量和函数如下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值