问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Unity URP的2D光照简介

创作时间:
作者:
@小白创作中心

Unity URP的2D光照简介

引用
CSDN
1.
https://m.blog.csdn.net/l773575310/article/details/145592993

本文将详细介绍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环境搭建

  1. PackageManage导入UniversalRP包

  2. 创建管线配置

  3. 调整排序坐标规则,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

用光照模拟阴影

  • 使用暗色调的光照模拟为阴影
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号