//// BEGIN COMPILER 0 INFO LOG ////

//// END COMPILER 0 INFO LOG ////


//// BEGIN COMPILER 0 OBJ CODE ////
#extension GL_ARB_gpu_shader5 : enable
vec4 _utexture(in sampler2D _us, in vec2 _uc){
return texture2D(_us, _uc);
}
uniform vec3 _uiResolution;
uniform float _uiTime;
uniform float _uiTimeDelta;
uniform int _uiFrame;
uniform float _uiFrameRate;
uniform float _uiChannelTime[4];
uniform vec3 _uiChannelResolution[4];
uniform vec4 _uiMouse;
uniform sampler2D _uiChannel0;
uniform sampler2D _uiChannel1;
uniform sampler2D _uiChannel2;
uniform sampler2D _uiChannel3;
uniform vec4 _uiDate;
uniform float _uiSampleRate;
struct _uChannel {
vec3 _uresolution;
float _utime;
};
uniform _uChannel _uiChannel[4];
void _umainImage(out vec4 _ufragColor, in vec2 _ufragCoord);
void main(){
vec4 _ucolor = vec4(0.0, 0.0, 0.0, 1.0);
_umainImage(_ucolor, gl_FragCoord.xy);
(_ucolor.w = 1.0);
(gl_FragColor = _ucolor);
}
float _ufftsmooth(in float _ua, in sampler2D _us){
float _uaudio = _utexture(_us, vec2(0.5, 0.5)).x;
return (((_uaudio * _ua) + _uaudio) - (1.0 * (1.0 - _ua)));
}
float _utrap = 0.0;
float _umap(in vec3 _upos){
vec4 _up = vec4(_upos, 1.0);
float _ud = 100.0;
for (int _ui = 0; (_ui < 5); (_ui++))
{
(_up = ((abs(_up) / clamp(dot(_up, _up), -1.0, 1.0)) - vec4(1.0, 1.3, 0.60000002, 0.40000001)));
{
(_up.xz = ((cos((_uiTime + _ufftsmooth(0.5, _uiChannel0))) * _up.xz) + (sin((_uiTime + _ufftsmooth(0.5, _uiChannel0))) * vec2(_up.z, (-_up.x)))));
}
{
(_up.yz = ((cos((_uiTime + _ufftsmooth(0.5, _uiChannel0))) * _up.yz) + (sin((_uiTime + _ufftsmooth(0.5, _uiChannel0))) * vec2(_up.z, (-_up.y)))));
}
{
(_up.xy = ((cos((_uiTime + _ufftsmooth(0.5, _uiChannel0))) * _up.xy) + (sin((_uiTime + _ufftsmooth(0.5, _uiChannel0))) * vec2(_up.y, (-_up.x)))));
}
(_ud = min(_ud, (length((((_up.x * _up.y) * _up.z) * _up.w)) - 0.5)));
(_utrap = distance(_up, vec4(0.0, 0.0, 0.0, 0.0)));
}
return _ud;
}
vec3 _ucalcNormal(in vec3 _up){
vec2 _ue = vec2(0.0049999999, 0.0);
return normalize(vec3((_umap((_up + _ue.xyy)) - _umap((_up - _ue.xyy))), (_umap((_up + _ue.yxy)) - _umap((_up - _ue.yxy))), (_umap((_up + _ue.yyx)) - _umap((_up - _ue.yyx)))));
}
void _umainImage(out vec4 _ufragColor, in vec2 _ufragCoord){
vec2 _uuv = (((2.0 * _ufragCoord.xy) - _uiResolution.xy) / _uiResolution.y);
vec3 _uro = vec3(_uuv, 1.0);
vec3 _urd = normalize(vec3(_uuv, -1.0));
float _ut = 0.0;
for (int _ui = 0; (_ui < 100); (_ui++))
{
float _um = _umap((_uro + (_urd * _ut)));
(_ut += _um);
if (((_ut > 40.0) || (_um < 0.02)))
{
break;
}
}
if ((_ut > 40.0))
{
(_ufragColor = vec4(0.0, 0.0, 0.0, 0.0));
return ;
}
vec3 _up = (_uro + (_urd * _ut));
vec3 _un = _ucalcNormal(_up);
vec3 _ulp = vec3(1.0, 3.0, 5.0);
vec3 _uld = (_ulp - _up);
float _ulen = length(_uld);
(_uld /= _ulen);
float _udiff = max(dot(_uld, _un), 0.0);
float _uatten = min(1.0, (1.0 / _ulen));
float _uamb = 0.25;
float _uspec = pow(max(dot(normalize((_uro - _up)), reflect((-_uld), _un)), 0.0), 8.0);
vec3 _ucol = ((vec3(_utrap, (_utrap * _utrap), pow(_utrap, 4.0)) * ((_udiff + _uamb) + _uspec)) * _uatten);
(_ucol /= abs(sin((((vec3(0.5, 0.2, 0.89999998) + _ucol) + _uiTime) + _ufftsmooth(0.5, _uiChannel0)))));
(_ufragColor = vec4(_ucol, 1.0));
}

//// END COMPILER 0 OBJ CODE ////


