Unity Shader入门精要 | 渲染路径、光源类型和阴影

本文详细介绍了Unity中的渲染路径,包括前向渲染、顶点照明渲染和延迟渲染,及其各自特点和适用场景。同时,文章还探讨了不同类型的光源(平行光、点光源、聚光灯)以及光照衰减的处理方法。此外,还简单提及了阴影的实现,特别是阴影贴图的原理。
摘要由CSDN通过智能技术生成

渲染路径

在Unity中,需要为每个Pass用LightMode标签指定它使用的渲染路径(Rendering path)

在这里插入图片描述


前向渲染 (Forward Rendering)

前向渲染的原理是:有两个缓冲区,利用深度缓冲区来决定一个片元是否可见,如果可见就更新颜色缓冲区中的颜色值,用伪代码表示如下:

Pass {
   
	for (each primitives in this model) {
   
		for (each fragment covered by this primitive) {
   
			if (failed in depth test) {
   
				discard;
			} else {
   
				// 通过深度测试则更新颜色缓冲区
				float4 color = Shading(materialInfo, pos, normal, lightDir, viewDir);
				writeFrameBuffer(fragment, color);
			}
		}
	}
}

对于每个逐像素光源,如果场景中有N个物体,每个物体受M个光源影响,渲染整个场景需要N*M个Pass,计算量很大。

在Unity中,前向渲染有3种处理光照(照亮物体)的方式:逐顶点、逐像素、球谐函数(Spherical Harmonics, SH)。处理模式取决于光源类型和渲染模式,渲染模式指的是重要程度important/not important。

当渲染一个物体时,Unity会给光源作重要性排序,最多有4个光源逐顶点处理,剩下的光源按SH处理。判断规则如下:

  • 最亮的平行光按逐像素处理
  • Not important渲染模式会按逐顶点或者SH处理
  • Important 渲染模式按逐像素处理
  • 根据以上规则得到的逐像素光源小于Quality Setting中的逐像素光源数量(Pixel Light Count),会有更多光源按逐像素处理

前向渲染有两种Pass:

在这里插入图片描述
前向渲染可以使用的内置光照变量:

在这里插入图片描述
可以使用的光照函数:

在这里插入图片描述


顶点照明渲染 (Vertex Lit Rendering)

顶点照明渲染配置要求低、运算性能最高,但同时得到的效果比较差,它不支持逐像素的效果,如阴影、法线映射、高精度高光反射。它是前向渲染的一个子集。

Unity中的顶点照明渲染通常在一个Pass中就可以完成。在这个Pass中,会计算所有光源对该物体的照明(逐顶点)。它在Unity5以上的版本中&#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值