Unity3D屏幕特效合成
来源:互联网 发布:mysql 错误日志路径 编辑:程序博客网 时间:2024/04/28 21:03
屏幕合成的原理其实很简单,只是把原来屏幕渲染的东西,通过一个特定的着色器改变内容成为新的画面,然后替代了原来的画面。
需要的东西有这么几样:
1、一个着色器程序
2、Camera.OnRenderImage(RenderTexture,RenderTexture)方法
3、Graphics.Blit方法
本文转载于:http://www.gopedu.com/article/1066
原理如下:
首先,在做合成处理的脚本里面写方法
void OnRenderImage(RenderTexture src, RenderTexture dest) {
Graphics.Blit(src, dest, mat);
}
这个方法是在所有渲染工作完成之后调用的,输入的src是渲染工作完成之后得到的画面,而dest是目标的画面,目标的画面将会替代src显示在屏幕上。
里面调用的Graphics.Blit(src, dest, mat);方法,是把src给复制写入dest中,mat是材质,如果有这个,那么在复制过程中会使用mat中的着色器改变图片的内容。
代码就是这么简单。如果你要容错,可以做一个检查mat是否为空的操作。
剩下的工作就是编写mat里面的着色器的过程了。
这个着色器你可以使用vertex and fragment shader或者Surface Shader编写都可以,没有什么神秘的地方,你可以使用各种的变量或者纹理图片。不过记得一点是,刚才我们的整个屏幕的渲染结果src会自动的成为_MainTex纹理输入,而这张图片由于是平铺在屏幕上的,所以input的uv坐标就是刚才那张_MainTex的uv坐标了。然后剩下的就是你在片段着色器程序或者表面着色器程序里面通过改变它的uv信息、偏移、颜色改变或者用各种纹理来叠加颜色。
而最后,如果你的叠加效果是有动画效果的,那么就在脚本里面动态改变material里面的参数,就可以了。
- Unity3D屏幕特效合成
- Unity3D屏幕特效合成
- unity3d 老电影式的屏幕特效
- Unity3D-Blur-实现屏幕特效十字耀斑
- Unity3D中的屏幕着色器和图像特效
- Unity3d 屏幕特效实现类似死亡之后的全屏黑白效果
- Unity3D for VR 学习(11): 后期屏幕渲染特效(Image Effect)
- Unity3d 屏幕特效实现类似死亡之后的全屏黑白效果
- Unity3D下雪粒子特效
- unity3d 简单水下特效
- Unity3D镜头抖动特效
- unity3d 摄像机抖动特效
- 屏幕水幕特效
- UnityShader 屏幕特效 模糊
- 后期屏幕渲染特效
- iphone ios 视频特效,视频合成
- 【浅墨Unity3D Shader编程】之八 Unity5新版Shader模板源码解析&运动模糊(径向模糊)屏幕特效的实现
- 【浅墨Unity3D Shader编程】之九 深入理解Unity5中的Standard Shader (一)&屏幕水幕特效的实现
- 入门2
- String的兄弟姐妹和亲戚:StringBuilder,StringBuffer,StringReader,StringWriter,StringBufferInputStream
- C++ string大小写转换以及transform,tolower,toupper,用法
- 服务器接收到的请求参数乱码问题
- 扩展系统功能——装饰模式(二):装饰模式概述
- Unity3D屏幕特效合成
- Concurrency4
- excel 跨表格数据汇总
- 【C语言】C语言字符串函数实现(一)
- 锁帧同步算法
- java字符串内存分析
- epoll为什么这么快,epoll的实现原理
- DeprecationWarning: the sets module is deprecated
- shell判断字符串为空