首页 > 系统 > Android > 正文

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

2019-10-21 21:24:59
字体:
来源:转载
供稿:网友

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

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  } 

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


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表