// ---- Created with 3Dmigoto v1.3.10 on Tue May 01 17:06:18 2018

cbuffer PER_BATCH : register(b0)
{
  float4 DetailParams : packoffset(c0);
}

cbuffer PER_MATERIAL : register(b3)
{
  float4 MatDifColor : packoffset(c28);
  float4 MatSpecColor : packoffset(c29);
  float4 TransmittanceColor : packoffset(c31);
  float4 __0DetailBumpScale__1DetailDiffuseScale__2DetailGlossScale__3BackDiffuseMultiplier : packoffset(c33);
  float __0NormalViewDependency__1__2__3 : packoffset(c34);
}

SamplerState diffuseMapSampler_s : register(s0);
SamplerState normalMapSampler_s : register(s1);
SamplerState opacityMapSampler_s : register(s2);
SamplerState smoothnessMapSampler_s : register(s3);
SamplerState detailMapSampler_s : register(s4);
Texture2D<float4> diffuseMapSampler : register(t0);
Texture2D<float4> normalMapSampler : register(t1);
Texture2D<float4> detailMapSampler : register(t2);
Texture2D<float4> smoothnessMapSampler : register(t3);
Texture2D<float4> opacityMapSampler : register(t4);


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


void main(
  float4 v0 : SV_Position0,
  float4 v1 : TEXCOORD0,
  float4 v2 : TEXCOORD1,
  float4 v3 : TEXCOORD2,
  float4 v4 : TEXCOORD3,
  float4 v5 : COLOR0,
  float3 v6 : TEXCOORD4,
  uint v7 : SV_IsFrontFace0,
  out float4 o0 : SV_Target0,
  out float4 o1 : SV_Target1,
  out float4 o2 : SV_Target2)
{
  float4 r0,r1,r2;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.x = v7.x ? 1 : -1;
  r0.xyz = v4.xyz * r0.xxx;
  r1.xy = DetailParams.xy * v1.xy;
  r1.xyzw = detailMapSampler.Sample(detailMapSampler_s, r1.xy).xyzw;
  r1.xyzw = r1.ywxz * float4(2,2,2,2) + float4(-1,-1,-1,-1);
  r2.xy = normalMapSampler.Sample(normalMapSampler_s, v1.xy).xy;
  r1.xy = r1.xy * __0DetailBumpScale__1DetailDiffuseScale__2DetailGlossScale__3BackDiffuseMultiplier.xx + r2.yx;
  r1.zw = __0DetailBumpScale__1DetailDiffuseScale__2DetailGlossScale__3BackDiffuseMultiplier.yz * r1.zw;
  r0.w = dot(r2.xy, -r2.xy);
  r0.w = saturate(1 + r0.w);
  r0.w = sqrt(r0.w);
  r2.xyz = v3.xyz * r1.yyy;
  r2.xyz = r1.xxx * v2.xyz + r2.xyz;
  r0.xyz = r0.www * r0.xyz + r2.xyz;
  r0.w = dot(r0.xyz, r0.xyz);
  r0.w = rsqrt(r0.w);
  r1.x = dot(v6.xyz, v6.xyz);
  r1.x = rsqrt(r1.x);
  r2.xyz = v6.xyz * r1.xxx;
  r2.xyz = __0NormalViewDependency__1__2__3 * r2.xyz;
  r0.xyz = r0.xyz * r0.www + -r2.xyz;
  r0.w = dot(r0.xyz, r0.xyz);
  r0.w = rsqrt(r0.w);
  r0.xyz = r0.xyz * r0.www;
  o0.xyz = r0.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5);
  r0.x = opacityMapSampler.Sample(opacityMapSampler_s, v1.xy).x;
  r0.x = saturate(__0DetailBumpScale__1DetailDiffuseScale__2DetailGlossScale__3BackDiffuseMultiplier.w * r0.x);
  r0.xyz = TransmittanceColor.xyz * r0.xxx;
  r0.xyz = sqrt(r0.xyz);
  r0.w = dot(float3(0.298999995,0.587000012,0.114), r0.xyz);
  r0.w = r0.w * 0.99609375 + 1;
  o0.w = 0.250244379 * r0.w;
  r2.xyz = diffuseMapSampler.Sample(diffuseMapSampler_s, v1.xy).xyz;
  r2.xyz = v5.xyz * r2.xyz;
  r2.xyz = MatDifColor.xyz * r2.xyz;
  r1.xyz = r2.xyz * r1.zzz + r2.xyz;
  o1.xyz = sqrt(r1.xyz);
  o1.w = 0;
  r0.w = smoothnessMapSampler.Sample(smoothnessMapSampler_s, v1.xy).x;
  r0.w = MatSpecColor.w * r0.w;
  o2.x = r0.w * r1.w + r0.w;
  r0.w = dot(float3(-0.168699995,-0.331200004,0.5), r0.xyz);
  r0.x = dot(float3(0.5,-0.418599993,-0.0812999979), r0.xyz);
  o2.w = r0.x * 0.498039216 + 0.498039216;
  o2.z = r0.w * 0.498039216 + 0.498039216;
  r0.xyz = sqrt(MatSpecColor.xyz);
  o2.y = dot(float3(0.298999995,0.587000012,0.114), r0.xyz);
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.960.8229
//
//   using 3Dmigoto v1.3.10 on Tue May 01 17:06:18 2018
//
//
// Buffer Definitions:
//
// cbuffer PER_BATCH
// {
//
//   float4 DetailParams;               // Offset:    0 Size:    16
//
// }
//
// cbuffer PER_MATERIAL
// {
//
//   float4 MatDifColor;                // Offset:  448 Size:    16
//   float4 MatSpecColor;               // Offset:  464 Size:    16
//   float4 TransmittanceColor;         // Offset:  496 Size:    16
//   float4 __0DetailBumpScale__1DetailDiffuseScale__2DetailGlossScale__3BackDiffuseMultiplier;// Offset:  528 Size:    16
//   float __0NormalViewDependency__1__2__3;// Offset:  544 Size:     4
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// diffuseMapSampler                 sampler      NA          NA    0        1
// normalMapSampler                  sampler      NA          NA    1        1
// opacityMapSampler                 sampler      NA          NA    2        1
// smoothnessMapSampler              sampler      NA          NA    3        1
// detailMapSampler                  sampler      NA          NA    4        1
// diffuseMapSampler                 texture  float4          2d    0        1
// normalMapSampler                  texture  float4          2d    1        1
// detailMapSampler                  texture  float4          2d    2        1
// smoothnessMapSampler              texture  float4          2d    3        1
// opacityMapSampler                 texture  float4          2d    4        1
// PER_BATCH                         cbuffer      NA          NA    0        1
// PER_MATERIAL                      cbuffer      NA          NA    3        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float
// TEXCOORD                 0   xyzw        1     NONE   float   xy
// TEXCOORD                 1   xyzw        2     NONE   float   xyz
// TEXCOORD                 2   xyzw        3     NONE   float   xyz
// TEXCOORD                 3   xyzw        4     NONE   float   xyz
// COLOR                    0   xyzw        5     NONE   float   xyz
// TEXCOORD                 4   xyz         6     NONE   float   xyz
// SV_IsFrontFace           0   x           7    FFACE    uint   x
//
//
// 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
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[1], immediateIndexed
dcl_constantbuffer cb3[35], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_sampler s4, 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.xyz
dcl_input_ps_sgv v7.x, is_front_face
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_temps 3
movc r0.x, v7.x, l(1.000000), l(-1.000000)
mul r0.xyz, r0.xxxx, v4.xyzx
mul r1.xy, v1.xyxx, cb0[0].xyxx
sample_indexable(texture2d)(float,float,float,float) r1.xyzw, r1.xyxx, t2.xyzw, s4
mad r1.xyzw, r1.ywxz, l(2.000000, 2.000000, 2.000000, 2.000000), l(-1.000000, -1.000000, -1.000000, -1.000000)
sample_indexable(texture2d)(float,float,float,float) r2.xy, v1.xyxx, t1.xyzw, s1
mad r1.xy, r1.xyxx, cb3[33].xxxx, r2.yxyy
mul r1.zw, r1.zzzw, cb3[33].yyyz
dp2 r0.w, r2.xyxx, -r2.xyxx
add_sat r0.w, r0.w, l(1.000000)
sqrt r0.w, r0.w
mul r2.xyz, r1.yyyy, v3.xyzx
mad r2.xyz, r1.xxxx, v2.xyzx, r2.xyzx
mad r0.xyz, r0.wwww, r0.xyzx, r2.xyzx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
dp3 r1.x, v6.xyzx, v6.xyzx
rsq r1.x, r1.x
mul r2.xyz, r1.xxxx, v6.xyzx
mul r2.xyz, r2.xyzx, cb3[34].xxxx
mad r0.xyz, r0.xyzx, r0.wwww, -r2.xyzx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r0.xyz, r0.wwww, r0.xyzx
mad o0.xyz, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
sample_indexable(texture2d)(float,float,float,float) r0.x, v1.xyxx, t4.xyzw, s2
mul_sat r0.x, r0.x, cb3[33].w
mul r0.xyz, r0.xxxx, cb3[31].xyzx
sqrt r0.xyz, r0.xyzx
dp3 r0.w, l(0.299000, 0.587000, 0.114000, 0.000000), r0.xyzx
mad r0.w, r0.w, l(0.996093750), l(1.000000)
mul o0.w, r0.w, l(0.250244379)
sample_indexable(texture2d)(float,float,float,float) r2.xyz, v1.xyxx, t0.xyzw, s0
mul r2.xyz, r2.xyzx, v5.xyzx
mul r2.xyz, r2.xyzx, cb3[28].xyzx
mad r1.xyz, r2.xyzx, r1.zzzz, r2.xyzx
sqrt o1.xyz, r1.xyzx
mov o1.w, l(0)
sample_indexable(texture2d)(float,float,float,float) r0.w, v1.xyxx, t3.yzwx, s3
mul r0.w, r0.w, cb3[29].w
mad o2.x, r0.w, r1.w, r0.w
dp3 r0.w, l(-0.168700, -0.331200, 0.500000, 0.000000), r0.xyzx
dp3 r0.x, l(0.500000, -0.418600, -0.081300, 0.000000), r0.xyzx
mad o2.w, r0.x, l(0.498039216), l(0.498039216)
mad o2.z, r0.w, l(0.498039216), l(0.498039216)
sqrt r0.xyz, cb3[29].xyzx
dp3 o2.y, l(0.299000, 0.587000, 0.114000, 0.000000), r0.xyzx
ret
// Approximately 48 instruction slots used

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