这是一个仿照别人的代码稍作修改做出来的气泡效果。
基本思路是这样子的:
1.代开透明效果。
Tags{"queue" = "Transparent"}
tags{"lightmode" = "forwardbase"}
blend SrcAlpha OneMinusSrcAlpha
2.使用菲涅尔反射,实现球体的内发光。
float3 N = UnityObjectToWorldNormal(IN.normal);
float3 V = normalize(UnityWorldSpaceViewDir(IN.wpos));
float bright = pow(1 - saturate(dot(N, V)), _Scale);
fixed4 col = _Color;
col.a *= bright;
3.仿照金属的高光点,在球体的光照入射点形成一个高光点,与此同时,把原本被舍弃出射点光也进行求平方,形成一块亮区域。
fixed3 reflectDir = normalize(reflect(-normalize(_WorldSpaceLightPos0.xyz), N));
fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - IN.wpos.xyz);
fixed3 specular = _LightColor0.rgb * _Specular.rbg * pow(dot(reflectDir, V), _Gloss);
col.rgb