官网工程,包括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
-
用光照模拟阴影
-
使用暗色调的光照模拟为阴影