// ---- Created with 3Dmigoto v1.3.11 on Sun Dec 08 15:07:37 2019

cbuffer _Globals : register(b0)
{
  float FloatParameter_FresnelMultiplier : packoffset(c0);
  float FloatParameter_GradientStart : packoffset(c0.y);
  float FloatParameter_GradientMultiplier : packoffset(c0.z);
  float4 Vector4Parameter_Color1 : packoffset(c1);
  float4 Vector4Parameter_Color2 : packoffset(c2);
  float4 Vector4Parameter_Color3 : packoffset(c3);
  float4 Vector4Parameter_Color4 : packoffset(c4);
  float4 Vector4Parameter_Color5 : packoffset(c5);
  float FloatParameter_Reflectance : packoffset(c6);
  float _OpacityFade : packoffset(c6.y);
}

cbuffer PerView : register(b12)
{
  row_major float4x4 global_View : packoffset(c0);
  row_major float4x4 global_Projection : packoffset(c4);
  row_major float4x4 global_ViewProjection : packoffset(c8);
  float4 global_ViewPos : packoffset(c12);
  float4 global_ViewInfo : packoffset(c13);
  float4 global_ScaleAndBias : packoffset(c14);
}

SamplerState _DefaultWrapSampler_s : register(s0);
Texture2D<float4> Texture2DParameter_basecolor_DefaultWrapSampler : register(t0);
Texture2D<float4> Texture2DParameter_normalmap_DefaultWrapSampler : register(t1);
Texture2D<float4> Texture2DParameter_MSKskin_DefaultWrapSampler : register(t2);
Texture2D<float4> Texture2DParameter_MSKcloth_DefaultWrapSampler : register(t3);
Texture2D<float4> Texture2DParameter_physicalmap_DefaultWrapSampler : register(t4);


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

