当前位置: 移动技术网 > IT编程>移动开发>Android > OpenGL Shader实例分析(3)等待标识效果

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

2019年07月29日  | 移动技术网IT编程  | 我要评论

异能天罚,梁光烈打田凤山,中文版犬夜叉

本文实例为大家分享了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  
} 

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网