毛玻璃是很多项目需要的效果,以下是毛玻璃的效果代码:

Shader "Custom/WaterBlur" {  Properties {  _blurSizeXY("BlurSizeXY", Range(0,15)) = 2
}  SubShader {  Tags {"IgnoreProjector"="True""Queue"="Transparent""RenderType"="Transparent""CanUseSpriteAtlas"="True""PreviewType"="Plane"}//获取屏幕纹理,必须的GrabPass { }  // Render the object with the texture generated above  Pass {  CGPROGRAM  #pragma debug  #pragma vertex vert  #pragma fragment frag   #pragma target 3.0  //屏幕纹理定义sampler2D _GrabTexture : register(s0);  float _blurSizeXY;  struct data {  float4 vertex : POSITION;  float3 normal : NORMAL;  };  struct v2f {  float4 position : POSITION;  float4 screenPos : TEXCOORD0;  };  v2f vert(data i){  v2f o;  o.position = UnityObjectToClipPos(i.vertex);  o.screenPos = o.position;  return o;  }  //核心逻辑就是使用多次采样纹理,然后混合多次,采样的对象是屏幕纹理,实现高斯模糊half4 frag( v2f i ) : COLOR  {  //模糊的原理就是错开uv来采样,实现模糊float2 screenPos = i.screenPos.xy / i.screenPos.w;  float depth= _blurSizeXY*0.0005;  screenPos.x = (screenPos.x + 1) * 0.5;  screenPos.y = 1-(screenPos.y + 1) * 0.5;  half4 sum = half4(0.0h,0.0h,0.0h,0.0h);     sum += tex2D( _GrabTexture, float2(screenPos.x-5.0 * depth, screenPos.y+3.0 * depth)) * 0.025;      sum += tex2D( _GrabTexture, float2(screenPos.x+5.0 * depth, screenPos.y-3.0 * depth)) * 0.025;  sum += tex2D( _GrabTexture, float2(screenPos.x-4.0 * depth, screenPos.y+2.5 * depth)) * 0.05;  sum += tex2D( _GrabTexture, float2(screenPos.x+4.0 * depth, screenPos.y-2.5 * depth)) * 0.05;  sum += tex2D( _GrabTexture, float2(screenPos.x-3.0 * depth, screenPos.y+2.0 * depth)) * 0.09;  sum += tex2D( _GrabTexture, float2(screenPos.x+3.0 * depth, screenPos.y-2.0 * depth)) * 0.09;  sum += tex2D( _GrabTexture, float2(screenPos.x-2.0 * depth, screenPos.y+1.5 * depth)) * 0.12;  sum += tex2D( _GrabTexture, float2(screenPos.x+2.0 * depth, screenPos.y-1.5 * depth)) * 0.12;  sum += tex2D( _GrabTexture, float2(screenPos.x-1.0 * depth, screenPos.y+1.0 * depth)) *  0.15;  sum += tex2D( _GrabTexture, float2(screenPos.x+1.0 * depth, screenPos.y-1.0 * depth)) *  0.15;  sum += tex2D( _GrabTexture, screenPos-3.0 * depth) * 0.025;      sum += tex2D( _GrabTexture, screenPos-2.5 * depth) * 0.05;  sum += tex2D( _GrabTexture, screenPos-2.0 * depth) * 0.09;  sum += tex2D( _GrabTexture, screenPos-1.5 * depth) * 0.12;  sum += tex2D( _GrabTexture, screenPos-1.0 * depth) * 0.15;      sum += tex2D( _GrabTexture, screenPos) * 0.16;   sum += tex2D( _GrabTexture, screenPos+3.0 * depth) * 0.15;  sum += tex2D( _GrabTexture, screenPos+2.5 * depth) * 0.12;  sum += tex2D( _GrabTexture, screenPos+2.0 * depth) * 0.09;  sum += tex2D( _GrabTexture, screenPos+1.5 * depth) * 0.05;  sum += tex2D( _GrabTexture, screenPos+1.0 * depth) * 0.025;           return sum/2;  }  ENDCG  }  }  Fallback Off
}

这是实现效果:

我们可以用Dotween插件来控制模糊的程度,可以实现很好的效果,有如下代码:

    /// <summary>/// 主页按钮点击回调/// </summary>private void HimebtnHundler(){_leftpic.transform.DOLocalMoveX(-746f, 1);_rightpic.transform.DOLocalMoveX(787f, 1);_material.DOFloat(0, "_blurSizeXY", 1);_word.GetComponent<CanvasGroup>().DOFade(0, 1f);StartCoroutine(CloseErrorView());}

这段代码,主要是增加CanvasGroup组件,实现对整个场景的alpha控制:

主要用DOFade来实现CanvasGroup,用DOFloat对材质球上的shader属性的控制!
大家有兴趣的可以加我的群《601408323》!

UnityShader学习教程之<毛玻璃效果解析>相关推荐

  1. UnityShader学习教程之<矩阵的左乘还是右乘所导致的效果问题>

    总结:矩阵的左乘还是右乘 首先,在<3d数学基础:图形与游戏开发>一书的第七章矩阵的7.1.7节中讲到了关于矩阵和向量的乘法问题.结论是"行向量左乘矩阵时,结果是行向量,列向量右 ...

  2. 写给 Web 开发者的深度学习教程 - 向量化 矩阵

    前言 在这个科技发展日新月异的时代,行业的宠儿与弃儿就如同手掌的两面,只需轻轻一翻,从业者的境遇便会有天翻地覆的改变. 人工智能作为近两年来业界公认的热门领域,不同于之前火热的移动端开发或前端开发,其 ...

  3. UnityShader学习教程之<详解uv坐标,c#类似uv坐标的值以及贴图操作>

    基础篇(五) 一.uv坐标 工作的时候一直都听到同事们再说uv坐标,其实我们对这个词很熟悉,但是说到真正是什么,却发现自己了解的并不透彻,写一篇博客,梳理下基础,了解uv到底是干嘛的! 1.uv是什么 ...

  4. UnityShader学习教程之<顶点膨胀效果 局部变胖实现思路>

    方法一:使用顶点颜色实现 建模的时候和模型师沟通一下,让他们把需要膨胀的部分的顶点颜色设置为指定的颜色,然后我们再shader里面获取到之后,在统一处理 注意:我们对于顶点的处理只能写在顶点着色器里面 ...

  5. 终极版Python学习教程:一篇文章讲清楚Python虚拟环境

    我在之前写过一篇Python学习教程,说过新手往往没有注意环境隔离,导致Python项目包与包之间冲突. 并且Python2与3代码执行有问题等等.鉴于此我决定今天的Python学习教程给大家聊聊关于 ...

  6. 深度学习教程(6) | 神经网络优化算法(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/35 本文地址:https://www.showmeai.tech/article-d ...

  7. proteus学习教程大全

    proteus学习教程大全 proteus学习资源大全,热衷于分享资料,资源共享,这个proteus也是收集了很久的资料,一直以来学习嵌入式就很枯燥,幸好有一起能够学习和资源共享的小伙伴共同交流技术上 ...

  8. 深度学习教程(10) | 卷积神经网络解读(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/35 本文地址:http://www.showmeai.tech/article-det ...

  9. LaTeX中文学习教程 笔记

    视频地址: LaTeX中文学习教程(用于论文或稿件排版,15集全) 用LaTeX写期刊论文的详细教程 一.基本结构 % 导言区 \documentclass{article}%book,article ...

最新文章

  1. [导入]Nhibernate引入自定义Membership和Role
  2. 【Android 异步操作】FutureTask 分析 ( Future 接口解析 | Runnable 接口解析 | Callable 接口解析 )
  3. POJ 3608 Bridge Across Islands 《挑战程序设计竞赛》
  4. app测试-兼容性测试与云测试技术
  5. Python中if-else语句的多种写法
  6. 阿里员工自愿加班却遭同事骂!网友们炸锅了
  7. Kmeans算法解析(非常详细)
  8. js获取html标签中的数据
  9. solidworks 2016 crack
  10. 解决 ElementUI form表单在dialog中重置表单,无法正确重置的问题
  11. 使用Photoshop制作证件照
  12. 6python项目 体脂率计算优化2
  13. EMQX的Web管理后台-Dashboard
  14. 手机网络通过USB共享给台式机电脑
  15. Python 自然语言处理笔记(五)——信息检索系统,基于Lucene实现
  16. linux安装系统如何查看硬盘,如何检查Linux系统服务器的硬盘是SSD还是HDD?
  17. IP、MAC地址,交换机路由器,ARP、NAT协议串讲
  18. Android Room提示 错误: Not sure how to convert a Cursor to this method's return type的原因及解决办法
  19. 全球与中国N-苯基马来酰亚胺粉市场深度研究分析报告
  20. jstree Api 中文翻译文档

热门文章

  1. html自动隐藏滚动条,隐藏HTML页面上的滚动条
  2. 测试开发技术(一)—— 测试设计
  3. word主控文档计算机二级,2017高会《职称计算机》Word 2003:主控文档和子文档
  4. 16个你不知道的Win8.1技巧
  5. python智能办公_Python智能办公-发送电邮
  6. 好用点的电脑便签有哪些
  7. ubuntu 系统使用过程中发现桌面突然放大,屏幕跟着鼠标走
  8. 【挖坑记】JZOJ 4727 挺进
  9. 迷你计算机可玩游戏,迷你电脑小主机打游戏可还行?DD
  10. 关于U3D的最新版本的更新问题