#extension GL_OES_standard_derivatives : enable

precision highp float;
// uniforms
uniform float time;
uniform vec2 resolution;
uniform vec2 mouse;

// obj
uniform float objY;
// consts
const float EPS = 0.0001;
const float OFFSET = EPS * 2000.0;
const float PI = 3.14159;
// globals
const vec3 lightDir = vec3( -0.18666426339228763, 0.9111071056538127, -0.4244428422615251 );
vec3 cPos, cDir;
struct Intersect {
	bool isHit;
	vec3 position;
	float distance;
	vec3 normal;
	int material;
	vec3 color;
};
const int SPHERE_MATERIAL = 0;
const int FLOOR_MATERIAL = 1;

mat2 rot(float u)
{
    float s = sin(u),c = cos(u);
    return mat2(c, s, -s, c);
}

float sphereDist( vec3 p, float r ) {
	vec3 c = vec3( 0.0, objY, 0.0 );
	return length( p - c ) - r;
}

float floorDist( vec3 p ){
	return dot(p, vec3( 0.0, 0.8, 0.0 ) ) + 2.0;
}

//CC0 1.0 Universal https://creativecommons.org/publicdomain/zero/1.0/
//To the extent possible under law, Blackle Mori has waived all copyright and related or neighboring rights to this work.

