经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » unity » 查看文章
Unity Shader实现径向模糊效果
来源:jb51  时间:2021/8/9 10:07:08  对本文有异议

在游戏里面有很多模糊效果,像赛车类游戏。当你加速时,会发现2边的场景变模糊。如下图:

今天也来做一下径向模糊效果,首先创建一个Material,给它添加一个纹理后将Material拖到新建的Plane上。如图所示,可以看出模糊效果是从中心点由内往外扩散。接下来脑子里有了步骤

步骤一:定义径向模糊的中心点,通常取图像的正中心点。
步骤二:计算采样像素与中心点的距离,根据距离确定偏移程度,即离中心点越远,偏移量越大。
步骤三:将采样点的颜色值做平均求和。

  1. Shader "liulongling/motion" {
  2. Properties {
  3. _MainTex("纹理",2D)="while"{}
  4. _Level("强度",Range(0,100))=10
  5. }
  6. SubShader {
  7. Pass
  8. {
  9. CGPROGRAM
  10. #pragma vertex vert
  11. #pragma fragment frag
  12. #include "unitycg.cginc"
  13. sampler2D _MainTex;
  14. float _Level;
  15. struct v2f{
  16. fixed4 vertex:POSITION;
  17. fixed2 uv:TEXCOORD;
  18. };
  19. v2f vert(appdata_base v){
  20. v2f o;
  21. o.vertex=mul(UNITY_MATRIX_MVP,v.vertex);
  22. o.uv=v.texcoord;
  23. return o;
  24. }
  25. fixed4 frag(v2f i):COLOR{
  26. fixed4 c;
  27. fixed2 center=fixed2(.5,.5);
  28. fixed2 uv=i.uv-center;
  29. fixed3 c1=fixed3(0,0,0);
  30. for(fixed j=0;j<_Level;j++){
  31. c1+=tex2D(_MainTex,uv*(1-0.01*j)+center).rgb;
  32. }
  33. c.rgb=c1/_Level;
  34. c.a=1;
  35. return c;
  36. }
  37. ENDCG
  38. }
  39. }
  40. }

效果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号