将后处理参数添加到 Volume 中,如果后处理不需要通过Volume 动态控制,可以不用,

参考代码以及注释:

其中MaterialParameter 是Volume 没有自带的材质类型,需要手动封装不存在的参数类型

using System;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;public class MyVolume : VolumeComponent, IPostProcessComponent
{//需要封装参数public MaterialParameter Material = new MaterialParameter(null, false);//需要封装参数public ColorParameter BlendColor = new ColorParameter(Color.white);public bool IsActive(){if (Material.overrideState == false)//如果材质没有被勾选,则不激活{return false;}return true;}public bool IsTileCompatible(){return true;}
}[Serializable]
public sealed class MaterialParameter : VolumeParameter<Material>
{//没有自带的Material 封装,手动封装参数public MaterialParameter(Material value, bool overrideState = false): base(value, overrideState){}
}

MaterialParameter 修改,不需要从Render Feature 面板获取参数,改为从VolumeManager 获取

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;public class MyVolumeFeature : ScriptableRendererFeature
{public Material Material; //UniversalRenderPipelineAsset_Renderer 面板,设置材质public Color BlendColor;private MyVolumeFeaturePass myPass;public override void Create(){myPass = new MyVolumeFeaturePass();}public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData){renderer.EnqueuePass(myPass);myPass.SetValue(renderer.cameraColorTarget, Material,BlendColor); //传递给Pass 处理}
}public class MyVolumeFeaturePass : ScriptableRenderPass
{private Material Material;private RenderTargetIdentifier source;private Color color;//接受面板颜色public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData){MyVolume Volume = VolumeManager.instance.stack.GetComponent<MyVolume>();if (!Volume.IsActive())//没激活Volume 则不后处理{return;}//执行后处理//设置要混合的材质参数,从Volume 获取Material = Volume.Material.value;Material.SetColor("_Color",Volume.BlendColor.value);CommandBuffer cmd = CommandBufferPool.Get();//source  //源图像var dec = renderingData.cameraData.cameraTargetDescriptor; //目标图像RenderTargetHandle tempTargetHandle=new RenderTargetHandle();cmd.GetTemporaryRT(tempTargetHandle.id, dec);cmd.Blit(source, tempTargetHandle.Identifier(), Material);//核心命令CommandBuffercmd.Blit(tempTargetHandle.Identifier(), source); //相当于 Graphics.Blitcontext.ExecuteCommandBuffer(cmd);CommandBufferPool.Release(cmd);}public void SetValue(RenderTargetIdentifier source, Material material, Color blendColor){Material = material; //接受面板材质this.source = source;color = blendColor;}
}

最终效果:与自带的Volume 叠加

UI 没有被MyVolume 后处理,因为没有设置后处理时机

myPass.renderPassEvent = RenderPassEvent.AfterRenderingTransparents;

