// Global/sun lighting - DarkStarSword

cbuffer PER_BATCH : register(b0)
{
  float4 SVO_FrameIdByte : packoffset(c0);
  row_major float4x4 SVO_LightPos1 : packoffset(c1);
  row_major float4x4 SVO_LightCol0 : packoffset(c5);
  float4 SvoParamsSkyColor : packoffset(c9);
  float4 SVO_CloudShadowParams : packoffset(c10);
  float4 SvoParamsMisc2 : packoffset(c11);
  row_major float4x4 SVO_LightDir1 : packoffset(c12);
  float4 SvoTreeSettings5 : packoffset(c16);
  float4 PS_WorldViewPos : packoffset(c17);
  float4 SVO_RsmSunCol : packoffset(c18);
  float4 SvoParamsInject : packoffset(c19);
  row_major float4x4 SVO_LightDir0 : packoffset(c20);
  float4 SvoParamsSpecular : packoffset(c24);
  row_major float4x4 SVO_LightCol1 : packoffset(c25);
  float4 SvoParamsMisc3 : packoffset(c29);
  float4 SvoTreeSettings2 : packoffset(c30);
  float4 PS_NearFarClipDist : packoffset(c31);
  row_major float4x4 SVO_LightPos0 : packoffset(c32);
  float4 SvoTreeSettings0 : packoffset(c36);
  float4 SvoParamsDiffuse : packoffset(c37);
  float4 SvoParamsCommon : packoffset(c38);
  row_major float4x4 SVO_RsmSunShadowProj : packoffset(c39);
  float4 SVO_CloudShadowAnimParams : packoffset(c43);
  float4 PS_ScreenSize : packoffset(c44);
  float4 SvoParams8 : packoffset(c45);
  row_major float4x4 g_mViewProj : packoffset(c46);
  float4 SVO_PortalsDir[16] : packoffset(c50);
  float4 SVO_TargetResScale : packoffset(c66);
  float4 SVO_PortalsPos[16] : packoffset(c67);
  float4 SvoTreeSettings1 : packoffset(c83);
}

cbuffer PER_FRAME : register(b2)
{
  float4 g_PS_SunLightDir : packoffset(c2);
  float4 g_PS_FogColor : packoffset(c3);
  float4 g_PS_ProjRatio : packoffset(c223);
}

SamplerState brickPool_Tree_s : register(s0);
SamplerState brickPool_Opac_s : register(s3);
SamplerState sceneDepthMapSampler_s : register(s4);
SamplerState SVO_RsmSunNormalMap_s : register(s9);
SamplerState SVO_RsmSunShadowMap_s : register(s12);
SamplerState SVO_RsmSunColorsMap_s : register(s13);
SamplerState sceneGBuffer0_s : register(s14);
SamplerState SVO_cloudShadowMap_s : register(s15);
Texture3D<float4> brickPool_Tree : register(t0);
Texture3D<float4> brickPool_Opac : register(t3);
Texture2D<float4> sceneDepthMapSampler : register(t4);
Texture2D<float4> SVO_RsmSunNormalMap : register(t9);
Texture2D<float4> SVO_RsmSunShadowMap : register(t12);
Texture2D<float4> SVO_RsmSunColorsMap : register(t13);
Texture2D<float4> sceneGBuffer0 : register(t14);
Texture2D<float4> SVO_cloudShadowMap : register(t15);


// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);
#include <matrix.hlsl>

