Shader中的光照模型(七)

【本系列文章系学习 唐福幸《Unity ShaderLab 新手宝典》的笔记,包含个人理解,如有错误欢迎批评指出

一句话总结:要想实现光照下的阴影效果,需要使用标签打开一些渲染效果,并配合多重编译指令编译多个Pass,实现多重阴影(前向渲染下)

6.7.2 Pass标签

SubShader一样,Pass也有标签且只能用于Pass中,为了实现正常的光照效果,需要在Pass中使用对应标签。

  1. LightMode标签
    定义了Pass在光照渲染流水线中的渲染规则
标签值作用
Always除了主要平行光,其它灯光不会产生任何光照
ForwardBase计算主要平行光、逐顶点或者SH灯光、环境光和光照贴图、只能在前向渲染中使用
ForwardAdd为每一个逐像素灯光生成一个Pass进行光照计算
Deferred用于渲染G-Buffer,只能在延迟着色中使用
ShadowCaster将物体的深度值渲染到阴影贴图或者深度贴图中
  1. PassFlags标签
    用于更改渲染流水线传递给Pass的方式。目前仅可以使用的值为OnlyDirectional
    • 只有平行光、环境光、或灯光探针、光照贴图的数据才能传递给Shader
    • SH和逐顶点灯光不能传递数据

6.7.3 内置multi_compile

multi_compile官方文档
默认状态下,前向渲染只支持一个投射阴影的平行光,如果想要同时支持多道投射阴影的光,就要使用多重编译指令,以编译出不同的shader变体

变体相关概念

名称功能
multi_compile_fwdbase编译ForwardBase Pass中所有变体,用于处理不同类型的光照贴图,并为主要平行光开启或关闭阴影
multi_compile_fwdadd编译ForwardAdd Pass中所有变体,用于处理平行光、聚光灯和点光源,以及cookie纹理
multi_compile_fwadd_fullshadows与multi_compile_fwdadd类似,但是增加灯光投射实时阴影的效果

待补充

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值