summaryrefslogtreecommitdiff
path: root/VRCSDK3AvatarsLegacy/Assets/Avatars/Auri/materials/OptimizedShaders/nails/Includes/CGI_PoiShadowVert.cginc
blob: 9ec40a8db3dcb833ea04d340c20864f062cba8f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
float _EnableTouchGlow;
float _EnableBulge;
float _VertexManipulationHeightUV;

V2FShadow vertShadowCaster(VertexInputShadow v)
{
    V2FShadow o;
    UNITY_SETUP_INSTANCE_ID(v);
    #ifdef RALIV_PENETRATION
        applyRalivDynamicOrifaceSystem(v);
    #endif
    #ifdef AUTO_EXPOSURE
        applyLocalVertexTransformation(v.normal, v.vertex);
    #endif
    
    UNITY_INITIALIZE_OUTPUT(V2FShadow, o);
    UNITY_TRANSFER_INSTANCE_ID(v, o);
    UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
    
    o.localPos = v.vertex;
    o.worldPos = mul(unity_ObjectToWorld, o.localPos);
    
    #ifdef RALIV_PENETRATION
        applyRalivDynamicPenetrationSystem(o.localPos.rgb, v.normal.rgb, v);
    #endif
    
    o.modelPos = mul(unity_ObjectToWorld, float4(0, 0, 0, 1));
    o.uv = v.uv0;
    o.uv1 = v.uv1;
    o.uv2 = v.uv2;
    o.uv3 = v.uv3;
    
    
    float2 uvToUse = 0;
    
    if (float(0) == 0)
    {
        uvToUse = v.uv0.xy;
    }
    
    if(float(0) == 1)
    {
        uvToUse = v.uv1.xy;
    }
    
    if(float(0) == 2)
    {
        uvToUse = v.uv2.xy;
    }
    
    if(float(0) == 3)
    {
        uvToUse = v.uv3.xy;
    }
    #ifdef AUTO_EXPOSURE
        applyWorldVertexTransformation(o.worldPos, o.localPos, v.normal, uvToUse);
    #endif
    applyVertexGlitching(o.worldPos, o.localPos);
    applySpawnInVert(o.worldPos, o.localPos, v.uv0.xy);
    #ifdef AUTO_EXPOSURE
        applyVertexRounding(o.worldPos, o.localPos);
    #endif
    o.pos = UnityObjectToClipPos(o.localPos);
    o.grabPos = ComputeGrabScreenPos(o.pos);
    o.modelPos = mul(unity_ObjectToWorld, float4(0, 0, 0, 1));
    o.vertexColor = v.color;
    
    
    if(_EnableTouchGlow || _EnableBulge)
    {
        o.pos = UnityObjectToClipPos(float3(0, 0, -5));
        o.localPos.xyz = float3(0, 0, -5);
        o.worldPos = mul(unity_ObjectToWorld, o.localPos);
    }
    
    o.angleAlpha = 1;
    #ifdef POI_RANDOM
        o.angleAlpha = ApplyAngleBasedRendering(o.modelPos, o.worldPos);
    #endif
    
    
    o.pos = UnityClipSpaceShadowCasterPos(o.localPos, v.normal);
    o.pos = UnityApplyLinearShadowBias(o.pos);
    
    return o;
}