Unity Shader·屏幕破碎效果
Unity Shader·屏幕破碎效果
前言
最近在做一个新的MMD(用Unity来实现),其中用到了一些好看的渲染技术在这里分享一下。
视频链接
https://www.bilibili.com/video/av86302041
效果截图
Shader
Shader "Custom/RenderImage/ScreenBroken" {Properties {_MainTex ("Main Tex", 2D) = "white" {}_BrokenNormalMap("BrokenNormal Map",2D)="bump"{}_BrokenScale("BrokenScale",Range(0,1))=1.0}SubShader {Pass{Tags { "LightMode"="ForwardBase" }CGPROGRAM#include "UnityCG.cginc"#include "Lighting.cginc"#pragma vertex vert#pragma fragment frag//这一部分参数的定义要根据Propertiesfixed4 _Color;sampler2D _MainTex;float4 _MainTex_ST;sampler2D _BrokenNormalMap;float4 _BrokenNormalMap_ST;float _BrokenScale;struct a2v{float4 vertex : POSITION;float4 texcoord : TEXCOORD0;};//输出部分要和输入部分对应起来,而输出部分又要由片元着色器里的计算模型来确定struct v2f{float4 pos : SV_POSITION;float4 uv : TEXCOORD0;};v2f vert(a2v v){v2f o;o.pos=UnityObjectToClipPos(v.vertex);o.uv.xy=TRANSFORM_TEX(v.texcoord,_MainTex);o.uv.zw=TRANSFORM_TEX(v.texcoord, _BrokenNormalMap);return o;}fixed4 frag(v2f i) : SV_Target{fixed4 packedNormal = tex2D(_BrokenNormalMap,i.uv.zw);fixed3 tangentNormal;tangentNormal=UnpackNormal(packedNormal);tangentNormal.xy*=_BrokenScale;float2 offset = tangentNormal.xy;fixed3 lightColor = fixed3(1,1,1);fixed3 col=tex2D(_MainTex,i.uv.xy+offset).rgb;fixed luminance = (col.r + col.g + col.b) / 3;fixed3 finalCol = lerp(fixed3(luminance,luminance,luminance),col,0.25);return fixed4(col,1.0f);}ENDCG}}FallBack "Diffuse"
}
C#脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;[ExecuteInEditMode]
public class ScreenBroken : MonoBehaviour
{public Material mat;public float NormalScale = 0;private void OnRenderImage(RenderTexture source, RenderTexture destination){RenderTexture src0 = RenderTexture.GetTemporary(source.width, source.height);mat.SetTexture("_MainTex", source);mat.SetFloat("_BrokenScale", NormalScale);Graphics.Blit(source, src0, mat, 0);Graphics.Blit(src0, destination);RenderTexture.ReleaseTemporary(src0);}
}
Unity Shader·屏幕破碎效果相关推荐
- Unity Shader 屏幕后效果——高斯模糊
高斯模糊是图像模糊处理中非常经典和常见的一种算法,也是Bloom屏幕效果的基础. 实现高斯模糊同样用到了卷积的概念,关于卷积的概念和原理详见我的另一篇博客: https://www.cnblogs.c ...
- Unity Shader 屏幕后效果——Bloom外发光
Bloom的原理很简单,主要是提取渲染图像中的亮部区域,并对亮部区域进行模糊处理,再与原始图像混合而成. 一般对亮部进行模糊处理的部分采用高斯模糊,关于高斯模糊,详见之前的另一篇博客: https:/ ...
- Unity Shader·屏幕抖音效果
Unity Shader·屏幕抖音效果 前言 最近在做一个新的MMD(用Unity来实现),其中用到了一些好看的渲染技术在这里分享一下. 视频链接 https://www.bilibili.com/v ...
- Unity 实现物体破碎效果(转)
感谢网友分享,原文地址(How to Make an Object Shatter Into Smaller Fragments in Unity),中文翻译地址(Unity实现物体破碎效果) In ...
- Unity Shader 窗前雨滴效果衍生(表面水滴附着)
Unity Shader 窗前雨滴效果衍生(表面水滴附着) 霓虹中国视频截图 现实中的水珠附着效果 实现思路 1.首先创建一个Cube来作为实现效果的物体 2.创建一个Shader开始着色器的编写 实 ...
- Unity 实现物体破碎效果(转)
感谢网友分享,原文地址(How to Make an Object Shatter Into Smaller Fragments in Unity),中文翻译地址(Unity实现物体破碎效果) In ...
- unity 给图片边缘_Unity Shader 屏幕后效果——边缘检测
关于屏幕后效果的控制类详细见之前写的另一篇博客: 这篇主要是基于之前的控制类,实现另一种常见的屏幕后效果--边缘检测. 概念和原理部分: 首先,我们需要知道在图形学中经常处理像素的一种操作--卷积. ...
- Unity Shader 之 透明效果
本文引用 Unity Shader入门精要 开启透明混合后,一个物体被渲染到屏幕上时,每个片元除了颜色值和深度值外,还有--透明度.透明度为1,则完全不透明,透明度为0,则完全不会显示. 在Unity ...
- unity 实现物体破碎效果的一些方法 - 细雨淅淅
游戏越来越接近现实的感觉,如果有一个真是的 虚拟现实设备,可能我们真的会感觉是在真实世界.场景的逼真是在渲染效果.角色AI.游戏逻辑.物理效果等等一起导致的结果.现在游戏越来越大,除了渲染,物理估计是 ...
最新文章
- ExecuteNonQuery返回值问题
- 管理员端API——任仲行
- Django (auth模块、User对象、用户认证、线上-用户认证)
- C++是类型安全的吗?
- 深度学习之眼睛状态识别混淆矩阵的绘制
- nosql的数据服务_使用NoSQL实现实体服务–第3部分:CouchDB
- TCL微型计算机如何投屏,TCL电视怎么投屏?3个办法帮助你完美解决
- Oracle expdp和impdp
- 为什么不能生成accde_原来“转换生成语言学”就是这么回事
- [Python] itertools.islice(iterable, start, stop[, step]) 创建迭代器并返回所选元素
- kaggle谷歌商店预测竞赛
- 微信公众号推送天气预报Python
- linux隔离磁盘坏道,Repartion Bad Drive(硬盘坏道隔离工具
- 分享两款雪花特效代码
- 电影:少年派的奇幻漂流(Life of Pi)
- 找准盈利模式,博客网站赚钱也轻松
- Qlist+QMap+QVariant使用
- 统计一TXT文档中单词出现频率,输出频率最高的10个单词
- 操作系统核心知识与重难点
- mPEG-SS 甲氧基PEG琥珀酰亚胺丁二酸酯
热门文章
- 前端系列19集-vue3引入高德地图,响应式,自适应
- 小米2s回退出厂版本_小米8青春版官方出厂rom系统刷机包_降级包回退包V10.0.8.0...
- 微软VSTO功能如何放到WPS中用
- 服务器稳定性规划,《梦幻西游2》第三十六次服务器合并规划
- 职业观的形成和提高职业素养
- html手机自动放大缩小,手机端缩放.html
- 小明对类似于 hello 这种单词非常感兴趣,这种单词可以正好分为四段,第一段由一个或多个辅音字母组成,第二段由一个或多个元音字母组成,第三段由一个或多个辅音字母组成,第四段由一个或多个元音字母组成。
- [BZOJ 1038][ZJOI 2008]瞭望塔(半平面交)
- 20155224 聂小益 《基于Arm实验箱的接口测试和应用》 课程设计报告
- apifox设置获取token