[Add] All in one shader
This commit is contained in:
+81
@@ -0,0 +1,81 @@
|
||||
#ifndef ALLIN1SPRITESHADERSRP_VERTEXPASS
|
||||
#define ALLIN1SPRITESHADERSRP_VERTEXPASS
|
||||
|
||||
v2f vert(appdata v)
|
||||
{
|
||||
#if RECTSIZE_ON
|
||||
v.vertex.xyz += (v.vertex.xyz * (_RectSize - 1.0));
|
||||
#endif
|
||||
|
||||
v2f o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
|
||||
#if BILBOARD_ON
|
||||
half3 camRight = mul((half3x3)unity_CameraToWorld, half3(1,0,0));
|
||||
half3 camUp = half3(0,1,0);
|
||||
#if BILBOARDY_ON
|
||||
camUp = mul((half3x3)unity_CameraToWorld, half3(0,1,0));
|
||||
#endif
|
||||
half3 localPos = v.vertex.x * camRight + v.vertex.y * camUp;
|
||||
|
||||
#if UNITY_VERSION >= 60000000
|
||||
localPos.xy *= unity_SpriteProps.xy;
|
||||
#endif
|
||||
o.vertex = TransformObjectToHClip(half4(localPos, 1).xyz);
|
||||
#else
|
||||
half3 localPos = v.vertex.xyz;
|
||||
#if UNITY_VERSION >= 60000000 && !defined(HDRP_PASS)
|
||||
localPos.xy *= unity_SpriteProps.xy;
|
||||
#endif
|
||||
o.vertex = TransformObjectToHClip(localPos);
|
||||
#endif
|
||||
o.uv = /*TRANSFORM_TEX(v.uv, _MainTex)*/v.uv * _MainTex_ScaleAndTiling.xy + _MainTex_ScaleAndTiling.zw;
|
||||
o.color = v.color;
|
||||
|
||||
half2 center = half2(0.5, 0.5);
|
||||
#if ATLAS_ON
|
||||
center = half2((_MaxXUV + _MinXUV) / 2.0, (_MaxYUV + _MinYUV) / 2.0);
|
||||
#endif
|
||||
|
||||
#if POLARUV_ON
|
||||
o.uv = v.uv - center;
|
||||
#endif
|
||||
|
||||
#if ROTATEUV_ON
|
||||
half2 uvC = v.uv;
|
||||
half cosAngle = cos(_RotateUvAmount);
|
||||
half sinAngle = sin(_RotateUvAmount);
|
||||
half2x2 rot = half2x2(cosAngle, -sinAngle, sinAngle, cosAngle);
|
||||
uvC -= center;
|
||||
o.uv = mul(rot, uvC);
|
||||
o.uv += center;
|
||||
#endif
|
||||
|
||||
#if OUTTEX_ON
|
||||
o.uvOutTex = CUSTOM_TRANSFORM_TEX(v.uv, _OutlineTex_ScaleAndTiling);
|
||||
#endif
|
||||
|
||||
#if OUTDIST_ON
|
||||
o.uvOutDistTex = CUSTOM_TRANSFORM_TEX(v.uv, _OutlineDistortTex_ScaleAndTiling);
|
||||
#endif
|
||||
|
||||
#if DISTORT_ON
|
||||
o.uvDistTex = CUSTOM_TRANSFORM_TEX(v.uv, _DistortTex_ScaleAndTiling);
|
||||
#endif
|
||||
|
||||
#if FOG_ON
|
||||
o.fogCoord = 0;
|
||||
#if defined(FOG_LINEAR) || defined(FOG_EXP) || defined(FOG_EXP2)
|
||||
o.fogCoord = ComputeFogFactor(o.vertex.z);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
o.positionWS = TransformObjectToWorld(v.vertex.xyz);
|
||||
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user