// Mirror Reflections NEW update 3
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.11 on Sun Mar 10 16:18:53 2019
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
//   float1 ConstantVector1D_08_Value;  // Offset:    0 Size:     4
//   float1 ConstantVector1D_05_Value;  // Offset:    4 Size:     4
//   float1 ConstantVector1D_04_Value;  // Offset:    8 Size:     4
//   float1 MirrorBlendMethod_Value;    // Offset:   12 Size:     4 [unused]
//   float1 Specular_Multiplier_Value;  // Offset:   16 Size:     4 [unused]
//   float1 DisableDistanceFade_Value;  // Offset:   20 Size:     4
//   float1 ConstantVector1D_03_Value;  // Offset:   24 Size:     4
//   float1 ConstantVector1D_10_Value;  // Offset:   28 Size:     4
//   float4 gm_mTransform2D_02[2];      // Offset:   32 Size:    32
//   float1 ConstantVector1D_02_Value;  // Offset:   64 Size:     4
//   float1 ConstantVector1D_06_Value;  // Offset:   68 Size:     4
//   float4 gm_mTransform2D_01[2];      // Offset:   80 Size:    32
//   float4 gm_mTransform2D_03[2];      // Offset:  112 Size:    32
//   float1 ConstantVector1D_01_Value;  // Offset:  144 Size:     4 [unused]
//   float3 ConstantColorRGB_02_Value;  // Offset:  148 Size:    12 [unused]
//
// }
//
// 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
//       int nEnableCloth;              // Offset: 1144
//       int2 viNumTiles;               // Offset: 1152
//       int nLightTileDebugFlags;      // Offset: 1160
//       int nEnableBoxReflections;     // Offset: 1164
//       int nSelectedBoxReflectionId;  // Offset: 1168
//       int nEnableAtmosphericScatteringBackdrop;// Offset: 1172
//       int nEnableSampleFromUICameraBackbuffer;// Offset: 1176
//       int nFallbackRoomMask;         // Offset: 1180
//       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
//       int nMirrorsDisabled;          // Offset: 1320
//
//   } cbSharedPerViewData;             // Offset:    0 Size:  1324
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// samplerLinearClamp                sampler      NA          NA    4        1
// samplerAnisotropicWrap            sampler      NA          NA    9        1
// mapTexture2D_01                   texture  float4          2d    0        1
// mapTexture2DNormal_02             texture  float4          2d    1        1
// mapTexture2DCompoundNormal_01     texture  float4          2d    2        1
// mapTexture2DNormal_01             texture  float4          2d    3        1
// mapTexture2D_03                   texture  float4          2d    4        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
// POSITION                 0   xyzw        1     NONE   float   xyz
// TEXCOORDS0_OBJID_TEXBLENDFACTOR     0   xyzw        2     NONE   float   xy
// NORMAL_POSPREVX          0   xyzw        3     NONE   float   xyz
// TANGENT_POSPREVY         0   xyzw        4     NONE   float   xyz
// BINORMAL_POSPREVZ        0   xyzw        5     NONE   float   xyz
// VERTEXCOLOR              0   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[9], immediateIndexed
dcl_constantbuffer cb1[14], immediateIndexed
dcl_constantbuffer cb2[58], immediateIndexed
dcl_sampler s4, mode_default
dcl_sampler s9, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t39
dcl_input_ps linear v1.xyz
dcl_input_ps linear v2.xy
dcl_input_ps linear v3.xyz
dcl_input_ps linear v4.xyz
dcl_input_ps linear v5.xyz
dcl_output o0.xyzw
//dcl_temps 5

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

