(三)Grahpics之Blit
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.前言 2.OnRenderImage简介 3.应用示例 3.1 最简单应用 3.2 最基本应用 3.3 完整范例 4.结语 1.前言 Graphics的Blit方法是比较简单也是比较常用 ...
- python画一个点_pygame学习笔记(2):画点的三种方法和动画实例
1.单个像素(画点) 利用pygame画点主要有三种方法: 方法一:画长宽为1个像素的正方形 import pygame,sys pygame.init() screen=pygame.display ...
- Pygame游戏制作
Pygame是脚本语言Python的一个扩展包就是SDL的封装包,是用Python 和C语言开发:开发人是Pete Shinners.专门用于开发各类游戏.SDL意思是Simple Directmed ...
- 《Fundamentals of Computer Grahpics》虎书第三版翻译——第一章 介绍
1.1 图形领域 在任何领域进行强分类是危险的,但大多数从事图形学行业的人都会赞同以下这些计算机图形学的主要领域: 建模:使用数学规格进行建模,这些数据是能存储在计算机上的形状和外观属性.例如,一个咖 ...
- 《Fundamentals of Computer Grahpics》虎书第三版翻译——第二章 各种各样的数学
大部分图形学只是把数学直接转化成代码.数学越清晰,对生成的代码越清晰;这本书的大部分内容都集中在如何正确的使用数学.本章回顾了高中和大学数学中的各种工具,旨在作为参考而不是教程.这本书的主题看起来像是 ...
- 《Fundamentals of Computer Grahpics》虎书第三版翻译——第四章 光线追踪
光线追踪 计算机图形学的基本任务之一是绘制三维物体:获取一个场景或模型(由许多在3D空间中排列的几何物体组成),并生成一个二维图像(从一个特定的视角观察到的物体的图像).这和几个世纪以来建筑师和工程师 ...
- 《Fundamentals of Computer Grahpics 4ed》虎书第四版翻译——第三章光栅图像
文章目录 3.1 光栅设备 3.1.1 显示器 3.1.2 硬拷贝设备 3.1.3 输入设备 3.2 图像,像素和形状 3.2.1 像素值 3.2.2 显示器强度和伽马 3.3 RGB颜色 3.4 A ...
- 父爱动画代码python_pygame用blit()实现动画效果的示例代码
pygame的的实现动画的方法有很多,但是都是围绕着表面进行的,也就是说实现动画的方式不同,但是本质其实都是对表面的不同处理方式而已. 原理其实很简单,有点像我们做地铁的时候隧道里的广告一样.我们设置 ...
- 基于pygame的射击小游戏制作(三)让外星人动起来
在本篇文章中,将学习如何创建一群外星人,如何使用嵌套循环来创建元素网格,如何移动外星人 1.编程思路 1.1 创建外星人 创建Alien.py 文件,该文件配置与Ship.py类似,每个外星人最初都出 ...
最新文章
- 苹果6sp内存可以扩展吗_苹果手机iPhone 12 mini能用6年吗?网友:可以
- Mybatis解决实体类属性和表字段对应不上
- php是独立服务吗,使用Sprockets作为PHP应用程序的独立服务
- Spring Cloud实战小贴士:Zuul统一异常处理(三)【Dalston版】
- bat获取命令返回值_redis中list和hash的基本命令和使用场景
- 全职写作过来人,给初学写作者的6条忠告
- 开源分布式关系型数据库 PingCAP 完成 B 轮融资
- 关于新建android项目时 appcompat_v7报错问题的一点总结
- graphpad饼状图_应用 Graphpad 统计作图,助你写文章事半功倍
- 华为服务器pxe装系统,pxe启动服务器
- 人脸图像质量评价:FaceQnet
- 字体大宝库:40款好看的英文手写字体下载
- ug导出html,UG如何将工程图导出到CAD中?
- 全文检索四种技术解决方案
- 利用js完成根据excel填充网页表单
- 实验四——DPCM编码(1bit、2bit、4bit、8bit量化)
- linux centos安装scp,CentOS使用不了scp命令怎么办?
- Informix 12.10版本新特性-2
- oracle里update+where,Oracle 关联表更新 update ,where exists
- 在线版音乐播放器APP