// Mirror Reflections 1
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.11 on Fri Nov 16 12:45:07 2018
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
//   float1 ConstantVector1D_08_Value;  // Offset:    0 Size:     4
//   float1 ConstantVector1D_01_Value;  // Offset:    4 Size:     4
//   float1 ConstantVector1D_07_Value;  // Offset:    8 Size:     4
//   float1 ConstantVector1D_02_Value;  // Offset:   12 Size:     4
//
// }
//
// cbuffer _cbPerObject
// {
//
//   struct S_cbPerObject
//   {
//
//       row_major float4x4 go_mObjectToView;// Offset:    0
//       row_major float4x4 go_mObjectToViewPrev;// Offset:   64
//       float4 go_vPosScale;           // Offset:  128
//       float4 go_vPosBias;            // Offset:  144
//       float4 go_vTexScaleBias;       // Offset:  160
//       float4 go_vObjectId;           // Offset:  176
//       float4 go_Tesselation;         // Offset:  192
//       float4 go_Flags;               // Offset:  208
//       float4 go_vSimpleColor;        // Offset:  224
//
//   } cbPerObject;                     // Offset:    0 Size:   240
//
// }
//
// cbuffer _cbSharedPerViewData
// {
//
//   struct S_cbSharedPerViewData
//   {
//
//       row_major float4x4 mProjection;// Offset:    0
//       row_major float4x4 mProjectionPrev;// Offset:   64
//       row_major float4x4 mViewToViewport;// Offset:  128
//       row_major float4x4 mViewToWorld;// Offset:  192
//       row_major float4x4 mViewToWorldPrev;// Offset:  256
//       row_major float4x4 mFxWorldToSampleSpace;// Offset:  320
//       float4 vViewRemap;             // Offset:  384
//       float4 vViewDepthRemap;        // Offset:  400
//       float4 vEyeVectorUL;           // Offset:  416
//       float4 vEyeVectorLR;           // Offset:  432
//       float4 vEyeVectorDelta;        // Offset:  448
//       float4 vPixelToEyeVectorScaleBias;// Offset:  464
//       float4 vViewSpaceUpVector;     // Offset:  480
//       float4 vViewportSize;          // Offset:  496
//       float4 vTesselationEnabled;    // Offset:  512
//       float4 vEngineTime;            // Offset:  528
//       uint nFrameCounter;            // Offset:  544
//       float4 vShaderColor0;          // Offset:  560
//       float4 vShaderColor1;          // Offset:  576
//       float4 vShaderColor2;          // Offset:  592
//       float4 vShaderColor3;          // Offset:  608
//       float4 vShaderColor4;          // Offset:  624
//       float4 vClipPlane;             // Offset:  640
//       float4 vClipPlane0;            // Offset:  656
//       float4 vClipPlane1;            // Offset:  672
//       float4 vClipPlane2;            // Offset:  688
//       float4 vClipPlane3;            // Offset:  704
//       float4 vClipPlane4;            // Offset:  720
//       float4 vClipPlane5;            // Offset:  736
//       float4 vMippedDepthRemap;      // Offset:  752
//       float4 vSpecularOcclusionSettings;// Offset:  768
//       float4 vSaturatedAmbientOcclusionSettings;// Offset:  784
//       float4 vLightModelSettings;    // Offset:  800
//       float4 vHDRScale;              // Offset:  816
//       float4 vTweakableShaderParams; // Offset:  832
//       float4 vAtmosphericScatteringParameters;// Offset:  848
//       float4 vAtmosphericScatteringParameters2;// Offset:  864
//       float4 vAtmosphericScatteringParameters3;// Offset:  880
//       float3 vAtmosphericScatteringMieBeta;// Offset:  896
//       float3 vAtmosphericScatteringRayleighBeta;// Offset:  912
//       float3 vAtmosphericScatteringShadowedMieBeta;// Offset:  928
//       float3 vAtmosphericScatteringShadowedRayleighBeta;// Offset:  944
//       float3 vAttenuatedSunColor;    // Offset:  960
//       float3 vSunDirectionVS;        // Offset:  976
//       row_major float4x4 mViewToGlobalShadowVSPT;// Offset:  992
//       float4 vWindDirectionAndStrength;// Offset: 1056
//       float4 vWindDirectionAndStrengthPrev;// Offset: 1072
//       float4 vWindInitialDirectionAndStrength;// Offset: 1088
//       float4 vFxFadeParameters;      // Offset: 1104
//       float2 vFxSize;                // Offset: 1120
//       int nEnableGBufferSpecPowerAdjustment;// Offset: 1128
//       int nNumCSMCascades;           // Offset: 1132
//       float fCSMFadeAdd;             // Offset: 1136
//       int nEnableClothBias;          // Offset: 1140
//       int2 viNumTiles;               // Offset: 1144
//       int nLightTileDebugFlags;      // Offset: 1152
//       int nEnableBoxReflections;     // Offset: 1156
//       int nSelectedBoxReflectionId;  // Offset: 1160
//       int nEnableAtmosphericScatteringBackdrop;// Offset: 1164
//       int nEnableSampleFromUICameraBackbuffer;// Offset: 1168
//       int nFallbackRoomMask;         // Offset: 1172
//       float4 vClearColor;            // Offset: 1184
//       float3 vGlobalLightDirectionVS;// Offset: 1200
//       float3 vGlobalLightFrontColor; // Offset: 1216
//       float3 vGlobalLightBackColor;  // Offset: 1232
//       float4 vShadowAtlasSize;       // Offset: 1248
//       float2 vShadowPoissonScale;    // Offset: 1264
//       int nShadowSpotKernel;         // Offset: 1272
//       int nShadowCSMKernel;          // Offset: 1276
//       float4 vJitter;                // Offset: 1280
//       float4 vUnjitter;              // Offset: 1296
//       int nHashedAlphaPeriod;        // Offset: 1312
//       int nIsRenderingOffscreen;     // Offset: 1316
//
//   } cbSharedPerViewData;             // Offset:    0 Size:  1320
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// samplerLinearClamp                sampler      NA          NA    4        1
// srvBoxReflectionCube              texture  float4   cubearray   35        1
// srvBoxReflectionCube2             texture  float4   cubearray   37        1
// srvReflection2D                   texture  float4          2d   39        1
// $Globals                          cbuffer      NA          NA    0        1
// _cbPerObject                      cbuffer      NA          NA    1        1
// _cbSharedPerViewData              cbuffer      NA          NA    2        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float
// TEXCOORD                 0   xyzw        1     NONE   float   xyz
// TEXCOORD                 1   xyzw        2     NONE   float
// TEXCOORD                 2   xyzw        3     NONE   float   xyz
// TEXCOORD                 3   xyzw        4     NONE   float
// TEXCOORD                 4   xyzw        5     NONE   float
// TEXCOORD                 5   xyzw        6     NONE   float
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_TARGET                0   xyzw        0   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[1], immediateIndexed
dcl_constantbuffer cb1[14], immediateIndexed
dcl_constantbuffer cb2[58], immediateIndexed
dcl_sampler s4, mode_default
dcl_resource_texturecubearray (float,float,float,float) t35
dcl_resource_texturecubearray (float,float,float,float) t37
dcl_resource_texture2d (float,float,float,float) t39
dcl_input_ps linear v1.xyz
dcl_input_ps linear v3.xyz
dcl_output o0.xyzw
//dcl_temps 4