//like the last few shaders I've published, this is a neural network experiment.
//this time, the neural network reproduces an SDF given the x,y,z coordinates
//using siren networks with skip connections: https://vsitzmann.github.io/siren/
float scene(vec3 p) {
    //sdf is undefined outside the unit sphere, uncomment to witness the abominations
    if (length(p) > 1.0) {
        return length(p)-.8;
    }
    //neural networks can be really compact... when they want to be
vec4 f0_0=sin(p.y*vec4(3.548,-2.348,.407,1.350)+p.z*vec4(4.155,-.532,-.595,-1.074)+p.x*vec4(-2.909,-.573,-3.695,2.064)+vec4(-.961,.863,-7.790,-5.696));
vec4 f0_1=sin(p.y*vec4(-4.217,-1.053,-3.123,-3.436)+p.z*vec4(4.546,-1.560,-2.288,.881)+p.x*vec4(-2.681,-2.427,-3.946,-3.316)+vec4(5.101,7.230,4.768,-3.152));
vec4 f0_2=sin(p.y*vec4(-.875,-4.133,.389,4.207)+p.z*vec4(-1.820,-.234,-2.023,4.546)+p.x*vec4(-.954,3.704,2.366,.320)+vec4(-6.499,-7.914,-1.370,2.080));
vec4 f0_3=sin(p.y*vec4(1.356,-.406,2.275,.063)+p.z*vec4(-2.567,-2.496,.634,3.345)+p.x*vec4(1.232,-1.002,.857,-.441)+vec4(-6.461,1.352,.409,-7.604));
vec4 f0_4=sin(p.y*vec4(1.832,-2.607,-3.578,1.859)+p.z*vec4(-2.071,1.694,3.020,.697)+p.x*vec4(-1.591,-1.992,.712,-1.497)+vec4(3.510,-2.519,5.904,5.560));
vec4 f0_5=sin(p.y*vec4(2.816,2.344,1.042,-4.622)+p.z*vec4(-4.195,-4.287,1.210,-1.218)+p.x*vec4(.821,-2.894,-4.672,.748)+vec4(-7.215,2.977,1.837,-7.449));
vec4 f0_6=sin(p.y*vec4(1.792,-3.468,-1.235,-2.958)+p.z*vec4(4.497,1.083,.264,-4.057)+p.x*vec4(4.213,.633,-.157,-.033)+vec4(-1.481,-1.441,.653,-5.616));
vec4 f0_7=sin(p.y*vec4(-2.724,.189,-2.841,-.519)+p.z*vec4(-3.426,-1.638,-.423,.604)+p.x*vec4(3.924,.273,2.144,2.554)+vec4(-4.122,-3.545,-.934,-7.443));
vec4 f0_8=sin(p.y*vec4(-1.236,-.260,4.625,1.250)+p.z*vec4(-4.370,2.275,-.547,-1.536)+p.x*vec4(1.484,-3.361,3.063,.911)+vec4(7.297,.187,-.827,-6.778));
vec4 f0_9=sin(p.y*vec4(3.295,1.069,1.079,2.237)+p.z*vec4(3.913,-2.759,-3.501,.113)+p.x*vec4(2.946,-3.028,-2.351,-3.707)+vec4(-2.430,.874,-1.256,2.041));
vec4 f0_10=sin(p.y*vec4(4.263,1.630,4.232,-2.971)+p.z*vec4(4.262,-.451,.258,1.765)+p.x*vec4(2.979,-.242,-4.420,-3.885)+vec4(-6.812,-6.431,7.088,1.693));
vec4 f0_11=sin(p.y*vec4(.054,-4.383,2.316,-1.302)+p.z*vec4(-1.042,-1.760,-1.398,-2.894)+p.x*vec4(-3.088,2.447,1.135,3.413)+vec4(4.083,2.848,5.979,6.929));
vec4 f0_12=sin(p.y*vec4(-1.192,-1.753,1.029,-.019)+p.z*vec4(-1.766,3.374,-2.916,3.064)+p.x*vec4(-3.279,3.649,-1.364,-1.308)+vec4(-3.972,-7.059,-5.239,-5.044));
vec4 f0_13=sin(p.y*vec4(-1.420,4.349,-.150,3.970)+p.z*vec4(-3.480,2.887,-1.558,-.707)+p.x*vec4(-1.230,-.285,-2.997,.468)+vec4(-6.092,4.665,2.216,-.774));
vec4 f0_14=sin(p.y*vec4(-3.703,1.260,3.363,3.294)+p.z*vec4(-3.111,1.960,-1.235,-4.317)+p.x*vec4(.836,.445,-1.495,2.601)+vec4(6.471,-1.540,-.927,-3.675));
vec4 f0_15=sin(p.y*vec4(-.336,-1.962,-1.221,-.278)+p.z*vec4(.049,4.412,2.030,2.080)+p.x*vec4(2.862,-.823,.890,-2.354)+vec4(.005,7.553,.951,-.152));
vec4 f1_0=sin(mat4(.219,.073,-.067,.255,-.136,.044,-.095,.133,-.021,-.113,.026,-.092,-.092,-.070,-.146,.342)*f0_0+
    mat4(-.389,-.213,-.278,-.103,-.129,.274,-.156,.177,-.024,-.158,-.092,.027,-.162,-.129,-.103,.123)*f0_1+
    mat4(.080,-.147,.189,-.150,-.314,-.089,-.072,-.197,-.023,-.023,-.192,-.160,-.021,.143,.065,-.234)*f0_2+
    mat4(-.178,.071,.239,-.149,-.053,.051,-.010,.296,.038,.156,.076,.066,.129,-.184,-.136,.020)*f0_3+
    mat4(-.184,.001,-.152,-.071,-.114,.070,-.053,-.087,.058,.005,-.019,-.116,-.035,-.019,.040,-.107)*f0_4+
    mat4(-.287,-.111,.103,-.310,-.029,.073,.004,-.008,.127,.173,-.292,-.152,-.150,.040,.046,.352)*f0_5+
    mat4(.017,-.201,-.004,.260,-.031,.085,-.133,-.212,-.165,-.139,-.022,.257,.089,.120,-.028,-.226)*f0_6+
    mat4(.288,-.090,-.202,.571,-.087,-.013,-.095,.229,-.171,.082,.141,-.002,-.061,-.076,.046,.104)*f0_7+
    mat4(-.222,-.107,.120,-.074,.236,-.133,-.127,-.044,-.210,-.183,-.169,-.255,.042,-.060,.115,-.272)*f0_8+
    mat4(.019,.067,.170,.163,-.053,-.011,.023,-.041,-.071,-.281,-.095,-.095,.279,.199,-.211,-.277)*f0_9+
    mat4(.047,-.149,-.124,-.083,.179,.222,.080,-.091,.188,.136,.062,.140,.431,.108,.053,.160)*f0_10+
    mat4(-.039,-.175,-.084,.173,-.058,-.152,.140,.108,-.109,-.153,.203,-.070,-.121,.148,.008,-.093)*f0_11+
    mat4(-.025,.278,-.054,-.036,.017,.006,-.181,-.135,-.090,.046,.349,.169,.066,.010,.037,.229)*f0_12+
    mat4(.013,-.000,.294,-.210,-.079,.032,.141,.190,.040,.144,-.216,.119,.031,-.232,.203,-.257)*f0_13+
    mat4(.203,.055,.008,-.135,.046,-.129,.009,-.103,.111,.116,.114,.027,.561,.090,-.036,-.132)*f0_14+
    mat4(-.080,.010,-.007,-.087,.223,-.047,.171,.099,-.212,.014,-.167,.005,.174,.174,-.173,-.028)*f0_15+
    vec4(-.941,.368,.860,-.364))/1.0+f0_0;
vec4 f1_1=sin(mat4(.142,-.337,-.089,-.254,-.101,.014,-.104,.011,.152,-.380,.534,.075,.166,-.010,-.084,-.299)*f0_0+
    mat4(.564,-.162,.405,-.111,.063,.135,-.233,.119,.307,-.016,.653,-.128,-.324,.149,-.237,.569)*f0_1+
    mat4(.117,.243,-.002,.074,.341,-.150,.095,-.284,-.039,.013,-.032,.190,-.193,.004,-.263,.207)*f0_2+
    mat4(.070,-.036,.090,-.136,.128,.031,.108,-.138,.017,-.021,.057,.068,.053,-.046,-.185,-.079)*f0_3+
    mat4(.093,.160,-.340,.121,-.231,.056,-.175,-.063,-.005,.147,-.108,.099,.271,-.287,.069,.161)*f0_4+
    mat4(.218,-.142,.052,-.217,-.463,.228,-.070,.479,-.240,.099,-.204,-.119,.506,-.401,.006,-.431)*f0_5+
    mat4(.201,-.086,.508,.608,.291,-.004,-.189,-.004,-.094,-.178,-.098,-.027,-.023,-.060,.025,-.130)*f0_6+
    mat4(.005,-.005,-.525,-.217,-.078,-.008,.088,-.020,-.072,.103,-.128,.164,.183,.029,.132,.080)*f0_7+
    mat4(-.224,-.003,.250,.459,-.335,-.152,-.303,-.051,-.050,.136,-.069,.438,.038,-.085,-.023,-.036)*f0_8+
    mat4(.117,.086,-.103,-.298,.039,.144,-.019,-.211,-.064,-.085,.102,.185,-.274,.060,.294,.049)*f0_9+
    mat4(.147,.411,.405,.555,.167,-.023,.093,.042,-.091,-.340,.018,.079,.332,.071,-.003,-.388)*f0_10+
    mat4(.066,-.278,.228,-.018,.413,-.051,.127,.110,-.043,.123,-.060,-.194,.114,.199,.488,.147)*f0_11+
    mat4(.039,.037,-.215,.099,-.109,-.201,.127,.094,.183,-.053,.131,-.188,-.335,-.142,-.059,.017)*f0_12+
    mat4(.423,-.003,-.366,-.293,.214,-.278,-.235,-.412,.094,.150,-.294,-.094,.250,-.084,.140,-.392)*f0_13+
    mat4(-.258,-.032,-.205,-.268,-.026,-.022,-.134,.205,.357,-.024,.168,.032,.627,-.023,.019,-.173)*f0_14+
    mat4(.178,.077,-.234,-.175,-.198,-.309,.104,.198,-.177,-.159,.095,-.149,-.080,.045,-.096,.159)*f0_15+
    vec4(-.071,.069,-.070,-.129))/1.0+f0_1;
vec4 f1_2=sin(mat4(-.018,-.247,.256,-.011,.173,.207,-.208,-.282,.264,.068,-.223,.041,-.179,.144,.249,.128)*f0_0+
    mat4(.156,-.037,-.388,-.194,.010,.075,-.109,.128,-.120,-.368,.000,.010,-.036,.340,.073,-.362)*f0_1+
    mat4(-.197,.054,.222,-.004,.249,.230,-.109,.313,.140,.115,-.052,-.139,-.032,.220,-.144,-.007)*f0_2+
    mat4(-.045,.212,.278,-.180,.185,.116,-.084,.036,-.009,-.074,-.127,-.280,.002,-.086,.213,.351)*f0_3+
    mat4(-.066,-.124,-.221,.068,.044,.088,.129,-.095,-.088,-.217,-.088,.132,-.057,-.239,.181,-.039)*f0_4+
    mat4(-.031,-.042,-.151,-.075,-.128,.334,.195,-.059,-.095,-.444,.241,-.012,.068,-.295,.174,-.013)*f0_5+
    mat4(-.030,-.188,-.029,-.244,.019,-.160,-.089,.276,.013,.047,-.046,-.218,-.012,.131,-.063,-.169)*f0_6+
    mat4(.001,.250,.044,.293,-.044,-.103,-.038,.027,-.030,-.064,-.095,.097,-.072,-.071,-.064,-.070)*f0_7+
    mat4(-.081,.227,-.238,-.371,.138,-.366,.102,.209,-.194,-.015,.046,-.067,-.154,-.038,-.001,-.092)*f0_8+
    mat4(-.178,-.133,.172,-.113,-.248,.058,-.015,.110,-.087,-.226,-.185,-.154,-.162,-.157,.235,-.315)*f0_9+
    mat4(.018,.069,-.040,-.043,-.171,.011,.207,-.090,.009,-.148,-.057,.071,-.025,-.048,-.106,.064)*f0_10+
    mat4(.036,.145,-.047,-.063,-.129,.079,.079,.341,-.063,.120,.181,-.127,.052,-.007,.004,-.012)*f0_11+
    mat4(-.089,.249,.146,-.194,.062,.093,-.106,.068,-.066,.289,.216,-.100,.099,-.138,.138,-.035)*f0_12+
    mat4(.021,.187,.036,.123,.031,-.190,.313,.102,.044,.144,.161,-.046,.039,-.071,.191,.079)*f0_13+
    mat4(.139,-.004,-.167,-.320,-.233,-.082,.353,.061,-.092,.058,-.062,.296,.221,-.283,-.018,.330)*f0_14+
    mat4(.135,.281,.004,-.070,.105,.087,.086,-.251,.124,-.164,-.051,.004,.265,-.297,.125,.229)*f0_15+
    vec4(-.227,-1.219,.398,-.388))/1.0+f0_2;
vec4 f1_3=sin(mat4(.183,-.260,.112,-.165,-.233,-.028,-.195,.107,.102,-.184,-.119,.107,-.100,-.068,.182,.027)*f0_0+
    mat4(-.269,.156,-.128,.380,-.017,-.004,-.273,.239,-.120,-.095,-.054,-.032,.226,-.119,.064,-.141)*f0_1+
    mat4(-.302,.161,.230,-.028,-.063,-.138,.077,.204,.042,-.136,-.202,-.096,-.302,.181,-.027,.106)*f0_2+
    mat4(.071,.009,.029,-.035,-.047,.103,-.225,.093,.086,-.042,-.107,.089,-.032,-.197,-.048,.092)*f0_3+
    mat4(-.040,.076,-.134,-.142,.114,-.055,.123,-.132,.148,.058,.016,-.080,.203,-.230,-.137,-.031)*f0_4+
    mat4(-.043,.189,.137,-.154,.157,.023,-.038,.047,.026,.023,-.011,-.014,.236,-.058,.165,-.067)*f0_5+
    mat4(-.052,-.101,-.032,-.000,-.113,.103,-.068,-.132,.068,-.090,-.071,-.131,-.020,.107,-.055,.097)*f0_6+
    mat4(.341,.318,-.156,.099,.288,.124,-.007,.234,-.017,-.095,.046,.011,.196,-.168,-.122,-.041)*f0_7+
    mat4(-.133,.159,.056,.064,.192,-.006,-.094,.249,-.222,-.222,.054,-.229,.106,-.124,.015,-.053)*f0_8+
    mat4(.732,-.038,.117,-.218,-.002,.021,.084,.076,.563,.105,.316,.119,-.213,.034,-.043,-.150)*f0_9+
    mat4(-.394,-.101,-.283,-.012,-.016,-.068,-.011,.184,-.144,.031,-.002,.014,.257,.021,-.001,-.141)*f0_10+
    mat4(-.157,-.220,.098,-.060,.209,-.182,-.274,.220,-.001,-.060,.188,-.006,-.181,.291,.157,-.106)*f0_11+
    mat4(-.314,-.242,-.201,-.142,.466,.028,-.059,-.026,-.029,.041,-.064,.174,.067,.033,.160,.019)*f0_12+
    mat4(.146,.160,-.114,.118,.151,-.252,.093,.180,-.316,-.120,-.280,.208,-.354,-.233,.128,.029)*f0_13+
    mat4(.041,.095,.013,-.029,.096,.029,-.117,-.205,-.244,-.152,-.073,.056,.009,-.254,-.002,.227)*f0_14+
    mat4(-.241,-.091,.030,-.057,.127,-.159,.045,.052,.186,-.134,-.049,.101,.100,-.161,.016,.030)*f0_15+
    vec4(-.047,.007,-.200,1.368))/1.0+f0_3;
vec4 f1_4=sin(mat4(.212,-.169,-.052,.282,-.010,.050,-.012,.048,-.127,-.165,.119,-.225,-.102,.125,-.076,.091)*f0_0+
    mat4(-.174,-.745,.029,-.526,.079,-.092,-.062,-.036,-.185,.260,.151,.017,-.059,-.166,.190,.136)*f0_1+
    mat4(-.056,.234,-.187,.149,.302,-.463,.103,.392,-.113,-.128,.082,-.209,.012,-.282,-.077,-.015)*f0_2+
    mat4(-.162,.253,-.034,-.244,-.027,-.087,-.196,-.125,-.223,.086,-.167,-.003,.113,.104,.012,.127)*f0_3+
    mat4(.143,-.161,.242,-.013,-.139,-.141,-.089,-.239,.037,.249,.137,.013,.112,-.173,.044,.013)*f0_4+
    mat4(-.429,-.062,-.043,-.185,.054,.060,.202,-.360,.040,.178,.011,-.155,.140,-.406,-.041,.117)*f0_5+
    mat4(.058,.186,.305,-.114,.049,-.154,-.111,-.166,.024,-.057,-.230,.081,-.268,-.146,.021,-.172)*f0_6+
    mat4(.546,.271,.050,-.316,-.014,-.252,-.080,.016,-.045,.097,.159,-.070,-.089,.028,.188,-.146)*f0_7+
    mat4(-.351,-.026,.118,-.065,.219,.198,-.097,-.235,-.035,-.456,.060,-.269,-.271,.201,-.084,-.253)*f0_8+
    mat4(-.043,-.144,.313,-.382,.010,.225,-.172,.329,-.371,.185,.010,.054,-.076,.314,-.066,-.094)*f0_9+
    mat4(-.195,-.283,.014,.285,.057,-.040,-.033,-.030,.068,-.162,-.077,-.373,.297,.377,.087,.135)*f0_10+
    mat4(-.028,.032,.197,-.126,.268,-.240,.058,.200,-.131,.041,-.021,-.114,-.606,.016,-.011,.083)*f0_11+
    mat4(-.075,-.204,-.003,.192,-.093,-.222,.226,-.586,.054,.060,-.120,-.025,.022,-.020,-.107,-.003)*f0_12+
    mat4(-.147,-.068,-.041,.163,.004,-.338,-.102,.133,.045,-.100,.068,.008,-.028,-.281,-.316,-.343)*f0_13+
    mat4(-.248,.083,.082,-.295,.122,.035,.042,.187,-.071,-.038,-.255,-.119,.065,.319,-.335,.208)*f0_14+
    mat4(.106,.016,.009,.004,.315,-.027,.240,-.076,.212,-.213,.019,-.016,.093,.047,.034,-.128)*f0_15+
    vec4(.144,-.991,-1.075,.304))/1.0+f0_4;
vec4 f1_5=sin(mat4(-.734,.031,.260,.111,.234,-.027,.006,-.078,-.153,.119,-.255,.090,.038,-.027,.087,-.048)*f0_0+
    mat4(.526,.140,-.011,.111,.369,-.095,-.103,.006,.004,.040,-.113,-.399,-.265,-.099,-.028,-.113)*f0_1+
    mat4(.121,-.121,.243,-.019,-.062,-.179,-.190,.011,-.006,-.012,.007,.081,-.114,-.109,.249,.134)*f0_2+
    mat4(.203,-.088,-.084,.121,.015,-.025,-.075,.251,-.108,-.027,.018,-.152,.254,-.023,.049,-.222)*f0_3+
    mat4(.122,.035,-.047,.019,.133,-.007,-.041,.190,.253,-.140,.075,.044,-.020,.014,.038,.102)*f0_4+
    mat4(.587,.013,.160,.152,-.434,-.013,-.167,-.133,.075,.013,.353,.030,-.174,.126,-.175,.257)*f0_5+
    mat4(-.002,-.159,-.368,-.394,-.004,-.020,-.048,.221,.160,-.114,.015,.014,-.327,.145,-.021,.141)*f0_6+
    mat4(.038,.126,.607,-.074,.108,.012,-.104,-.058,-.137,-.065,.018,-.002,-.183,-.006,-.050,-.037)*f0_7+
    mat4(-.203,.111,-.103,.349,.025,.030,-.029,.035,-.191,-.029,-.197,-.343,-.069,-.112,-.013,.099)*f0_8+
    mat4(.407,-.009,-.067,-.028,-.019,-.159,.032,.042,.426,-.024,-.190,.210,.295,.084,.223,-.193)*f0_9+
    mat4(-.202,.006,-.314,-.451,-.029,.013,-.095,-.035,-.508,.223,-.034,.139,-.169,-.181,.188,.255)*f0_10+
    mat4(-.114,-.017,-.066,.055,-.034,.193,-.139,.154,-.102,-.023,-.077,.001,.068,.142,-.085,.324)*f0_11+
    mat4(-.185,.026,-.142,.032,.038,.169,-.339,-.085,-.043,-.056,.001,-.152,-.210,.096,-.176,.047)*f0_12+
    mat4(.203,.015,.171,-.135,.040,.154,-.031,.111,-.129,-.048,.066,.109,.165,.063,-.034,-.096)*f0_13+
    mat4(-.245,.086,.115,.105,-.107,.052,.305,-.184,.012,.070,-.091,.111,.120,.179,.069,.248)*f0_14+
    mat4(-.033,-.045,.119,-.052,-.854,.135,-.100,-.046,.023,-.000,-.122,.076,.027,.062,-.062,-.114)*f0_15+
    vec4(.231,-.345,.162,-1.467))/1.0+f0_5;
vec4 f1_6=sin(mat4(-.113,.941,.509,-.489,-.001,.094,.248,-.233,.167,-.033,-.126,.007,.009,.063,-.017,-.206)*f0_0+
    mat4(-.049,-.555,-.471,.462,.121,.204,.140,-.118,-.111,-.275,-.136,.628,.014,.017,.479,-.229)*f0_1+
    mat4(-.074,-.028,.199,-.044,-.170,.518,.185,-.282,-.070,.046,.062,.184,-.013,-.552,-.259,.205)*f0_2+
    mat4(-.109,.157,-.136,-.008,.104,.106,-.080,.057,.124,.137,.040,.052,-.010,.011,.013,.024)*f0_3+
    mat4(-.179,.097,-.096,-.114,-.041,.053,.071,.101,-.013,-.065,-.105,-.055,.043,-.007,-.092,-.080)*f0_4+
    mat4(-.095,-.167,-.053,.001,-.037,.050,-.221,.190,.014,-.228,.014,.069,.010,.428,-.139,-.278)*f0_5+
    mat4(.168,-.398,-.478,-.074,-.041,.239,-.238,-.155,-.068,.007,.242,.029,.108,.049,-.108,-.100)*f0_6+
    mat4(.245,.613,-.347,-.121,.045,-.006,-.018,.003,-.169,.216,.276,-.078,-.023,.038,-.013,.014)*f0_7+
    mat4(.148,-.401,.107,.162,.157,.305,.001,.090,.008,.063,.267,.277,-.139,.022,-.060,.167)*f0_8+
    mat4(.026,.148,-.354,-.116,.173,.130,.111,-.018,-.106,-.300,-.203,-.192,.028,-.145,-.068,.219)*f0_9+
    mat4(.212,.017,.020,.394,.023,-.001,-.251,.018,.187,.146,.183,-.104,-.004,-.066,.206,-.386)*f0_10+
    mat4(-.148,-.042,-.027,.037,.173,.172,-.160,-.079,-.009,.083,-.054,.095,-.106,-.498,-.436,.064)*f0_11+
    mat4(-.015,.161,.368,-.044,-.145,-.191,-.298,.071,.042,.223,.113,.111,-.083,-.201,.013,-.272)*f0_12+
    mat4(.053,.200,.218,-.003,.003,.170,.236,-.294,-.104,.173,.322,.033,-.087,.023,-.389,.225)*f0_13+
    mat4(-.107,.155,.030,-.220,-.053,-.120,-.101,.077,-.010,.100,-.053,-.194,-.168,-.266,-.123,.070)*f0_14+
    mat4(-.167,-.030,.130,-.051,.133,.217,.199,-.155,.095,.109,-.048,.047,.034,.015,.183,.019)*f0_15+
    vec4(-.198,-.361,.190,1.263))/1.0+f0_6;
vec4 f1_7=sin(mat4(-.283,.444,-.114,.277,-.100,.030,-.155,-.022,-.115,-.229,-.076,.060,.050,-.089,.289,.230)*f0_0+
    mat4(-.275,.155,-.027,-.362,.242,-.071,-.027,-.026,-.009,-.062,.020,-.333,-.188,-.024,.151,.188)*f0_1+
    mat4(.069,.013,.273,.052,-.195,.365,-.059,.138,-.046,-.249,-.038,-.092,-.085,.014,-.060,-.164)*f0_2+
    mat4(-.066,-.063,-.008,.066,.172,-.228,-.221,-.137,-.146,-.132,-.238,.010,-.213,-.057,-.020,.109)*f0_3+
    mat4(-.192,.085,.129,.170,.072,.170,.065,-.062,.044,-.063,.228,.215,.069,.099,-.147,-.022)*f0_4+
    mat4(-.375,.278,-.127,.075,.120,-.207,.053,.038,.449,.013,.129,-.376,-.213,.099,.036,.029)*f0_5+
    mat4(-.310,.237,.276,.072,-.125,.020,-.050,-.022,-.235,-.021,-.122,.093,-.122,-.066,-.179,-.190)*f0_6+
    mat4(.954,-.135,.029,-.137,-.110,.005,-.102,.116,-.004,-.240,.249,.159,-.136,-.170,.074,-.092)*f0_7+
    mat4(.308,.038,-.098,-.420,.080,.149,.041,-.114,.015,.187,-.200,.010,.148,.127,.077,-.067)*f0_8+
    mat4(.068,.193,-.022,.358,.162,-.031,.117,-.096,-.059,.308,.001,.319,.036,-.211,.008,-.261)*f0_9+
    mat4(-.069,-.352,.230,-.490,.179,.120,.048,-.154,-.357,-.229,-.136,-.241,-.087,-.120,.273,.433)*f0_10+
    mat4(-.273,-.216,-.008,-.135,-.096,.042,-.146,-.056,-.133,-.060,-.004,-.005,.202,-.146,.123,-.281)*f0_11+
    mat4(.110,-.125,.085,-.114,.108,-.035,-.144,.142,-.041,-.140,.021,-.175,.244,-.111,-.074,-.009)*f0_12+
    mat4(-.220,-.193,-.060,.003,-.253,.035,-.106,.114,.055,-.267,.165,-.095,-.237,.127,-.045,-.069)*f0_13+
    mat4(-.071,-.016,.034,.007,.164,.033,.097,.005,.028,.267,-.117,-.048,.415,-.340,.137,-.234)*f0_14+
    mat4(.107,-.093,-.047,.216,.287,-.185,.084,.041,-.277,-.163,.018,-.059,.141,-.059,-.250,-.132)*f0_15+
    vec4(-.594,.787,.590,.384))/1.0+f0_7;
vec4 f1_8=sin(mat4(.070,.104,-.172,-.379,-.055,-.032,-.018,.090,.162,-.130,.140,-.151,.049,.056,-.088,.141)*f0_0+
    mat4(.017,.096,.341,-.184,-.117,.128,-.156,-.004,.101,-.275,.038,-.179,.041,.140,.104,.364)*f0_1+
    mat4(.113,-.087,-.299,-.039,.335,.093,-.176,-.197,.162,.181,-.143,.062,-.113,.154,-.061,.294)*f0_2+
    mat4(.323,-.178,-.198,-.061,.261,-.101,.098,.186,.157,.003,.231,.010,-.212,.188,-.142,-.175)*f0_3+
    mat4(.099,.102,-.054,.066,.306,-.031,.026,-.088,.062,-.389,-.192,.137,.146,.055,-.124,-.022)*f0_4+
    mat4(-.075,.134,.027,-.108,.269,-.241,.327,-.173,-.019,-.099,-.090,.021,.082,.064,-.153,-.064)*f0_5+
    mat4(-.165,-.496,.227,-.080,.152,-.239,-.179,-.228,-.163,-.070,-.022,-.036,.166,.144,.165,.381)*f0_6+
    mat4(-.033,-.483,-.069,-.125,-.210,.067,.147,.016,.174,-.042,-.129,.074,.001,.148,.051,.210)*f0_7+
    mat4(-.171,.001,.524,.285,-.099,-.171,.256,.098,.352,.386,.302,.014,.283,-.137,-.056,-.040)*f0_8+
    mat4(-.304,.165,-.087,-.307,-.107,.055,-.211,-.088,-.169,-.083,-.085,-.278,-.105,.233,.033,.199)*f0_9+
    mat4(-.033,-.395,.194,.115,.087,.012,.047,-.048,-.020,-.601,-.043,-.269,-.432,-.340,-.401,.172)*f0_10+
    mat4(.157,.064,.167,.167,.269,-.266,-.110,-.273,.005,.060,.057,-.022,-.401,-.127,.028,-.007)*f0_11+
    mat4(.111,.100,.120,.290,.029,-.165,.216,.071,.226,.027,-.121,.014,-.162,-.025,.321,-.172)*f0_12+
    mat4(.157,.070,-.203,.038,-.101,.091,.018,-.178,-.032,.108,.121,.081,.069,-.033,.171,-.419)*f0_13+
    mat4(-.193,.129,.124,.203,-.199,.082,-.140,-.016,.172,-.124,.137,-.122,-.292,-.428,.008,.214)*f0_14+
    mat4(.189,.247,.075,-.006,-.234,.023,.222,.092,.074,.084,.125,.034,-.088,.120,.141,.111)*f0_15+
    vec4(1.178,-1.150,.161,-.361))/1.0+f0_8;
vec4 f1_9=sin(mat4(-.105,-.260,-.357,-.227,.028,-.170,.254,.077,.052,-.015,.020,.012,-.058,-.060,-.037,.002)*f0_0+
    mat4(.196,-.317,.610,.046,.033,.142,.248,.182,.113,-.174,-.313,.099,.068,.113,.017,-.062)*f0_1+
    mat4(.080,-.018,.050,.042,-.200,-.178,-.061,-.008,-.016,.113,-.006,-.026,.499,.319,.206,.028)*f0_2+
    mat4(-.172,.047,-.041,-.304,.006,.102,.169,.102,-.183,.264,-.031,-.049,-.056,-.011,-.041,.046)*f0_3+
    mat4(-.149,-.172,.172,.114,-.279,.216,-.043,-.060,.158,-.223,.194,.019,-.008,-.017,-.013,.116)*f0_4+
    mat4(-.147,-.095,.125,-.253,-.494,-.108,.536,.270,.069,.013,.003,.042,-.021,-.478,-.166,-.328)*f0_5+
    mat4(-.017,-.630,-.186,-.141,.157,-.413,.043,-.073,.106,-.153,.005,.125,.241,.215,.229,-.003)*f0_6+
    mat4(.402,-.020,.115,.184,.021,-.058,.117,.286,-.077,.023,-.077,-.187,-.035,-.026,.031,-.028)*f0_7+
    mat4(-.128,.031,-.123,-.187,.110,.398,-.067,.291,.132,.126,-.182,.204,-.137,.202,-.110,-.209)*f0_8+
    mat4(-.183,-.157,.395,-.025,-.156,.040,-.348,.030,.099,-.282,-.126,-.315,.107,.300,.002,.070)*f0_9+
    mat4(-.007,-.002,-.395,.111,-.022,.230,-.071,-.234,-.128,-.003,-.127,-.202,.143,.343,-.049,-.129)*f0_10+
    mat4(.041,-.049,.000,-.174,.005,-.140,-.181,.046,-.186,.202,-.132,-.114,.014,-.327,.113,-.064)*f0_11+
    mat4(-.244,.162,.095,-.083,-.064,-.158,.615,.095,.051,.187,.104,.120,.097,-.085,.105,-.031)*f0_12+
    mat4(.098,.031,.189,.232,-.167,-.153,-.157,-.063,-.198,-.004,.140,.042,.034,.157,-.269,.086)*f0_13+
    mat4(-.049,.059,.162,-.092,-.091,-.033,-.080,.065,.250,-.269,.050,-.052,.050,-.084,-.196,.209)*f0_14+
    mat4(-.147,.167,.110,-.137,.069,.177,-.144,-.074,-.023,.058,-.047,.238,.170,.256,.095,.171)*f0_15+
    vec4(-.583,-.198,-.628,.236))/1.0+f0_9;
vec4 f1_10=sin(mat4(.036,-.066,-.098,-.042,.051,-.160,-.209,.009,.021,-.033,-.260,.171,.124,-.197,-.183,.029)*f0_0+
    mat4(-.181,.898,.034,.097,-.088,-.282,-.122,-.130,-.093,.114,.041,.065,.694,-.043,-.221,-.027)*f0_1+
    mat4(.009,-.089,.262,-.124,.535,-.149,-.480,-.024,.260,.130,-.160,.187,.197,-.059,-.122,.132)*f0_2+
    mat4(.060,-.033,-.111,-.127,.013,-.166,-.113,.088,.128,-.154,-.087,-.036,-.056,-.008,.046,.130)*f0_3+
    mat4(-.039,.053,.073,.087,-.033,.175,-.102,-.069,.153,.019,-.067,.144,.129,-.188,-.102,-.091)*f0_4+
    mat4(-.185,.182,.004,-.059,.270,-.219,.153,-.013,-.350,.159,.186,.028,.302,-.170,.030,-.146)*f0_5+
    mat4(.068,.327,.034,.073,.057,.279,-.038,-.312,-.012,-.011,-.074,.002,-.030,.008,-.015,.107)*f0_6+
    mat4(-.316,.017,.107,-.122,-.020,-.072,-.025,.048,.196,.070,.206,.050,.035,-.083,-.170,.078)*f0_7+
    mat4(.083,.224,.119,-.198,-.139,-.052,.041,.123,.682,.150,.018,-.098,-.043,.088,.056,-.052)*f0_8+
    mat4(-.224,-.019,-.193,.010,.105,-.068,.163,-.117,.121,.164,-.159,-.143,.043,.034,.244,-.052)*f0_9+
    mat4(.422,.084,.198,.078,-.007,-.024,-.187,-.003,-.296,.067,.215,.156,-.530,-.294,-.288,.112)*f0_10+
    mat4(.046,-.070,-.204,.028,-.247,-.091,-.030,-.273,-.036,.078,-.149,-.038,-.223,-.041,.092,-.084)*f0_11+
    mat4(.246,.180,-.003,.028,.086,.068,-.175,-.084,-.094,-.019,.111,.037,.080,-.180,.147,.047)*f0_12+
    mat4(-.163,-.046,.085,-.151,-.204,.008,.014,-.152,.140,-.017,.169,.143,-.344,.274,.129,-.129)*f0_13+
    mat4(-.318,-.096,.065,.236,-.079,-.195,.101,-.201,-.048,.209,-.272,-.090,-.430,.059,-.051,.462)*f0_14+
    mat4(.036,.028,.157,.165,.209,-.378,.361,.032,.009,.068,.054,.099,-.026,.051,.111,.113)*f0_15+
    vec4(-.274,-.080,-.574,-.655))/1.0+f0_10;
vec4 f1_11=sin(mat4(-.133,-.154,.241,.137,.011,-.110,.136,.096,.015,.172,.181,.032,.225,.070,.012,-.042)*f0_0+
    mat4(-.280,.285,.487,-.220,-.092,.087,-.139,-.024,-.152,.113,-.053,-.142,.303,-.198,.059,.053)*f0_1+
    mat4(-.004,.084,-.150,-.231,.134,-.146,.147,.024,.042,.213,.180,-.221,.150,.017,-.110,-.259)*f0_2+
    mat4(.002,.084,.097,.014,.100,-.052,-.014,-.099,.057,-.141,-.087,.304,-.133,.135,.034,.014)*f0_3+
    mat4(.197,-.071,.127,.075,.214,-.082,.195,-.001,.023,.147,.055,-.116,.065,-.172,-.340,.098)*f0_4+
    mat4(.070,.021,-.119,-.112,.273,-.151,.584,-.002,-.083,-.010,-.045,-.093,-.087,-.068,-.163,.001)*f0_5+
    mat4(.104,.298,.082,.236,.155,-.071,-.073,-.283,.134,.184,.093,-.125,-.151,-.051,.092,-.041)*f0_6+
    mat4(-.276,.095,.425,.265,-.152,.066,.025,.206,.213,-.171,-.221,-.173,-.047,.135,.063,.062)*f0_7+
    mat4(.067,.040,-.474,-.183,-.317,.152,-.013,-.043,.123,-.113,.203,-.079,.217,-.121,.035,-.104)*f0_8+
    mat4(-.027,.293,.163,-.064,-.035,.104,-.365,-.184,-.015,-.084,.013,.148,-.213,.267,-.143,.165)*f0_9+
    mat4(-.211,.090,.059,.085,-.067,.045,-.044,.163,.013,.195,.066,.018,-.187,-.263,-.041,-.105)*f0_10+
    mat4(.070,.082,.151,.039,-.036,-.107,.016,.284,.140,.083,.072,.084,.009,-.120,-.261,-.079)*f0_11+
    mat4(-.019,-.132,.094,-.019,.247,-.226,.738,.036,-.069,-.040,-.111,.017,-.061,-.016,-.056,-.104)*f0_12+
    mat4(-.166,-.225,-.093,-.048,-.267,.150,-.144,.005,-.239,-.096,.020,-.122,-.090,-.173,.260,-.095)*f0_13+
    mat4(.044,-.101,.037,-.025,-.040,-.137,-.018,-.102,.031,.071,.048,-.263,-.290,-.208,-.141,.153)*f0_14+
    mat4(.159,-.005,.074,-.127,-.122,.010,.250,.186,.013,.074,.173,-.007,-.406,.006,-.095,.137)*f0_15+
    vec4(-.517,1.544,-.802,-.370))/1.0+f0_11;
vec4 f1_12=sin(mat4(-.041,-.021,.213,.006,.110,-.070,.058,.154,.099,.064,.015,.107,-.102,.060,.016,-.258)*f0_0+
    mat4(.279,-.402,.073,.261,-.055,.100,.323,.162,-.206,.129,-.071,.079,.085,.040,.007,.070)*f0_1+
    mat4(.012,.079,-.159,-.219,-.114,.313,-.044,-.086,.107,-.114,.094,.127,-.194,-.040,.000,-.272)*f0_2+
    mat4(-.082,.034,.177,-.066,-.134,.042,.102,.273,-.078,.096,.240,-.006,.219,-.062,-.135,.139)*f0_3+
    mat4(.109,-.146,-.015,-.110,-.001,-.005,-.200,.085,.331,.081,-.258,-.242,-.290,.064,.246,.013)*f0_4+
    mat4(-.175,-.065,.098,-.005,-.044,.134,.049,.102,-.094,.000,-.042,.048,-.016,-.002,.094,.038)*f0_5+
    mat4(-.128,.306,-.073,.003,-.106,.100,-.209,-.230,.115,-.038,.137,.002,-.064,-.124,.099,-.109)*f0_6+
    mat4(-.120,-.230,-.152,.168,-.146,.006,.045,.282,.088,.094,.024,-.048,.186,.068,.069,-.105)*f0_7+
    mat4(-.105,.130,.046,-.233,-.003,-.066,.156,-.091,-.234,-.065,.090,.084,.092,.011,-.228,-.021)*f0_8+
    mat4(-.002,-.055,-.041,-.165,.151,.058,-.010,-.026,.282,-.023,-.081,-.262,.056,-.091,.135,-.187)*f0_9+
    mat4(-.036,.239,-.042,-.120,-.260,.066,-.019,.078,-.160,-.384,-.033,.063,.042,.187,-.142,.094)*f0_10+
    mat4(.015,-.070,.084,-.032,-.337,-.095,-.028,.180,-.162,.047,.110,-.003,.174,.022,.075,-.022)*f0_11+
    mat4(-.078,-.004,.049,.020,.081,-.051,.057,.044,-.058,.022,.076,.135,-.258,.016,-.167,-.097)*f0_12+
    mat4(.197,-.031,.167,.110,-.098,-.029,.074,.166,-.169,-.029,.012,-.057,-.113,.060,-.085,-.020)*f0_13+
    mat4(.033,-.080,-.003,-.142,-.127,.016,-.075,-.074,.026,.083,-.102,-.172,.241,.014,-.203,-.087)*f0_14+
    mat4(-.021,-.073,-.155,.013,-.181,.109,-.097,-.075,-.141,-.025,.152,.197,-.241,-.058,.001,.161)*f0_15+
    vec4(-.232,1.090,-.443,-1.246))/1.0+f0_12;
vec4 f1_13=sin(mat4(.101,.021,-.074,-.292,-.050,-.013,-.221,.196,.148,-.140,-.058,-.215,-.174,-.052,-.052,-.108)*f0_0+
    mat4(-.196,.543,.060,.577,-.140,.145,.156,-.091,-.147,.015,-.145,.048,.104,-.215,-.289,-.369)*f0_1+
    mat4(-.009,.126,-.043,.094,-.695,.201,.089,-.047,.380,-.120,.203,.407,.234,.135,.204,-.237)*f0_2+
    mat4(.268,.005,.200,.227,-.111,-.095,.129,.011,-.113,-.035,.165,-.090,-.030,.104,.126,-.035)*f0_3+
    mat4(-.234,.034,-.273,.142,.109,.013,.091,.195,.037,.271,-.483,.299,-.143,.043,.197,-.270)*f0_4+
    mat4(-.479,.043,.125,.108,.594,-.023,-.300,.084,.020,.138,.024,.338,-.529,.370,-.270,-.011)*f0_5+
    mat4(.001,-.114,-.174,.015,-.120,.284,-.330,.087,-.102,.027,-.318,-.052,.159,-.056,.297,-.019)*f0_6+
    mat4(-.103,-.121,.143,.123,-.175,.009,-.250,-.180,-.259,.148,-.244,.136,.213,.063,.041,.006)*f0_7+
    mat4(-.090,-.057,.048,.115,-.332,.044,-.074,-.158,-.054,-.141,-.172,.208,.050,.051,.292,.049)*f0_8+
    mat4(-.277,-.022,-.161,.124,.051,-.117,.255,.158,-.121,.197,-.011,.059,.469,-.163,.057,.109)*f0_9+
    mat4(-.454,.032,-.291,.175,-.125,-.032,.304,-.110,-.361,.087,.130,-.144,-.405,-.195,.104,-.433)*f0_10+
    mat4(.171,.070,-.310,-.049,-.376,-.021,-.008,.105,-.146,-.081,.183,.022,.143,.138,.195,.126)*f0_11+
    mat4(.128,.036,-.067,-.043,.111,-.145,-.289,-.218,.183,-.151,.196,.027,-.279,.001,-.361,-.346)*f0_12+
    mat4(-.008,-.116,.352,.066,-.269,.146,-.111,-.205,.131,-.097,.189,-.158,-.233,.028,.106,.022)*f0_13+
    mat4(.291,.063,.291,.033,.117,.009,-.097,-.049,-.310,.343,-.116,-.212,.023,.027,-.125,-.066)*f0_14+
    mat4(-.063,-.128,-.092,.010,.436,-.231,.169,-.161,.007,-.128,-.067,.047,-.247,-.106,-.050,-.201)*f0_15+
    vec4(-.326,.881,.914,-.160))/1.0+f0_13;
vec4 f1_14=sin(mat4(-.444,-.066,-.043,.331,-.012,-.176,-.075,-.134,-.013,-.021,.113,-.066,.004,.123,-.156,.252)*f0_0+
    mat4(-.164,.008,.330,-.687,.043,-.066,-.232,-.111,.084,.022,.292,-.331,-.116,.140,-.373,.384)*f0_1+
    mat4(.121,.097,.209,.051,-.307,-.393,.309,.436,.212,.238,.086,.090,.113,-.100,-.310,.238)*f0_2+
    mat4(.217,-.082,.257,.197,-.058,-.010,-.020,-.114,.142,.145,-.250,.075,.228,.024,.126,-.158)*f0_3+
    mat4(-.038,-.061,.122,.136,-.097,.004,-.049,.028,-.045,-.238,.599,.094,.086,-.077,.027,.137)*f0_4+
    mat4(.066,.263,.134,-.160,-.299,-.098,-.233,.075,-.188,.077,-.498,-.264,-.433,-.318,.657,.208)*f0_5+
    mat4(-.197,.090,.167,-.172,-.133,-.135,.532,-.039,.057,-.157,.008,-.032,.119,.119,-.283,.017)*f0_6+
    mat4(-.219,.390,.119,-.213,-.115,-.238,.029,-.057,-.057,-.182,.003,.249,.092,-.011,-.208,.060)*f0_7+
    mat4(-.131,.003,-.221,.089,.085,-.129,-.155,-.323,.113,-.073,-.040,-.190,.109,.238,-.000,.046)*f0_8+
    mat4(.152,-.069,.854,-.283,.068,.032,.008,.003,.432,-.015,.194,.171,-.207,.179,-.243,-.305)*f0_9+
    mat4(-.228,-.126,-.075,-.095,-.062,.184,-.093,.006,.221,.019,-.210,.016,.021,-.268,-.323,.208)*f0_10+
    mat4(-.039,.104,-.003,.070,-.260,.130,.224,-.215,-.091,.181,-.173,.038,-.013,.182,-.315,-.273)*f0_11+
    mat4(-.220,.066,-.341,.211,-.248,.004,-.092,-.016,-.100,.144,.011,-.004,-.092,.110,-.180,-.153)*f0_12+
    mat4(.258,.061,.288,.131,-.342,-.018,.387,.005,-.187,-.129,-.353,.119,-.178,.119,.140,-.202)*f0_13+
    mat4(.087,.041,-.082,.132,-.006,.065,.239,.145,-.148,.147,.194,.125,.238,-.358,-.094,-.354)*f0_14+
    mat4(.021,.165,-.163,.220,-.389,-.284,-.130,.218,-.098,-.089,-.019,-.037,-.077,-.194,-.098,-.191)*f0_15+
    vec4(-.215,-1.302,-.135,.933))/1.0+f0_14;
vec4 f1_15=sin(mat4(.292,.124,-.156,.092,.107,.066,.182,-.248,-.160,.090,.248,.193,-.104,-.130,.081,.084)*f0_0+
    mat4(-.039,-.158,.502,-.321,-.031,-.135,-.069,-.102,-.244,.194,-.232,.403,.093,-.066,.115,.333)*f0_1+
    mat4(.237,.047,-.070,.161,.228,.287,.013,.159,-.018,.056,-.158,.055,.065,.014,.160,-.019)*f0_2+
    mat4(-.052,-.138,-.076,.280,.039,-.161,-.082,-.131,-.080,-.231,.056,.279,-.228,.139,-.078,.017)*f0_3+
    mat4(.170,-.018,.267,-.064,.233,.164,-.025,-.043,.195,.454,.523,.146,.053,-.235,-.257,.073)*f0_4+
    mat4(-.173,.044,-.095,-.127,.129,.021,.345,.250,.046,-.207,-.204,-.190,.312,.261,.039,.178)*f0_5+
    mat4(-.174,-.185,-.030,.794,.046,.150,-.035,.296,-.165,.141,.147,-.201,.253,.146,.200,-.323)*f0_6+
    mat4(-.340,-.279,.101,-.152,.084,-.087,-.001,.191,.095,.183,.152,-.047,.001,-.063,.035,-.227)*f0_7+
    mat4(.065,-.166,-.054,-.088,.193,.112,-.166,.109,.348,-.137,-.118,.256,-.063,.061,.174,-.063)*f0_8+
    mat4(-.017,.126,.029,-.366,.095,.027,-.154,-.023,.025,-.106,.082,.048,.062,.100,.087,.072)*f0_9+
    mat4(-.127,.078,-.059,.711,.191,-.245,-.292,.158,-.187,-.221,-.187,.129,-.498,-.222,-.432,-.217)*f0_10+
    mat4(.032,-.069,.083,.171,-.276,-.102,-.092,.120,.002,-.063,-.092,.070,.027,.132,.172,-.026)*f0_11+
    mat4(-.242,.102,-.157,-.119,-.252,-.078,.208,.195,-.013,-.000,-.278,.012,-.066,.095,.009,.022)*f0_12+
    mat4(-.019,.231,-.010,-.355,.218,.010,-.127,.023,-.270,.090,.063,-.108,.060,-.219,-.432,.048)*f0_13+
    mat4(.194,.143,.240,.070,.001,-.022,.097,.126,.234,-.004,-.301,-.018,-.349,-.073,.142,-.066)*f0_14+
    mat4(-.181,.139,.261,.009,.107,.174,.082,.077,-.185,-.022,.067,.136,.157,-.041,-.186,-.092)*f0_15+
    vec4(-.893,.271,.961,-.107))/1.0+f0_15;
vec4 f2_0=sin(mat4(-.286,.182,-.074,-.223,-.049,.004,-.073,.199,-.047,-.169,-.297,-.165,-.171,.161,-.619,-.117)*f1_0+
    mat4(.144,.084,-.051,-.075,.005,-.031,.369,-.212,.077,-.230,.004,.357,.020,.391,.307,.113)*f1_1+
    mat4(.059,-.045,.324,-.048,-.079,.290,-.187,-.163,-.045,-.049,-.339,-.159,.050,.192,.475,.262)*f1_2+
    mat4(-.089,.022,-.470,.359,-.003,-.079,-.283,-.129,-.039,.157,-.213,-.068,-.102,-.029,-.283,-.147)*f1_3+
    mat4(.009,-.118,-.065,.152,-.045,.220,.105,.231,.034,-.018,-.238,.251,.039,.086,-.063,.018)*f1_4+
    mat4(-.030,-.151,.078,-.278,.017,-.097,-.021,.362,.042,.024,.010,-.279,.020,-.023,.263,.069)*f1_5+
    mat4(.013,-.163,.089,.241,.095,.243,-.208,-.001,-.048,.111,.144,-.248,-.002,-.076,-.014,-.464)*f1_6+
    mat4(.091,.084,-.049,.112,-.030,-.175,.159,-.077,-.017,.067,.085,.061,-.054,-.146,-.181,.332)*f1_7+
    mat4(.126,.065,-.084,.454,.005,.033,.422,-.401,-.058,.198,-.415,.112,.005,.113,-.033,-.163)*f1_8+
    mat4(.062,-.247,.290,.170,-.040,.130,-.102,-.111,.056,.060,-.078,-.038,.007,-.094,.027,.158)*f1_9+
    mat4(.130,.248,-.331,-.244,.073,-.091,-.030,.354,.051,-.166,.075,-.026,-.039,-.097,.234,-.106)*f1_10+
    mat4(.022,.148,-.302,.522,-.059,-.136,-.203,-.060,-.080,-.095,-.044,-.354,.183,-.072,.197,.015)*f1_11+
    mat4(.014,.206,.410,-.181,-.056,-.042,.020,-.301,-.087,.210,.111,-.240,.099,-.027,.202,-.060)*f1_12+
    mat4(-.101,-.192,.382,.102,-.033,-.230,-.107,-.190,-.033,-.255,-.252,-.349,.034,-.053,-.159,-.013)*f1_13+
    mat4(-.024,.070,.603,.153,.112,-.079,.082,.221,.185,-.121,.249,.015,.035,-.142,-.600,-.077)*f1_14+
    mat4(.009,-.078,.062,.396,-.018,.134,.030,.433,-.071,-.089,-.547,.124,-.009,.150,.249,.275)*f1_15+
    vec4(1.150,-.398,-.476,-1.155))/1.4+f1_0;
vec4 f2_1=sin(mat4(-.175,-.033,.086,-.068,-.047,-.124,-.023,.018,.036,-.006,-.029,.017,.079,.037,-.019,.042)*f1_0+
    mat4(-.100,-.128,.081,-.060,-.109,.042,-.005,.011,.007,-.010,.053,-.033,-.224,.059,-.050,-.009)*f1_1+
    mat4(.139,.057,-.015,.051,-.093,-.074,.017,.054,-.110,.002,.036,-.033,-.304,-.160,.002,-.100)*f1_2+
    mat4(-.073,.031,-.092,.032,-.107,-.125,.014,-.000,-.156,.009,.019,-.039,.067,.060,-.131,-.016)*f1_3+
    mat4(.202,.046,-.060,.042,-.079,-.023,.047,-.035,.137,-.097,.020,-.011,.190,-.030,-.031,.044)*f1_4+
    mat4(.086,.175,-.041,.023,.078,.024,.011,.014,-.140,-.026,.022,.020,-.025,-.022,.049,-.045)*f1_5+
    mat4(-.200,-.059,.007,-.037,.118,-.001,-.052,.040,.043,.242,-.026,.012,-.010,-.071,-.032,.002)*f1_6+
    mat4(-.105,.008,.097,-.044,-.037,-.063,-.020,.009,.076,.134,-.132,.092,.104,.007,.000,-.017)*f1_7+
    mat4(.011,-.023,-.037,.014,.165,-.058,.140,-.092,-.038,-.022,-.024,.020,-.019,.003,.024,-.005)*f1_8+
    mat4(-.079,-.070,-.008,-.010,-.195,-.021,.092,-.043,.708,.085,-.067,.057,-.141,.015,-.022,.005)*f1_9+
    mat4(.002,.255,.044,-.065,-.163,-.157,.007,-.015,-.045,-.153,.040,.002,.127,.005,.002,-.005)*f1_10+
    mat4(.138,-.008,.029,-.041,-.088,.009,-.041,.023,-.065,-.020,.023,-.038,-.031,.061,-.032,.003)*f1_11+
    mat4(.126,.026,.045,-.035,-.021,-.026,-.048,.022,-.193,-.110,.065,-.047,-.113,-.112,.142,-.090)*f1_12+
    mat4(-.073,-.059,-.029,.017,.102,-.033,-.023,.059,.039,-.032,-.084,.043,-.248,.074,.028,-.026)*f1_13+
    mat4(-.029,-.058,.052,-.028,-.007,.057,-.001,.011,-.045,-.122,.032,-.026,.057,.040,-.037,.089)*f1_14+
    mat4(-.023,-.036,.055,-.041,.088,.012,-.007,-.008,.082,-.059,.016,-.032,.085,-.062,.074,-.040)*f1_15+
    vec4(-.531,-.290,-.361,-.060))/1.4+f1_1;
vec4 f2_2=sin(mat4(-.095,-.236,-.147,.081,.113,.064,.014,-.180,-.171,-.053,.051,-.353,-.383,-.065,-.095,-.077)*f1_0+
    mat4(-.230,.145,-.033,.071,.104,.047,.021,-.103,-.344,-.366,.164,-.207,.499,.067,-.111,-.365)*f1_1+
    mat4(-.179,.078,-.037,.004,-.114,-.222,.137,-.279,.007,.001,.176,-.178,.117,.089,.263,-.115)*f1_2+
    mat4(-.314,-.135,.150,.067,.284,.078,-.079,-.165,.055,-.035,.258,-.237,.043,.129,.107,.387)*f1_3+
    mat4(-.032,-.012,-.235,.402,.324,-.017,.211,-.464,-.279,-.035,-.032,-.069,.029,-.161,-.130,.282)*f1_4+
    mat4(-.029,.121,.401,-.191,.336,.020,-.247,.530,.417,.146,-.003,.457,.210,.260,-.087,.100)*f1_5+
    mat4(-.260,-.130,.277,.088,-.429,.039,.124,.166,.243,-.074,-.078,.061,-.162,.176,-.062,-.414)*f1_6+
    mat4(.160,.218,-.271,.180,-.169,.139,-.024,.308,-.259,-.081,.082,.129,-.298,.117,.175,-.311)*f1_7+
    mat4(-.257,.274,-.239,-.141,.351,.072,.076,.170,.024,.182,-.254,.011,-.027,-.089,.008,.018)*f1_8+
    mat4(-.039,-.118,.480,-.118,.171,-.153,.200,-.026,-.182,.116,.271,-.377,.173,.021,-.161,.431)*f1_9+
    mat4(-.631,-.153,.451,-.044,-.288,-.187,.370,-.203,.036,.069,-.253,.341,-.282,-.027,.462,.300)*f1_10+
    mat4(.107,.290,.184,-.159,-.137,-.381,-.321,.284,-.101,-.039,.168,-.216,.190,.005,-.163,.017)*f1_11+
    mat4(.221,.117,-.058,.307,.014,-.136,-.135,.355,.107,.219,.187,-.495,.295,.148,-.052,-.249)*f1_12+
    mat4(.151,-.084,-.271,.835,-.217,.072,.031,.319,.537,-.269,-.481,.095,.260,.369,-.042,-.278)*f1_13+
    mat4(.224,.317,.342,-.400,.182,-.108,-.349,.161,-.058,.198,-.183,.331,-.290,.219,-.074,.402)*f1_14+
    mat4(.214,-.009,-.180,.021,.318,.028,-.190,.028,-.486,.125,.535,.145,-.167,-.173,-.174,.292)*f1_15+
    vec4(.158,-.769,-.606,-.370))/1.4+f1_2;
vec4 f2_3=sin(mat4(-.002,-.001,-.201,-.110,.058,-.295,-.216,.096,-.068,.266,-.024,-.012,-.008,.040,-.131,.055)*f1_0+
    mat4(.127,-.015,-.037,.117,-.093,-.032,.162,-.002,.109,.218,.238,-.167,.016,-.997,.155,-.003)*f1_1+
    mat4(-.001,.072,-.045,.199,-.133,.385,-.320,.256,-.100,.460,.106,.227,.040,-.472,.037,-.290)*f1_2+
    mat4(-.129,.405,.311,-.165,.019,-.011,-.066,.007,.019,-.140,.084,-.446,.103,-.059,.162,.594)*f1_3+
    mat4(-.001,.062,-.310,.453,-.012,-.171,-.286,-.586,-.007,-.248,.078,-.064,-.204,.275,-.151,-.009)*f1_4+
    mat4(-.031,-.657,.270,.138,-.071,-.221,-.003,-.276,.106,-.203,-.068,-.005,.051,-.058,-.070,.290)*f1_5+
    mat4(.046,-.015,.138,-.189,-.036,.286,.015,.204,.080,.142,-.187,-.088,.003,-.129,.026,.130)*f1_6+
    mat4(.043,.274,.048,-.107,.021,-.205,.056,.212,-.163,-.070,-.054,-.208,.045,-.314,.109,-.032)*f1_7+
    mat4(-.076,.382,.267,.018,.064,-.003,-.187,-.218,-.055,.271,.342,-.156,-.048,.291,.124,-.578)*f1_8+
    mat4(.029,-.118,-.108,-.024,-.069,.163,-.119,-.298,.079,.198,-.216,.115,.050,-.122,.052,-.270)*f1_9+
    mat4(.180,.053,.010,-.110,-.038,.174,.070,-.002,.004,.826,-.193,.085,.131,-.185,-.242,-.313)*f1_10+
    mat4(.032,.010,-.115,-.279,-.066,.298,.186,.057,-.014,.111,-.039,-.433,.064,-.312,-.190,-.299)*f1_11+
    mat4(.035,.215,-.172,.208,-.008,-.418,.061,.016,.079,-.042,-.185,-.214,.155,.402,-.194,.396)*f1_12+
    mat4(-.041,-.442,-.294,-.152,-.024,-.279,.095,.513,-.103,.026,-.142,.265,-.030,.163,.259,.011)*f1_13+
    mat4(.061,-.026,-.014,-.086,-.028,.050,.086,.199,-.004,.263,-.129,-.389,-.121,.087,-.055,-.204)*f1_14+
    mat4(-.022,-.090,-.104,-.287,-.003,.074,-.036,.027,.056,-.108,-.022,-.281,.109,.589,.043,.307)*f1_15+
    vec4(.419,-.229,.302,.839))/1.4+f1_3;
vec4 f2_4=sin(mat4(-.113,-.008,-.112,-.077,.179,.138,-.199,-.002,.261,.031,.284,.027,.035,-.144,-.065,.067)*f1_0+
    mat4(-.019,-.092,.027,-.056,.138,.010,-.224,.011,-.230,.158,.163,-.021,.131,-.054,-.522,.012)*f1_1+
    mat4(.197,-.074,-.037,.016,.267,-.184,.514,-.007,-.109,.127,.169,.014,-.040,.287,-.252,-.078)*f1_2+
    mat4(-.166,.235,-.070,.041,.017,-.104,.174,-.014,-.259,-.051,.394,.015,.170,-.006,.214,.093)*f1_3+
    mat4(.277,-.028,-.187,.031,-.003,-.187,-.088,-.030,-.087,-.185,-.146,.072,.052,.150,.104,.019)*f1_4+
    mat4(-.256,-.081,.278,.039,.160,-.071,-.315,-.005,.015,-.057,-.000,.007,-.132,-.107,-.146,-.052)*f1_5+
    mat4(.013,-.101,-.006,.012,-.342,-.014,-.008,.007,.293,-.058,-.449,-.054,.103,-.045,.013,-.049)*f1_6+
    mat4(.128,-.167,.019,-.083,-.152,.060,.144,.046,.300,-.138,-.266,.139,-.113,.022,.355,-.022)*f1_7+
    mat4(.126,.096,-.466,.037,.026,.214,-.364,-.075,.104,.033,-.309,.055,-.085,.083,.118,.015)*f1_8+
    mat4(.087,-.080,.317,-.059,.005,.208,-.061,-.040,.051,-.227,-.197,.055,.245,.033,.180,-.016)*f1_9+
    mat4(-.113,.543,.100,-.058,.035,-.133,-.174,.074,.058,.247,.062,-.038,-.137,-.114,-.137,-.019)*f1_10+
    mat4(-.192,.019,-.212,-.012,.174,.134,-.004,.092,-.048,-.179,.204,-.024,.002,-.048,.307,-.000)*f1_11+
    mat4(.070,.043,-.581,.023,-.112,-.130,-.094,.012,-.079,.008,-.018,-.004,-.240,-.076,-.421,-.180)*f1_12+
    mat4(.285,-.127,-.142,.055,-.036,-.088,.082,.026,.284,-.259,.083,.054,-.018,-.258,-.068,-.025)*f1_13+
    mat4(-.091,.163,-.143,-.050,.214,-.108,-.222,.008,.054,-.301,-.171,-.014,.509,-.054,-.417,.081)*f1_14+
    mat4(.106,-.117,-.209,-.023,.158,-.071,-.237,-.000,.013,.209,-.118,-.009,.184,-.364,.194,-.034)*f1_15+
    vec4(1.320,1.154,.915,.004))/1.4+f1_4;
vec4 f2_5=sin(mat4(-.051,.161,-.114,-.193,-.015,-.029,-.005,.353,.042,-.082,.024,-.036,-.109,-.094,-.018,-.260)*f1_0+
    mat4(.202,.070,-.067,.423,-.018,-.178,.051,.020,.277,-.000,-.009,-.121,.081,.024,-.056,.109)*f1_1+
    mat4(-.125,.073,.050,.098,-.153,-.008,.006,.123,.168,-.152,.002,-.254,.120,.160,-.274,-.018)*f1_2+
    mat4(.228,-.213,-.010,-.614,.082,-.009,-.005,.001,-.071,-.062,-.050,-.080,-.036,-.136,.123,-.214)*f1_3+
    mat4(-.079,-.047,.008,-.015,.001,-.131,-.116,-.051,-.170,.051,.019,-.250,-.102,-.103,.144,.132)*f1_4+
    mat4(-.202,.028,.055,.380,.081,-.089,-.054,-.437,-.247,-.094,.068,.164,.066,.118,-.030,.022)*f1_5+
    mat4(.155,.173,.003,.088,-.081,.185,.073,.314,-.077,.122,-.049,-.052,-.059,.095,.057,.176)*f1_6+
    mat4(.073,-.027,-.024,.040,-.024,-.040,.051,.416,-.024,-.211,-.008,.133,-.094,-.166,-.010,-.378)*f1_7+
    mat4(-.082,.046,.043,.399,.229,.325,-.215,-.633,-.033,.019,.033,-.153,-.104,-.063,-.051,.012)*f1_8+
    mat4(-.106,-.085,-.014,.173,.163,.036,-.060,-.379,-.205,-.088,.084,.526,-.087,-.016,-.003,-.254)*f1_9+
    mat4(.285,-.219,-.099,-.007,.201,-.218,-.056,-.189,.061,.084,-.037,-.181,-.257,.123,-.014,.311)*f1_10+
    mat4(.184,.005,-.111,.206,-.081,-.074,.023,.072,.070,.008,-.100,-.159,-.199,-.009,-.018,-.081)*f1_11+
    mat4(.035,.041,-.072,-.105,-.007,.006,.032,.190,.038,.145,-.117,-.035,.142,.186,-.234,.260)*f1_12+
    mat4(-.329,-.282,.050,-.392,.161,.157,.149,.159,.355,-.247,-.091,.214,.096,.103,-.018,.398)*f1_13+
    mat4(-.134,.093,-.017,.052,.012,.004,.025,.282,.142,.156,.022,-.216,-.231,-.098,.008,.026)*f1_14+
    mat4(.024,-.191,-.060,.050,-.020,.038,-.007,-.289,.072,-.024,-.024,-.250,.185,-.020,.082,.140)*f1_15+
    vec4(1.002,-.119,.230,.808))/1.4+f1_5;
vec4 f2_6=sin(mat4(.049,.039,-.075,-.210,.044,.003,.038,.034,-.085,-.025,-.029,.237,.644,-.052,.150,-.480)*f1_0+
    mat4(.507,.075,.010,.103,-.331,.021,-.018,.301,.432,.046,-.138,.026,-.110,-.001,.154,-.174)*f1_1+
    mat4(-.247,-.024,-.002,-.046,.248,-.015,-.083,-.203,.327,-.000,-.001,.085,.118,.103,-.104,.144)*f1_2+
    mat4(-.029,-.070,.024,.441,.354,.038,-.019,-.025,.205,.011,.027,-.144,.007,-.079,.070,.358)*f1_3+
    mat4(.137,-.034,.064,-.331,.359,.023,-.117,-.055,-.097,-.017,-.043,-.186,-.171,-.069,-.064,.124)*f1_4+
    mat4(.284,-.027,-.105,-.074,-.074,-.022,-.034,-.148,-.230,-.004,.088,-.160,.056,.024,-.011,-.182)*f1_5+
    mat4(.271,.054,.028,-.110,.172,-.053,.050,-.030,-.451,-.010,-.031,.137,-.316,.022,-.008,-.159)*f1_6+
    mat4(.271,.054,-.086,-.272,.481,.011,.026,.135,-.181,-.094,.045,-.021,-.364,.010,-.042,-.042)*f1_7+
    mat4(-.043,-.010,-.024,-.286,.268,.111,-.033,-.004,-.020,.003,.019,-.359,-.090,-.005,-.006,.218)*f1_8+
    mat4(.359,.022,-.009,-.144,-.530,.036,-.177,.165,-.156,-.072,.021,-.401,-.225,-.002,.003,.163)*f1_9+
    mat4(.496,.023,-.103,-.184,-.029,-.008,.051,-.072,.104,.027,-.078,-.128,-.092,.006,-.009,-.076)*f1_10+
    mat4(-.067,.018,-.028,-.206,.132,-.004,.048,.313,.265,.013,-.009,-.071,.288,-.010,.015,-.263)*f1_11+
    mat4(-.470,.008,-.031,.002,-.073,-.007,.025,.093,-.176,.060,-.059,.122,-.062,.119,-.010,-.295)*f1_12+
    mat4(-.252,-.019,-.064,.118,.294,-.038,.021,-.043,-.222,-.065,.054,-.442,.049,.006,.072,.116)*f1_13+
    mat4(-.277,.045,-.093,-.223,.181,-.031,.052,-.282,-.436,.053,-.313,.289,.140,-.032,-.030,.103)*f1_14+
    mat4(.316,.014,-.003,-.002,-.396,.023,-.025,-.278,.707,.044,-.045,.017,-.086,.033,-.069,.340)*f1_15+
    vec4(.810,-.385,1.084,-.992))/1.4+f1_6;
vec4 f2_7=sin(mat4(.380,-.087,.037,-.094,-.167,.054,-.121,-.057,.089,.017,.004,.093,-.098,.062,.345,.063)*f1_0+
    mat4(.397,-.131,.122,.145,-.111,-.004,-.194,.081,.001,-.048,.043,.114,.185,.110,-.046,-.172)*f1_1+
    mat4(.005,.018,-.135,-.025,-.089,.005,-.055,-.121,-.149,.035,-.150,-.019,.294,-.186,-.098,.050)*f1_2+
    mat4(.026,-.000,.010,.073,-.139,-.014,-.202,.094,.143,.032,.092,.047,.177,.101,-.013,.056)*f1_3+
    mat4(-.463,.033,.183,-.066,-.436,-.070,-.099,.092,-.002,-.034,.057,.002,.025,.074,-.240,-.059)*f1_4+
    mat4(.224,-.045,.275,.168,-.077,-.044,.130,.022,-.166,-.009,-.152,.055,.138,-.041,.426,-.042)*f1_5+
    mat4(-.400,.034,.178,-.020,.066,.026,.046,-.120,-.018,.036,-.023,.273,-.271,-.002,-.161,.171)*f1_6+
    mat4(-.214,-.062,-.353,-.009,.064,.030,.087,.033,.033,.103,.389,.028,.139,-.046,.367,.267)*f1_7+
    mat4(-.189,.022,-.209,.017,.345,-.229,-.377,.050,-.128,.002,-.037,.212,-.371,-.074,-.130,.068)*f1_8+
    mat4(.027,-.028,-.248,.002,.030,-.075,-.202,.048,.001,.045,.020,-.180,-.174,.044,-.206,.070)*f1_9+
    mat4(-.525,-.086,-.009,.133,.219,-.003,-.049,-.010,-.150,-.055,-.278,-.091,.089,-.004,-.011,-.238)*f1_10+
    mat4(.201,-.047,.122,-.061,-.028,.059,.128,-.011,-.017,-.050,-.038,-.070,-.003,.021,-.091,-.103)*f1_11+
    mat4(.311,-.078,.085,.033,.039,.062,.328,.111,.105,-.036,-.040,.108,.227,-.125,-.090,-.156)*f1_12+
    mat4(-.359,.016,-.010,.174,.298,.063,.370,-.038,-.236,.011,.301,.116,.240,-.028,-.131,-.056)*f1_13+
    mat4(.126,-.065,-.015,.104,.115,-.004,-.163,-.161,.380,-.003,-.335,.106,-.094,.051,.055,.228)*f1_14+
    mat4(-.253,-.083,.126,-.043,-.040,-.024,.255,.010,-.072,.004,.398,.133,.158,-.010,.316,.045)*f1_15+
    vec4(-1.018,.529,.171,.716))/1.4+f1_7;
vec4 f2_8=sin(mat4(-.183,.015,.093,-.017,.084,.010,.108,.192,-.017,.031,-.112,-.194,.158,-.034,-.132,-.042)*f1_0+
    mat4(-.037,.038,.063,.032,.019,.032,.039,.185,-.294,.092,-.214,-.301,.245,.084,.116,-.077)*f1_1+
    mat4(-.057,-.074,-.090,-.122,-.320,-.038,-.054,.365,.116,.050,-.052,.051,-.116,.088,.151,-.190)*f1_2+
    mat4(-.231,-.016,.122,-.130,-.278,.046,.003,.109,.105,.036,.044,-.072,.249,-.016,-.065,.092)*f1_3+
    mat4(-.013,-.042,.014,-.059,-.035,.015,.005,-.303,.239,-.050,.025,.274,.297,-.034,-.096,.327)*f1_4+
    mat4(.230,-.075,.073,.127,-.080,-.036,.116,.139,-.096,-.051,.071,-.155,-.022,-.003,.087,.222)*f1_5+
    mat4(-.128,.044,-.158,-.188,.102,-.146,.212,.051,.045,-.005,-.175,.102,.105,.025,.053,.058)*f1_6+
    mat4(-.176,.027,.171,.097,.266,.002,-.043,-.146,.186,-.023,-.083,-.004,-.047,-.002,-.010,.198)*f1_7+
    mat4(.125,.025,.084,.165,.269,-.001,.398,.265,.114,-.004,-.172,-.334,.107,-.027,.123,-.121)*f1_8+
    mat4(-.025,-.017,.007,.144,-.101,.049,-.148,.082,.068,-.082,.122,.131,-.139,.051,-.112,-.200)*f1_9+
    mat4(-.188,.106,.148,-.558,.109,.029,-.052,-.064,-.039,.012,-.070,-.006,-.168,-.095,-.185,.009)*f1_10+
    mat4(-.017,.045,.110,.061,.175,-.024,.026,-.003,.217,.035,.090,-.037,-.015,-.019,-.087,-.155)*f1_11+
    mat4(.087,.046,.105,.008,.037,.019,-.046,.032,-.163,.048,-.062,.089,.076,.061,.191,-.264)*f1_12+
    mat4(.341,-.017,-.064,.127,.285,-.061,.027,.182,-.028,.014,-.007,-.277,.236,-.004,.043,-.342)*f1_13+
    mat4(-.186,.013,-.114,.284,-.009,.014,-.022,-.087,-.475,.049,-.188,-.064,-.014,-.097,-.382,-.282)*f1_14+
    mat4(.066,-.035,.187,-.042,.107,.044,-.122,-.077,-.098,.076,.058,-.039,-.052,.071,.171,.567)*f1_15+
    vec4(-.238,-.021,-.188,-.432))/1.4+f1_8;
vec4 f2_9=sin(mat4(.054,.080,-.289,.053,-.023,-.075,-.075,.024,-.066,-.013,-.074,-.030,-.058,-.056,.242,-.048)*f1_0+
    mat4(.047,.003,-.372,.172,.031,.021,.132,.062,.027,.066,.298,.103,-.013,.012,-.088,-.172)*f1_1+
    mat4(-.057,.009,-.209,-.024,.016,-.139,-.130,-.021,-.008,.026,-.037,-.024,.123,-.028,.290,-.068)*f1_2+
    mat4(-.067,-.047,-.040,.200,.014,.048,-.007,.052,.033,-.016,.129,.069,-.141,-.070,-.212,-.083)*f1_3+
    mat4(-.036,-.071,-.300,-.096,.045,-.024,.144,.093,.023,.010,.084,-.027,-.142,.112,-.363,-.289)*f1_4+
    mat4(-.003,-.054,.191,.316,.008,-.033,-.283,-.083,.007,.047,.271,-.122,.032,.059,-.283,.104)*f1_5+
    mat4(.023,.062,.081,.195,-.032,-.062,-.061,.151,-.035,.042,-.077,-.124,-.008,-.042,-.191,-.187)*f1_6+
    mat4(.094,.129,.199,.048,-.021,-.063,-.013,.111,-.126,-.180,-.149,-.218,.025,-.081,.060,-.040)*f1_7+
    mat4(-.016,-.103,-.296,.042,.204,.116,.300,.229,.001,-.060,-.071,.016,.034,.008,.186,-.144)*f1_8+
    mat4(.041,.088,.320,.072,.039,.102,-.471,.042,-.067,-.078,-.092,-.007,-.013,.038,-.491,.105)*f1_9+
    mat4(.009,.089,-.101,-.163,-.026,.005,-.116,.241,.055,.028,-.005,-.178,.053,.129,-.082,-.034)*f1_10+
    mat4(.030,.006,.197,-.121,-.023,-.080,.065,.080,.032,.009,.427,.039,.038,.018,.238,-.086)*f1_11+
    mat4(.035,-.003,-.228,-.102,-.028,-.100,-.190,-.062,.027,.106,-.015,-.001,.194,.285,.222,.070)*f1_12+
    mat4(-.027,-.101,.599,-.150,-.062,-.049,-.109,-.016,-.101,-.082,-.326,-.037,.017,.037,.245,.081)*f1_13+
    mat4(.044,.077,.203,-.029,-.009,-.007,.596,-.013,.047,.015,-.390,-.069,-.004,-.050,-.325,-.124)*f1_14+
    mat4(.046,.006,.163,.016,.006,.027,-.208,.085,.011,.000,.160,-.223,.002,-.147,.094,.293)*f1_15+
    vec4(-.497,.024,.201,-.583))/1.4+f1_9;
vec4 f2_10=sin(mat4(-.175,-.101,-.358,.069,-.049,-.028,-.106,-.012,-.090,.137,-.153,-.079,.035,-.012,.715,-.024)*f1_0+
    mat4(-.168,-.177,-.618,-.024,-.016,.166,-.322,.015,-.027,-.311,.081,.042,-.085,.009,-.339,-.002)*f1_1+
    mat4(.074,.180,-.030,-.033,-.015,-.063,.213,.040,-.073,-.045,-.305,-.085,-.103,-.045,-.651,.026)*f1_2+
    mat4(.009,-.179,.480,-.047,-.036,-.094,-.249,-.055,-.099,-.135,.120,.037,-.039,.212,.145,-.202)*f1_3+
    mat4(.110,.038,.008,-.035,-.010,.094,.681,.102,.183,-.028,.349,.035,-.040,-.097,.153,.044)*f1_4+
    mat4(-.216,.054,-.125,.003,.138,.062,-.166,.106,-.020,.029,.152,.079,.052,-.072,-.202,.067)*f1_5+
    mat4(.043,-.087,-.200,.043,.007,-.249,.016,-.022,.144,.052,.134,-.062,.037,.045,-.189,-.057)*f1_6+
    mat4(.041,-.209,-.303,.107,.112,-.009,.058,-.052,.045,.125,-.042,-.181,-.028,.041,-.064,.083)*f1_7+
    mat4(.067,.075,-.327,.079,-.086,-.181,-.041,.105,.009,.088,-.408,-.057,-.010,.029,-.011,.013)*f1_8+
    mat4(.070,.150,-.120,.126,.065,-.010,-.103,.043,-.016,.117,-.137,-.014,.033,.132,.206,.016)*f1_9+
    mat4(-.118,-.461,.508,-.087,-.226,-.183,-.192,-.095,.173,-.002,.566,.110,.069,-.103,.066,-.048)*f1_10+
    mat4(-.089,-.150,-.203,.078,.205,.033,.529,-.061,.063,-.017,-.236,.041,.033,-.119,.461,.065)*f1_11+
    mat4(-.186,-.096,.045,.010,.109,.000,-.123,-.045,-.113,-.042,-.132,.017,.051,-.100,-.423,.002)*f1_12+
    mat4(.129,.224,.180,.091,.037,-.133,-.278,-.133,.058,.152,.287,-.087,-.162,-.035,-.229,-.060)*f1_13+
    mat4(.053,.115,-.171,.001,-.008,.121,.028,-.050,-.220,.018,.362,.187,.300,.295,.644,-.113)*f1_14+
    mat4(-.131,.041,-.166,.047,.036,.039,-.284,.028,-.042,-.120,.691,-.013,.072,-.161,-.319,.266)*f1_15+
    vec4(.913,-.957,.187,-.340))/1.4+f1_10;
vec4 f2_11=sin(mat4(-.206,-.135,-.046,.582,.038,.002,.108,-.207,-.219,-.017,.005,-.009,-.120,.123,.008,.272)*f1_0+
    mat4(-.302,-.074,.062,.170,.115,.219,-.007,.240,-.022,.358,.165,-.317,-.119,.118,.012,.016)*f1_1+
    mat4(.037,-.059,-.085,.108,-.082,-.070,.431,.334,-.057,.270,.227,.061,-.371,.177,-.163,-.140)*f1_2+
    mat4(.248,-.113,-.101,.238,-.092,.058,-.021,-.014,.045,-.379,.094,-.149,-.010,-.155,.116,-.279)*f1_3+
    mat4(-.021,.035,.131,-.192,-.040,.041,.151,.066,.060,-.059,.003,-.065,.198,-.119,-.144,.253)*f1_4+
    mat4(-.196,-.002,-.134,-.473,.002,.202,.125,.332,.049,-.109,-.137,-.320,.024,.142,-.303,-.031)*f1_5+
    mat4(.109,.221,-.062,-.314,.058,-.249,.005,-.099,-.121,-.079,.333,-.008,.173,-.065,.225,-.395)*f1_6+
    mat4(.138,.025,.000,-.060,.147,.106,-.006,.023,-.168,.196,.006,.133,-.001,-.321,-.000,.212)*f1_7+
    mat4(.097,.227,-.141,.250,-.105,-.170,-.199,.403,-.047,.110,.047,-.108,-.018,.217,.159,.010)*f1_8+
    mat4(.035,.114,-.120,.273,.225,-.114,-.076,.180,-.013,.358,-.271,.275,-.122,-.039,-.145,-.199)*f1_9+
    mat4(-.101,.152,-.221,.395,-.120,-.298,-.077,-.180,-.141,.177,.042,-.115,.195,-.272,-.053,.107)*f1_10+
    mat4(.070,.081,-.013,.055,.152,-.140,.205,-.025,-.166,.100,.045,-.536,-.121,.264,.025,-.299)*f1_11+
    mat4(.011,-.159,-.103,-.143,.027,.058,.102,.010,-.216,-.200,-.055,.220,.051,-.058,.080,-.051)*f1_12+
    mat4(.027,-.038,.304,-.102,.138,.149,-.014,-.223,.085,.004,-.160,.105,-.119,.077,-.210,-.326)*f1_13+
    mat4(-.117,-.164,-.088,-.016,.065,-.077,-.061,.011,.231,-.275,.337,.043,-.114,-.009,-.135,-.527)*f1_14+
    mat4(-.173,.134,.119,-.058,.188,-.013,-.175,.099,-.089,-.019,.017,.023,.077,.196,.543,.493)*f1_15+
    vec4(1.132,-.165,.815,-.423))/1.4+f1_11;
vec4 f2_12=sin(mat4(-.187,-.029,.297,.004,-.022,.118,.159,.010,-.110,.050,.013,-.008,-.369,.065,.066,.092)*f1_0+
    mat4(-.057,-.011,-.021,.172,.148,-.032,-.090,-.211,-.412,-.089,-.298,-.220,-.037,.082,.013,.215)*f1_1+
    mat4(.282,.008,-.061,.011,-.452,-.022,-.012,.044,-.382,.008,-.050,.090,.243,-.016,.278,.190)*f1_2+
    mat4(-.204,.092,.214,-.110,.094,-.015,.102,-.039,-.065,-.012,.061,.073,-.114,.154,.059,-.056)*f1_3+
    mat4(-.244,.052,.018,-.249,.043,-.042,-.051,.142,-.384,.002,-.067,-.008,.207,.028,.002,.191)*f1_4+
    mat4(-.141,.082,.069,-.207,.192,-.032,.068,.112,.286,.070,-.155,-.026,.101,-.057,.151,.159)*f1_5+
    mat4(-.468,-.010,.092,-.064,-.365,.054,.003,.025,.168,.091,.094,.060,.229,.028,-.074,.248)*f1_6+
    mat4(.352,-.076,-.123,.006,-.204,.062,.175,-.276,-.276,.191,-.403,-.156,.303,.072,-.014,-.042)*f1_7+
    mat4(.055,.051,-.165,-.173,.210,-.110,.280,.060,.154,.027,.126,.059,.357,-.013,-.044,-.017)*f1_8+
    mat4(-.022,-.098,-.309,-.037,.364,-.130,.006,.025,-.127,.117,-.021,-.080,.315,.041,-.038,-.004)*f1_9+
    mat4(-.190,-.063,-.017,.248,-.241,-.038,-.130,-.178,.022,.005,-.110,.020,.055,.043,.068,.045)*f1_10+
    mat4(-.335,-.022,.073,.097,-.200,.052,-.141,-.161,-.059,-.011,.010,.086,.316,.051,-.085,.295)*f1_11+
    mat4(.183,.027,-.132,.079,-.016,.115,.059,.153,.271,-.162,.224,.185,-.177,-.181,-.032,.265)*f1_12+
    mat4(.173,.020,-.074,-.158,-.031,.061,-.208,.107,.236,.065,.192,-.136,-.023,.032,-.270,.157)*f1_13+
    mat4(.246,-.028,-.243,-.063,-.106,.015,-.120,-.066,-.068,-.067,.116,-.150,-.456,.152,-.128,.084)*f1_14+
    mat4(.277,-.075,.013,.233,.166,.000,.029,.053,-.157,.034,.084,.051,-.032,-.096,-.294,.216)*f1_15+
    vec4(-.939,-.136,-.164,.456))/1.4+f1_12;
vec4 f2_13=sin(mat4(.021,-.200,-.138,.013,.021,.086,-.086,.109,-.046,.239,.009,.003,-.049,.148,-.096,-.002)*f1_0+
    mat4(.081,-.175,.310,-.022,.024,-.014,.116,.050,.022,.188,.213,.031,-.027,.141,-.008,.022)*f1_1+
    mat4(-.024,-.120,.005,-.059,-.028,-.099,.061,-.091,-.017,.206,-.321,.004,.051,.052,-.248,-.034)*f1_2+
    mat4(-.079,-.143,-.182,-.088,.031,-.099,.220,.062,-.004,-.096,.098,-.025,-.048,.126,.069,.053)*f1_3+
    mat4(.012,.124,-.120,.046,-.003,.199,.083,-.066,-.007,-.086,-.206,-.049,-.035,.206,-.039,.036)*f1_4+
    mat4(-.005,-.400,.007,-.023,-.027,.023,-.034,-.077,-.005,-.412,-.062,.002,.029,-.542,-.043,-.100)*f1_5+
    mat4(.061,.167,.211,.071,-.037,.079,.102,-.078,.004,.141,.018,.059,.023,-.357,.129,.112)*f1_6+
    mat4(.045,-.065,.134,.028,.037,-.633,.080,.097,-.100,.194,.349,-.093,-.012,-.003,-.148,-.022)*f1_7+
    mat4(-.011,.061,-.239,.010,.108,.157,.083,-.028,-.006,.272,.148,-.008,-.037,.315,-.274,-.089)*f1_8+
    mat4(.034,-.326,.125,-.015,.001,.202,-.063,.011,-.071,.299,-.186,-.021,.021,.222,-.310,.058)*f1_9+
    mat4(-.002,.365,.121,-.058,-.027,-.159,.117,-.083,.026,.120,-.014,-.002,-.008,-.120,.146,-.103)*f1_10+
    mat4(-.010,-.164,-.159,-.043,.018,.029,-.248,.106,-.018,.028,-.261,-.048,-.020,-.007,.279,-.068)*f1_11+
    mat4(.002,.042,-.066,.023,.010,.013,.152,.055,.042,-.020,.064,.036,.118,.023,.058,.040)*f1_12+
    mat4(-.059,-.170,-.474,-.078,.010,-.566,.172,.017,-.081,.002,.061,-.011,-.016,-.212,-.136,-.098)*f1_13+
    mat4(-.003,.189,.148,-.016,-.039,-.015,-.132,-.145,.047,.245,-.060,-.082,-.053,.012,.019,-.097)*f1_14+
    mat4(.002,.113,-.125,-.085,.045,.253,-.157,.131,.053,-.043,.083,.112,.061,-.238,.349,.030)*f1_15+
    vec4(-.494,-.753,.631,-1.027))/1.4+f1_13;
vec4 f2_14=sin(mat4(.022,.289,-.114,-.081,-.131,-.188,.105,.011,.241,-.061,-.372,.052,.239,-.031,-.163,.007)*f1_0+
    mat4(-.064,-.198,.198,-.113,-.060,.072,.196,-.002,.229,-.306,.479,-.007,.172,.023,.060,.038)*f1_1+
    mat4(.094,-.160,.084,.026,-.118,.238,.284,-.044,.068,.029,.279,.059,-.121,.286,.190,-.159)*f1_2+
    mat4(-.037,.194,.825,.032,.014,-.196,.117,-.010,.050,.102,-.008,-.026,-.170,-.085,.052,.189)*f1_3+
    mat4(.015,.055,-.253,.013,.113,.043,.072,-.026,-.059,.113,-.119,-.020,.213,.197,-.387,.082)*f1_4+
    mat4(-.101,-.246,.289,.026,-.146,.144,-.079,.005,-.169,-.228,.106,-.010,-.236,-.012,-.109,-.052)*f1_5+
    mat4(.187,.156,.166,-.051,-.236,.239,-.236,-.015,.248,-.283,-.154,.036,-.127,-.008,-.077,.017)*f1_6+
    mat4(-.210,.041,.300,-.068,.110,.024,-.344,.026,-.099,-.231,.187,.181,-.225,-.000,-.388,-.000)*f1_7+
    mat4(.111,.136,-.217,.010,-.149,-.043,.182,-.264,.210,.370,.248,.029,.008,-.159,.126,-.037)*f1_8+
    mat4(-.230,-.078,-.418,-.069,-.051,-.031,.067,-.021,-.105,-.203,-.079,.045,-.108,-.185,.124,.016)*f1_9+
    mat4(.046,.231,.478,.043,-.121,.372,-.122,.014,-.111,-.258,-.063,-.024,-.172,-.028,-.104,-.066)*f1_10+
    mat4(-.203,.211,-.207,-.031,.030,-.140,.213,.053,.006,-.199,.138,-.048,.037,-.362,.148,-.052)*f1_11+
    mat4(-.094,-.013,.029,-.030,.093,.173,.224,.020,.034,.118,.018,-.042,-.066,.018,.167,-.275)*f1_12+
    mat4(-.242,-.339,.183,.010,-.131,-.218,-.110,.071,-.201,-.091,-.133,.132,-.084,-.337,.355,-.026)*f1_13+
    mat4(.026,-.190,-.025,-.053,-.044,-.192,.137,.001,.217,-.242,-.017,-.092,.262,-.382,-.192,-.011)*f1_14+
    mat4(.149,.084,.445,-.044,.071,-.021,-.225,-.032,.101,.202,-.207,.010,-.502,.039,-.270,-.031)*f1_15+
    vec4(.037,.379,.966,.073))/1.4+f1_14;
vec4 f2_15=sin(mat4(.352,.080,-.161,-.161,.135,-.364,.132,.013,.314,.086,-.121,.069,-.151,-.157,-.090,.016)*f1_0+
    mat4(.704,.400,.145,-.059,-.409,-.207,.077,-.002,.020,-.177,-.348,.035,.171,.127,.234,.068)*f1_1+
    mat4(-.081,-.100,.237,-.022,-.235,-.063,-.018,-.040,-.299,.031,-.301,.080,.299,.213,-.094,-.152)*f1_2+
    mat4(-.232,-.034,-.293,-.186,-.168,.044,-.074,.132,.171,.190,.032,-.099,.075,-.049,.069,.110)*f1_3+
    mat4(-.015,-.060,.381,.074,.016,-.335,.010,.209,.090,-.313,-.116,.163,.094,.059,-.279,.134)*f1_4+
    mat4(-.084,.217,.372,.120,.086,.011,-.151,.094,-.240,-.219,-.051,.080,.040,.502,-.124,-.000)*f1_5+
    mat4(.310,-.261,-.129,-.096,.230,.098,-.144,-.040,-.140,.089,-.047,-.132,.121,-.513,-.078,-.230)*f1_6+
    mat4(-.263,-.266,.033,-.058,.205,.203,.224,.101,.321,.162,-.065,.037,-.080,-.123,-.052,.115)*f1_7+
    mat4(.566,-.361,-.432,.077,-.380,.044,.220,-.426,.040,.190,-.064,-.035,.301,.350,-.185,.039)*f1_8+
    mat4(-.254,.080,-.048,.200,-.276,.191,.009,-.034,.542,.103,.449,.007,-.153,-.145,-.044,.055)*f1_9+
    mat4(-.242,.075,-.313,.110,-.602,.324,.134,.057,-.095,.105,-.297,-.133,.044,-.711,-.301,-.297)*f1_10+
    mat4(.069,-.041,.059,.015,-.392,.177,.109,.169,.033,.390,-.111,.151,-.143,.002,.134,.012)*f1_11+
    mat4(-.242,.082,.137,-.173,.211,-.200,.108,-.167,-.287,.216,-.177,.014,-.118,-.277,-.191,-.117)*f1_12+
    mat4(-.447,-.004,-.505,.059,.303,.078,.038,.103,-.191,.375,-.374,.013,.407,.248,.086,.064)*f1_13+
    mat4(-.105,-.024,.102,.106,-.053,-.044,-.013,-.049,-.577,.065,-.145,-.432,.416,.011,-.028,.184)*f1_14+
    mat4(-.064,-.242,-.022,.161,.092,-.226,-.113,.021,-.083,-.499,.003,.300,-.369,.044,.322,-.094)*f1_15+
    vec4(-.056,.419,.286,.786))/1.4+f1_15;
return dot(f2_0,vec4(-.000,-.018,.031,-.025))+
    dot(f2_1,vec4(.009,.005,-.008,.001))+
    dot(f2_2,vec4(-.028,-.020,.023,.014))+
    dot(f2_3,vec4(-.002,.015,.024,.024))+
    dot(f2_4,vec4(-.014,.018,-.033,.004))+
    dot(f2_5,vec4(-.006,-.019,.008,.023))+
    dot(f2_6,vec4(-.022,-.002,.006,.021))+
    dot(f2_7,vec4(.007,.010,.022,.016))+
    dot(f2_8,vec4(.028,-.001,-.014,-.024))+
    dot(f2_9,vec4(-.006,-.011,-.027,-.019))+
    dot(f2_10,vec4(.008,.013,.017,-.013))+
    dot(f2_11,vec4(.023,.023,.005,-.019))+
    dot(f2_12,vec4(.021,.016,-.021,-.027))+
    dot(f2_13,vec4(-.001,.030,-.017,-.001))+
    dot(f2_14,vec4(.014,-.025,.020,.011))+
    dot(f2_15,vec4(.025,.020,.022,.015))+
    -0.043;
}

