OpenGL Shader实例分析(3)等待标识效果

所属分类: 软件编程 / Android 阅读数: 45
收藏 0 赞 0 分享

本文实例为大家分享了OpenGL Shader实例,等待标识,不过效率估计不是很高。结果如下:

代码:

Shader "stalendp/waitIcons" { 
  CGINCLUDE  
  
  #include "UnityCG.cginc"     
  #pragma target 3.0  
  struct v2f {  
   float4 pos:SV_POSITION;  
   float2 uv : TEXCOORD0;  
  };  
  
  v2f vert(appdata_base v) {  
   v2f o; 
   o.pos = mul (UNITY_MATRIX_MVP, v.vertex); 
   o.uv = v.texcoord.xy; 
   return o;  
  }  
  
  fixed calcDot(fixed a, fixed ca, fixed2 uv) {
   a /= 57.295779513;
   ca /= 57.295779513;
   fixed tt = 180/57.295779513;
   uv = (fixed2(cos(a), sin(a)) * 0.2+ uv)*10;
   fixed adit = tt*2*step(tt, a-ca);
   fixed r = 1-step(ca + adit, a);
   r *= lerp(0.2, -1, saturate((ca-a+adit)/25))*2;
   return smoothstep(r-0.2, r, length(uv.xy));
  }
  
  fixed4 frag(v2f input) : COLOR0 {  
   float2 uv = input.uv.xy - float2(0.5); 
   float rx = fmod(uv.x, 0.4); 
   float ry = fmod(uv.y, 0.4); 
   float mx = step(0.4, abs(uv.x)); 
   float my = step(0.4, abs(uv.y)); 
   float alpha = 1- mx*my*step(0.1, length(half2(rx,ry))); 
   alpha*=0.9; 
   
   fixed4 foreColor = fixed4(1);
   fixed4 bgColor = fixed4(fixed3(0.4),alpha);
   fixed4 result = bgColor;
   
   fixed ca = fmod(_Time.y, 2)*180;
   
 bgColor = lerp(foreColor, bgColor, calcDot(0, ca, uv));
 bgColor = lerp(foreColor, bgColor, calcDot(30, ca, uv));
 bgColor = lerp(foreColor, bgColor, calcDot(60, ca, uv));
 bgColor = lerp(foreColor, bgColor, calcDot(90, ca, uv));
 bgColor = lerp(foreColor, bgColor, calcDot(120, ca, uv));
 bgColor = lerp(foreColor, bgColor, calcDot(150, ca, uv));
 bgColor = lerp(foreColor, bgColor, calcDot(180, ca, uv));
 bgColor = lerp(foreColor, bgColor, calcDot(210, ca, uv));
 bgColor = lerp(foreColor, bgColor, calcDot(240, ca, uv));
 bgColor = lerp(foreColor, bgColor, calcDot(270, ca, uv));
 bgColor = lerp(foreColor, bgColor, calcDot(300, ca, uv));
 bgColor = lerp(foreColor, bgColor, calcDot(330, ca, uv));
   
   return bgColor; 
  }  
 ENDCG  
  
 SubShader {  
  LOD 200 
  Tags {"Queue" = "Transparent"} 
  ZWrite Off 
  Blend SrcAlpha OneMinusSrcAlpha  
  Pass {  
   CGPROGRAM  
  
   #pragma vertex vert  
   #pragma fragment frag  
   #pragma fragmentoption ARB_precision_hint_fastest   
  
   ENDCG  
  }  
  
 }   
 FallBack Off  
} 

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

更多精彩内容其他人还在看

Android 自定义球型水波纹带圆弧进度效果(实例代码)

最近小编接到一个这样的需求,需要实现一个圆形水波纹,带进度,两层水波纹需要渐变显示,且外围有一个圆弧进度。今天小编给大家分享实例代码,感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

Flutter 实现下拉刷新上拉加载的示例代码

这篇文章主要介绍了Flutter 实现下拉刷新上拉加载的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Windows实现Flutter环境搭建及配置这一篇就够了

这篇文章主要介绍了Windows实现Flutter环境搭建及配置这一篇就够了,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android利用碎片fragment实现底部标题栏(Github模板开源)

Fragment可以作为Activity的组成部分,一个Activity可以有多个Fragment,这篇文章主要介绍了Android利用碎片fragment实现底部标题栏(Github模板开源),需要的朋友可以参考下
收藏 0 赞 0 分享

android studio 的下拉菜单Spinner使用详解

这篇文章主要介绍了android studio 的下拉菜单Spinner使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

解析Android 8.1平台SystemUI 导航栏加载流程

这篇文章主要介绍了Android 8.1平台SystemUI 导航栏加载流程,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿微信录音功能

这篇文章主要为大家详细介绍了Android仿微信录音功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android仿微信键盘切换效果

这篇文章主要为大家详细介绍了Android仿微信键盘切换效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android超清晰6.0权限申请AndPermission

这篇文章主要介绍了Android超清晰6.0权限申请AndPermission,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android仿微信录制语音功能

这篇文章主要介绍了Android仿微信录制语音功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多