void main(
  float4 v0 : SV_Position0,
  float4 v1 : TEXCOORD0,
  float4 v2 : TEXCOORD1,
  float4 v3 : TEXCOORD2,
  float4 v4 : TEXCOORD3,
  float4 v5 : TEXCOORD4,
  float4 v6 : TEXCOORD5,
  float4 v7 : TEXCOORD6,
  float3 v8 : TEXCOORD7,
  out float4 o0 : SV_Target0,
  out float4 o1 : SV_Target1,
  out float4 o2 : SV_Target2,
  out float4 o3 : SV_Target3,
  out float4 o4 : SV_Target4)
{
  float4 r0,r1,r2,r3,r4,r5;
  uint4 bitmask, uiDest;
  float4 fDest;
float4 stereo = StereoParams.Load(0);
  


  r0.xyzw = Texture2DParameter_basecolor_DefaultWrapSampler.Sample(_DefaultWrapSampler_s, v1.xy).xyzw;
  r0.w = -0.5 + r0.w;
  r0.w = cmp(r0.w < 0);
  if (r0.w != 0) discard;
  r1.xy = Texture2DParameter_MSKskin_DefaultWrapSampler.Sample(_DefaultWrapSampler_s, v1.xy).xy;
  r2.xyz = Vector4Parameter_Color2.xyz * r1.yyy;
  r2.xyz = Vector4Parameter_Color1.xyz * r1.xxx + r2.xyz;
  r1.xy = float2(1,1) + -r1.xy;
  r0.w = r1.x * r1.y;
  r1.xyz = Texture2DParameter_MSKcloth_DefaultWrapSampler.Sample(_DefaultWrapSampler_s, v1.xy).xyz;
  r2.xyz = Vector4Parameter_Color3.xyz * r1.xxx + r2.xyz;
  r2.xyz = Vector4Parameter_Color4.xyz * r1.yyy + r2.xyz;
  r2.xyz = Vector4Parameter_Color5.xyz * r1.zzz + r2.xyz;
  r1.xyz = float3(1,1,1) + -r1.xyz;
  r0.w = r1.x * r0.w;
  r0.w = r0.w * r1.y;
  r0.w = r0.w * r1.z;
  r0.w = max(9.99999975e-005, abs(r0.w));
  r0.w = log2(r0.w);
  r0.w = 2.20000005 * r0.w;
  r0.w = exp2(r0.w);
  r1.xyz = r2.xyz + r0.www;
  r0.xyz = r1.xyz * r0.xyz;
  r0.w = -v7.y + v6.y;
  r0.w = saturate(FloatParameter_GradientStart + r0.w);
  r0.w = max(9.99999975e-005, r0.w);
  r0.w = log2(r0.w);
  r0.w = 0.119999997 * r0.w;
  r0.w = exp2(r0.w);
  r0.w = 1 + -r0.w;
  r1.x = FloatParameter_GradientMultiplier * r0.w;
  r1.xyz = r1.xxx * r0.xyz;
  
r0.xyz=0;

  o2.xyz = saturate(r0.xyz);
  
  r0.x = dot(v4.xyz, v4.xyz);
  r0.x = rsqrt(r0.x);
  r0.xyz = v4.xyz * r0.xxx;
  r1.w = dot(v5.xyz, v5.xyz);
  r1.w = rsqrt(r1.w);
  r2.xyz = v5.xyz * r1.www;
  r3.x = dot(r0.xyz, r2.xyz);
  r1.w = dot(v2.xyz, v2.xyz);
  r1.w = rsqrt(r1.w);
  r4.xyz = v2.xyz * r1.www;
  r3.y = dot(r4.xyz, r2.xyz);
  r1.w = dot(v3.xyz, v3.xyz);
  r1.w = rsqrt(r1.w);
  r5.xyz = v3.xyz * r1.www;
  r3.z = dot(r5.xyz, r2.xyz);
  r2.xyz = Texture2DParameter_normalmap_DefaultWrapSampler.Sample(_DefaultWrapSampler_s, v1.xy).yzw;
  r2.xyz = r2.zyx * float3(2,2,2) + float3(-1,-1,-1);
  r2.w = -r2.z;
  r1.w = dot(r2.xyw, r2.xyw);
  r1.w = rsqrt(r1.w);
  r2.xyz = r2.xyw * r1.www;
  r1.w = saturate(dot(r2.xyz, r3.xyz));
  r1.w = 1 + -r1.w;
  r1.w = max(9.99999975e-005, r1.w);
  r1.w = r1.w * r1.w;
  r1.w = r1.w * r1.w;
  r1.w = FloatParameter_FresnelMultiplier * r1.w;
  o0.xyz = r1.www * r0.www + r1.xyz;
  o0.w = 0;




  r1.xyz = r2.yyy * r4.xyz;
  r0.xyz = r2.xxx * r0.xyz + r1.xyz;
  r0.xyz = r2.zzz * r5.xyz + r0.xyz;
  r0.w = dot(r0.xyz, r0.xyz);
  r0.w = rsqrt(r0.w);
  

  r0.xyz = r0.xyz * r0.www;




  r1.y = dot(global_View._m00_m01_m02, r0.xyz);
  r1.z = dot(global_View._m10_m11_m12, r0.xyz);
  r1.x = dot(global_View._m20_m21_m22, r0.xyz);



  r0.x = 1 + r1.x;
  r0.xy = r1.yz / r0.xx;

r0.xy=0;

  o1.xy = r0.xy * float2(0.281262308,0.281262308) + float2(0.5,0.5);
  o1.zw = float2(0,0);
  o2.w = _OpacityFade;
  r0.xy = Texture2DParameter_physicalmap_DefaultWrapSampler.Sample(_DefaultWrapSampler_s, v1.xy).xy;
  


  o3.xz = saturate(r0.yx);
  o3.y = saturate(FloatParameter_Reflectance);
  o3.w = 0.0156862754;
  


  r0.x = dot(v8.xyz, v8.xyz);
  r0.x = rsqrt(r0.x);
  r0.xyz = v8.zxy * r0.xxx;
  r0.w = dot(r1.xyz, r0.xyz);
  r0.xyz = -r1.xyz * r0.www + r0.xyz;
  r0.w = dot(r0.xyz, r0.xyz);
  r0.w = rsqrt(r0.w);
  r0.xyz = r0.xyz * r0.www;
  r0.w = abs(r0.y) + abs(r0.z);
  r0.w = r0.w + abs(r0.x);
  r0.xyz = r0.xyz / r0.www;
  r1.xy = float2(1,1) + -abs(r0.yz);
  r2.xyz = cmp(r0.xyz >= float3(0,0,0));
  r0.xw = r2.zy ? float2(1,1) : float2(-1,-1);
  r0.xw = r1.xy * r0.xw;
  r0.xy = r2.xx ? r0.zy : r0.xw;
  r0.xy = max(float2(-1,-1), r0.xy);
  r0.xy = min(float2(1,1), r0.xy);
  r0.xy = r0.xy * float2(2047,2047) + float2(2047,2047);
  r0.xy = round(r0.xy);
  r0.yz = float2(0.00390625,0.0625) * r0.xy;
  r1.xy = floor(r0.yz);
  r0.y = frac(r0.z);
  r0.y = r0.y * 256 + r1.x;
  r1.z = floor(r0.y);
  r1.w = -r1.x * 256 + r0.x;
  
r1.yz=0;

  o4.xyz = float3(0.00392156886,0.00392156886,0.00392156886) * r1.yzw;
  o4.w = 0.899999976;




  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
//   using 3Dmigoto v1.3.11 on Sun Dec 08 15:07:37 2019
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
//   float FloatParameter_FresnelMultiplier;// Offset:    0 Size:     4
//   float FloatParameter_GradientStart;// Offset:    4 Size:     4
//   float FloatParameter_GradientMultiplier;// Offset:    8 Size:     4
//   float4 Vector4Parameter_Color1;    // Offset:   16 Size:    16
//   float4 Vector4Parameter_Color2;    // Offset:   32 Size:    16
//   float4 Vector4Parameter_Color3;    // Offset:   48 Size:    16
//   float4 Vector4Parameter_Color4;    // Offset:   64 Size:    16
//   float4 Vector4Parameter_Color5;    // Offset:   80 Size:    16
//   float FloatParameter_Reflectance;  // Offset:   96 Size:     4
//   float _OpacityFade;                // Offset:  100 Size:     4
//
// }
//
// cbuffer PerView
// {
//
//   row_major float4x4 global_View;    // Offset:    0 Size:    64
//   row_major float4x4 global_Projection;// Offset:   64 Size:    64 [unused]
//   row_major float4x4 global_ViewProjection;// Offset:  128 Size:    64 [unused]
//   float4 global_ViewPos;             // Offset:  192 Size:    16 [unused]
//   float4 global_ViewInfo;            // Offset:  208 Size:    16 [unused]
//   float4 global_ScaleAndBias;        // Offset:  224 Size:    16 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// _DefaultWrapSampler               sampler      NA          NA    0        1
// Texture2DParameter_basecolor_DefaultWrapSampler    texture  float4          2d    0        1
// Texture2DParameter_normalmap_DefaultWrapSampler    texture  float4          2d    1        1
// Texture2DParameter_MSKskin_DefaultWrapSampler    texture  float4          2d    2        1
// Texture2DParameter_MSKcloth_DefaultWrapSampler    texture  float4          2d    3        1
// Texture2DParameter_physicalmap_DefaultWrapSampler    texture  float4          2d    4        1
// $Globals                          cbuffer      NA          NA    0        1
// PerView                           cbuffer      NA          NA   12        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float
// TEXCOORD                 0   xy          1     NONE   float   xy
// TEXCOORD                 1   xyz         2     NONE   float   xyz
// TEXCOORD                 2   xyz         3     NONE   float   xyz
// TEXCOORD                 3   xyz         4     NONE   float   xyz
// TEXCOORD                 4   xyz         5     NONE   float   xyz
// TEXCOORD                 5   xyz         6     NONE   float    y
// TEXCOORD                 6   xyzw        7     NONE   float    y
// TEXCOORD                 7   xyz         8     NONE   float   xyz
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
// SV_Target                1   xyzw        1   TARGET   float   xyzw
// SV_Target                2   xyzw        2   TARGET   float   xyzw
// SV_Target                3   xyzw        3   TARGET   float   xyzw
// SV_Target                4   xyzw        4   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[7], immediateIndexed
dcl_constantbuffer cb12[3], immediateIndexed
dcl_sampler s0, 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_input_ps linear v1.xy
dcl_input_ps linear v2.xyz
dcl_input_ps linear v3.xyz
dcl_input_ps linear v4.xyz
dcl_input_ps linear v5.xyz
dcl_input_ps linear v6.y
dcl_input_ps linear v7.y
dcl_input_ps linear v8.xyz
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_output o4.xyzw
dcl_temps 6
sample_indexable(texture2d)(float,float,float,float) r0.xyzw, v1.xyxx, t0.xyzw, s0
add r0.w, r0.w, l(-0.500000)
lt r0.w, r0.w, l(0.000000)
discard_nz r0.w
sample_indexable(texture2d)(float,float,float,float) r1.xy, v1.xyxx, t2.xyzw, s0
mul r2.xyz, r1.yyyy, cb0[2].xyzx
mad r2.xyz, cb0[1].xyzx, r1.xxxx, r2.xyzx
add r1.xy, -r1.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
mul r0.w, r1.y, r1.x
sample_indexable(texture2d)(float,float,float,float) r1.xyz, v1.xyxx, t3.xyzw, s0
mad r2.xyz, cb0[3].xyzx, r1.xxxx, r2.xyzx
mad r2.xyz, cb0[4].xyzx, r1.yyyy, r2.xyzx
mad r2.xyz, cb0[5].xyzx, r1.zzzz, r2.xyzx
add r1.xyz, -r1.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
mul r0.w, r0.w, r1.x
mul r0.w, r1.y, r0.w
mul r0.w, r1.z, r0.w
max r0.w, |r0.w|, l(0.000100)
log r0.w, r0.w
mul r0.w, r0.w, l(2.200000)
exp r0.w, r0.w
add r1.xyz, r0.wwww, r2.xyzx
mul r0.xyz, r0.xyzx, r1.xyzx
add r0.w, v6.y, -v7.y
add_sat r0.w, r0.w, cb0[0].y
max r0.w, r0.w, l(0.000100)
log r0.w, r0.w
mul r0.w, r0.w, l(0.120000)
exp r0.w, r0.w
add r0.w, -r0.w, l(1.000000)
mul r1.x, r0.w, cb0[0].z
mul r1.xyz, r0.xyzx, r1.xxxx
mov_sat o2.xyz, r0.xyzx
dp3 r0.x, v4.xyzx, v4.xyzx
rsq r0.x, r0.x
mul r0.xyz, r0.xxxx, v4.xyzx
dp3 r1.w, v5.xyzx, v5.xyzx
rsq r1.w, r1.w
mul r2.xyz, r1.wwww, v5.xyzx
dp3 r3.x, r0.xyzx, r2.xyzx
dp3 r1.w, v2.xyzx, v2.xyzx
rsq r1.w, r1.w
mul r4.xyz, r1.wwww, v2.xyzx
dp3 r3.y, r4.xyzx, r2.xyzx
dp3 r1.w, v3.xyzx, v3.xyzx
rsq r1.w, r1.w
mul r5.xyz, r1.wwww, v3.xyzx
dp3 r3.z, r5.xyzx, r2.xyzx
sample_indexable(texture2d)(float,float,float,float) r2.xyz, v1.xyxx, t1.yzwx, s0
mad r2.xyz, r2.zyxz, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
mov r2.w, -r2.z
dp3 r1.w, r2.xywx, r2.xywx
rsq r1.w, r1.w
mul r2.xyz, r1.wwww, r2.xywx
dp3_sat r1.w, r2.xyzx, r3.xyzx
add r1.w, -r1.w, l(1.000000)
max r1.w, r1.w, l(0.000100)
mul r1.w, r1.w, r1.w
mul r1.w, r1.w, r1.w
mul r1.w, r1.w, cb0[0].x
mad o0.xyz, r1.wwww, r0.wwww, r1.xyzx
mov o0.w, l(0)
mul r1.xyz, r4.xyzx, r2.yyyy
mad r0.xyz, r2.xxxx, r0.xyzx, r1.xyzx
mad r0.xyz, r2.zzzz, r5.xyzx, r0.xyzx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r0.xyz, r0.wwww, r0.xyzx
dp3 r1.y, cb12[0].xyzx, r0.xyzx
dp3 r1.z, cb12[1].xyzx, r0.xyzx
dp3 r1.x, cb12[2].xyzx, r0.xyzx
add r0.x, r1.x, l(1.000000)
div r0.xy, r1.yzyy, r0.xxxx
mad o1.xy, r0.xyxx, l(0.281262308, 0.281262308, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
mov o1.zw, l(0,0,0,0)
mov o2.w, cb0[6].y
sample_indexable(texture2d)(float,float,float,float) r0.xy, v1.xyxx, t4.xyzw, s0
mov_sat o3.xz, r0.yyxy
mov_sat o3.y, cb0[6].x
mov o3.w, l(0.0156862754)
dp3 r0.x, v8.xyzx, v8.xyzx
rsq r0.x, r0.x
mul r0.xyz, r0.xxxx, v8.zxyz
dp3 r0.w, r1.xyzx, r0.xyzx
mad r0.xyz, -r1.xyzx, r0.wwww, r0.xyzx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r0.xyz, r0.wwww, r0.xyzx
add r0.w, |r0.z|, |r0.y|
add r0.w, |r0.x|, r0.w
div r0.xyz, r0.xyzx, r0.wwww
add r1.xy, -|r0.yzyy|, l(1.000000, 1.000000, 0.000000, 0.000000)
ge r2.xyz, r0.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
movc r0.xw, r2.zzzy, l(1.000000,0,0,1.000000), l(-1.000000,0,0,-1.000000)
mul r0.xw, r0.xxxw, r1.xxxy
movc r0.xy, r2.xxxx, r0.zyzz, r0.xwxx
max r0.xy, r0.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000)
min r0.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
mad r0.xy, r0.xyxx, l(2047.000000, 2047.000000, 0.000000, 0.000000), l(2047.000000, 2047.000000, 0.000000, 0.000000)
round_ne r0.xy, r0.xyxx
mul r0.yz, r0.xxyx, l(0.000000, 0.00390625000, 0.062500, 0.000000)
round_ni r1.xy, r0.yzyy
frc r0.y, r0.z
mad r0.y, r0.y, l(256.000000), r1.x
round_ni r1.z, r0.y
mad r1.w, -r1.x, l(256.000000), r0.x
mul o4.xyz, r1.yzwy, l(0.00392156886, 0.00392156886, 0.00392156886, 0.000000)
mov o4.w, l(0.900000)
ret
// Approximately 109 instruction slots used

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