URP后处理(三)——Volume 控制后处理参数
将后处理参数添加到 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 控制后处理参数相关推荐
- Unity - 通用渲染管线(URP)1.渲染、后处理
这是一篇详细讲解URP的文章,涉及具体的使用和原理,翻译自Unity官方的文档. 本文由 祝你万事顺利 出品,转载请注明出处. 简介 URP是一种预置的可编程渲染管线.可以实现快速的渲染而不需要sha ...
- Mastercam 三轴编程 后处理 宏 侧铣头加工模板制作视频教程
Mastercam 三轴编程 后处理 宏 侧铣头加工模板制作视频教程 链接:https://pan.baidu.com/s/1t1hwR6TnGs8snw1E4x2r-Q 提取码:tsof
- S7-200SMART 的运动控制(三)SINAMICS控制库+参数库的使用方法
S7-200SMART 的运动控制(三)SINAMICS控制库+参数库的使用方法 SINAMIC库概述: 自V2.4版本的CPU固件开始,增加了PROFINET通信的功能,CPU可作为IO控制器. 通 ...
- 后处理编辑修改_NX后处理打开报错处理方法
作者:俞文清 由于NX后处理需满足各种不同类型的机床及不同的加工方式需求,所以工程师往往需要经常修改.但随着时间推移,人员更迭,修改的人员不了解当初编写时的环境,打开后处理时会出现报错.下面介绍几种打 ...
- oracle体系三大文件,oracle 体系_第三章控制文件
第三章 控制文件 1.功能特点 记录数据库当前的物理状态 维护数据库的一致性,是一个二进制的小文件 在mount阶段被读取,记录rman备份的元数据 查看database控制文件的位置 Show pa ...
- 案例分享:Qt激光加工焊接设备信息化软件研发(西门子PLC,mysql数据库,用户权限控制,界面设计,参数定制,播放器,二维图,期限控制,参数调试等)
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127669684 长期持续项目技术分享,有专业Qt需求请 ...
- hypermill后处理构造器安装_ug10后处理安装步骤ug后处理在什么位置ug法兰克后处理下载ug后处理器如何设置ug后处理构造器...
UG安装后处理概述 使用UG加工编程的朋友,经常会遇到定制后处理问题,由于定制NC后处理繁琐,所以经常会把先前定制好的后处理添加或者替换来使用,那么如何正确的操作呢? 下面以UG10.0为例来说明,其 ...
- 开关电源三种控制模式:PWM/PFM/PSM
1. PWM/PFM/PSM 三种控制模式的定义 通常来说﹐开关电源(DC-DC)有三种最常见的调制方式分别为: 脉冲宽度调制(PWM) 脉冲频率调制(PFM) 脉冲跨周期调制(PSM) 在功率集成电 ...
- 三轴联动c语言算法,(数控加工)虚拟轴数控机床的仿三轴控制.pdf
(数控加工)虚拟轴数控机 床的仿三轴控制 虚拟轴数控机床的仿三轴控制 前言 虚拟轴数控机床的出现被认为是本世纪最具革命性的机床设计突破. 如果充分发挥这种新型机床在结构上的优势,就有可能为大幅度地提 ...
最新文章
- python tkinter 布局_python tkinter学习——布局
- python 深拷贝_python 深拷贝
- 页面中部分标签简单描述
- 使用Docker保护软件供应链安全
- Opencv使用cv::matchTemplate进行模板匹配
- java 多线程和spring之间的坑
- mysql amd.dll 后门_DLL型后门原理及完全清除秘诀
- 拯救不开心!我的机器人心理医生;机器学习的KPI千里追踪术;YOLO v7的PyTorch实现;李航新书『机器学习方法』开放试读 | ShowMeAI资讯日报
- 东方卫视携微软小冰打造人工智能新闻节目引热议
- MATLAB 制作gif动态图
- Go语言获取当前系统信息
- 两个步骤解决 SQL Server 登录报错 通过端口 1433 连接到主机 的 TCP/IP 连接失败。 错误:“connect timed out”
- 单道批处理系统,多道批处理系统,分时系统比较(概念,特点,优缺点)
- Aspose.Slides使用教程:使用 C++ 在 PowerPoint 演示文稿中添加幻灯片切换
- irc php,PHP-IRC Bot不发送消息帮助
- java整型_java中长整型定义
- kubernetes文档翻译
- 用化学绘图软件写带括号的分子式的方法
- 运动控制系统上位机C#源码,可用于雕刻机,切割机,写字机,点胶机
- Cisco思科路由器配置IPsec,建立Site to Site项目实例
热门文章
- Deep SORT: Simple Online and Realtime Tracking with a Deep Association Metric(论文阅读笔记)(2017CVPR)
- 【C#】Winform工具-闪讯下快速分享Wifi(源码)
- 统一数据平台监控与运维系统介绍
- poor-man’s-graphical-boot
- “我要做小小瑶大人的狗!”
- 服务器划分虚拟主机教程,服务器划分虚拟主机教程
- 原理底层计划--线程池原理和常见的问题
- BLDC与PMSM的异同
- 聊一聊我知道的百度的福利
- 人工智能导论罗马尼亚问题实验一搜索算法C++实现详解