Unity 后期特效用到的一些方法:OnRenderImage Blit

1.OnRenderImage (RenderTexture source, RenderTexture destination)

当这个函数被调用时,所有的渲染已经完成,渲染结果以参数source传入到函数中。它允许你对最终的显示图像进行处理。所以说是后期特效。

处理的最终结果会输入到destination中。如果相机上添加多个后处理脚本则会依次执行,而且前一个的destination会用作下一个的source。

2.Graphics.Blit

public static void Blit(Texture sourceRenderTexture destMaterial mat, int pass = -1);

有三个重载方法,这个方法的参数是最全的。

如果mat不为空,那么source被设置为mat中的shader的_MainTex,因此必须在shader开头的Properties块中定义_MainTex属性.

该方法使用mat中的shader绘制一个全屏的quad

Note that if you want to use depth or stencil buffer that is part of the source (Render)texture, you'll have to do equivalent of Blit functionality manually - i.e.Graphics.SetRenderTarget with destination color buffer and source depth buffer, setup orthographic projection (GL.LoadOrtho), setup material pass (Material.SetPass) and draw a quad (GL.Begin).

由上面这段话可以看出:Blit的等价方法是依次使用Graphics.SetRenderTargetGL.LoadOrthoMaterial.SetPass和

GL.Begin(GL.QUADS);(GL.QUADS);

所以说,最后实际渲染的是一个以mat为材质,以source为_MainTex的全屏大小的quad,渲染该quad的摄像机为正交的。渲染的结果输出到destination,destination就是rendertarget.

网上某人写的,大致应该就是这样吧,没研究

 static public void Blit(RenderBuffer COLOR,RenderBuffer DEPTH, Material MRTMat,int pass){Graphics.SetRenderTarget(COLOR, DEPTH);RenderQuad (MRTMat, pass);}

static public void RenderQuad( Material MRTMat,int pass){GL.PushMatrix();GL.LoadOrtho();MRTMat.SetPass(pass);GL.Begin(GL.QUADS);GL.TexCoord2(0.0f, 1.0f); GL.Vertex3(0.0f, 1.0f, 0.1f);//设置顶点,这样可以全屏,(0,1)代表屏幕左上角GL.TexCoord2(1.0f, 1.0f); GL.Vertex3(1.0f, 1.0f, 0.1f);  //右上角              GL.TexCoord2(1.0f, 0.0f); GL.Vertex3(1.0f, 0.0f, 0.1f);  //右下角              GL.TexCoord2(0.0f, 0.0f); GL.Vertex3(0.0f, 0.0f, 0.1f);  //左下角              GL.End();GL.PopMatrix();
}

这个函数就像过转化器一样,source图片经过它的处理变成了dest图片,其中材质对象mat负责算法实施(更准确的说法:算法是绑定到该mat上的shader来实现的。shader可以有多个pass,可以通过pass参数指定特定的shader,-1表示执行这个shader上所有的pass)

3.

Texture size

{TextureName}_TexelSize - a float4 property contains texture size information:

  • x contains 1.0/width
  • y contains 1.0/height
  • z contains width
  • w contains height

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/174142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习【04重要】pycharm中关闭jupyter服务器

直接关掉pycharm 不行 点红方块关闭 不行 我们曲线进行 我们的方法成功截图 实现全程不在服务器上操作 首先点击下图 点击退出,即可 查看端口

java Swing UI设置统一字体大小