dcl_temps 37

// stereo2mono:
dcl_resource_texture2d (float,float,float,float) t100

dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r37.xyzw, l(0, 0, 0, 0), t125.xyzw

ftoi r0.x, cb1[11].z
ige r0.x, r0.x, l(0)
if_nz r0.x
  dp3 r0.x, v1.xyzx, v1.xyzx
  rsq r0.x, r0.x
  mul r0.xyz, r0.xxxx, v1.xyzx
  dp3 r0.w, -r0.xyzx, v3.xyzx
  max r1.x, r0.w, l(0.001000)
  div r1.x, l(2048.000000), r1.x
  log r1.x, r1.x
  mad r1.x, -r1.x, l(0.333333343), l(3.66666675)
  add r1.yzw, v3.xxyz, v3.xxyz
  mov_sat r0.w, r0.w
  mad r0.xyz, r1.yzwy, r0.wwww, r0.xyzx
  mul r1.yzw, r0.yyyy, cb2[13].xxyz
  mad r0.xyw, r0.xxxx, cb2[12].xyxz, r1.yzyw
  mad r0.xyz, r0.zzzz, cb2[14].xyzx, r0.xywx
  round_z r2.w, cb1[11].z
  add r3.w, r2.w, l(-341.000000)
  mul r3.xyz, r0.xyzx, l(-1.000000, 1.000000, 1.000000, 0.000000)
  sample_l_indexable(texturecubearray)(float,float,float,float) r0.xyz, r3.xyzw, t37.xyzw, s4, r1.x
  mov r2.xyz, r3.xyzx
  sample_l_indexable(texturecubearray)(float,float,float,float) r1.xyz, r2.xyzw, t35.xyzw, s4, r1.x
  ge r0.w, r2.w, l(341.000000)
  and r0.w, r0.w, l(0x3f800000)
  add r0.xyz, r0.xyzx, -r1.xyzx
  mad r0.xyz, r0.wwww, r0.xyzx, r1.xyzx
