Unity_Shader学习笔记_03_前向渲染和阴影总结(附代码和详细解释)

本文详细介绍了Unity中的前向渲染路径,包括逐顶点、逐像素和球谐函数处理,并讨论了BasePass和Additional Pass的使用。同时,解释了阴影计算,包括ShadowMap的工作原理和ShadowCaster Pass的设置。此外,还提供了相关Shader代码示例,帮助理解前向渲染的实现细节。
摘要由CSDN通过智能技术生成

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值