编写一个遍历组件设置字体大小的方法 public static void setUIFont() {Font f new Font("宋体", Font.PLAIN, 18);String names[] {"Label", "CheckBox", "PopupMenu", "MenuItem", "CheckBoxMenuItem", &quo…

人力资源管理后台 === 上传+权限数据

目录 1.员工详情-封装员工头像组件 2.员工详情-上传图片-创建腾讯云存储桶 3.员工详情-使用cos-sdk完成上传 4. 权限管理-搭建权限页面 5.权限管理-获取数据转化树形 6.权限管理-作业 7.权限应用-权限概念 8.权限应用-员工分配角色-弹出层 9.权限应用-员工分配角色-回…

【EMFace】《EMface: Detecting Hard Faces by Exploring Receptive Field Pyramids》

arXiv-2021 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method5 Experiments5.1 Datasets and Metrics5.2 Ablation Study5.3 Comparison with State-of-the-Arts 6 Conclusion(own) 1 Background and Motivatio…

获取lambda 表达式类名和方法名

lambda表达式在序列化时系统会自动生成writeReplace方法&#xff0c;该方法返回SerializedLambda对象&#xff0c;包含了lambda表达式的信息&#xff0c;包括类名方法名。 例如&#xff1a; public interface FieldChecker<T, R> {default R checkField(SFunction<T…

Spring 中存储 Bean 的相关注解

Bean的存 IoC控制反转&#xff0c;就是将对象的控制权交给Spring的IOC容器&#xff0c;由IOC容器创建及管理对象。 也就是bean的存储 类注解:五大注解 Controller&#xff08;控制器存储&#xff09; Service&#xff08;服务存储&#xff09; Component&#xff08;组件存储…

filebeat报错dropping too large message of size

filebeat报错&#xff1a; dropping too large message of size 1714620. 原因&#xff1a; kafka对每一条消息的大小进行了限制。 解决 kafka端 修改config/server.properties&#xff0c;添加以下配置 max_message_bytes10000000 replica.fetch.max.bytes10000000修改…

深思:C与C++相互调用问题

背景 上周&#xff0c;偶然看到同事愁眉苦脸的样子&#xff0c;便善意咨询了下发生了什么。简单沟通下&#xff0c;才知道他遇到了一个工程编译的问题&#xff0c;一直无法编译通过&#xff0c;困扰了他快一天时间。出于个人的求知欲和知识的渴望&#xff0c;我便主动与他一同分…

Pyqt5 组件绑定函数传递参数

使用匿名函数进行参数的传递&#xff0c;可以传递多个参数&#xff0c;也可以只传递一个 self.upLoadNewBtn.clicked.connect(lambda: self.upload_dir("new", )) self.upLoadNewBtn.clicked.connect(lambda: self.upload_dir("new", ))# 选择文件夹 def…

【数据结构】堆的实现

目录 1. 前言2. 堆的实现2.1 初始化2.2 插入2.2.1 分析2.2.1.1 情况一2.2.1.2 情况二2.2.1.3 情况三 2.2.2 插入代码实现2.2.2.1 向上调整代码 2.3 删除2.3.1 分析2.3.2 删除代码实现2.3.2.1 向下调整代码 2.4 找根节点数据2.5 元素个数2.6 判空2.7 销毁 3. 源代码3.1 Heap.h3.…

许战海战略文库|主品牌升级为产业技术品牌,引领企业全球化发展

在当今高速发展的全球经济中&#xff0c;企业品牌已经成为其核心资产之一。这不仅仅是因为品牌可以为消费者带来识别度&#xff0c;更重要的是&#xff0c;它们可以为企业带来深厚的竞争壁垒。但对于许多企业来说&#xff0c;特别是技术密集型企业&#xff0c;仅仅依靠主品牌的…

如何让消费者接受品牌,口碑营销怎么做?

当新品牌进入小红书时&#xff0c;如何进行口碑营销是一个重要的问题。很多新品牌在刚刚进入小红书时&#xff0c;对于一些敏感时机把握的不准其实本质上&#xff0c;就是不明白什么阶段该做什么事。今天分享的就是如何让消费者接受品牌&#xff0c;口碑营销怎么做&#xff1f;…

电量计驱动代码

外部电量计驱动代码,直接上代码了,懒,不做细节分析。。。。。 /** Fuelgauge battery driver** This package is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License version 2 as* published by the Free Soft…

vue3使用高德地图获取经纬度

首先 安装依赖 cnpm i amap/amap-jsapi-loader --save <script setup> import { onMounted, reactive, ref } from vue import AMapLoader from amap/amap-jsapi-loaderconst map ref(null) const mapData reactive({map: {},keyword: ,selectedLocation: {},selecte…

python object类型

# object类是所有类的父类 # type是所有类的类型&#xff0c;也就是所有类都是由type实例化而来&#xff0c;包括type类和父类object # class 继承object 同时又type类实例化。其中type就是元类print(type的父类,type.__base__) class test:pass print(class的父类是&#xff1…

NX二次开发UF_CURVE_ask_spline_data 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_spline_data Defined in: uf_curve.h int UF_CURVE_ask_spline_data(tag_t spline_tag, UF_CURVE_spline_p_t spline_data ) overview 概述 Reads the spline data a…

Java核心知识点整理大全18-笔记

Java核心知识点整理大全-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全2-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全3-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全4-笔记-CSDN博客 Java核心知识点整理大全5-笔记-CSDN博客 Java核心知识点整理大全6…

抖音小店怎么做?新手应该怎么运营?实操经验分享!

我是电商珠珠 抖音小店的热度一天天在攀升&#xff0c;很多新手小白都会跑来问我&#xff0c;想做抖音小店具体要怎么做。 接下来&#xff0c;我从头到尾的跟大家讲一遍&#xff0c;注意重点。 第一&#xff0c;入驻 入驻的时候需要准备一张营业执照&#xff0c;对于新手来…

Map<Object>, List<Object>>返回满足条件的数据

Map<Object>, List<Object>>返回满足条件的数据 当一个表查询多次时&#xff0c;为了减少数据库的查询操作&#xff0c;可以使用stream流来进行条件筛选&#xff0c;获取所需要的数据。 例&#xff1a; Map<Long, List<PurchaseOrder>> orderMap…

Linux驱动开发——网络设备驱动(理论篇)

目录 一、前言 二、网络层次结构 三、网络设备驱动核心数据结构和函数 一、前言 网络设备驱动是 Linux 的第三大类驱动&#xff0c;也是我们学习的最后一类 Linux 驱动。这里我们首先简单学习一下网络协议层次结构&#xff0c;然后简单讨论 Linux 内核中网络实现的层次结构。…