RThandle
前言
SRP的接口一直在更改,是时候仔细看看RTHandle系统了。
看RTHandle之前,先看看RenderTexture。
基本的理解就是RT数据是保存在GPU上的,RT仅仅是CPU这里对其管理的一个工具。
而Texture的数据才是能直接在CPU读取的,使用时会加载到显存中。
而RTHandle又是干啥的?
RTHandle system
通篇看下来,最主要的目的就是为了处理不同RT的分辨率问题。
假使有多个相机要渲染不同的分辨率,那就要为各个RT分配不同分辨率的RT。而临时RT仅能在分辨率和属性完全相同的情况下复用,所以总体的内存使用量是全部各种分辨率的内存总和。
所以RTHandle system 应运而生,这使得在不同分辨率的相机之间复用RT变得简单。
不再固定分辨率分配纹理,而是用给定的全屏分辨率相关的比例来分配
具体使用
具体的用法上,不再像之前每帧去取一个TMPRT,而是用RTHandles.Alloc来让RTHandle system分配一个。
为了解决分辨率动态修改的问题,SRP还提供了一些工具函数,比如RenderingUtils.ReAllocateIfNeeded
这里根据是否已经分配和是否分辨率等参数需要修改,来重新分配一个RTHandle。这个一般在OnCameraSetup中调用。
如果要设置渲染目标,就调用CoreUtils.SetRenderTarget
。
设置全局或局部纹理,就普通的cmd.SetGlobalTexture
就好。
最后不要忘记Release()
释放
RThandle
https://www.kuanmi.top/2023/07/19/RThandle/