(八)Grahpics之Blit
文章目录
- 1.前言
- 2.OnRenderImage简介
- 3.应用示例
- 3.1 最简单应用
- 3.2 最基本应用
- 3.3 完整范例
- 4.结语
1.前言
Graphics的Blit方法是比较简单也是比较常用的方法。最简单的作用是将一张纹理绘制到另一张纹理中。而在此方法中可以指定一种材质来实现特殊的效果,所以常和OnRenderImage方法配合使用来实现屏幕后处理效果。
2.OnRenderImage简介
void OnRenderImage(RenderTexture src, RenderTexture dest)方法是unity中渲染流程的最后阶段,如果不调用此方法则渲染的图像直接显示到屏幕上(不考虑buffer问题),如果调用则src为获取到的渲染图像,dest则为绘制的目标纹理。调用此方法的脚本需要挂载在含有camera组建的脚本上。
3.应用示例
3.1 最简单应用
下述方法为将camera渲染结果直接绘制到屏幕上,不做任何处理,当然如果这样调用也就没有调用此方法的意义了。
void OnRenderImage(RenderTexture src, RenderTexture dest){ Graphics.Blit(src, dest);}
3.2 最基本应用
一般应用如下所示,设置某一材质,然后通过材质对src纹理进行处理,并绘制到dest上,但是material要包含_MainTex变量,因为unity会默认将src纹理赋值给_MainTex。
material.SetFloat("_Brightness", brightness);void OnRenderImage(RenderTexture src, RenderTexture dest){ Graphics.Blit(src, dest, material);}
3.3 完整范例
public class GaussianBlur : PostEffectsBase {public Shader matShader;private Material mat;public Material material { get {if(mat==null){mat=new Material(matShader)}return mat;} }[Range(0, 4)]public int iterations = 3;void OnRenderImage (RenderTexture src, RenderTexture dest) {if (material != null) {int rtW = src.widthint rtH = src.heightRenderTexture buffer0 = RenderTexture.GetTemporary(rtW, rtH, 0);buffer0.filterMode = FilterMode.Bilinear;Graphics.Blit(src, buffer0);for (int i = 0; i < iterations; i++) {RenderTexture buffer1 = RenderTexture.GetTemporary(rtW, rtH, 0);Graphics.Blit(buffer0, buffer1, material, 0);RenderTexture.ReleaseTemporary(buffer0);buffer0 = buffer1;buffer1 = RenderTexture.GetTemporary(rtW, rtH, 0);// Render the horizontal passGraphics.Blit(buffer0, buffer1, material, 1);RenderTexture.ReleaseTemporary(buffer0);buffer0 = buffer1;}Graphics.Blit(buffer0, dest);RenderTexture.ReleaseTemporary(buffer0);} else {Graphics.Blit(src, dest);}}
}
4.结语
此方法应用就是如此简单。
(八)Grahpics之Blit相关推荐
- (三)Grahpics之Blit
1.前言 Graphics的Blit方法是比较简单也是比较常用的方法.最简单的作用是将一张纹理绘制到另一张纹理中.而在此方法中可以指定一种材质来实现特殊的效果,所以常和OnRenderImage方法配 ...
- Python编写微信打飞机小游戏(八)
如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢. Python编写微信打飞机小游戏(一) Python编写微信打飞机小游戏(二) Python编写微信打飞机小游戏(三 ...
- 八、Python基础(综合演练:飞机大战)
八.Python基础(综合演练:飞机大战) 目录: 八.Python基础(综合演练:飞机大战) 一.模块 1.利用 pip 安装 pygame 模块 2.图片素材下载 二.pygame 模块初识 1. ...
- 《将要淘汰的八种人》读后感
前言: 将要淘汰的八种人http://blog.sina.com.cn/s/blog_638066ee0100nvis.html (不景气的社会,一定会淘汰不争气的人.如何不被淘汰,只要你不在八种之内 ...
- 大数据调度平台Airflow(八):Airflow分布式集群搭建及测试
目录 Airflow分布式集群搭建及测试 一.节点规划 二.airflow集群搭建步骤 1.在所有节点安装python3.7 2.在所有节点上安装airflow 三.初始化Airflow 1.每台节点 ...
- 2021年大数据ELK(八):Elasticsearch安装IK分词器插件
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 安装IK分词器 一.下载Elasticsearch IK分词器 ...
- 2021年大数据Kafka(八):Kafka如何保证数据不丢失
全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka如何保证数据不丢失 一.如何保证生产者数据不丢失 ...
- 2021年大数据HBase(八):Apache Phoenix的基本介绍
全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 前言 系列历史文章 Apache Phoenix的基本介绍 Apache ...
- 2021年大数据Hive(八):Hive自定义函数
全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...
最新文章
- 从证书中导出公钥并存放到项目中
- 使用 Scrum开发太阳能汽车
- 7月国内手机出货量3419.9万部 5G手机果然还是很少!
- Java中的volatile的作用和synchronized作用
- 局域网电脑Sql2008 R2无法连接到localhost 解决方案
- eventlistener java_EventListener原理
- ubuntu 9.10修改grub启动项的方法
- 瓜子二手车:急招IoT架构师,相当阿里P9
- 个人PHP博客开源代码下载推荐!免费
- mentohust 使用
- 前沿科技赋能教育,掌门优课创新教学体验
- 横河DLM2000示波器连接电脑
- 如何快速写作论文初稿?
- 讲一点有技术含量的东西(一)
- JAVA EE框架课程考点复习(大题和判断题)
- P1941 [NOIP2014 提高组] 飞扬的小鸟
- SpringBoot开启定时任务
- LaTeX 写作的两个辅助工具:统计中文字数和关闭Acrobat中的PDF文档
- Waymo SOTA!SparseKD:高效知识蒸馏下的3D检测(港大NIPS2022)
- 怎么查看vue和vue-cli(脚手架)的版本?