Unity URP简单笔记by me

发布时间 2023-06-06 17:44:21作者: YZR努力中

URP的特点

  1. 相对于内置管线,具有更好的性能和更高的画质
  2. 更好的跨平台性,能在VR、移动端、PC端、主机端保持接近的性能与效果
  3. 和HDRP一样,是基于SRP的可定制渲染管线,在多个方面具有更好的自定义性
  4. 可以使用连连看ShaderGraph

 

需要掌握URP的新知识

  1. 如何将内置管线转换为URP(导入包,导入URPAsset,在设置中修改管线),如何转换普通材质为URP材质(自动转换+手动修改为URP shader)
  2. 全新的PostPoressing系统(Volume的使用,profile添加,add override)
  3. 全新的材质shader系统(包括ShaderGraph

 

转换时有时会提醒Project has invalid dependencies: com.unity.render-pipelines.Universal.xxx这种,可能是工程用了老板的URP。在package manager里remove就行了

 

URP的全局光照与AO(环境光遮蔽)

实时全局光照计算量大,只在部分时使用,比如动态物体

对于静态物体,使用烘焙产生的光照贴图(烘焙全局光照)

一个light要决定它的光照是实时的,还是烘焙的,抑或是混合的(实时+烘焙)

(发光材质的emission下面也要选择)

烘焙的光照只有在烘焙之后才能出现,此时移去灯光,光照依然存在

实时光照则与light实时相关,随着light改变而改变

混合模式则是两种都有,比较常用。

实时全局光照和烘焙全局光照下,都不支持动态物体的间接光照

因此,对于动态物体的间接光照,一般使用光照探灯

在URP 3d模板工程中,默认开启了环境光遮蔽:

对于自己烘焙光照贴图时,可以选择烘焙AO到光照贴图中,此时可以将这个自带AO关闭:

后面烘焙光照贴图的时候再勾选其中的AO就好了

实际上,后者更加节省性能

URP 室内渲染

导入模型——在import设置启用生成lightmap UV

点击mesh可以在project里弹出对应的资源

找到箭头前面那个点一下就有importer设置了

有时需要修改材质时,记得选择

use external materails(legacy)

 

导入Unity包——内置材质需要修改为URP材质(2021版本以后的方法)

  • 单个材质直接选中后在edit-rendering-material里convert就行
  • 整个工程的话,选择window-rendering-render pipeline convertor

调整需要计算的为static静态,不需要的不设为静态

静态分为很多种,最关键的是圈中两个

记得设置色彩空间为linear,这样渲染的效果更自然

灯光的设置,Directional light记得勾选灯光模式mixed和软阴影

Light setting的一些设置:

首先,设置之前,一定记得:

可以避免非常多的麻烦。。。。(新建物体时也可以用)

新建一个lighting setting,改为gpu渲染,开始我们的表演

Lightmap resolution代表光照贴图分辨率,越高质量越好,但是性能压力更大。这些参数同理:(可能会影响贴图的噪点,让贴图看起来麻麻杂杂的)

是否压缩关照贴图与是否开启AO

还有最好有好的HDRI提供更好的天空光效果

还可以设置雾

影响间接光照亮度的一些参数

灯光:

Lighting setting中

Scene:

Evironment:

摄像机设置:

在scene中移动视角,确定好了之后,回到game视图,按ctrl+shift+F 就可以把game摄像头固定和scene一样的视角了

注意启用后处理和对应的URP渲染器

反射探针与光照探针:

使用reflection probe,包含整个空间。

使用light Probe Group

点击Edit编辑场景中的小球,通过选中之后ctrl+d复制,让小球涵盖整个场景内部

注意:不能让小球探针进入物体内部,会让光照计算为黑色,产生错误

光线变化剧烈的地方,小球最好密集,变化缓慢的地方,小球可以稀疏以节省性能

点击烘焙时,会将Probe存储光照信息烘焙到光照贴图lightmap中

动态物体就可以接受这些Probe存储的信息了(但是注意要设置为接受探针信息,如下图)

下面两图是开启探针前后,动态物体小球在场景中的光照效果

使用探针前:

使用探针后:(光照颜色更加符合整体了)

注意,除了小球,其他物体的光照都没有变化,因为光照探针组存储的光照信息只影响动态物体。