Unity shader学习之Grab Pass实现玻璃效果
2017-07-18 16:49
951 查看
GrabPass可将当前屏幕的图像绘制在一张纹理中,可用来实现玻璃效果。
转载请注明出处:http://www.cnblogs.com/jietian331/p/7201324.html
shader如下:
效果如下:
转载请注明出处:http://www.cnblogs.com/jietian331/p/7201324.html
shader如下:
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "Custom/Glass" { Properties { _NormalMap("Normal Map", 2D) = "bump" {} _Distortion("Distortion", Range(0, 100)) = 50 } SubShader { Tags { "Queue" = "Transparent" "RenderType" = "Transparent" } GrabPass { "_GrabTex" } Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _GrabTex; float4 _GrabTex_TexelSize; sampler2D _NormalMap; float _Distortion; struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; float4 scrPos : TEXCOORD1; }; v2f vert(appdata v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); o.uv = v.uv; o.scrPos = ComputeGrabScreenPos(o.pos); return o; } fixed4 frag(v2f i) : SV_TARGET { float3 bump = UnpackNormal(tex2D(_NormalMap, i.uv)); float2 offset = bump.xy * _GrabTex_TexelSize.xy * _Distortion; fixed4 albedo = tex2D(_GrabTex, (i.scrPos.xy + offset) / i.scrPos.w); return albedo; } ENDCG } } }
效果如下:
相关文章推荐
- Unity GrabPass 实现高斯模糊毛玻璃
- VC实现去掉vista窗口的玻璃效果
- vb.net 在windows7下实现毛玻璃效果+发光文字
- 今天学习“Asp.net"页面加载中"效果实现”遇到的问题
- Unity3d 一个简单的玻璃效果实现!
- JavaScript学习摘记(实现标题左右滚动效果)
- CSS学习笔记-附加篇( CSS+JS实现的选项卡效果(html组件))
- win7下 窗体玻璃效果的实现和WindowStyle None模式下的移动 wpf
- 网上找的例子实现玻璃效果.
- C# 分别在windows form和wpf中实现windows 7 玻璃(areo)效果
- Servlet学习:利用Cookie实现两周内不用重复登录的效果
- Android学习札记5:利用Pattern和SpannableString实现高亮关键字效果
- ios学习--详解IPhone动画效果类型及实现方法
- QT学习 第一章:基本对话框--实现QQ抽屉效果
- vc实现毛玻璃效果
- OpenCV编写毛玻璃效果实现(需进一步提高)
- Flex3学习轨迹:复合效果的简单实现
- jQuery入门学习之实现滑动效果:slideUp()和slideDown()小总结
- WPF 学习笔记 Areo玻璃效果的接触
- JQuery学习笔记 实现图片翻转效果和TAB标签切换效果第1/2页