void main(
  float4 v0 : SV_Position0,
  float4 v1 : TEXCOORD0,
  float4 v2 : TEXCOORD1,
  out float4 o0 : SV_Target0,
  out float4 o1 : SV_Target1,
  out float4 o2 : SV_Target2,
  out float4 o3 : SV_Target3)
{
  const float4 icb[] = { { 1.000000, 0, 0, 0},
                              { 0, 1.000000, 0, 0},
                              { 0, 0, 1.000000, 0},
                              { 0, 0, 0, 1.000000},
                              { -0.615241, 0.246533, 0.748800, 0},
                              { -0.043896, 0.577149, 0.815458, 0},
                              { -0.349163, -0.720395, 0.599263, 0},
                              { 0.145829, 0.393602, 0.907641, 0},
                              { -0.729101, -0.342603, 0.592482, 0},
                              { -0.091139, -0.558027, 0.824803, 0},
                              { 0.594840, 0.132835, 0.792793, 0},
                              { 0.465833, 0.135580, 0.874424, 0},
                              { -0.043040, -0.229302, 0.972403, 0},
                              { -0.154271, -0.594597, 0.789085, 0},
                              { -0.043604, 0.137066, 0.989602, 0},
                              { 0.809765, -0.307126, 0.499955, 0},
                              { 0.595858, 0.555168, 0.580295, 0},
                              { 0.529635, 0.025866, 0.847831, 0},
                              { -0.391181, 0.679929, 0.620221, 0},
                              { 0.098735, -0.301553, 0.948323, 0},
                              { 0.163190, -0.703604, 0.691600, 0},
                              { 0.273656, 0.539057, 0.796574, 0},
                              { -0.170633, 0.430359, 0.886383, 0},
                              { -0.555287, -0.293953, 0.777977, 0},
                              { -0.291169, -0.320365, 0.901436, 0},
                              { -0.774569, 0.166976, 0.610051, 0},
                              { -0.200631, 0.789951, 0.579417, 0},
                              { 0.290505, -0.484645, 0.825062, 0},
                              { 0.336790, 0.355660, 0.871825, 0},
                              { 0.740486, 0.299696, 0.601550, 0},
                              { 0.488265, -0.641413, 0.591766, 0},
                              { -0.653256, 0.568878, 0.499635, 0},
                              { 0.523325, 0.543229, 0.656531, 0},
                              { -0.333314, 0.799498, 0.499704, 0},
                              { 0.020438, -0.046015, 0.998732, 0},
                              { 0.083498, 0.503911, 0.859710, 0},
                              { 0.242932, -0.831502, 0.499588, 0},
                              { 0.418005, -0.412139, 0.809576, 0},
                              { -0.678228, 0.283086, 0.678137, 0},
                              { 0.463950, 0.355416, 0.811437, 0},
                              { 0.529356, 0.245410, 0.812130, 0},
                              { -0.578394, -0.004949, 0.815743, 0},
                              { -0.360751, 0.172711, 0.916531, 0},
                              { 0.147686, -0.119029, 0.981846, 0},
                              { 0.020253, 0.099719, 0.994810, 0},
                              { 0.083928, -0.009724, 0.996424, 0},
                              { 0.099176, -0.860501, 0.499702, 0},
                              { -0.044342, 0.282999, 0.958095, 0},
                              { 0.210909, 0.136251, 0.967963, 0},
                              { 0.083284, 0.283374, 0.955386, 0},
                              { 0.289164, -0.264778, 0.919933, 0},
                              { -0.614625, 0.392654, 0.684148, 0},
                              { 0.481708, -0.522335, 0.703650, 0},
                              { -0.332535, -0.396488, 0.855697, 0},
                              { 0.289614, -0.191968, 0.937695, 0},
                              { -0.488082, 0.393019, 0.779302, 0},
                              { 0.864143, -0.006241, 0.503208, 0},
                              { -0.706230, 0.068891, 0.704622, 0},
                              { -0.170200, -0.010155, 0.985357, 0},
                              { 0.594304, 0.279438, 0.754134, 0},
                              { 0.737042, -0.158488, 0.657001, 0},
                              { -0.523367, 0.690205, 0.499705, 0},
                              { -0.170509, 0.650040, 0.740523, 0},
                              { -0.300917, -0.147978, 0.942099, 0},
                              { 0.735177, 0.063342, 0.674909, 0},
                              { 0.417697, -0.266186, 0.868720, 0},
                              { 0.274946, 0.099500, 0.956297, 0},
                              { 0.746524, -0.439317, 0.499703, 0},
                              { -0.687383, -0.282911, 0.668929, 0},
                              { 0.354693, -0.594461, 0.721672, 0},
                              { 0.784330, 0.174198, 0.595384, 0},
                              { 0.672363, 0.429941, 0.602560, 0},
                              { -0.699386, 0.510761, 0.499983, 0},
                              { 0.466054, -0.010888, 0.884689, 0},
                              { -0.027485, -0.594099, 0.803922, 0},
                              { -0.361085, 0.466774, 0.807304, 0},
                              { 0.544835, -0.485464, 0.683725, 0},
                              { -0.591051, -0.529730, 0.608313, 0},
                              { -0.106652, 0.026805, 0.993935, 0},
                              { 0.352458, -0.746696, 0.564108, 0},
                              { -0.234137, 0.319752, 0.918117, 0},
                              { -0.156231, -0.447004, 0.880783, 0},
                              { -0.027461, -0.666985, 0.744565, 0},
                              { 0.607686, -0.012252, 0.794083, 0},
                              { 0.147306, 0.540253, 0.828510, 0},
                              { 0.226030, -0.302151, 0.926075, 0},
                              { -0.539591, -0.581258, 0.609082, 0},
                              { 0.396895, 0.694322, 0.600326, 0},
                              { -0.643258, -0.187907, 0.742234, 0},
                              { -0.015160, -0.805243, 0.592751, 0},
                              { -0.473490, -0.638698, 0.606525, 0},
                              { -0.428555, -0.220728, 0.876139, 0},
                              { 0.481643, -0.375756, 0.791725, 0},
                              { -0.044064, 0.503787, 0.862703, 0},
                              { 0.158320, 0.785248, 0.598599, 0},
                              { -0.579632, 0.570580, 0.581778, 0},
                              { -0.092993, -0.410356, 0.907172, 0},
                              { 0.163161, -0.557540, 0.813958, 0},
                              { -0.107073, 0.467210, 0.877639, 0},
                              { -0.233929, 0.686681, 0.688293, 0},
                              { -0.551672, 0.209930, 0.807209, 0},
                              { 0.396295, 0.618283, 0.678731, 0},
                              { 0.275206, 0.026526, 0.961019, 0},
                              { -0.850551, -0.163033, 0.499983, 0},
                              { 0.084321, -0.229680, 0.969607, 0},
                              { 0.417999, -0.485227, 0.768005, 0},
                              { -0.360343, 0.393710, 0.845663, 0},
                              { 0.545623, -0.412505, 0.729476, 0},
                              { -0.491200, -0.331152, 0.805644, 0},
                              { 0.099765, -0.667154, 0.738209, 0},
                              { 0.132011, 0.855915, 0.499983, 0},
                              { 0.274708, -0.047122, 0.960372, 0},
                              { 0.020429, -0.119995, 0.992564, 0},
                              { -0.170906, 0.209838, 0.962683, 0},
                              { 0.146496, 0.319869, 0.936068, 0},
                              { -0.126969, 0.783278, 0.608567, 0},
                              { 0.336441, 0.428780, 0.838424, 0},
                              { -0.530547, -0.684497, 0.499983, 0},
                              { -0.491574, -0.184190, 0.851134, 0},
                              { 0.608924, -0.159105, 0.777108, 0},
                              { -0.118063, -0.730247, 0.672905, 0},
                              { 0.210117, 0.650435, 0.729922, 0},
                              { 0.608529, -0.085580, 0.788904, 0},
                              { -0.811568, 0.302822, 0.499657, 0},
                              { -0.734043, 0.001555, 0.679101, 0},
                              { 0.713349, 0.491070, 0.499984, 0},
                              { 0.659035, 0.318285, 0.681446, 0},
                              { -0.346381, -0.646642, 0.679613, 0},
                              { -0.233595, 0.393126, 0.889317, 0},
                              { -0.043009, -0.302960, 0.952032, 0},
                              { -0.840351, 0.209953, 0.499729, 0},
                              { 0.524066, 0.616260, 0.587860, 0},
                              { 0.021000, -0.266076, 0.963723, 0},
                              { 0.274557, 0.172641, 0.945946, 0},
                              { -0.396076, -0.433306, 0.809549, 0},
                              { -0.088338, -0.797472, 0.596854, 0},
                              { 0.848747, -0.173079, 0.499673, 0},
                              { -0.866083, -0.015992, 0.499644, 0},
                              { -0.555301, -0.442101, 0.704406, 0},
                              { 0.206349, 0.729090, 0.652570, 0},
                              { -0.106828, -0.267339, 0.957662, 0},
                              { 0.148084, -0.045938, 0.987907, 0},
                              { -0.106639, -0.193943, 0.975200, 0},
                              { -0.302746, 0.659512, 0.688033, 0},
                              { -0.578257, 0.068139, 0.813004, 0},
                              { -0.491449, -0.404002, 0.771531, 0},
                              { 0.227248, -0.594935, 0.770981, 0},
                              { 0.529849, 0.099034, 0.842290, 0},
                              { -0.234353, 0.099955, 0.966999, 0},
                              { -0.516399, 0.607577, 0.603475, 0},
                              { -0.642265, 0.031489, 0.765836, 0},
                              { 0.797416, 0.101764, 0.594788, 0},
                              { -0.233592, -0.120127, 0.964886, 0},
                              { -0.551046, 0.356397, 0.754539, 0},
                              { 0.226587, -0.448466, 0.864602, 0},
                              { 0.414976, -0.635806, 0.650804, 0},
                              { 0.400158, 0.319173, 0.859071, 0},
                              { 0.354636, -0.521370, 0.776149, 0},
                              { 0.481020, -0.229075, 0.846253, 0},
                              { 0.162952, -0.484141, 0.859683, 0},
                              { 0.209951, 0.283417, 0.935733, 0},
                              { 0.401935, -0.047767, 0.914421, 0},
                              { 0.082533, 0.429860, 0.899116, 0},
                              { 0.523816, 0.689894, 0.499663, 0},
                              { -0.215136, -0.711153, 0.669312, 0},
                              { 0.273225, 0.392370, 0.878290, 0},
                              { 0.401757, 0.245951, 0.882100, 0},
                              { -0.800972, -0.329843, 0.499647, 0},
                              { -0.487806, 0.466603, 0.737785, 0},
                              { 0.659157, 0.098072, 0.745583, 0},
                              { -0.487839, 0.246266, 0.837476, 0},
                              { 0.399943, 0.539203, 0.741151, 0},
                              { 0.671449, -0.047773, 0.739509, 0},
                              { -0.854886, 0.138518, 0.499983, 0},
                              { -0.691508, -0.405760, 0.597642, 0},
                              { -0.234304, 0.540162, 0.808286, 0},
                              { -0.107484, 0.100145, 0.989150, 0},
                              { -0.740782, 0.448942, 0.499693, 0},
                              { 0.400078, 0.465432, 0.789501, 0},
                              { 0.014560, 0.771263, 0.636351, 0},
                              { 0.210709, 0.576620, 0.789374, 0},
                              { -0.450738, 0.068325, 0.890038, 0},
                              { -0.131867, -0.856095, 0.499712, 0},
                              { -0.360603, 0.099630, 0.927383, 0},
                              { -0.203367, -0.841830, 0.499963, 0},
                              { -0.408091, -0.763858, 0.499982, 0},
                              { 0.402413, 0.172845, 0.898993, 0},
                              { -0.297131, 0.063061, 0.952752, 0},
                              { 0.611949, -0.612809, 0.499983, 0},
                              { 0.465916, 0.062254, 0.882636, 0},
                              { 0.672257, -0.195143, 0.714136, 0},
                              { 0.083112, 0.576924, 0.812558, 0},
                              { 0.098398, -0.375052, 0.921767, 0},
                              { -0.515117, -0.114818, 0.849395, 0},
                              { -0.642942, -0.115101, 0.757217, 0},
                              { 0.354150, -0.448160, 0.820811, 0},
                              { 0.275251, -0.120077, 0.953844, 0},
                              { 0.269885, 0.693528, 0.667968, 0},
                              { -0.170619, 0.137029, 0.975762, 0},
                              { -0.781953, -0.193722, 0.592470, 0},
                              { 0.234241, -0.758669, 0.607908, 0},
                              { 0.036428, -0.631108, 0.774840, 0},
                              { 0.324575, 0.803069, 0.499730, 0},
                              { -0.361099, 0.540219, 0.760113, 0},
                              { -0.487710, 0.319814, 0.812316, 0},
                              { -0.711481, -0.140875, 0.688440, 0},
                              { -0.278823, -0.675708, 0.682405, 0},
                              { 0.863452, 0.066977, 0.499965, 0},
                              { -0.234019, 0.026619, 0.971867, 0},
                              { -0.297865, 0.503263, 0.811174, 0},
                              { -0.360455, 0.320321, 0.876052, 0},
                              { 0.712474, 0.368045, 0.597431, 0},
                              { -0.233153, -0.194051, 0.952882, 0},
                              { 0.162268, -0.338125, 0.927006, 0},
                              { -0.014412, 0.865915, 0.499983, 0},
                              { 0.799820, -0.118999, 0.588326, 0},
                              { 0.393868, 0.771513, 0.499635, 0},
                              { 0.527142, 0.392241, 0.753836, 0},
                              { 0.416577, -0.193155, 0.888344, 0},
                              { -0.467912, -0.565049, 0.679543, 0},
                              { 0.706536, -0.500824, 0.499982, 0},
                              { 0.813747, 0.296485, 0.499913, 0},
                              { 0.146618, 0.173589, 0.973843, 0},
                              { -0.428247, -0.147246, 0.891585, 0},
                              { 0.019582, 0.687222, 0.726183, 0},
                              { 0.083133, 0.210294, 0.974097, 0},
                              { -0.345324, -0.559115, 0.753752, 0},
                              { -0.364578, -0.184083, 0.912796, 0},
                              { -0.044153, 0.429808, 0.901840, 0},
                              { -0.361168, 0.246728, 0.899268, 0},
                              { -0.281770, -0.523208, 0.804276, 0},
                              { -0.424152, 0.136450, 0.895252, 0},
                              { -0.800535, -0.049358, 0.597250, 0},
                              { -0.578431, 0.141403, 0.803382, 0},
                              { -0.106455, -0.046729, 0.993219, 0},
                              { 0.163561, -0.630766, 0.758539, 0},
                              { 0.083824, 0.723660, 0.685048, 0},
                              { -0.178480, -0.303487, 0.935970, 0},
                              { -0.107080, 0.540436, 0.834544, 0},
                              { 0.532562, 0.469818, 0.704023, 0},
                              { -0.233940, 0.246485, 0.940488, 0},
                              { 0.083226, 0.136906, 0.987082, 0},
                              { -0.234579, 0.613801, 0.753805, 0},
                              { -0.233475, -0.047278, 0.971213, 0},
                              { -0.217980, -0.485841, 0.846430, 0},
                              { 0.099313, -0.448177, 0.888411, 0},
                              { 0.544142, -0.192661, 0.816572, 0},
                              { -0.251565, -0.381588, 0.889441, 0},
                              { 0.674357, -0.427337, 0.602185, 0},
                              { 0.672802, -0.269553, 0.688969, 0},
                              { 0.339089, -0.084621, 0.936941, 0},
                              { -0.028442, -0.447755, 0.893704, 0},
                              { -0.429781, 0.585634, 0.687256, 0},
                              { -0.451482, -0.078179, 0.888849, 0},
                              { -0.685396, -0.529750, 0.499596, 0},
                              { 0.613634, -0.312465, 0.725134, 0},
                              { -0.043803, 0.356800, 0.933154, 0},
                              { 0.312475, -0.807812, 0.499800, 0},
                              { -0.087178, 0.861799, 0.499702, 0},
                              { 0.353328, -0.229547, 0.906900, 0},
                              { -0.667606, 0.442889, 0.598457, 0},
                              { 0.661859, -0.558536, 0.499981, 0},
                              { -0.361276, 0.613526, 0.702186, 0},
                              { 0.019211, 0.540265, 0.841276, 0},
                              { 0.227140, -0.375134, 0.898711, 0},
                              { 0.457452, 0.735605, 0.499623, 0},
                              { -0.297538, 0.136105, 0.944958, 0},
                              { -0.364534, -0.110739, 0.924582, 0},
                              { -0.092163, -0.483619, 0.870413, 0},
                              { -0.487582, 0.540094, 0.685975, 0},
                              { -0.218267, -0.558800, 0.800064, 0},
                              { 0.084352, -0.155710, 0.984195, 0},
                              { -0.234212, 0.172982, 0.956672, 0},
                              { -0.551415, 0.430242, 0.714725, 0},
                              { -0.408667, -0.522305, 0.748457, 0},
                              { 0.594492, 0.206427, 0.777153, 0},
                              { -0.863695, 0.066209, 0.499648, 0},
                              { -0.427834, -0.294117, 0.854666, 0},
                              { -0.342493, -0.795435, 0.499982, 0},
                              { 0.020374, -0.192863, 0.981014, 0},
                              { -0.170254, -0.157085, 0.972799, 0},
                              { 0.338694, 0.136030, 0.931011, 0},
                              { -0.804465, 0.023556, 0.593533, 0},
                              { 0.671041, 0.025787, 0.740972, 0},
                              { -0.514126, 0.104820, 0.851286, 0},
                              { -0.324309, -0.005069, 0.945937, 0},
                              { -0.241809, -0.266685, 0.932956, 0},
                              { -0.114882, -0.340399, 0.933237, 0},
                              { -0.171134, 0.503225, 0.847041, 0},
                              { 0.594359, 0.352937, 0.722615, 0},
                              { 0.019934, 0.613940, 0.789101, 0},
                              { -0.285554, -0.602935, 0.744935, 0},
                              { -0.764861, -0.406633, 0.499637, 0},
                              { -0.177395, -0.773644, 0.608281, 0},
                              { -0.297210, 0.430074, 0.852468, 0},
                              { 0.085894, 0.796479, 0.598535, 0},
                              { 0.084170, -0.082901, 0.992997, 0},
                              { -0.586450, -0.637565, 0.499588, 0},
                              { 0.466101, 0.208850, 0.859727, 0},
                              { -0.520357, -0.510395, 0.684635, 0},
                              { 0.290791, -0.411777, 0.863643, 0},
                              { 0.590246, -0.542546, 0.597707, 0},
                              { -0.169631, -0.083193, 0.981990, 0},
                              { 0.354125, -0.375223, 0.856623, 0},
                              { -0.424729, 0.283165, 0.859897, 0},
                              { -0.459598, -0.469765, 0.753718, 0},
                              { 0.402596, 0.025909, 0.915011, 0},
                              { 0.722092, 0.135323, 0.678432, 0},
                              { 0.291104, -0.631580, 0.718586, 0},
                              { -0.424551, 0.430434, 0.796544, 0},
                              { 0.035145, -0.484656, 0.873999, 0},
                              { 0.543871, -0.119519, 0.830614, 0},
                              { -0.156116, -0.667911, 0.727684, 0},
                              { -0.300961, -0.221658, 0.927519, 0},
                              { 0.099667, -0.740376, 0.664763, 0},
                              { -0.514799, 0.031893, 0.856718, 0},
                              { 0.336538, 0.502101, 0.796641, 0},
                              { 0.558182, -0.662357, 0.499716, 0},
                              { 0.459350, 0.655819, 0.599082, 0},
                              { -0.044028, 0.209889, 0.976733, 0},
                              { -0.219577, -0.632129, 0.743101, 0},
                              { 0.146740, 0.466408, 0.872314, 0},
                              { -0.387256, 0.031514, 0.921434, 0},
                              { -0.619123, -0.330335, 0.712436, 0},
                              { 0.099809, -0.593879, 0.798340, 0},
                              { -0.711850, -0.213808, 0.668996, 0},
                              { 0.226901, -0.521433, 0.822571, 0},
                              { 0.659300, 0.245278, 0.710748, 0},
                              { -0.170402, 0.723521, 0.668940, 0},
                              { -0.638394, -0.585466, 0.499683, 0},
                              { -0.043504, 0.650046, 0.758648, 0},
                              { -0.471176, -0.726643, 0.499982, 0},
                              { 0.209947, 0.356270, 0.910491, 0},
                              { 0.288277, -0.709035, 0.643558, 0},
                              { 0.204551, 0.841731, 0.499648, 0},
                              { 0.400264, 0.392497, 0.828091, 0},
                              { -0.028360, -0.520645, 0.853302, 0},
                              { 0.333279, 0.730273, 0.596344, 0},
                              { 0.481455, -0.449106, 0.752666, 0},
                              { 0.617447, -0.474747, 0.627196, 0},
                              { -0.387816, -0.041373, 0.920808, 0},
                              { -0.705238, 0.215313, 0.675485, 0},
                              { 0.082724, 0.356412, 0.930660, 0},
                              { 0.415929, -0.709990, 0.568258, 0},
                              { -0.054239, 0.796638, 0.602019, 0},
                              { -0.775973, 0.384961, 0.499671, 0},
                              { -0.794784, 0.096336, 0.599197, 0},
                              { -0.042940, -0.156506, 0.986743, 0},
                              { -0.579638, 0.643702, 0.499668, 0},
                              { -0.759317, -0.270086, 0.592023, 0},
                              { -0.638218, -0.474165, 0.606503, 0},
                              { 0.058722, 0.864249, 0.499625, 0},
                              { -0.459672, 0.654239, 0.600561, 0},
                              { 0.609480, -0.232194, 0.758037, 0},
                              { -0.618553, -0.403200, 0.674405, 0},
                              { 0.211684, -0.009792, 0.977289, 0},
                              { -0.740548, 0.320742, 0.590520, 0},
                              { 0.752414, 0.428923, 0.499899, 0},
                              { -0.706084, 0.141794, 0.693786, 0},
                              { -0.618795, -0.256696, 0.742428, 0},
                              { -0.159749, 0.851308, 0.499756, 0},
                              { 0.146990, 0.613885, 0.775590, 0},
                              { -0.170190, -0.230789, 0.958004, 0},
                              { 0.459410, 0.581292, 0.671597, 0},
                              { 0.025979, -0.865840, 0.499646, 0},
                              { 0.543162, -0.046561, 0.838336, 0},
                              { 0.735843, -0.083829, 0.671944, 0},
                              { 0.354015, -0.302421, 0.884994, 0},
                              { 0.785877, 0.363889, 0.499982, 0},
                              { 0.019757, 0.173858, 0.984572, 0},
                              { 0.146832, 0.246497, 0.957956, 0},
                              { 0.731239, 0.226906, 0.643276, 0},
                              { 0.836109, 0.226317, 0.499703, 0},
                              { 0.463238, 0.502108, 0.730273, 0},
                              { -0.234335, 0.466923, 0.852684, 0},
                              { -0.282087, -0.749092, 0.599406, 0},
                              { 0.668656, 0.550725, 0.499601, 0},
                              { 0.479429, -0.082717, 0.873674, 0},
                              { 0.274006, 0.613515, 0.740621, 0},
                              { -0.107361, 0.613723, 0.782188, 0},
                              { 0.339186, -0.010548, 0.940660, 0},
                              { 0.780834, -0.374588, 0.499982, 0},
                              { 0.680007, -0.353743, 0.642228, 0},
                              { -0.170546, 0.356577, 0.918568, 0},
                              { 0.479878, -0.156284, 0.863303, 0},
                              { -0.334619, 0.726264, 0.600476, 0},
                              { -0.297517, 0.282723, 0.911894, 0},
                              { -0.487541, 0.173025, 0.855784, 0},
                              { -0.428290, -0.367732, 0.825434, 0},
                              { -0.514773, -0.041400, 0.856326, 0},
                              { 0.480997, -0.302432, 0.822908, 0},
                              { 0.209964, 0.502827, 0.838498, 0},
                              { -0.579005, -0.151597, 0.801106, 0},
                              { 0.211706, 0.063247, 0.975285, 0},
                              { 0.402031, 0.099578, 0.910195, 0},
                              { -0.555010, -0.220352, 0.802128, 0},
                              { -0.829463, -0.249689, 0.499647, 0},
                              { -0.614773, 0.319521, 0.721083, 0},
                              { -0.424014, 0.357269, 0.832208, 0},
                              { 0.800404, 0.029012, 0.598759, 0},
                              { -0.642660, -0.041442, 0.765030, 0},
                              { -0.107575, 0.319821, 0.941351, 0},
                              { 0.272895, 0.246732, 0.929866, 0},
                              { -0.710914, -0.067914, 0.699992, 0},
                              { 0.463781, 0.429243, 0.775021, 0},
                              { -0.774119, 0.240240, 0.585683, 0},
                              { 0.019601, 0.247180, 0.968771, 0},
                              { 0.209914, 0.209595, 0.954990, 0},
                              { -0.554669, -0.366937, 0.746793, 0},
                              { 0.290799, -0.557440, 0.777622, 0},
                              { 0.163140, -0.776485, 0.608652, 0},
                              { 0.862461, -0.080833, 0.499628, 0},
                              { 0.336606, 0.575807, 0.745079, 0},
                              { 0.658732, 0.171292, 0.732619, 0},
                              { 0.544633, -0.265620, 0.795500, 0},
                              { -0.861483, -0.090633, 0.499633, 0},
                              { -0.412873, -0.679565, 0.606406, 0},
                              { 0.736017, -0.232563, 0.635763, 0},
                              { 0.809210, -0.234294, 0.538781, 0},
                              { -0.781546, -0.120300, 0.612139, 0},
                              { -0.178311, -0.376852, 0.908949, 0},
                              { 0.084109, 0.063717, 0.994417, 0},
                              { -0.551376, 0.283220, 0.784711, 0},
                              { -0.300917, -0.074693, 0.950721, 0},
                              { -0.404498, -0.602265, 0.688229, 0},
                              { 0.464895, 0.282278, 0.839161, 0},
                              { -0.266452, 0.751952, 0.602969, 0},
                              { -0.492097, -0.257498, 0.831586, 0},
                              { -0.045071, -0.737903, 0.673401, 0},
                              { 0.594710, 0.059589, 0.801729, 0},
                              { -0.451629, -0.004734, 0.892193, 0},
                              { 0.099600, -0.521004, 0.847723, 0},
                              { -0.264660, 0.824780, 0.499693, 0},
                              { 0.290475, -0.338703, 0.894933, 0},
                              { -0.028702, -0.374756, 0.926679, 0},
                              { 0.026925, -0.718760, 0.694736, 0},
                              { -0.154300, -0.521574, 0.839138, 0},
                              { 0.162202, -0.264695, 0.950593, 0},
                              { 0.614206, -0.385733, 0.688448, 0},
                              { 0.171737, -0.849071, 0.499585, 0},
                              { 0.488695, -0.715198, 0.499669, 0},
                              { 0.146877, 0.687046, 0.711615, 0},
                              { -0.043093, -0.083660, 0.995562, 0},
                              { -0.297036, 0.356577, 0.885789, 0},
                              { -0.043141, 0.063806, 0.997029, 0},
                              { -0.273350, -0.821765, 0.499982, 0},
                              { 0.596159, 0.628416, 0.499689, 0},
                              { 0.333849, 0.656671, 0.676260, 0},
                              { -0.297554, 0.576582, 0.760931, 0},
                              { 0.529617, 0.318603, 0.786129, 0},
                              { -0.624518, 0.501742, 0.598525, 0},
                              { 0.417859, -0.339303, 0.842774, 0},
                              { -0.424480, 0.209553, 0.880854, 0},
                              { -0.579167, -0.078312, 0.811439, 0},
                              { -0.107146, 0.173315, 0.979021, 0},
                              { -0.043333, -0.010208, 0.999009, 0},
                              { 0.339003, 0.062734, 0.938691, 0},
                              { 0.019340, 0.393031, 0.919322, 0},
                              { 0.034976, -0.337934, 0.940520, 0},
                              { -0.364683, -0.331090, 0.870279, 0},
                              { 0.736766, -0.307237, 0.602313, 0},
                              { 0.225442, -0.228607, 0.947056, 0},
                              { 0.148160, 0.027123, 0.988592, 0},
                              { 0.529466, 0.172152, 0.830680, 0},
                              { -0.091671, -0.631976, 0.769547, 0},
                              { 0.019444, 0.320050, 0.947201, 0},
                              { -0.106864, 0.687370, 0.718403, 0},
                              { 0.273087, 0.465307, 0.841970, 0},
                              { 0.338391, 0.209511, 0.917386, 0},
                              { 0.353309, -0.156232, 0.922369, 0},
                              { -0.345095, -0.486026, 0.802925, 0},
                              { 0.734395, -0.010498, 0.678641, 0},
                              { -0.551213, 0.503545, 0.665286, 0},
                              { -0.106350, -0.120232, 0.987033, 0},
                              { 0.148458, -0.192583, 0.969985, 0},
                              { 0.416292, -0.119596, 0.901331, 0},
                              { -0.364826, -0.257402, 0.894788, 0},
                              { -0.727475, -0.469894, 0.499979, 0},
                              { 0.036141, -0.558086, 0.828996, 0},
                              { -0.059018, -0.864181, 0.499708, 0},
                              { -0.107514, 0.393649, 0.912952, 0},
                              { -0.684277, 0.367725, 0.629717, 0},
                              { 0.628625, 0.489562, 0.604285, 0},
                              { -0.641760, 0.105161, 0.759661, 0},
                              { -0.641948, 0.178506, 0.745680, 0},
                              { -0.170420, 0.576642, 0.799025, 0},
                              { 0.162989, -0.410930, 0.896979, 0},
                              { 0.798713, -0.045313, 0.600004, 0},
                              { 0.853261, 0.149355, 0.499639, 0},
                              { 0.083138, 0.650405, 0.755024, 0},
                              { -0.297735, 0.209625, 0.931349, 0},
                              { -0.463368, 0.731647, 0.499982, 0},
                              { -0.107729, 0.246171, 0.963221, 0},
                              { -0.424027, 0.503438, 0.752829, 0},
                              { -0.170473, 0.283111, 0.943815, 0},
                              { 0.253188, 0.786299, 0.563587, 0},
                              { 0.147283, 0.100183, 0.984008, 0},
                              { 0.209592, 0.429319, 0.878497, 0},
                              { -0.281751, -0.448952, 0.847973, 0},
                              { 0.545044, -0.338825, 0.766893, 0},
                              { 0.034868, -0.411227, 0.910866, 0},
                              { -0.399638, 0.768314, 0.499983, 0},
                              { 0.336890, 0.282576, 0.898140, 0},
                              { 0.420527, -0.562196, 0.712104, 0},
                              { -0.170824, 0.063320, 0.983265, 0},
                              { -0.043461, 0.724532, 0.687869, 0},
                              { 0.211866, -0.156731, 0.964649, 0},
                              { 0.020334, 0.026858, 0.999433, 0},
                              { 0.019761, 0.467261, 0.883899, 0},
                              { 0.591979, 0.426103, 0.684103, 0},
                              { 0.057452, -0.800167, 0.597019, 0},
                              { 0.351989, -0.673203, 0.650309, 0},
                              { 0.211330, -0.083186, 0.973868, 0},
                              { 0.672525, -0.121364, 0.730055, 0},
                              { 0.227295, -0.668052, 0.708550, 0},
                              { 0.527499, -0.579715, 0.621027, 0} };
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21,r22,r23,r24,r25,r26,r27,r28,r29,r30,r31,r32,r33,r34,r35,r36,r37,r38,r39,r40;
  uint4 bitmask, uiDest;
  float4 fDest;

float4 stereo = StereoParams.Load(0);

  r0.xy = min(float2(512,512), SvoTreeSettings0.ww);
  r0.w = r0.y / SvoTreeSettings0.z;
  r0.w = r0.w + r0.w;
  r1.y = 1 / r0.w;
  r0.w = max(256, SvoTreeSettings0.w);
  r0.z = min(1024, r0.w);
  r0.xyz = r0.xyz / SvoTreeSettings0.zzz;
  r2.xy = float2(0.5,0.5) + r0.yz;
  r2.xy = (int2)r2.xy;
  r0.w = sceneDepthMapSampler.Sample(sceneDepthMapSampler_s, v1.xy).x;

float depth = r0.w * PS_NearFarClipDist.y;

  r3.xyz = v2.xyz * r0.www;
  r4.xyz = r0.www * v2.xyz + PS_WorldViewPos.xyz;

float adj = stereo.x * (depth - stereo.y);
float4 tmp = mul(inverse(g_mViewProj), float4(adj, 0, 0, 0));

r3.xyz -= tmp.xyz;
r4.xyz -= tmp.xyz;

  r2.zw = float2(0.5,0.5) / PS_ScreenSize.xy;
  r5.xyz = float3(0,0,0);
  r3.w = 0;
  while (true) {
    r4.w = cmp(1 < (int)r3.w);
    if (r4.w != 0) break;
    r6.x = (int)r3.w;
    r7.xyz = r5.xyz;
    r4.w = 0;
    while (true) {
      r5.w = cmp(1 < (int)r4.w);
      if (r5.w != 0) break;
      r6.y = (int)r4.w;
      r6.yz = r2.zw * r6.xy + v1.xy;
      r5.w = sceneDepthMapSampler.Sample(sceneDepthMapSampler_s, r6.yz).x;
      r5.w = r0.w / r5.w;
      r5.w = 1 + -r5.w;
      r5.w = 0.119999997 + -abs(r5.w);
      r5.w = max(0, r5.w);
      r5.w = 0.00100000005 + r5.w;
      r6.yzw = sceneGBuffer0.Sample(sceneGBuffer0_s, r6.yz).xyz;
      r6.yzw = r6.yzw * float3(2,2,2) + float3(-1,-1,-1);
      r7.w = dot(r6.yzw, r6.yzw);
      r7.w = rsqrt(r7.w);
      r6.yzw = r7.www * r6.yzw;
      r7.xyz = r6.yzw * r5.www + r7.xyz;
      r4.w = (int)r4.w + 1;
    }
    r5.xyz = r7.xyz;
    r3.w = (int)r3.w + 1;
  }
  r2.z = dot(r5.xyz, r5.xyz);
  r2.z = rsqrt(r2.z);
  r5.xyw = r5.xyz * r2.zzz;
  r2.w = dot(r3.xyz, r3.xyz);
  r2.w = sqrt(r2.w);
  r3.xy = PS_ScreenSize.xy * v1.xy;
  r3.xy = (int2)r3.xy;
  bitmask.x = ((~(-1 << 4)) << 4) & 0xffffffff;  r3.x = (((uint)r3.x << 4) & bitmask.x) | ((uint)0 & ~bitmask.x);
  bitmask.x = ((~(-1 << 4)) << 0) & 0xffffffff;  r3.x = (((uint)r3.y << 0) & bitmask.x) | ((uint)r3.x & ~bitmask.x);
  r3.y = cmp(0 != SVO_TargetResScale.w);
  r3.z = r3.y ? 1 : 2;
  r3.w = (int)SVO_FrameIdByte.x;
  r3.w = (int)r3.w & 1;
  r3.w = r3.y ? 0 : r3.w;
  r2.z = r5.z * r2.z + 1;
  r2.z = 1 / r2.z;
  r6.xy = r5.yx * r5.yx;
  r4.w = -r2.z * r5.y;
  r7.z = r4.w * r5.x;
  r7.xy = r6.xy * r2.zz + r5.ww;
  r2.z = cmp(-0.999000013 < r5.w);
  r4.w = 0.5 * SVO_FrameIdByte.x;
  r4.w = (int)r4.w;
  r6.xy = (int2)r4.ww & int2(1,2);
  r4.w = SvoTreeSettings0.y / SvoTreeSettings0.z;
  r2.w = r2.w * 0.0250000004 + r4.w;
  r8.xyz = SvoParams8.xyz + SvoParams8.www;
  r4.w = (int)SvoParamsCommon.w;
  r5.z = 3 * SvoTreeSettings1.x;
  r6.z = SvoTreeSettings1.x + SvoTreeSettings1.x;
  r6.w = SvoParamsDiffuse.y * 0.800000012 + -2;
  r6.w = max(0, r6.w);
  r8.w = 0.5 / SvoTreeSettings0.z;
  r9.x = 0.150000006 + SVO_CloudShadowParams.x;
  r9.y = (int)r2.x * (int)r2.x;
  r2.y = (int)r2.y * (int)r9.y;
  r9.y = max((int)-r2.x, (int)r2.x);
  r9.z = (int)r4.w + -1;
  r9.w = SvoTreeSettings0.z + SvoTreeSettings0.z;
  r9.w = (int)r9.w;
  r10.x = cmp(0 < SVO_CloudShadowParams.z);
  r10.y = max(0, -SvoParamsCommon.z);
  r10.z = cmp(16 < SvoParamsDiffuse.y);
  r11.xy = SvoTreeSettings5.zw * -SvoParamsSkyColor.ww;
  r11.z = SvoParamsSpecular.y * -SvoParamsSkyColor.w;
  r11.xyz = SvoParamsDiffuse.www * r11.xyz;
  r10.w = cmp(SvoParamsSkyColor.w >= 0);
  r11.w = SvoParamsDiffuse.w * SvoParamsSkyColor.w;
  r11.xyz = r10.www ? r11.www : r11.xyz;
  r7.w = r5.x;
  r12.xy = r7.zy;
  r12.z = r5.y;
  r13.xyz = float3(-1,-1,1) * r5.xyw;
  r14.w = 1;
  r15.w = 1;
  r1.zw = float2(0,0);
  r16.w = 1;
  r17.xyz = float3(0,0,0);
  r18.xyz = float3(0,0,0);
  r7.y = 0;
  r10.w = 0;
  while (true) {
    r11.w = cmp((int)r10.w >= 1);
    if (r11.w != 0) break;
    r11.w = mad((int)r10.w, (int)r3.z, (int)r3.w);
    r11.w = (uint)r11.w << 9;
    r12.w = (int)r3.z ^ (int)r11.w;
    r11.w = max((int)-r11.w, (int)r11.w);
    uiDest.w = (uint)r11.w / (uint)r3.z;
    r11.w = uiDest.w;
    r13.w = -(int)r11.w;
    r12.w = (int)r12.w & 0x80000000;
    r11.w = r12.w ? r13.w : r11.w;
    r12.w = (int)r11.w ^ 1;
    r11.w = max((int)-r11.w, (int)r11.w);
    r13.w = -(int)r11.w;
    r12.w = (int)r12.w & 0x80000000;
    r11.w = r12.w ? r13.w : r11.w;
    r11.w = (int)r3.x + (int)r11.w;
    r11.w = (int)r11.w & 511;
    r19.xy = r6.xy ? -icb[r11.w+4].xy : icb[r11.w+4].xy;
    r19.xy = r3.yy ? icb[r11.w+4].xy : r19.xy;
    r19.z = icb[r11.w+4].z + -SvoParamsCommon.y;
    r11.w = dot(r19.xyz, r19.xyz);
    r11.w = rsqrt(r11.w);
    r20.xyz = r19.xyz * r11.www;
    r21.x = dot(r20.xyz, r7.xzw);
    r21.y = dot(r20.xyz, r12.xyz);
    r21.z = dot(r20.xyz, r13.xyz);
    r11.w = dot(r21.xyz, r21.xyz);
    r11.w = rsqrt(r11.w);
    r20.xyz = r21.xyz * r11.www;
    r19.w = -r19.z;
    r11.w = dot(r19.xyw, r19.xyw);
    r11.w = rsqrt(r11.w);
    r19.xyz = r19.xyw * r11.www;
    r19.xyz = r2.zzz ? r20.xyz : r19.xyz;
    r11.w = dot(r19.xyz, r19.xyz);
    r11.w = rsqrt(r11.w);
    r19.xyz = r19.xyz * r11.www;
    r20.xyz = r19.xyz * float3(0.300000012,0.300000012,0.300000012) + r5.xyw;
    r20.xyz = r20.xyz * r2.www + r4.xyz;
    r21.xyz = PS_WorldViewPos.xyz + -r20.xyz;
    r11.w = dot(r21.xyz, r21.xyz);
    r11.w = sqrt(r11.w);

//one eye wall on houses fix
//    r12.w = cmp(r11.w < 1000);
    if (r12.w != 0) {
      r12.w = cmp(r5.z < r11.w);
      if (r12.w != 0) {
        r14.xyz = r20.xyz;
        r13.w = 0;
        while (true) {
          r14.xyz = r19.xyz * float3(2,2,2) + r14.xyz;
          r21.xyz = r14.xyz + -r20.xyz;
          r17.w = dot(r21.xyz, r21.xyz);
          r17.w = sqrt(r17.w);
          r21.x = dot(g_mViewProj._m00_m01_m02_m03, r14.xyzw);
          r21.y = dot(g_mViewProj._m10_m11_m12_m13, r14.xyzw);
          r21.z = dot(g_mViewProj._m20_m21_m22_m23, r14.xyzw);
          r18.w = dot(g_mViewProj._m30_m31_m32_m33, r14.xyzw);

r21.x += stereo.x * (r18.w - stereo.y);

          r21.xyz = r21.xyz / r18.www;
          r22.xy = r21.xy * float2(0.5,0.5) + float2(0.5,0.5);
          r22.z = 1 + -r22.y;
          r18.w = sceneDepthMapSampler.SampleLevel(sceneDepthMapSampler_s, r22.xz, 0).x;
          r19.w = PS_NearFarClipDist.y * r18.w;
          r20.w = -g_PS_ProjRatio.x + r21.z;
          r20.w = g_PS_ProjRatio.y / r20.w;
          r20.w = r20.w * PS_NearFarClipDist.y + -0.5;
          r21.x = r18.w * PS_NearFarClipDist.y + -r20.w;
          r21.x = 0.25 * r21.x;
          r18.w = -r18.w * PS_NearFarClipDist.y + r20.w;
          r18.w = 0.0666666701 * r18.w;
          r18.w = max(r21.x, r18.w);
          r18.w = saturate(1 + -r18.w);
          r19.w = cmp(r19.w < r20.w);
          r20.w = max(0.100000001, r18.w);
          r18.w = r19.w ? r20.w : r18.w;
          r19.w = saturate(1 + -r13.w);
          r18.w = r18.w * r19.w + r13.w;
          r17.w = cmp(r17.w >= r6.w);
          r19.w = cmp(r18.w >= 0.99000001);
          r17.w = (int)r17.w | (int)r19.w;
          if (r17.w != 0) {
            r13.w = r18.w;
            break;
          }
          r13.w = r18.w;
        }
        r14.x = min(SvoParamsMisc3.z, r13.w);
        r21.xyz = float3(0,0,0);
        r14.y = r14.x;
      } else {
        r14.z = cmp(r6.z < r11.w);
        if (r14.z != 0) {
          r15.xyz = r20.xyz;
          r14.z = 0;
          while (true) {
            r15.xyz = r19.xyz * float3(2,2,2) + r15.xyz;
            r22.xyz = r15.xyz + -r20.xyz;
            r17.w = dot(r22.xyz, r22.xyz);
            r17.w = sqrt(r17.w);
            r22.x = dot(g_mViewProj._m00_m01_m02_m03, r15.xyzw);
            r22.y = dot(g_mViewProj._m10_m11_m12_m13, r15.xyzw);
            r22.z = dot(g_mViewProj._m20_m21_m22_m23, r15.xyzw);
            r18.w = dot(g_mViewProj._m30_m31_m32_m33, r15.xyzw);
            r22.xyz = r22.xyz / r18.www;
            r23.xy = r22.xy * float2(0.5,0.5) + float2(0.5,0.5);
            r23.z = 1 + -r23.y;
            r18.w = sceneDepthMapSampler.SampleLevel(sceneDepthMapSampler_s, r23.xz, 0).x;
            r19.w = PS_NearFarClipDist.y * r18.w;
            r20.w = -g_PS_ProjRatio.x + r22.z;
            r20.w = g_PS_ProjRatio.y / r20.w;
            r20.w = r20.w * PS_NearFarClipDist.y + -0.5;
            r21.w = r18.w * PS_NearFarClipDist.y + -r20.w;
            r21.w = 0.25 * r21.w;
            r18.w = -r18.w * PS_NearFarClipDist.y + r20.w;
            r18.w = 0.0666666701 * r18.w;
            r18.w = max(r21.w, r18.w);
            r18.w = saturate(1 + -r18.w);
            r19.w = cmp(r19.w < r20.w);
            r20.w = max(0.100000001, r18.w);
            r18.w = r19.w ? r20.w : r18.w;
            r19.w = saturate(1 + -r14.z);
            r18.w = r18.w * r19.w + r14.z;
            r17.w = cmp(r17.w >= r6.w);
            r19.w = cmp(r18.w >= 0.99000001);
            r17.w = (int)r17.w | (int)r19.w;
            if (r17.w != 0) {
              r14.z = r18.w;
              break;
            }
            r14.z = r18.w;
          }
          r14.x = min(SvoParamsMisc3.z, r14.z);
        } else {
          r14.x = 0;
        }
      }
    } else {
      r14.x = 0;
      r12.w = 0;
    }
    if (r12.w == 0) {
      r15.z = r20.z;
      r22.xyz = r20.xyz;
      r23.xyz = r19.xyz;
      r24.xyz = float3(0,0,0);
      r15.xy = r20.xy;
      r12.w = 0;
      r22.w = 0;
      r17.w = 0;
      while (true) {
        r18.w = cmp((int)r17.w >= 8);
        if (r18.w != 0) break;
        r25.xyz = float3(0,0,0);
        r18.w = 0;
        r26.xyz = SvoParams8.xyz;
        r27.xyz = r8.xyz;
        r19.w = 0;
        while (true) {
          r20.w = cmp((int)r19.w >= (int)r4.w);
          if (r20.w != 0) break;
          r28.xyz = r27.xyz + r26.xyz;
          r28.xyz = float3(0.5,0.5,0.5) * r28.xyz;
          r28.xyz = cmp(r22.xyz >= r28.xyz);
          r28.xyz = r28.xyz ? float3(1,1,1) : 0;
          r20.w = dot(r28.xyz, float3(4,2,1));
          r20.w = (int)r20.w;
          r29.xyz = r27.xyz + -r26.xyz;
          r30.xyz = float3(0.5,0.5,0.5) * r29.xyz;
          r28.xyz = r30.xyz * r28.xyz + r26.xyz;
          r29.yzw = r29.xyz * float3(0.5,0.5,0.5) + r28.xyz;
          r21.w = cmp((int)r20.w < 4);
          r1.x = r21.w ? 0 : r1.y;
          r30.yzw = r25.xyz + r1.xyz;
          r31.xyzw = brickPool_Tree.SampleLevel(brickPool_Tree_s, r30.yzw, 0).xyzw;
          r1.x = (int)r20.w & 3;
          r1.x = dot(r31.xyzw, icb[r1.x+0].xyzw);
          r1.x = (int)r1.x;
          if (r1.x != 0) {
            r20.w = max((int)r1.x, (int)-r1.x);
            r21.w = min((int)r20.w, (int)r2.y);
            r23.w = (int)r2.x ^ (int)r21.w;
            r24.w = max((int)-r21.w, (int)r21.w);
            uiDest.w = (uint)r24.w / (uint)r9.y;
            r24.w = uiDest.w;
            r25.w = -(int)r24.w;
            r23.w = (int)r23.w & 0x80000000;
            r23.w = r23.w ? r25.w : r24.w;
            r24.w = (int)r2.x ^ (int)r23.w;
            r25.w = max((int)-r23.w, (int)r23.w);
            uiDest.w = (uint)r25.w / (uint)r9.y;
            r25.w = uiDest.w;
            r26.w = -(int)r25.w;
            r24.w = (int)r24.w & 0x80000000;
            r24.w = r24.w ? r26.w : r25.w;
            r25.w = (int)r2.x * (int)-r24.w;
            r23.w = mad((int)-r24.w, (int)r2.x, (int)r23.w);
            r21.w = mad((int)r25.w, (int)r2.x, (int)r21.w);
            r21.w = mad((int)-r23.w, (int)r2.x, (int)r21.w);
            r31.x = (int)r21.w;
            r31.y = (int)r23.w;
            r31.z = (int)r24.w;
            r30.yzw = r31.xyz / r0.xyz;
            r1.x = cmp(0 < (int)r1.x);
            r21.w = cmp((int)r9.z != (int)r19.w);
            r1.x = r1.x ? r21.w : 0;
            r21.w = 16 * r29.x;
            r21.w = r21.w / SvoTreeSettings0.z;
            r21.w = SvoParamsDiffuse.x * r21.w;
            r21.w = r22.w / r21.w;
            r21.w = cmp(r21.w >= 1);
            r23.w = cmp(SvoTreeSettings1.x >= r30.x);
            r21.w = r21.w ? r23.w : 0;
            r1.x = ~(int)r1.x;
            r1.x = (int)r1.x | (int)r21.w;
            if (r1.x != 0) {
              r25.xyz = r30.yzw;
              r18.w = r20.w;
              r26.xyz = r28.xyz;
              r27.xyz = r29.yzw;
              break;
            }
            r25.xyz = r30.yzw;
            r18.w = r20.w;
          } else {
            r18.w = -1;
            r26.xyz = r28.xyz;
            r27.xyz = r29.yzw;
            break;
          }
          r19.w = (int)r19.w + 1;
          r26.xyz = r28.xyz;
          r27.xyz = r29.yzw;
        }
        r1.x = cmp((int)r18.w >= 0);
        if (r1.x != 0) {
          r28.xyzw = brickPool_Tree.SampleLevel(brickPool_Tree_s, r25.xyz, 0).xyzw;
          r29.xyz = r25.xyz + r1.yww;
          r29.xyz = brickPool_Tree.SampleLevel(brickPool_Tree_s, r29.xyz, 0).xyz;
          r30.xyz = float3(-0.00100000005,-0.00100000005,-0.00100000005) + r28.xyz;
          r31.xyz = float3(0.00100000005,0.00100000005,0.00100000005) + r29.xyz;
          r32.xyz = cmp(r23.xyz >= float3(0,0,0));
          r30.xyz = r30.xyz + -r22.xyz;
          r30.xyz = r30.xyz / r23.xyz;
          r31.xyz = r31.xyz + -r22.xyz;
          r31.xyz = r31.xzy / r23.xzy;
          r30.w = r31.x;
          r30.xw = r32.xx ? r30.wx : r30.xw;
          r31.xw = r30.zy;
          r31.zw = r32.yy ? r31.wz : r31.zw;
          r32.xy = cmp(r31.ww < r30.wx);
          r33.xy = cmp(r30.xw < r31.zz);
          r1.x = (int)r32.x | (int)r33.x;
          r19.w = r33.y ? r31.z : r30.w;
          r20.w = r32.y ? r31.w : r30.x;
          r30.xy = r32.zz ? r31.xy : r31.yx;
          r21.w = cmp(r30.y < r19.w);
          r23.w = cmp(r20.w < r30.x);
          r21.w = (int)r21.w | (int)r23.w;
          r1.x = (int)r1.x | (int)r21.w;
          r21.w = cmp(r30.y < r20.w);
          r20.w = r21.w ? r30.y : r20.w;
          r1.x = cmp((int)r1.x == 0);
          r21.w = cmp(0 < r20.w);
          r1.x = r1.x ? r21.w : 0;
          if (r1.x != 0) {
            r30.yzw = r29.xyz + -r28.xyz;
            r1.x = cmp(r19.w < r30.x);
            r1.x = r1.x ? r30.x : r19.w;
            r19.w = 1 / r28.w;
            r31.xyz = r19.www * r30.yzw;
            r31.xyz = r31.xyz / r0.xyz;
            r1.x = max(0, r1.x);
            r32.xyz = r23.xyz * r1.xxx + r22.xyz;
            r33.xyz = r32.xyz + -r15.xyz;
            r19.w = dot(r33.xyz, r33.xyz);
            r19.w = sqrt(r19.w);
            r21.w = r28.w / SvoTreeSettings0.z;
            r33.xyz = r23.xyz * r21.www;
            r34.xyz = r8.www * r28.www + r28.xyz;
            r29.xyz = -r8.www * r28.www + r29.xyz;
            r23.w = dot(abs(r23.xyz), abs(r23.xyz));
            r23.w = rsqrt(r23.w);
            r35.xyz = abs(r23.xyz) * r23.www;
            r23.w = 32 * r28.w;
            r24.w = 8 / r28.w;
            r24.w = 450 * r24.w;
            r23.w = r23.w / SvoTreeSettings0.z;
            r23.w = SvoParamsDiffuse.x * r23.w;
            r25.w = cmp(r28.w < SvoTreeSettings1.x);
            r22.xyz = r32.xyz;
            r36.xyz = r24.xyz;
            r22.w = r19.w;
            r26.w = r12.w;
            r27.w = r1.x;
            r28.w = 0;
            while (true) {
              r29.w = cmp((int)r28.w >= (int)r9.w);
              if (r29.w != 0) break;
              r37.xyz = r33.xyz * float3(0.5,0.5,0.5) + r22.xyz;
              r29.w = r21.w * 0.5 + r27.w;
              r38.xyz = max(r37.xyz, r34.xyz);
              r38.xyz = min(r38.xyz, r29.xyz);
              r38.xyz = r38.xyz + -r28.xyz;
              r38.xyz = r38.xyz / r30.yzw;
              r38.xyz = r38.xyz * r31.xyz + r25.xyz;
              r38.xyzw = brickPool_Opac.SampleLevel(brickPool_Opac_s, r38.xyz, 0).xyzw;
              r30.x = saturate(dot(r38.zyx, r35.xyz));
              r38.xyz = r37.xyz + -r15.xyz;
              r31.w = dot(r38.xyz, r38.xyz);
              r31.w = sqrt(r31.w);
              r32.w = SvoParamsDiffuse.y + -r31.w;
              r32.w = saturate(r32.w / r21.w);
              r33.w = r31.w / SvoParamsDiffuse.y;
              r33.w = saturate(1 + -r33.w);
              r33.w = rsqrt(r33.w);
              r33.w = 1 / r33.w;
              r30.x = r33.w * r30.x;
              r33.w = saturate(1 + -r26.w);
              r34.w = r33.w * r30.x;
              r35.w = 0.333333343 * r31.w;
              r35.w = min(1, r35.w);
              r34.w = r35.w * r34.w;
              r34.w = r34.w * r10.y;
              r38.xyz = r34.www * g_PS_FogColor.zzz + r36.xyz;
              r16.xyz = -PS_WorldViewPos.xyz + r37.xyz;
              r39.x = dot(SVO_RsmSunShadowProj._m00_m01_m02_m03, r16.xyzw);
              r39.y = dot(SVO_RsmSunShadowProj._m10_m11_m12_m13, r16.xyzw);
              r34.w = dot(SVO_RsmSunShadowProj._m20_m21_m22_m23, r16.xyzw);
              r16.x = dot(SVO_RsmSunShadowProj._m30_m31_m32_m33, r16.xyzw);
              r16.xy = r39.xy / r16.xx;
              r39.xy = cmp(r16.xy >= float2(0,0));
              r39.zw = cmp(float2(1,1) >= r16.xy);
              r16.z = r39.z ? r39.x : 0;
              r16.z = r39.y ? r16.z : 0;
              r16.z = r39.w ? r16.z : 0;
              r35.w = cmp(1 >= r34.w);
              r16.z = r35.w ? r16.z : 0;
              if (r16.z != 0) {
                r16.z = SVO_RsmSunShadowMap.SampleLevel(SVO_RsmSunShadowMap_s, r16.xy, 0).x;
                r35.w = 0.000699999975 + r34.w;
                r35.w = cmp(r35.w < r16.z);
                r35.w = r35.w ? 1.000000 : 0;
                r39.xyzw = SVO_RsmSunColorsMap.SampleLevel(SVO_RsmSunColorsMap_s, r16.xy, 0).xyzw;
                r40.xyz = SVO_RsmSunNormalMap.SampleLevel(SVO_RsmSunNormalMap_s, r16.xy, 0).xyz;
                r16.x = dot(r39.xyz, float3(0.333000004,0.333000004,0.333000004));
                r16.x = saturate(SvoParamsMisc2.z + -r16.x);
                r39.xyz = r39.xyz + r16.xxx;
                r39.xyz = r39.xyz * r35.www;
                r39.xyz = SVO_RsmSunCol.xyz * r39.xyz;
                r39.xyz = SVO_RsmSunCol.www * r39.xyz;
                r16.x = r16.z + -r34.w;
                r16.x = saturate(-r24.w * abs(r16.x) + 1);
                r16.y = r16.x * r39.w;
                r30.x = max(r30.x, r16.y);
                r16.y = dot(r40.xyz, float3(1,1,1));
                r16.y = cmp(r16.y < 0.00999999978);
                r40.xyz = r40.xyz * float3(2,2,2) + float3(-1,-1,-1);
                r40.xyz = r16.yyy ? float3(0,0,1) : r40.xyz;
                r16.y = dot(r40.xyz, r23.xyz);
                r16.y = cmp(r16.y < 0.699999988);
                r16.z = cmp(r38.w == 0.000000);
                r16.z = r16.z ? 1.000000 : 0;
                r34.w = r30.x + -r16.x;
                r16.x = r16.z * r34.w + r16.x;
                r39.xyz = r39.xyz * r16.xxx;
                r39.xyz = r39.xyz * r33.www + r38.xyz;
                r38.xyz = r16.yyy ? r39.xyz : r38.xyz;
              }
              r16.x = r30.x * r33.w;
              r16.x = r16.x * r32.w + r26.w;
              r16.y = cmp(r29.w >= r20.w);
              r16.z = r31.w / r23.w;
              r16.z = cmp(2 < r16.z);
              r16.z = r25.w ? r16.z : 0;
              r16.y = (int)r16.z | (int)r16.y;
              r16.z = cmp(r31.w >= SvoParamsDiffuse.y);
              r16.y = (int)r16.z | (int)r16.y;
              r16.z = cmp(r16.x >= 0.99000001);
              r16.y = (int)r16.z | (int)r16.y;
              if (r16.y != 0) {
                r22.xyz = r37.xyz;
                r36.xyz = r38.xyz;
                r22.w = r31.w;
                r26.w = r16.x;
                r27.w = r29.w;
                break;
              }
              r28.w = (int)r28.w + 1;
              r22.xyz = r37.xyz;
              r36.xyz = r38.xyz;
              r22.w = r31.w;
              r26.w = r16.x;
              r27.w = r29.w;
            }
            r1.x = cmp(r27.w >= r20.w);
          } else {
            r36.xyz = r24.xyz;
            r26.w = r12.w;
            r1.x = -1;
          }
          r16.x = cmp(r26.w >= 0.99000001);
          if (r16.x != 0) {
            r24.xyz = r36.xyz;
            r12.w = 1;
            break;
          }
        } else {
          r36.xyz = r24.xyz;
          r26.w = r12.w;
          r1.x = -1;
        }
        if (r1.x != 0) {
          r16.xyz = cmp(r23.xyz >= float3(0,0,0));
          r1.x = r27.x + -r22.x;
          r1.x = r1.x / r23.x;
          r19.w = r26.x + -r22.x;
          r19.w = r19.w / r23.x;
          r1.x = r16.x ? r1.x : r19.w;
          r28.xy = r27.yz + -r22.yz;
          r28.zw = r26.yz + -r22.yz;
          r28.xyzw = r28.xyzw / r23.yzyz;
          r16.xy = r16.yz ? r28.xy : r28.zw;
          r16.z = cmp(r16.x < r1.x);
          r1.x = r16.z ? r16.x : r1.x;
          r16.x = cmp(r16.y < r1.x);
          r1.x = r16.x ? r16.y : r1.x;
          r16.x = r27.x + -r26.x;
          r16.x = r16.x / SvoTreeSettings0.z;
          r1.x = r16.x * 0.125 + r1.x;
          r16.x = cmp(0 < r1.x);
          r28.xyz = r23.xyz * r1.xxx + r22.xyz;
          r28.w = r22.w + r1.x;
          r22.xyzw = r16.xxxx ? r28.xyzw : r22.xyzw;
        }
        r1.x = cmp(r22.w >= SvoParamsDiffuse.y);
        r16.x = cmp(r22.z < 0);
        r1.x = (int)r1.x | (int)r16.x;
        if (r1.x != 0) {
          r24.xyz = r36.xyz;
          r12.w = r26.w;
          break;
        }
        r17.w = (int)r17.w + 1;
        r24.xyz = r36.xyz;
        r12.w = r26.w;
      }
      r21.xyz = SvoParamsDiffuse.www * r24.xyz;
      r1.x = -SvoTreeSettings1.x * 2 + r11.w;
      r1.x = saturate(r1.x / SvoTreeSettings1.x);
      r11.w = r14.x + -r12.w;
      r14.y = r1.x * r11.w + r12.w;
    }
    r1.x = -r20.z / g_PS_SunLightDir.z;
    r15.xy = r1.xx * g_PS_SunLightDir.xy + r20.xy;
    r15.xy = r15.xy * SVO_CloudShadowAnimParams.xy + -SVO_CloudShadowAnimParams.zw;
    r1.x = SVO_cloudShadowMap.SampleLevel(SVO_cloudShadowMap_s, r15.xy, 0).x;
    r1.x = saturate(SVO_CloudShadowParams.w * r1.x);
    r1.x = -SVO_CloudShadowParams.x + r1.x;
    r1.x = saturate(3.33333325 * r1.x);
    r11.w = r1.x * -2 + 3;
    r1.x = r1.x * r1.x;
    r1.x = r11.w * r1.x + -r9.x;
    r1.x = g_PS_SunLightDir.z * r1.x + r9.x;
    r11.w = 1 + -r1.x;
    r1.x = r10.x ? r11.w : r1.x;
    r11.w = cmp(r19.z < 0);
    r11.w = r10.z ? r11.w : 0;
    r14.x = saturate(1 + -r14.y);
    r11.w = r11.w ? 0 : r14.x;
    r15.xyz = r11.xyz * r11.www;
    r11.w = r1.x * 0.200000003 + 0.800000012;
    r15.xyz = r15.xyz * r11.www;
    r15.xyz = r21.xyz * r1.xxx + r15.xyz;
    r1.x = r15.x + r15.y;
    r1.x = r1.x + r15.z;
    r11.w = 0.333333343 * r1.x;
    r15.xyz = -r1.xxx * float3(0.333333343,0.333333343,0.333333343) + r15.xyz;
    r15.xyz = SvoParamsInject.zzz * r15.xyz + r11.www;
    r1.x = dot(r15.xyz, r15.xyz);
    r1.x = sqrt(r1.x);
    r17.xyz = r19.xyz * r1.xxx + r17.xyz;
    r7.y = r7.y + r1.x;
    r18.xyz = r18.xyz + r15.xyz;
    r10.w = (int)r10.w + 1;
  }
  o0.xyz = r17.xyz;
  o0.w = r7.y;
  o1.xyz = float3(0.00100000005,0.00100000005,0.00100000005) + r18.xyz;
  o1.w = r0.w;
  o2.xyzw = float4(0,0,0,0);
  o3.xyzw = float4(0,0,0,0);
  return;
}