OSDN Git Service

Added Assets for main menu
[mindgames/Mindgames_main.git] / Mindgames / Library / PackageCache / com.unity.visualeffectgraph@6.9.0-preview / Shaders / VFXCommonOutput.cginc
1 VFXUVData GetUVData(VFX_VARYING_PS_INPUTS i) // uvs are provided from interpolants
2 {
3     VFXUVData data = (VFXUVData)0;
4 #ifdef VFX_VARYING_UV
5     data.uvs.xy = i.VFX_VARYING_UV.xy;
6 #if USE_FLIPBOOK_INTERPOLATION && defined(VFX_VARYING_FRAMEBLEND)
7     data.uvs.zw = i.VFX_VARYING_UV.zw;
8     data.blend = i.VFX_VARYING_FRAMEBLEND;
9 #if USE_FLIPBOOK_MOTIONVECTORS && defined(VFX_VARYING_MOTIONVECTORSCALE)
10     float2 mvPrev = -(SampleTexture(VFX_SAMPLER(motionVectorMap), data.uvs.xy).rg * 2 - 1) * i.VFX_VARYING_MOTIONVECTORSCALE * data.blend;
11     float2 mvNext = (SampleTexture(VFX_SAMPLER(motionVectorMap), data.uvs.zy).rg * 2 - 1) * i.VFX_VARYING_MOTIONVECTORSCALE * (1.0-data.blend);
12     data.mvs.xy = mvPrev;
13     data.mvs.zw = mvNext;
14 #endif
15 #endif
16 #endif
17     return data;
18 }
19
20 VFXUVData GetUVData(VFX_VARYING_PS_INPUTS i,float2 uv) // uvs are provided from ps directly
21 {
22 #ifdef VFX_VARYING_FLIPBOOKSIZE
23     float2 flipBookSize = i.VFX_VARYING_FLIPBOOKSIZE;
24 #else
25     float2 flipBookSize = float2(1, 1);
26 #endif
27
28 #ifdef VFX_VARYING_INVFLIPBOOKSIZE
29     float2 invFlipBookSize = i.VFX_VARYING_INVFLIPBOOKSIZE;
30 #else
31     float2 invFlipBookSize = 1.0f / flipBookSize;
32 #endif
33
34 #ifdef VFX_VARYING_TEXINDEX
35     float texIndex = i.VFX_VARYING_TEXINDEX;
36 #else
37     float texIndex = 0.0f;
38 #endif
39
40     return GetUVData(flipBookSize, invFlipBookSize, uv, texIndex);
41 }
42
43 float4 VFXGetParticleColor(VFX_VARYING_PS_INPUTS i)
44 {
45     float4 color = 1.0f;
46     #if VFX_NEEDS_COLOR_INTERPOLATOR
47     #ifdef VFX_VARYING_COLOR
48     color.rgb *= i.VFX_VARYING_COLOR;
49     #endif
50     #ifdef VFX_VARYING_ALPHA
51     color.a *= i.VFX_VARYING_ALPHA;
52     #endif
53     #endif
54     return color;
55 }
56
57 float VFXGetSoftParticleFade(VFX_VARYING_PS_INPUTS i)
58 {
59     float fade = 1.0f;
60     #if USE_SOFT_PARTICLE && defined(VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE)
61     float sceneZ = VFXLinearEyeDepth(VFXSampleDepth(i.VFX_VARYING_POSCS));
62     fade = saturate(i.VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE * (sceneZ - i.VFX_VARYING_POSCS.w));
63     fade = fade * fade * (3.0 - (2.0 * fade)); // Smoothsteping the fade
64     #endif
65     return fade;
66 }
67
68 float4 VFXGetTextureColor(VFXSampler2D s,VFX_VARYING_PS_INPUTS i)
69 {
70     return SampleTexture(s, GetUVData(i));
71 }
72
73 float4 VFXGetTextureColorWithProceduralUV(VFXSampler2D s, VFX_VARYING_PS_INPUTS i, float2 uv)
74 {
75     return SampleTexture(s, GetUVData(i, uv));
76 }
77
78 float3 VFXGetTextureNormal(VFXSampler2D s,float2 uv)
79 {
80     float4 packedNormal = s.t.Sample(s.s,uv);
81     packedNormal.w *= packedNormal.x;
82     float3 normal;
83     normal.xy = packedNormal.wy * 2.0 - 1.0;
84     normal.z = sqrt(1.0 - saturate(dot(normal.xy, normal.xy)));
85     return normal;
86 }
87
88 float4 VFXGetFragmentColor(VFX_VARYING_PS_INPUTS i)
89 {
90     float4 color = VFXGetParticleColor(i);
91     color.a *= VFXGetSoftParticleFade(i);
92     return color;
93 }
94
95 void VFXClipFragmentColor(float alpha,VFX_VARYING_PS_INPUTS i)
96 {
97     #if USE_ALPHA_TEST
98     #if defined(VFX_VARYING_ALPHATHRESHOLD)
99     clip(alpha - i.VFX_VARYING_ALPHATHRESHOLD);
100     #else
101     clip(alpha - VFX_EPSILON);
102     #endif
103     #endif
104 }
105
106 float4 VFXApplyFog(float4 color,VFX_VARYING_PS_INPUTS i)
107 {
108     #if USE_FOG && defined(VFX_VARYING_POSCS)
109         #if defined(VFX_VARYING_POSWS)
110             return VFXApplyFog(color, i.VFX_VARYING_POSCS, i.VFX_VARYING_POSWS);
111         #else
112             return VFXApplyFog(color, i.VFX_VARYING_POSCS, (float3)0); //Some pipeline (LWRP) doesn't require WorldPos
113         #endif
114     #else
115         return color;
116     #endif
117 }