全息扫描shader 
电脑端很棒,需要控制两个参数,不会发动图,抱歉,目前不支持移动端,如果有大佬能改下就更好了
shader 全息 扫描
在这里插入代码片
// Note: Manually altering this data may prevent you from opening it in Shader Forge
Shader "Kaima/Dissolve/DirectionAsh" {
Properties {
_MainTex ("MainTex", 2D) = "white" {}
_NormalMap ("NormalMap", 2D) = "bump" {}
_EmissionTex ("EmissionTex", 2D) = "white" {}
[HDR]_EmissionColor ("EmissionColor", Color) = (0.5,0.5,0.5,1)
_EmissionLineWidth ("EmissionLineWidth", Range(0, 1)) = 0.739786
[MaterialToggle] _OppositeDir ("OppositeDir", Float ) = 1
_EmissionLineSpeed_U ("EmissionLineSpeed_U", Range(-1, 1)) = 0.04
_EmissionLineSpeed_V ("EmissionLineSpeed_V", Range(-1, 1)) = -0.2
_Fresnel ("Fresnel", Range(0, 5)) = 0
[HDR]_FresnelColor ("Fresnel Color", Color) = (0.1544118,0.5451315,1,1)
[MaterialToggle] _Refraction ("Refraction", Float ) = 1
_RefractionStrength ("RefractionStrength", Range(0, 1)) = 0.06843606
_TexColorLerp ("TexColorLerp", Range(0, 1)) = 0
[MaterialToggle] _AddNoise ("AddNoise", Float ) = 1
_NoiseColor ("NoiseColor", Color) = (0.5,0.5,0.5,1)
_NoiseSpeed ("NoiseSpeed", Range(-1, 1)) = 0.4512348
_NoiseSize ("NoiseSize", Range(1, 5)) = 2.572649
[MaterialToggle] _AddLine ("AddLine", Float ) = 1
_LineWidth ("LineWidth", Range(1, 10)) = 6.336524
_LineTiling ("LineTiling", Float ) = 10
_LineSpeed ("LineSpeed", Range(-10, 10)) = -2
_LineBrightness ("LineBrightness", Range(1, 20)) = 2
_DissolveMask ("DissolveMask", 2D) = "white" {}
_Switch ("Switch", Range(0, 1)) = 1
_GlobalAlpha ("GlobalAlpha", Range(0, 1)) = 1
[HideInInspector]_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
}
SubShader {
Tags {
"IgnoreProjector"="True"
"Queue"="Transparent"
"RenderType"="Transparent"
}
GrabPass{ }
Pass {
Name "FORWARD"
Tags {
"LightMode"="ForwardBase"
}
Blend SrcAlpha OneMinusSrcAlpha
ZWrite Off
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// #define UNITY_PASS_FORWARDBASE
#include "UnityCG.cginc"
#pragma multi_compile_fwdbase
#pragma multi_compile_fog
#pragma only_renderers d3d9 d3d11 glcore gles metal xboxone ps4
#pragma target 3.0
uniform sampler2D _GrabTexture;
uniform fixed _EmissionLineWidth;
uniform half _Fresnel;
uniform fixed4 _FresnelColor;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
uniform sampler2D _EmissionTex; uniform float4 _EmissionTex_ST;
uniform fixed4 _EmissionColor;
uniform fixed _Switch;
uniform sampler2D _NormalMap; uniform float4 _NormalMap_ST;
uniform fixed _Refraction;
uniform fixed _RefractionStrength;
uniform sampler2D _DissolveMask; uniform float4 _DissolveMask_ST;
uniform fixed _TexColorLerp;
uniform fixed _NoiseSpeed;
uniform half _NoiseSize;
uniform fixed4 _NoiseColor;
uniform fixed _AddNoise;
uniform half _LineWidth;
uniform half _LineTiling;
uniform float _LineSpeed;
uniform half _LineBrightness;
uniform fixed _AddLine;
uniform fixed _EmissionLineSpeed_U;
uniform fixed _EmissionLineSpeed_V;
uniform fixed _GlobalAlpha;
uniform fixed _OppositeDir;
struct VertexInput {
float4 vertex : POSITION;
float3 normal : NORMAL;
float4 tangent : TANGENT;
float2 texcoord0 : TEXCOORD0;
float2 texcoord1 : TEXCOORD1;
};
struct VertexOutput {
float4 pos : SV_POSITION;
float2 uv0 : TEXCOORD0;
float2 uv1 : TEXCOORD1;
float4 posWorld : TEXCOORD2;
float3 normalDir : TEXCOORD3;
float3 tangentDir : TEXCOORD4;
float3 bitangentDir : TEXCOORD5;
float4 projPos : TEXCOORD6;
UNITY_FOG_COORDS(7)
};
VertexOutput vert (VertexInput v) {
VertexOutput o = (VertexOutput)0;
o.uv0 = v.texcoord0;
o.uv1 = v.texcoord1;
o.normalDir = UnityObjectToWorldNormal(v.normal);
o.tangentDir = normalize( mul( unity_ObjectToWorld, float4( v.tangent.xyz, 0.0 ) ).xyz );
o.bitangentDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
o.posWorld = mul(unity_ObjectToWorld, v.vertex);
o.pos = UnityObjectToClipPos( v.vertex );
UNITY_TRANSFER_FOG(o,o.pos);
o.projPos = ComputeScreenPos (o.pos);
COMPUTE_EYEDEPTH(o.projPos.z);
return o;
}
float4 frag(VertexOutput i) : COLOR {
i.normalDir = normalize(i.normalDir);
float3x3 tangentTransform = float3x3( i.tangentDir, i.bitangentDir, i.normalDir);
float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
half3 _NormalMap_var = UnpackNormal(tex2D(_NormalMap,TRANSFORM_TEX(i.uv0, _NormalMap)));
float3 normalLocal = _NormalMap_var.rgb;
float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
float2 sceneUVs = (i.projPos.xy / i.projPos.w) + (_GlobalAlpha*(lerp(fixed3(0,0,1),(_NormalMap_var.rgb*normalDirection*0.5),_RefractionStrength)*_Refraction).rg);
float4 sceneColor = tex2D(_GrabTexture, sceneUVs);
// Lighting:
// Emissive:
half4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex));
half Fresned = pow(1.0-max(0,dot(normalDirection, viewDirection)),exp(_Fresnel));
float4 Time = _Time;
half speedMul = 10.0;
float2 objUV = float2(i.uv1.r,(i.uv1.g*100.0));
half2 Noise_1 = objUV.rg;
half NoiseSizeRemap = (_NoiseSize*-49.9875+249.9875);
half2 Noise_2 = objUV.rg;
float2 NoiseUV = (floor(((_NoiseSpeed*Time.g*speedMul)+float2((Noise_1.r*1.2*NoiseSizeRemap),(abs(sin(Noise_1.g))*NoiseSizeRemap))))+floor((float2((NoiseSizeRemap*0.5*Noise_2.r),(NoiseSizeRemap*abs(sin(Noise_2.g))))+((-1*_NoiseSpeed)*Time.g*speedMul))));
float2 NoiseAppend_skew = NoiseUV + 0.2127+NoiseUV.x*0.3713*NoiseUV.y;
float2 NoiseAppend_rnd = 4.789*sin(489.123*(NoiseAppend_skew));
float NoiseAppend = frac(NoiseAppend_rnd.x*NoiseAppend_rnd.y*(1+NoiseAppend_skew.x));
float node_3180 = pow((NoiseAppend*1.2),2.5);
half UV_Y = i.uv1.g;
float2 node_703 = (i.uv1+float2((_EmissionLineSpeed_U*Time.g),(Time.g*_EmissionLineSpeed_V)));
fixed4 _DissolveMask_var = tex2D(_DissolveMask,TRANSFORM_TEX(node_703, _DissolveMask));
fixed MaskAdd = (((lerp( UV_Y, (1.0 - UV_Y), _OppositeDir )+(_Switch*1.7+-1.1))*(_EmissionLineWidth*-45.0+50.0))+dot(_DissolveMask_var.rgb,float3(0.3,0.59,0.11)));
half DisMask = saturate((0.25+MaskAdd));
float4 node_5597 = _Time;
fixed2 EmissionUV = (i.uv1+node_5597.g*float2(0,-0.15));
fixed4 _EmissionTex_var = tex2D(_EmissionTex,TRANSFORM_TEX(EmissionUV, _EmissionTex));
float3 emissive = (lerp(_MainTex_var.rgb,(lerp(_EmissionColor.rgb,((_MainTex_var.rgb*_EmissionColor.rgb*_EmissionColor.a)+(_FresnelColor.rgb*Fresned)),_TexColorLerp)+(_NoiseColor.rgb*node_3180*_AddNoise)+(_NoiseColor.rgb*_LineBrightness*saturate((1.0 - (abs(sin(((Time.g*_LineSpeed)+(i.uv1.g*_LineTiling))))*(_LineWidth*-11.0+111.0))))*_AddLine*node_3180)),DisMask)+(_EmissionTex_var.rgb*_EmissionColor.rgb*saturate((1.0 - abs(MaskAdd)))));
float3 finalColor = emissive;
fixed4 finalRGBA = fixed4(lerp(sceneColor.rgb, finalColor,(_FresnelColor.a*lerp(1.0,(Fresned+_EmissionColor.a),DisMask)*_GlobalAlpha)),1);
UNITY_APPLY_FOG(i.fogCoord, finalRGBA);
return finalRGBA;
}
ENDCG
}
}
FallBack "Particles/Additive"
CustomEditor "ShaderForgeMaterialInspector"
}