
RTHandle
基于属性ID的RT标识
在过去的URP版本中RT的标识很多 都可以标识一个RT 如:int/string/RenderTargetHandle/RenderTexture/RenderTargetIdentifier
将一个属性名称转换为属性ID: id = Shader.PropertyToID(shaderProperty); 属性ID的值动态生成但运行时不会变 作为字符串版本的快捷访问方式
RenderTargetHandle 则可以认为是另外一种形式的属性ID
RenderTexture 则保留了RT的引用 可以从GPU回传数据 但是没有属性ID
RenderTargetIdentifier 用于CommandBuffer 可以兼容全部标识类型
RT 作为全局变量赋值
Shader.SetGlobalTexture("name", _Texture);
cmd.SetGlobalTexture("name", _Identifier);
cmd.GetTemporaryRT(nameID, _Descriptor);
RTHandle
RTHandle 除了作为RT标识还携带RT描述 如 RenderTexture 和 RenderTextureDescriptor
RTHandle 的底层用 RenderTexture 实现相比过去的临时RT分配机制 (GetTemporaryRT) 更持久
CameraTarget
RTHandle k_CameraTarget = RTHandles.Alloc(BuiltinRenderTextureType.CameraTarget);
BuiltinRenderTextureType.CameraTarget 表示当前相机渲染的目标 backBuffer 或者自定义 RT
直接对 CameraTarget 渲染可节省很多带宽 但是无法使用后处理方式获得效果多样性
RenderTargetBufferSystem
声明 2个 Buffer 名字分别添加后缀 A 和 B 用于交换
m_ColorBufferSystem = new RenderTargetBufferSystem("_CameraColorAttachment");
https://github.com/Acgmart/Sekia_TechDemo/tree/main/Docs/URP%E7%AE%A1%E7%BA%BF%E6%B5%81%E7%A8%8B
最后编辑:admin 更新时间:2023-03-13 13:28