float sceneDist( vec3 p ) {
	
    float dr = floorDist( p );

    // If you need mouse rotation please reduce comment out.
    p.xz *=  rot(radians(time * 20.0));
    //p.xz *=  rot(radians(mouse.x * resolution.x));
    //p.zy *=  rot(radians(mouse.y * resolution.y));

    p.zy *=  rot(radians(+90.0));
    vec3 q = p;

    float dz = min(scene(p), dr);
    
    return dz;
}
// color functions
vec3 hsv2rgb( vec3 c ) {
	vec4 K = vec4( 1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0 );
	vec3 p = abs( fract( c.xxx + K.xyz ) * 6.0 - K.www );
	return c.z * mix( K.xxx, clamp( p - K.xxx, 0.0, 1.0 ), c.y );
}
float checkeredPattern( vec3 p ) {
	float u = 1.0 - floor( mod( p.x, 2.0 ) );
	float v = 1.0 - floor( mod( p.z, 2.0 ) );
	if ( ( u == 1.0 && v < 1.0 ) || ( u < 1.0 && v == 1.0 ) ) {
		return 0.2;
	} else {
		return 1.0;
	}
}
Intersect minIntersect( Intersect a, Intersect b ) {
	if ( a.distance < b.distance ) {
		return a;
	} else {
		return b;
	}
}
Intersect sceneIntersect( vec3 p ) {
	Intersect a, b;
	a.distance = a.distance = sphereDist( p, 2.0 );
	a.material = SPHERE_MATERIAL;
	b.distance = floorDist( p );
	b.material = FLOOR_MATERIAL;
	return minIntersect( a, b );
}
vec3 getNormal( vec3 p ) {
	return normalize(vec3(
		sceneDist(p + vec3( EPS, 0.0, 0.0 ) ) - sceneDist(p + vec3( -EPS, 0.0, 0.0 ) ),
		sceneDist(p + vec3( 0.0, EPS, 0.0 ) ) - sceneDist(p + vec3( 0.0, -EPS, 0.0 ) ),
		sceneDist(p + vec3( 0.0, 0.0, EPS ) ) - sceneDist(p + vec3( 0.0, 0.0, -EPS ) )
	));
}