URP后处理(三)——Volume 控制后处理参数相关推荐

  1. Unity - 通用渲染管线(URP)1.渲染、后处理

    这是一篇详细讲解URP的文章,涉及具体的使用和原理,翻译自Unity官方的文档. 本文由 祝你万事顺利 出品,转载请注明出处. 简介 URP是一种预置的可编程渲染管线.可以实现快速的渲染而不需要sha ...

  2. Mastercam 三轴编程 后处理 宏 侧铣头加工模板制作视频教程

    Mastercam 三轴编程 后处理 宏 侧铣头加工模板制作视频教程 链接:https://pan.baidu.com/s/1t1hwR6TnGs8snw1E4x2r-Q 提取码:tsof

  3. S7-200SMART 的运动控制(三)SINAMICS控制库+参数库的使用方法

    S7-200SMART 的运动控制(三)SINAMICS控制库+参数库的使用方法 SINAMIC库概述: 自V2.4版本的CPU固件开始,增加了PROFINET通信的功能,CPU可作为IO控制器. 通 ...

  4. 后处理编辑修改_NX后处理打开报错处理方法

    作者:俞文清 由于NX后处理需满足各种不同类型的机床及不同的加工方式需求,所以工程师往往需要经常修改.但随着时间推移,人员更迭,修改的人员不了解当初编写时的环境,打开后处理时会出现报错.下面介绍几种打 ...

  5. oracle体系三大文件,oracle 体系_第三章控制文件

    第三章 控制文件 1.功能特点 记录数据库当前的物理状态 维护数据库的一致性,是一个二进制的小文件 在mount阶段被读取,记录rman备份的元数据 查看database控制文件的位置 Show pa ...

  6. 案例分享:Qt激光加工焊接设备信息化软件研发(西门子PLC,mysql数据库,用户权限控制,界面设计,参数定制,播放器,二维图,期限控制,参数调试等)

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127669684 长期持续项目技术分享,有专业Qt需求请 ...

  7. hypermill后处理构造器安装_ug10后处理安装步骤ug后处理在什么位置ug法兰克后处理下载ug后处理器如何设置ug后处理构造器...

    UG安装后处理概述 使用UG加工编程的朋友,经常会遇到定制后处理问题,由于定制NC后处理繁琐,所以经常会把先前定制好的后处理添加或者替换来使用,那么如何正确的操作呢? 下面以UG10.0为例来说明,其 ...

  8. 开关电源三种控制模式:PWM/PFM/PSM

    1. PWM/PFM/PSM 三种控制模式的定义 通常来说﹐开关电源(DC-DC)有三种最常见的调制方式分别为: 脉冲宽度调制(PWM) 脉冲频率调制(PFM) 脉冲跨周期调制(PSM) 在功率集成电 ...

  9. 三轴联动c语言算法,(数控加工)虚拟轴数控机床的仿三轴控制.pdf

    (数控加工)虚拟轴数控机 床的仿三轴控制 虚拟轴数控机床的仿三轴控制 前言 虚拟轴数控机床的出现被认为是本世纪最具革命性的机床设计突破. 如果充分发挥这种新型机床在结构上的优势,就有可能为大幅度地提 ...

最新文章

  1. python tkinter 布局_python tkinter学习——布局
  2. python 深拷贝_python 深拷贝
  3. 页面中部分标签简单描述
  4. 使用Docker保护软件供应链安全
  5. Opencv使用cv::matchTemplate进行模板匹配
  6. java 多线程和spring之间的坑
  7. mysql amd.dll 后门_DLL型后门原理及完全清除秘诀
  8. 拯救不开心!我的机器人心理医生;机器学习的KPI千里追踪术;YOLO v7的PyTorch实现;李航新书『机器学习方法』开放试读 | ShowMeAI资讯日报
  9. 东方卫视携微软小冰打造人工智能新闻节目引热议
  10. MATLAB 制作gif动态图
  11. Go语言获取当前系统信息
  12. 两个步骤解决 SQL Server 登录报错 通过端口 1433 连接到主机 的 TCP/IP 连接失败。 错误:“connect timed out”
  13. 单道批处理系统,多道批处理系统,分时系统比较(概念,特点,优缺点)
  14. Aspose.Slides使用教程:使用 C++ 在 PowerPoint 演示文稿中添加幻灯片切换
  15. irc php,PHP-IRC Bot不发送消息帮助
  16. java整型_java中长整型定义
  17. kubernetes文档翻译
  18. 用化学绘图软件写带括号的分子式的方法
  19. 运动控制系统上位机C#源码,可用于雕刻机,切割机,写字机,点胶机
  20. Cisco思科路由器配置IPsec,建立Site to Site项目实例

热门文章

  1. Deep SORT: Simple Online and Realtime Tracking with a Deep Association Metric(论文阅读笔记)(2017CVPR)
  2. 【C#】Winform工具-闪讯下快速分享Wifi(源码)
  3. 统一数据平台监控与运维系统介绍
  4. poor-man’s-graphical-boot
  5. “我要做小小瑶大人的狗!”
  6. 服务器划分虚拟主机教程,服务器划分虚拟主机教程
  7. 原理底层计划--线程池原理和常见的问题
  8. BLDC与PMSM的异同
  9. 聊一聊我知道的百度的福利
  10. 人工智能导论罗马尼亚问题实验一搜索算法C++实现详解