VR模拟枪支打靶,消灭鬼怪,换弹以及上弦等等硬核枪支操作。 使用HTCVive设备,开启SteamVR进行游玩。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.1 KiB

3 years ago
// Colorful FX - Unity Asset
// Copyright (c) 2015 - Thomas Hourdel
// http://www.thomashourdel.com
#ifndef RADIUS
#define RADIUS 3
#endif
#define H3Z half3(0.0, 0.0, 0.0)
sampler2D _MainTex;
half2 _PSize;
inline void loop(int j0, int j1, int i0, int i1, half2 uv, out half3 m, out half3 s)
{
for (int j = j0; j <= j1; j++)
{
for (int i = i0; i <= i1; i++)
{
half3 c = tex2Dlod(_MainTex, half4(uv + half2(i, j) * _PSize, 0.0, 0.0)).rgb;
m += c;
s += c * c;
}
}
}
half4 frag(v2f_img i) : SV_Target
{
half3 m[4] = { H3Z, H3Z, H3Z, H3Z };
half3 s[4] = { H3Z, H3Z, H3Z, H3Z };
loop(-RADIUS, 0, -RADIUS, 0, i.uv, m[0], s[0]);
loop(-RADIUS, 0, 0, RADIUS, i.uv, m[1], s[1]);
loop( 0, RADIUS, 0, RADIUS, i.uv, m[2], s[2]);
loop( 0, RADIUS, -RADIUS, 0, i.uv, m[3], s[3]);
half n = half((RADIUS + 1) * (RADIUS + 1));
half minSigma2 = 1e+2;
half3 color = H3Z;
for (int k = 0; k < 4; k++)
{
m[k] /= n;
s[k] = abs(s[k] / n - m[k] * m[k]);
half sigma2 = s[k].r + s[k].g + s[k].b;
if (sigma2 < minSigma2)
{
minSigma2 = sigma2;
color = m[k];
}
}
return half4(color, 1.0);
}