200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > ShadowGun Shaders

ShadowGun Shaders

时间:2019-02-15 03:07:58

相关推荐

ShadowGun Shaders

负责特效:真牛X

Shader"MADFINGER/Transparent/BlinkingGodRaysBillboarded"{

Properties{

_MainTex("Basetexture",2D)="white"{}

_FadeOutDistNear("Nearfadeoutdist",float)=10

_FadeOutDistFar("Farfadeoutdist",float)=10000

_Multiplier("Colormultiplier",float)=1

_Bias("Bias",float)=0

_TimeOnDuration("ONduration",float)=0.5

_TimeOffDuration("OFFduration",float)=0.5

_BlinkingTimeOffsScale("Blinkingtimeoffsetscale(seconds)",float)=5

_SizeGrowStartDist("Sizegrowstartdist",float)=5

_SizeGrowEndDist("Sizegrowenddist",float)=50

_MaxGrowSize("Maxgrowsize",float)=2.5

_NoiseAmount("Noiseamount(whenzero,pulsewaveisused)",Range(0,0.5))=0

_VerticalBillboarding("Verticalbillboardingamount",Range(0,1))=1

_ViewerOffset("Vieweroffset",float)=0

_Color("Color",Color)=(1,1,1,1)

}

SubShader{

Tags{"Queue"="Transparent""IgnoreProjector"="True""RenderType"="Transparent"}

BlendOneOne

CullOffLightingOffZWriteOffFog{Color(0,0,0,0)}

LOD100

CGINCLUDE

#include"UnityCG.cginc"

sampler2D_MainTex;

float_FadeOutDistNear;

float_FadeOutDistFar;

float_Multiplier;

float_Bias;

float_TimeOnDuration;

float_TimeOffDuration;

float_BlinkingTimeOffsScale;

float_SizeGrowStartDist;

float_SizeGrowEndDist;

float_MaxGrowSize;

float_NoiseAmount;

float_VerticalBillboarding;

float_ViewerOffset;

float4_Color;

structv2f{

float4pos:SV_POSITION;

float2uv:TEXCOORD0;

fixed4color:TEXCOORD1;

};

voidCalcOrthonormalBasis(float3dir,outfloat3right,outfloat3up)

{

up=abs(dir.y)>0.999f?float3(0,0,1):float3(0,1,0);

right=normalize(cross(up,dir));

up=cross(dir,right);

}

floatCalcFadeOutFactor(floatdist)

{

floatnfadeout=saturate(dist/_FadeOutDistNear);

floatffadeout=1-saturate(max(dist-_FadeOutDistFar,0)*0.2);

ffadeout*=ffadeout;

nfadeout*=nfadeout;

nfadeout*=nfadeout;

nfadeout*=ffadeout;

returnnfadeout;

}

floatCalcDistScale(floatdist)

{

floatdistScale=min(max(dist-_SizeGrowStartDist,0)/_SizeGrowEndDist,1);

returndistScale*distScale*_MaxGrowSize;

}

v2fvert(appdata_fullv)

{

v2fo;

#if0

//cheapviewspacebillboarding

float3centerOffs=float3(float(0.5).xx-v.color.rg,0)*v.texcoord1.xyy;

float3BBCenter=v.vertex+centerOffs.xyz;

float3viewPos=mul(UNITY_MATRIX_MV,float4(BBCenter,1))-centerOffs;

#else

float3centerOffs=float3(float(0.5).xx-v.color.rg,0)*v.texcoord1.xyy;

float3centerLocal=v.vertex.xyz+centerOffs.xyz;

float3viewerLocal=mul(_World2Object,float4(_WorldSpaceCameraPos,1));

float3localDir=viewerLocal-centerLocal;

localDir[1]=lerp(0,localDir[1],_VerticalBillboarding);

floatlocalDirLength=length(localDir);

float3rightLocal;

float3upLocal;

CalcOrthonormalBasis(localDir/localDirLength,rightLocal,upLocal);

floatdistScale=CalcDistScale(localDirLength)*v.color.a;

float3BBNormal=rightLocal*v.normal.x+upLocal*v.normal.y;

float3BBLocalPos=centerLocal-(rightLocal*centerOffs.x+upLocal*centerOffs.y)+BBNormal*distScale;

BBLocalPos+=_ViewerOffset*localDir;

#endif

floattime=_Time.y+_BlinkingTimeOffsScale*v.color.b;

floatfracTime=fmod(time,_TimeOnDuration+_TimeOffDuration);

floatwave=smoothstep(0,_TimeOnDuration*0.25,fracTime)*(1-smoothstep(_TimeOnDuration*0.75,_TimeOnDuration,fracTime));

floatnoiseTime=time*(6.2831853f/_TimeOnDuration);

floatnoise=sin(noiseTime)*(0.5f*cos(noiseTime*0.6366f+56.7272f)+0.5f);

floatnoiseWave=_NoiseAmount*noise+(1-_NoiseAmount);

wave=_NoiseAmount<0.01f?wave:noiseWave;

wave+=_Bias;

o.uv=v.texcoord.xy;

o.pos=mul(UNITY_MATRIX_MVP,float4(BBLocalPos,1));

o.color=CalcFadeOutFactor(localDirLength)*_Color*_Multiplier*wave;

returno;

}

ENDCG

Pass{

CGPROGRAM

#pragmavertexvert

#pragmafragmentfrag

#pragmafragmentoptionARB_precision_hint_fastest

fixed4frag(v2fi):COLOR

{

returntex2D(_MainTex,i.uv.xy)*i.color;

}

ENDCG

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
ShadowGun代码

ShadowGun代码

2021-05-18

ShadowGun Shader学习

ShadowGun Shader学习

2021-12-09

ShadowGun 图形技术分析

ShadowGun 图形技术分析

2021-11-17

ShadowGun 飘动的旗帜

ShadowGun 飘动的旗帜

2018-06-30

扩展阅读