前言: 

unity shader中的pass是会顺序执行的,但是由于在图像处理中我们常常需要使用一个pass的处理结果作为另一个pass的输入,这个时候就需要用到OnRenderImage()函数了。

一、函数介绍

MonoBehaviour.OnRenderImage(RenderTexture source,RenderTexture destination)

官方描述Description

OnRenderImage is called after all rendering is complete to render image.,该函数在所有的渲染完成后由monobehavior自动调用。

官方解释:该函数允许我们使用着色器滤波操作来修改最终的图像,输入原图像source,输出的图像放在desitination里。

该脚本必须挂载在有相机组件的游戏对象上,在该相机渲染完成后调用OnRenderImage()函数;

二、Graphics.Blit()函数

该函数的作用就是通过一个shader将原图的像素放置到destionation中。

三、示例

我们可以随便写一个shader,比如写一个让图片变为灰度图,然后创建一个材质。

接下来我们把脚本拖动到主相机下,然后将材质赋予相应变量即可。

注意在示例中,我们用到了Material::SetTexture()函数,这是给材质赋值的,我们这里把原图的值赋值给_MainTex,然后shader处理的时候采样的图片就是相机得到的场景图片了,这里可以设置所有类型的值,你也可以尝试自己写一个滑动条,然后动态设置图片的灰度级别。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;[ExecuteInEditMode]
public class Luminance : MonoBehaviour {public Material mat;private void OnRenderImage(RenderTexture source, RenderTexture destination){RenderTexture src0=RenderTexture.GetTemporary(source.width,source.height);mat.SetTexture("_MainTex", source);Graphics.Blit(source,src0,mat,0);Graphics.Blit(src0,destination);RenderTexture.ReleaseTemporary(src0);}
}

四、更多资源

1.OnRenderImage()官方文档

2.屏幕后处理效果之碎屏特效

Unity Shader屏幕特效基础OnRenderImage()函数相关推荐

  1. Unity Shader·屏幕抖音效果

    Unity Shader·屏幕抖音效果 前言 最近在做一个新的MMD(用Unity来实现),其中用到了一些好看的渲染技术在这里分享一下. 视频链接 https://www.bilibili.com/v ...

  2. Unity Shader·屏幕破碎效果

    Unity Shader·屏幕破碎效果 前言 最近在做一个新的MMD(用Unity来实现),其中用到了一些好看的渲染技术在这里分享一下. 视频链接 https://www.bilibili.com/v ...

  3. Unity Shader 屏幕后处理之血屏

    欢迎来到我的第一篇博客 看了冯乐乐老师的<Unity Shader入门精要>在感叹Shader牛逼的同时也对图形学产生了莫大的兴趣,推荐各位在学Unity已及对Shader有兴趣的小伙伴一 ...

  4. Unity Shader 闪光特效

    Unity Shader源代码如下: Shader "Custom/Flash" { Properties { _MainTex ("Texture", 2D) ...

  5. Unity 屏幕特效后期处理 OnRenderImage

    OnRenderImage 是专门给后期处理用的 把下面这个脚本挂在摄像机上 using System.Collections; using System.Collections.Generic; u ...

  6. Unity Shader 屏幕后效果——高斯模糊

    高斯模糊是图像模糊处理中非常经典和常见的一种算法,也是Bloom屏幕效果的基础. 实现高斯模糊同样用到了卷积的概念,关于卷积的概念和原理详见我的另一篇博客: https://www.cnblogs.c ...

  7. Unity Shader 屏幕后效果——Bloom外发光

    Bloom的原理很简单,主要是提取渲染图像中的亮部区域,并对亮部区域进行模糊处理,再与原始图像混合而成. 一般对亮部进行模糊处理的部分采用高斯模糊,关于高斯模糊,详见之前的另一篇博客: https:/ ...

  8. Unity Shader中的基础光照与标准光照模型(自发光、环境光、高光反射、漫反射)、BRDF光照模型

    我们是如何看到这个世界的 从宏观上来说,渲染包含了两大部分 决定一个像素的可见性 决定这个像素上的关照计算 而光照模型就是用于决定一个像素上进行怎样的光照计算 通常来讲,我们要模拟真实的光照环境来生成 ...

  9. Unity shader护盾特效

    身为小白的我看到某大神用 amplify shader editor 插件做了护盾特效,很酷. 蓝色是大神做的,红色那个是我的(感觉和大神的低了几个档次,哈哈) 大神的视频链接: https://ww ...

最新文章

  1. HDU - 6438(贪心+思维)
  2. linux界面版admin,linux下Nginx+Django Admin界面无样式问题解决方法
  3. 【PAT - 甲级1034】Head of a Gang (30分)(并查集)
  4. Java笔记12-函数式接口
  5. python第十六课——外部函数and内部函数
  6. python正则匹配ip地址_python 正则表达式匹配IP地址
  7. 实施工程师是干嘛的_CTO大怒:300万建设数据中台,啥也没看见,我要它干嘛?...
  8. 服务器远程桌面连接限制ip,服务器设置防火墙规则,实现远程桌面连接的ip限制...
  9. 惠普136w墨粉量低_打印机墨粉量低怎么处理_打印机显示墨粉量低解决方法
  10. 数模--2022华中杯A题(Java实现)
  11. CCF论文列表(2022拟定)大更新!NAACL升B!ICLR继续陪跑...MICCAI空降B!PRCV空降C!
  12. MySQL数据库触发器讲解与案例
  13. 关于离线下载的一些免费的网站
  14. 《程序员的算法趣题》-(日)增井敏克 Python解题 -- (Q13)
  15. Table表格的一些记录
  16. emWin 2天速成实例教程000_如何快速入门ucGUI/emWin
  17. java试题汽车接口_用Java程序创建一个汽车接口,接口中要定义汽车应有的属性和行为,随后编写多个汽车接口的实现类,...
  18. KPI, Metrics, KPI的区别
  19. DC-DC升压降压变换原理
  20. vue使用Element的xlsx模板下载功能

热门文章

  1. 使用ssh 连接linux 并传送文件
  2. 一次循环实现List转树形结构(不使用递归)
  3. Build.gradule
  4. 使用JS调用手机本地摄像头或者相册图片识别二维码/条形码
  5. 洛谷P2575 高手过招
  6. Ubuntu18.04 编译安装 Realtek 8852 无线网卡驱动
  7. css兼容IE8 及最新IE8 css hack
  8. 成都艺术职业学院计算机考试,成都艺术职业学院中专2018招生简章
  9. 如何做好售前技术支持工作 (引用)
  10. swap函数java_java中的swap()交换函数