summaryrefslogtreecommitdiff
path: root/VRCSDK3AvatarsLegacy/Assets/Avatars/Auri/materials/OptimizedShaders/body/Includes/CGI_PoiSpawnInVert.cginc
blob: 22547d717a8f0a2329d82138e89f068997147f9d (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
#ifndef POI_SPAWN_IN_FRAG
    #define POI_SPAWN_FRAG
    
    #ifndef SPAWN_IN_VARIABLES
        #define SPAWN_IN_VARIABLES
        
        float3 _SpawnInGradientStart;
        float3 _SpawnInGradientFinish;
        fixed _SpawnInAlpha;
        fixed _SpawnInNoiseIntensity;
        float3 _SpawnInEmissionColor;
        float _SpawnInEmissionOffset;
        float _SpawnInVertOffset;
        float _SpawnInVertOffsetOffset;
        float _EnableScifiSpawnIn;
        
    #endif
    //sampler2D _SpawnInNoiseVert; float4 _SpawnInNoiseVert_ST;
    
    float calculateGradientValueVert(float3 start, float3 finish, float3 localPos)
    {
        return inverseLerp3(start, finish, localPos);
    }
    
    void applySpawnInVert(inout float4 worldPos, inout float4 localPos, float2 uv)
    {
        
        if (_EnableScifiSpawnIn)
        {
            float noise = 0;
            float gradient = calculateGradientValueVert(_SpawnInGradientStart, _SpawnInGradientFinish, localPos.xyz);
            float inverseGradient = 1 - gradient;
            float alpha = gradient - _SpawnInAlpha - noise;
            worldPos.xyz += saturate(inverseGradient + _SpawnInAlpha + _SpawnInVertOffsetOffset -1) * float3(0, _SpawnInVertOffset, 0);
            localPos.xyz = mul(unity_WorldToObject, worldPos).xyz;
        }
        //float noise = tex2Dlod(_SpawnInNoise, float4(TRANSFORM_TEX(uv, _SpawnInNoise))).r * _SpawnInAlpha * _SpawnInNoiseIntensity;
    }
    
#endif