Unity URP的2D光照简介
Unity URP的2D光照简介
本文将详细介绍Unity URP(Universal Render Pipeline)的2D光照系统。内容包括URP环境搭建、光照组件Light2D的使用、接收光照的Sprite设置、阴影投射ShadowCaster2D的配置以及代码调试方法等。
官网工程,包括2d光照,动画,动效介绍:
https://unity.com/cn/blog/games/happy-harvest-demo-latest-2d-techniques
https://docs.unity3d.com/6000.0/Documentation/Manual/urp/Lights-2D-intro.html
人物脸部光照细节和脚上的阴影投射
URP环境搭建
PackageManage导入UniversalRP包
创建管线配置
调整排序坐标规则,Renderer2DData,根据Sprite的锚点y轴值排序。
光照组件 Light2D
四种光源类型:全局光,点光源,Sprite贴图,Freeform自定义形状
只能有一个全局光照,没有方向,类似对所有接受光照的2d材质做一层颜色混合。
除了全局光,其他光源可以配置阴影强度、体积光、对法线贴图混合配置等
TargetSortingLayers:用来指定光照到哪些layer。
Blending:配置颜色混合的规则。
接收光照的Sprite
需要对Sprite添加一个法线贴图,光照会根据法线计算。
材质替换成接受光照(Lit字样)的
Sprite-Lit-Default.mat
阴影投射 ShadowCaster2D
TargetSortingLayers:接受阴影投射的层级,这里只选
Bg
,如果也选
Defualt
,阴影会投射到本身也是同样层级身上。点击EditShape可以编辑形状
代码调试
问题:因为URP代码在Library目录,没法断点调试,且unity会自动检查代码完整性,如果修改了代码,会被自动更新会原来库里的。
解决方法:将库先拷出来,remove掉原来的库,导入拷出来的库即可。
阴影绘制相关代码
C#:
ShadowRendering.RenderProjectedShadows()Shader:
绘制阴影:
Shadow2D-Projected.shader光照和阴影混合:
LightingUtility.hlsl
的
APPLY_SHADOWS
用光照模拟阴影
- 使用暗色调的光照模拟为阴影