Unity Shader屏幕特效基础OnRenderImage()函数
前言:
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()函数相关推荐
- Unity Shader·屏幕抖音效果
Unity Shader·屏幕抖音效果 前言 最近在做一个新的MMD(用Unity来实现),其中用到了一些好看的渲染技术在这里分享一下. 视频链接 https://www.bilibili.com/v ...
- Unity Shader·屏幕破碎效果
Unity Shader·屏幕破碎效果 前言 最近在做一个新的MMD(用Unity来实现),其中用到了一些好看的渲染技术在这里分享一下. 视频链接 https://www.bilibili.com/v ...
- Unity Shader 屏幕后处理之血屏
欢迎来到我的第一篇博客 看了冯乐乐老师的<Unity Shader入门精要>在感叹Shader牛逼的同时也对图形学产生了莫大的兴趣,推荐各位在学Unity已及对Shader有兴趣的小伙伴一 ...
- Unity Shader 闪光特效
Unity Shader源代码如下: Shader "Custom/Flash" { Properties { _MainTex ("Texture", 2D) ...
- Unity 屏幕特效后期处理 OnRenderImage
OnRenderImage 是专门给后期处理用的 把下面这个脚本挂在摄像机上 using System.Collections; using System.Collections.Generic; u ...
- Unity Shader 屏幕后效果——高斯模糊
高斯模糊是图像模糊处理中非常经典和常见的一种算法,也是Bloom屏幕效果的基础. 实现高斯模糊同样用到了卷积的概念,关于卷积的概念和原理详见我的另一篇博客: https://www.cnblogs.c ...
- Unity Shader 屏幕后效果——Bloom外发光
Bloom的原理很简单,主要是提取渲染图像中的亮部区域,并对亮部区域进行模糊处理,再与原始图像混合而成. 一般对亮部进行模糊处理的部分采用高斯模糊,关于高斯模糊,详见之前的另一篇博客: https:/ ...
- Unity Shader中的基础光照与标准光照模型(自发光、环境光、高光反射、漫反射)、BRDF光照模型
我们是如何看到这个世界的 从宏观上来说,渲染包含了两大部分 决定一个像素的可见性 决定这个像素上的关照计算 而光照模型就是用于决定一个像素上进行怎样的光照计算 通常来讲,我们要模拟真实的光照环境来生成 ...
- Unity shader护盾特效
身为小白的我看到某大神用 amplify shader editor 插件做了护盾特效,很酷. 蓝色是大神做的,红色那个是我的(感觉和大神的低了几个档次,哈哈) 大神的视频链接: https://ww ...
最新文章
- HDU - 6438(贪心+思维)
- linux界面版admin,linux下Nginx+Django Admin界面无样式问题解决方法
- 【PAT - 甲级1034】Head of a Gang (30分)(并查集)
- Java笔记12-函数式接口
- python第十六课——外部函数and内部函数
- python正则匹配ip地址_python 正则表达式匹配IP地址
- 实施工程师是干嘛的_CTO大怒:300万建设数据中台,啥也没看见,我要它干嘛?...
- 服务器远程桌面连接限制ip,服务器设置防火墙规则,实现远程桌面连接的ip限制...
- 惠普136w墨粉量低_打印机墨粉量低怎么处理_打印机显示墨粉量低解决方法
- 数模--2022华中杯A题(Java实现)
- CCF论文列表(2022拟定)大更新!NAACL升B!ICLR继续陪跑...MICCAI空降B!PRCV空降C!
- MySQL数据库触发器讲解与案例
- 关于离线下载的一些免费的网站
- 《程序员的算法趣题》-(日)增井敏克 Python解题 -- (Q13)
- Table表格的一些记录
- emWin 2天速成实例教程000_如何快速入门ucGUI/emWin
- java试题汽车接口_用Java程序创建一个汽车接口,接口中要定义汽车应有的属性和行为,随后编写多个汽车接口的实现类,...
- KPI, Metrics, KPI的区别
- DC-DC升压降压变换原理
- vue使用Element的xlsx模板下载功能