else
  mov r0.xyz, l(0,0,0,0)
endif
mul r0.xyz, r0.xyzx, cb2[51].xxxx
mul r0.xyz, r0.xyzx, cb0[0].yyyy
mul r1.xyz, v1.yyyy, cb2[9].xywx
mad r1.xyz, v1.xxxx, cb2[8].xywx, r1.xyzx
mad r1.xyz, v1.zzzz, cb2[10].xywx, r1.xyzx

//fix 
add r37.w, r1.z, -r37.y
mul r37.w, r37.x, r37.w
div r37.w, r37.w, l(2.0)
add r1.x, r1.x, r37.w

add r1.xyz, r1.xyzx, cb2[11].xywx
div r1.xy, r1.xyxx, r1.zzzz
add r1.z, -r1.x, l(1.000000)

// Swap reflection eyes from stereo2mono reflection copy.
// Mip-maps disabled as the reverse stereo blit only copies them in one eye
mov r8.xyzw, r1.xyzw
mul r8.z, r8.z, l(0.5)
eq r37.w, r37.z, l(-1.0)
if_nz r37.w
  add r8.z, r8.z, l(0.5)
endif

//sample_l_indexable(texture2d)(float,float,float,float) r1.xyz, r1.zyzz, t39.xyzw, s4, cb0[0].w
sample_l_indexable(texture2d)(float,float,float,float) r1.xyz, r8.zyzz, t100.xyzw, s4, cb0[0].w



mul r1.xyz, r1.xyzx, cb2[51].xxxx
mul r2.xyz, cb1[3].yyyy, cb2[13].xyzx
mad r2.xyz, cb1[3].xxxx, cb2[12].xyzx, r2.xyzx
mad r2.xyz, cb1[3].zzzz, cb2[14].xyzx, r2.xyzx
dp3 r0.w, r2.xyzx, r2.xyzx
sqrt r0.w, r0.w
add r0.w, r0.w, l(-20.000000)
mul_sat r0.w, r0.w, l(0.200000)
add r0.w, -r0.w, l(1.000000)
mad r1.xyz, r1.xyzx, cb0[0].xxxx, -r0.xyzx
mad r0.xyz, r0.wwww, r1.xyzx, r0.xyzx
mul r0.xyz, r0.xyzx, cb0[0].zzzz
div r1.xyz, v1.xyzx, -v1.zzzz
mul r0.w, -r1.y, cb2[13].z
mad r0.w, -r1.x, cb2[12].z, r0.w
mad r0.w, -r1.z, cb2[14].z, r0.w
mul r0.w, r0.w, -v1.z
add r1.x, cb2[15].z, cb2[53].x
mul r1.yz, r0.wwww, -cb2[53].wwzw
mul r1.xw, r1.xxxx, -cb2[53].wwwz
ge r2.xy, r1.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000)
movc r2.xy, r2.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0)
add r1.yz, |r1.yyzy|, l(0.000000, 0.000010, 0.000010, 0.000000)
mul r1.yz, r1.yyzy, r2.xxyx
mul r0.w, -v1.z, cb2[55].z
exp r1.xw, r1.xxxw
exp r2.xy, r1.yzyy
add r2.xy, r2.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000)
mul r1.xw, r1.xxxw, r2.xxxy
div r1.xy, r1.xwxx, r1.yzyy
mul r1.y, r1.y, l(1.100000)
mul r1.yzw, r1.yyyy, cb2[56].xxyz
mad r1.xyz, cb2[57].xyzx, r1.xxxx, r1.yzwy
mul r0.w, r0.w, l(2.081369)
mul r1.xyz, r0.wwww, r1.xyzx
exp r1.xyz, -r1.xyzx
mul r0.xyz, r0.xyzx, r1.xyzx
mul r0.xyz, r0.xyzx, cb1[13].yyyy
mul r0.xyz, r0.xyzx, cb2[51].yyyy
min o0.xyz, r0.xyzx, l(7936.000000, 7936.000000, 7936.000000, 0.000000)
mov_sat o0.w, cb0[0].z
ret
// Approximately 81 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
