将后处理参数添加到 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. PHP在WPS中的应用,PHP+Laravel的简单应用教程【ajax的使用】,wps的使用教程
  2. datatable删除一行数据
  3. PHP5魔术函数与魔术常量
  4. Cortex-M3异常
  5. 自适应 响应式展示型企业通用网站源码 织梦dedecms模板
  6. [转载]敏捷开发,你真的做对了吗?
  7. 服务器应用程序不可用的解决方法
  8. loadrunner 打印变量
  9. iconv字符编码转换
  10. 科技文献检索课题 计算机,科技文献检索完整作业
  11. matlab如何算排列组合数,MATLAB 排列组合问题
  12. Tomcat服务读取静态图片/静态资源
  13. android o 结构光流程,结构光光斑图案生成方法和结构光光斑图案生成设备的制造方法...
  14. 什么是托管C++ (managed C++)
  15. @Vaild失效处理
  16. SaltStack技术入门与实践
  17. 品优购商城——列表页
  18. 电信运营商云计算战略和发展现状
  19. 数据系统服务器更新是什么,云更新服务器是啥意思
  20. jQuery元宵猜灯谜特效(元宵十五日猜一个字)

热门文章

  1. 计算机病毒由 编制出来,计算机病毒是不是人为编制的呢
  2. STM8学习笔记---ADC平均值采样和有效值采样算法分析
  3. 第七章:小朱笔记hadoop之源码分析-hdfs分析 第五节:Datanode 分析
  4. 聊聊JVM中那些垃圾收集器
  5. 仅用软件FREIA_jimyu,四步刷机法(更新EEP,图文版)
  6. C语言 古代经典算术题:百钱百鸡。用100元钱买100只鸡,已知公鸡每只5元,母鸡每只3元,小鸡一元3只,求出所有的卖法。
  7. 新手搭建 WordPress 网站终极解决方案 基于 Bitnami 堆栈快速搭建完美个人博客(Blog)
  8. 【JavaEE学习日记】----多线程基础(下)
  9. 超频到3200最佳时序_如何榨取更多CPU性能:CPU BIOS超频简单教程
  10. 学计算机去部队是什么部门,我在大学学的是计算机,去部队专业能够对口吗 – 手机爱问...