float getShadow( vec3 ro, vec3 rd ) {
    float h = 0.0;
    float c = 0.001;
    float r = 1.0;
    float shadowCoef = 0.5;
    for(float t = 0.0; t < 50.0; t++){
        h = sceneDist(ro + rd * c);
        if(h < 0.001){
            return shadowCoef;
        }
        r = min(r, h * 16.0 / c);
        c += h;
    }
    return 1.0 - shadowCoef + r * shadowCoef;
}

Intersect getRayColor( vec3 origin, vec3 ray ) {
	// marching loop
	float dist;
	float depth = 0.0;
	vec3 p = origin;
	int count = 0;
	Intersect nearest;
	for ( int i = 0; i < 64; i++ ){
		dist = sceneDist( p );
		depth += dist;
		p = origin + depth * ray;
		count = i;
		if ( abs(dist) < EPS ) break;
	}
	if ( abs(dist) < EPS ) {
		nearest = sceneIntersect( p );
		nearest.position = p;
		nearest.normal = getNormal(p);
		float diffuse = clamp( dot( lightDir, nearest.normal ), 0.1, 2.0 );
		float specular = pow( clamp( dot( reflect( lightDir, nearest.normal ), ray ), 0.0, 1.0 ), 4.0 );
		float shadow = getShadow( p + nearest.normal * OFFSET, lightDir );
		if ( nearest.material == FLOOR_MATERIAL ) {
			nearest.color = vec3( 0.8 ) * checkeredPattern( p ) * diffuse * shadow;
			
		} else if ( nearest.material == SPHERE_MATERIAL ) {
			vec3 color = vec3( 0.8, 0.7, 0.0 );
			nearest.color = color * diffuse * shadow + specular;
		}
		nearest.isHit = true;
	} else {
		nearest.color = vec3( 0.2 );
		nearest.isHit = false;
	}
	return nearest;
}
void main(void) {
	// fragment position
	vec2 p = ( gl_FragCoord.xy * 2.0 - resolution ) / min( resolution.x, resolution.y );
	cPos  = vec3( 0.0, 0.5, -2.0 );
	cDir  = normalize( vec3( 0.0, -0.3, 1.0 ) );

	vec3 cSide = normalize( cross( cDir, vec3( 0.0, 1.0 ,0.0 ) ) );
	vec3 cUp   = normalize( cross( cSide, cDir ) );
	float targetDepth = 1.3;
	vec3 ray = normalize( cSide * p.x + cUp * p.y + cDir * targetDepth );
	vec3 color = vec3( 0.0 );
	float alpha = 1.0;
	Intersect nearest;
	for ( int i = 0; i < 2; i++ ) {
		nearest = getRayColor( cPos, ray );
		color += alpha * nearest.color;
		alpha *= 0.2;
		ray = normalize( reflect( ray, nearest.normal ) );
		cPos = nearest.position + nearest.normal * OFFSET;
		if ( !nearest.isHit || nearest.material != SPHERE_MATERIAL ) break;
	}
	
	color=mix(vec3(.0),color,exp(-cPos*cPos*.0002));
  	color=pow(color,vec3(0.8));
  	color*=1.-length(p)*.5;

	
	gl_FragColor = vec4(color, 1.0);
}