mov r0.xy, v2.xyxx
mov r0.z, l(1.000000)
dp3 r1.x, cb0[5].xyzx, r0.xyzx
dp3 r1.y, cb0[6].xyzx, r0.xyzx
sample_indexable(texture2d)(float,float,float,float) r1.zw, r1.xyxx, t3.zwxy, s9
mad r1.zw, r1.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000)
mul r1.zw, r1.zzzw, cb0[4].yyyy
dp2 r0.w, r1.zwzz, r1.zwzz
add r0.w, -r0.w, l(1.000000)
max r0.w, r0.w, l(0.000000)
sqrt r0.w, r0.w
dp3 r2.x, cb0[2].xyzx, r0.xyzx
dp3 r2.y, cb0[3].xyzx, r0.xyzx
sample_indexable(texture2d)(float,float,float,float) r2.xyz, r2.xyxx, t2.xywz, s9
mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
add r2.z, r2.z, l(-0.500000)
mul r2.xy, r2.xyxx, cb0[4].xxxx
mul r3.xy, r0.wwww, r2.xyxx
dp2 r2.x, r2.xyxx, r2.xyxx
add r2.x, -r2.x, l(1.000000)
max r2.x, r2.x, l(0.000000)
sqrt r2.x, r2.x
mad r3.xy, r1.zwzz, r2.xxxx, r3.xyxx
mul r3.z, r0.w, r2.x
dp3 r0.w, r3.xyzx, r3.xyzx
rsq r0.w, r0.w
mul r2.xyw, r0.wwww, r3.xyxz
dp3 r3.x, cb0[7].xyzx, r0.xyzx
dp3 r3.y, cb0[8].xyzx, r0.xyzx
sample_indexable(texture2d)(float,float,float,float) r0.xy, r3.xyxx, t1.xyzw, s9
mad r0.xy, r0.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
sample_indexable(texture2d)(float,float,float,float) r0.z, r1.xyxx, t0.xywz, s9
sample_indexable(texture2d)(float,float,float,float) r1.xyzw, r1.xyxx, t4.xyzw, s9
mul r0.w, r0.z, cb0[1].w
mul r0.xy, r0.wwww, r0.xyxx
dp2 r0.w, r0.xyxx, r0.xyxx
add r0.w, -r0.w, l(1.000000)
max r0.w, r0.w, l(0.000000)
sqrt r0.w, r0.w
mul r3.xyz, r0.wwww, r2.xywx
mad r3.xy, r0.xyxx, r2.wwww, r3.xyxx
dp3 r0.x, r3.xyzx, r3.xyzx
rsq r0.x, r0.x
mul r0.xyw, r0.xxxx, r3.xyxz
mul r3.xyzw, r0.yyyy, -v5.xyzz
mad r3.xyzw, v4.xyzz, r0.xxxx, r3.xyzw
mad r3.xyzw, v3.xyzz, r0.wwww, r3.xyzw
dp3 r0.x, r3.xywx, r3.xywx
rsq r0.x, r0.x
mov r4.xyz, v3.xyzx
mov r4.w, l(0)
mad r3.xyzw, r3.xyzw, r0.xxxx, -r4.xyzw
mov r4.xyz, v1.xyzx
mov r4.w, l(1.000000)
add r3.xyzw, r3.xyzw, r4.xyzw
mul r0.xyw, r3.yyyy, cb2[9].xyxw
mad r0.xyw, r3.xxxx, cb2[8].xyxw, r0.xyxw
mad r0.xyw, r3.zzzz, cb2[10].xyxw, r0.xyxw

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


mad r0.xyw, r3.wwww, cb2[11].xyxw, r0.xyxw
div r3.xy, r0.xyxx, r0.wwww
add r3.z, -r3.x, l(1.000000)
add r0.x, -cb0[0].z, cb0[0].y
mad r0.x, r1.w, r0.x, cb0[0].z
mul r1.xyz, r1.xyzx, cb0[0].xxxx
mad r0.y, -r0.x, l(2.000000), l(1.000000)
mad r0.y, r0.y, |r2.z|, r0.x
add r0.y, r2.z, r0.y
add r0.y, -r0.x, r0.y
mov_sat r0.w, cb0[1].z
mad r0.x, r0.w, r0.y, r0.x
add r0.x, -r0.x, l(1.000000)
mul r0.x, r0.x, l(10.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, r3.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) r0.xyw, r3.zyzz, t39.xywz, s4, r0.x
sample_l_indexable(texture2d)(float,float,float,float) r0.xyw, r8.zyzz, t100.xywz, s4, r0.x

mul r0.xyw, r0.xyxw, cb2[51].xxxx
mul r0.xyw, r0.xyxw, r1.xyxz
mul r0.xyz, r0.xywx, r0.zzzz
mul r1.xyz, v1.yyyy, cb2[13].xyzx
mad r1.xyz, v1.xxxx, cb2[12].xyzx, r1.xyzx
mad r1.xyz, v1.zzzz, cb2[14].xyzx, r1.xyzx
dp3 r0.w, r1.xyzx, r1.xyzx
sqrt r0.w, r0.w
add r0.w, r0.w, l(-20.000000)
mul_sat r0.w, r0.w, l(0.200000)
add_sat r0.w, r0.w, -cb0[1].y
add r0.w, -r0.w, l(1.000000)
mul r0.xyz, r0.wwww, r0.xyzx
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
mul r1.xy, r0.wwww, -cb2[53].wzww
ge r1.zw, r1.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
add r1.xy, |r1.xyxx|, l(0.000010, 0.000010, 0.000000, 0.000000)
movc r1.zw, r1.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000)
mul r1.xy, r1.xyxx, r1.zwzz
exp r1.zw, r1.xxxy
add r1.zw, r1.zzzw, l(0.000000, 0.000000, -1.000000, -1.000000)
add r0.w, cb2[15].z, cb2[53].x
mul r2.xy, r0.wwww, -cb2[53].wzww
exp r2.xy, r2.xyxx
mul r1.zw, r1.zzzw, r2.xxxy
div r1.xy, r1.zwzz, r1.xyxx
mul r0.w, r1.y, l(1.100000)
mul r1.yzw, r0.wwww, cb2[56].xxyz
mad r1.xyz, cb2[57].xyzx, r1.xxxx, r1.yzwy
mul r0.w, -v1.z, cb2[55].z
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 o0.w, l(1.000000)
ret
// Approximately 116 instruction slots used

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