//Snow particles VS 1.
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.16 on Sat Jan 15 21:31:24 2022
//
//
// Buffer Definitions:
//
// cbuffer ConstBuf__passData
// {
//
//   struct ParticleGPURenderData
//   {
//
//       float4x4 mainCameraToTransmittance;// Index:    0
//       float CascadeShadowSize;       // Index:    4
//       float OneOverCascadeShadowSize;// Index:    4.y
//       float ShadowTextureW;          // Index:    4.z
//       float ShadowTextureH;          // Index:    4.w
//       float OneOverShadowTextureW;   // Index:    5
//       float OneOverShadowTextureH;   // Index:    5.y
//
//       struct GIVolumeGlobal
//       {
//
//           float giVolumeSHDiffuseBlur;// Index:    6
//           float giVolumeSHSpecularBlur;// Index:    6.y
//           float giVolumeSaturation;  // Index:    6.z
//           float4 defaultOcclusionSH; // Index:    7
//           float4 skyFullRSH;         // Index:    8
//           float4 skyFullGSH;         // Index:    9
//           float4 skyFullBSH;         // Index:   10
//           float4 skyFullClampRSH;    // Index:   11
//           float4 skyFullClampGSH;    // Index:   12
//           float4 skyFullClampBSH;    // Index:   13
//           float4 skyFullGeoRSH;      // Index:   14
//           float4 skyFullGeoGSH;      // Index:   15
//           float4 skyFullGeoBSH;      // Index:   16
//           float4 skyTopRSH;          // Index:   17
//           float4 skyTopGSH;          // Index:   18
//           float4 skyTopBSH;          // Index:   19
//           float4 skyTopClampRSH;     // Index:   20
//           float4 skyTopClampGSH;     // Index:   21
//           float4 skyTopClampBSH;     // Index:   22
//           float4 skyTopGeoRSH;       // Index:   23
//           float4 skyTopGeoGSH;       // Index:   24
//           float4 skyTopGeoBSH;       // Index:   25
//           float4 skyTopAndBounceRSH; // Index:   26
//           float4 skyTopAndBounceGSH; // Index:   27
//           float4 skyTopAndBounceBSH; // Index:   28
//           float4 skyTopAndBounceClampRSH;// Index:   29
//           float4 skyTopAndBounceClampGSH;// Index:   30
//           float4 skyTopAndBounceClampBSH;// Index:   31
//           float4 skyTopAndBounceGeoRSH;// Index:   32
//           float4 skyTopAndBounceGeoGSH;// Index:   33
//           float4 skyTopAndBounceGeoBSH;// Index:   34
//           float4 skyDifFullRSH;      // Index:   35
//           float4 skyDifFullGSH;      // Index:   36
//           float4 skyDifFullBSH;      // Index:   37
//           float4 skyDifFullClampRSH; // Index:   38
//           float4 skyDifFullClampGSH; // Index:   39
//           float4 skyDifFullClampBSH; // Index:   40
//           float4 skyDifFullGeoRSH;   // Index:   41
//           float4 skyDifFullGeoGSH;   // Index:   42
//           float4 skyDifFullGeoBSH;   // Index:   43
//           float4 skyDifTopRSH;       // Index:   44
//           float4 skyDifTopGSH;       // Index:   45
//           float4 skyDifTopBSH;       // Index:   46
//           float4 skyDifTopClampRSH;  // Index:   47
//           float4 skyDifTopClampGSH;  // Index:   48
//           float4 skyDifTopClampBSH;  // Index:   49
//           float4 skyDifTopGeoRSH;    // Index:   50
//           float4 skyDifTopGeoGSH;    // Index:   51
//           float4 skyDifTopGeoBSH;    // Index:   52
//           float4 skyDifTopAndBounceRSH;// Index:   53
//           float4 skyDifTopAndBounceGSH;// Index:   54
//           float4 skyDifTopAndBounceBSH;// Index:   55
//           float4 skyDifTopAndBounceClampRSH;// Index:   56
//           float4 skyDifTopAndBounceClampGSH;// Index:   57
//           float4 skyDifTopAndBounceClampBSH;// Index:   58
//           float4 skyDifTopAndBounceGeoRSH;// Index:   59
//           float4 skyDifTopAndBounceGeoGSH;// Index:   60
//           float4 skyDifTopAndBounceGeoBSH;// Index:   61
//
//       } giVolumeGlobal;              // Index:    6
//
//       struct ForwardLightBuffer
//       {
//
//           struct LightParameters
//           {
//
//               float3 color;          // Index:   62
//               uint lightgroupID;     // Index:   62.w
//               float3 position;       // Index:   63
//               float sourceRadiusSquared;// Index:   63.w
//               float falloffConstant; // Index:   64
//               float innerMinusOuterCosHalfAngleRcp;// Index:   64.y
//               float outerCosHalfAngle;// Index:   64.z
//               float dirLightHalfAngle;// Index:   64.w
//               float3 direction;      // Index:   65
//               float dirLightSolidAngle;// Index:   65.w
//               int projectorIndex;    // Index:   66
//               float fadeStartOnDist; // Index:   66.y
//               float fadeRcpDist;     // Index:   66.z
//               float fadeRate;        // Index:   66.w
//
//           } gLight[64];              // Index:   62
//
//           struct LightShadowInfo
//           {
//
//               float4x4 gWorldToLight;// Index:  382
//
//               struct CascadeOffset
//               {
//
//                   float fScale;      // Index:  386
//                   float3 vTranslate; // Index:  386.y
//
//               } gCascadeOffset[3];   // Index:  386
//               float4 uvScaleOffset[4];// Index:  389
//               int extraCascadeIndex; // Index:  393
//               float cascadeRange;    // Index:  393.y
//               float2 linearizeConstants;// Index:  393.z
//               float filterSize;      // Index:  394
//               float shadowFade;      // Index:  394.y
//               float shadowBias;      // Index:  394.z
//               float padd;            // Index:  394.w
//
//           } gLightShadowInfo[16];    // Index:  382
//
//           struct LightShadowInfo
//           {
//
//               float4x4 gWorldToLight;// Index:  590
//
//               struct CascadeOffset
//               {
//
//                   float fScale;      // Index:  594
//                   float3 vTranslate; // Index:  594.y
//
//               } gCascadeOffset[3];   // Index:  594
//               float4 uvScaleOffset[4];// Index:  597
//               int extraCascadeIndex; // Index:  601
//               float cascadeRange;    // Index:  601.y
//               float2 linearizeConstants;// Index:  601.z
//               float filterSize;      // Index:  602
//               float shadowFade;      // Index:  602.y
//               float shadowBias;      // Index:  602.z
//               float padd;            // Index:  602.w
//
//           } gShadowTransmittanceInfo;// Index:  590
//
//           struct LightShadowInfo
//           {
//
//               float4x4 gWorldToLight;// Index:  603
//
//               struct CascadeOffset
//               {
//
//                   float fScale;      // Index:  607
//                   float3 vTranslate; // Index:  607.y
//
//               } gCascadeOffset[3];   // Index:  607
//               float4 uvScaleOffset[4];// Index:  610
//               int extraCascadeIndex; // Index:  614
//               float cascadeRange;    // Index:  614.y
//               float2 linearizeConstants;// Index:  614.z
//               float filterSize;      // Index:  615
//               float shadowFade;      // Index:  615.y
//               float shadowBias;      // Index:  615.z
//               float padd;            // Index:  615.w
//
//           } gExtraCascadeShadowInfo[16];// Index:  603
//
//           struct Projector
//           {
//
//               float4x4 mat;          // Index:  811
//
//           } projectors[4];           // Index:  811
//
//       } lightBuffer;                 // Index:   62
//
//       struct EnvironmentBuffer
//       {
//
//           float gDebugAmbientAmount; // Index:  827
//           float gDebugDiffuseAmount; // Index:  827.y
//           float gDebugSpecularAmount;// Index:  827.z
//           float gDebugEnvmapAmount;  // Index:  827.w
//           float3 g_GPUDebugOverridePositionXYZ;// Index:  828
//           float gDebugAOAmount;      // Index:  828.w
//           float g_GPUDebugOn;        // Index:  829
//           float g_GPUDebugOverridePositionEnable;// Index:  829.y
//           float g_skinSpecSecondLobeShift;// Index:  829.z
//           float g_skinSpecSecondProportion;// Index:  829.w
//           float g_thinScatteringAnisotropy;// Index:  830
//           float g_volumetricScatteringAnisotropy;// Index:  830.y
//           float g_volumetricSpecularScatteringAnisotropy;// Index:  830.z
//           float g_skinScatteringAnisotropy;// Index:  830.w
//           float g_volumetricScatteringNormalBend;// Index:  831
//           float g_volumetricSpecularScatteringNormalBend;// Index:  831.y
//           float g_hairSpecSecondLobeShift;// Index:  831.z
//           float g_hairSpecSecondProportion;// Index:  831.w
//           float g_isHDRRendering;    // Index:  832
//           float g_defaultSceneToScreenPower;// Index:  832.y
//           float g_defaultWhiteLevel; // Index:  832.z
//           float padding0;            // Index:  832.w
//           int g_flags;               // Index:  833
//           float g_reflectionOcclusionFalloff;// Index:  833.y
//           float padding1;            // Index:  833.z
//           float padding2;            // Index:  833.w
//
//           struct AtmosphericConstants
//           {
//
//               float3 cFogColor;      // Index:  834
//               float cHeightFalloff;  // Index:  834.w
//               float3 cEyePosition;   // Index:  835
//               float cHeightDensity;  // Index:  835.w
//               float cStartDistance;  // Index:  836
//               float cGlobalDensity;  // Index:  836.y
//               float cDepthReprojectScale;// Index:  836.z
//               float cDepthReprojectBias;// Index:  836.w
//               float4x4 cInvProjNoZReproj;// Index:  837
//               float3 cDirectionalFogDirection;// Index:  841
//               float cDirectionalityPower;// Index:  841.w
//               float3 cDirectionalFogColor;// Index:  842
//               float cDensityMapSparseBias;// Index:  842.w
//               float3 cDensityMapInvExtents;// Index:  843
//               float cDensityMapSparseSegmentScale;// Index:  843.w
//               float3 cDensityMapBias;// Index:  844
//               float cDensityMapSparseCutoff;// Index:  844.w
//               float cVolFogExponentMultiply;// Index:  845
//               float cVolFogDistanceMultiply;// Index:  845.y
//               float cVolFogExponentNormalize;// Index:  845.z
//               float cVolFogDistanceNormalize;// Index:  845.w
//               float cVolFogResolutionScale;// Index:  846
//               int cVolFogWidth;      // Index:  846.y
//               int cVolFogHeight;     // Index:  846.z
//               int cVolFogDepth;      // Index:  846.w
//
//           } atmosphericConstants;    // Index:  834
//
//       } environmentBuffer;           // Index:  827
//
//   } resourceTables__passData;        // Index:    0-846            Components:  3388
                                        // Textures:  t0-t27
//
// }
//
// cbuffer ConstBuf__batchData
// {
//
//   struct ParticleGPURenderJob
//   {
//
//       uint systemIndex;              // Index:    0
//       uint geoDataStart;             // Index:    0.y
//       uint sortEntriesStart;         // Index:    0.z
//       uint decalTransformStart;      // Index:    0.w
//
//   } resourceTables__batchData;       // Index:    0.xyzw           Components:     4
//
// }
//
// cbuffer ConstBuf__viewData
// {
//
//   struct ViewData
//   {
//
//       float4x4 view;                 // Index:    0
//       float4x4 invView;              // Index:    4
//       float4x4 proj;                 // Index:    8
//       float4x4 invViewProjNoZReproj; // Index:   12
//       float4x4 viewProj;             // Index:   16
//       float4x4 invViewProj;          // Index:   20
//       float4x4 previousViewProj;     // Index:   24
//       float4 prevLodEyePos;          // Index:   28
//       float4 lodEyePos;              // Index:   29
//       float4 viewDirDepthBias;       // Index:   30
//       float3 eyePos;                 // Index:   31
//       float2 viewportSize;           // Index:   32
//       float2 invViewportSize;        // Index:   32.z
//       float4 mirrorPlaneWS;          // Index:   33
//       float2 mirrorViewportSize;     // Index:   34
//       float2 opaqueRefractionViewportSize;// Index:   34.z
//       float windTime;                // Index:   35
//       float deltaTime;               // Index:   35.y
//       float depthReprojectScale;     // Index:   35.z
//       float depthReprojectBias;      // Index:   35.w
//       uint shadowViewType;           // Index:   36
//       float normalDepthBias;         // Index:   36.y
//       float noNormalAA;              // Index:   36.z
//       float noNormalFromAlpha;       // Index:   36.w
//       float noOpaqueTransparency;    // Index:   37
//       float translucentAmount;       // Index:   37.y
//       uint framePhase;               // Index:   37.z
//       float cameraAmbientExposure;   // Index:   37.w
//       float fxExposure;              // Index:   38
//       float fxAmbientExposure;       // Index:   38.y
//       uint checkerboardPhase;        // Index:   38.z
//       float sparkleIntensityScale;   // Index:   38.w
//
//   } resourceTables__viewData;        // Index:    0-38             Components:   156
//
// }
//
// Resource bind info for resourceTables__passData.lifeTimes
// {
//
//   float $Element;                    // Index:    0.x              Components:     1
//
// }
//
// Resource bind info for resourceTables__passData.distances
// {
//
//   float $Element;                    // Index:    0.x              Components:     1
//
// }
//
// Resource bind info for resourceTables__passData.systemData
// {
//
//   struct ParticleGPUSystemData
//   {
//
//       float4x4 cSystemToWorld;       // Index:    0
//       uint cameraID;                 // Index:    4
//       uint cDrawArgStart;            // Index:    4.y
//       float4 textureFlipbookVecs[10];// Index:    4.z
//       float3 cSpriteCenter;          // Index:   14.z
//       float3 cSpriteSize;            // Index:   15.y
//       float3 cSpriteSizeRandom;      // Index:   16
//       float2 cUVScale;               // Index:   16.w
//       float2 cUVOffset;              // Index:   17.y
//       float2 cUVScroll;              // Index:   17.w
//       uint cRibbonUVMode;            // Index:   18.y
//       float cTimeStep;               // Index:   18.z
//       uint cFlags;                   // Index:   18.w
//       float cLifeTime;               // Index:   19
//       float cLifeTimeRandom;         // Index:   19.y
//       float cFogDensityStrength;     // Index:   19.z
//       float cAge;                    // Index:   19.w
//       uint systemRandom;             // Index:   20
//       uint cAlignMode;               // Index:   20.y
//       uint cSecondaryAlignMode;      // Index:   20.z
//       uint cBlendMode;               // Index:   20.w
//       float cAngleFadeRate;          // Index:   21
//       float cSoftDistance;           // Index:   21.y
//       float cSoftDistanceInverse;    // Index:   21.z
//       float cVelocityScale;          // Index:   21.w
//       float cVelocityScaleClamp;     // Index:   22
//       float cExternalScale;          // Index:   22.y
//       float cSpriteRotation;         // Index:   22.z
//       float cSpriteCameraOffset;     // Index:   22.w
//       float cStaticTwist;            // Index:   23
//       float cTwistSpeed;             // Index:   23.y
//       uint cTwistDirection;          // Index:   23.z
//       float cMaxExtent;              // Index:   23.w
//       float cColorModulate;          // Index:   24
//       float cColorRandom;            // Index:   24.y
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   24.z
//           float end;                 // Index:   24.w
//           uint type;                 // Index:   25
//           float alpha;               // Index:   25.y
//           float jitter;              // Index:   25.z
//
//       } cParticleColorBlend;         // Index:   24.z
//       float4 cColorTintModulate;     // Index:   25.w
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   26.w
//           float end;                 // Index:   27
//           uint type;                 // Index:   27.y
//           float alpha;               // Index:   27.z
//           float jitter;              // Index:   27.w
//
//       } cNormalMapIntensity;         // Index:   26.w
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   28
//           float end;                 // Index:   28.y
//           uint type;                 // Index:   28.z
//           float alpha;               // Index:   28.w
//           float jitter;              // Index:   29
//
//       } cOpacity;                    // Index:   28
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   29.y
//           float end;                 // Index:   29.z
//           uint type;                 // Index:   29.w
//           float alpha;               // Index:   30
//           float jitter;              // Index:   30.y
//
//       } cOpacityTexturesExponent;    // Index:   29.y
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   30.z
//           float end;                 // Index:   30.w
//           uint type;                 // Index:   31
//           float alpha;               // Index:   31.y
//           float jitter;              // Index:   31.z
//
//       } cScale;                      // Index:   30.z
//       float cCameraScaleStartDistance;// Index:   31.w
//       float cCameraScaleStartValue;  // Index:   32
//       float cCameraScaleEndDistance; // Index:   32.y
//       float cCameraScaleEndValue;    // Index:   32.z
//       float cCameraOneOverEndMinusStart;// Index:   32.w
//       uint cFlipbookPageCount;       // Index:   33
//       float cFlipbookPageCycle;      // Index:   33.y
//       float cNearCull;               // Index:   33.z
//       float cFarCull;                // Index:   33.w
//       float cNearFade;               // Index:   34
//       float cFarFade;                // Index:   34.y
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   34.z
//           float end;                 // Index:   34.w
//           uint type;                 // Index:   35
//           float alpha;               // Index:   35.y
//           float jitter;              // Index:   35.z
//
//       } cDrag;                       // Index:   34.z
//       float3 cGravity;               // Index:   35.w
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   36.z
//           float end;                 // Index:   36.w
//           uint type;                 // Index:   37
//           float alpha;               // Index:   37.y
//           float jitter;              // Index:   37.z
//
//       } cGravityIntensity;           // Index:   36.z
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   37.w
//           float end;                 // Index:   38
//           uint type;                 // Index:   38.y
//           float alpha;               // Index:   38.z
//           float jitter;              // Index:   38.w
//
//       } cWindInfluenceOverLifeTime;  // Index:   37.w
//       float cMinDistance;            // Index:   39
//       float cMaxDistance;            // Index:   39.y
//       float3 cTurbulenceFrequency;   // Index:   39.z
//       float3 cTurbulenceAmplitude;   // Index:   40.y
//       float3 cTurbulencePhase;       // Index:   41
//       float3 cTurbulenceScrollSpeed; // Index:   41.w
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   42.z
//           float end;                 // Index:   42.w
//           uint type;                 // Index:   43
//           float alpha;               // Index:   43.y
//           float jitter;              // Index:   43.z
//
//       } cTurbulenceIntensity;        // Index:   42.z
//       uint cActiveFields;            // Index:   43.w
//
//       struct ParticleGPUFieldData
//       {
//
//           float3 position;           // Index:   44
//           float attenuation;         // Index:   44.w
//           float3 direction;          // Index:   45
//           float maxDistance;         // Index:   45.w
//           float magnitude;           // Index:   46
//           float _pad0;               // Index:   46.y
//           float _pad1;               // Index:   46.z
//           float _pad2;               // Index:   46.w
//
//       } cFields[4];                  // Index:   44
//       float cNewtonMinDistance;      // Index:   56
//       float cCollisionBounciness;    // Index:   56.y
//       float cCollisionBouncinessRandom;// Index:   56.z
//       float cCollisionRadius;        // Index:   56.w
//       float cDepthCollisionAgeThreshold;// Index:   57
//       float cDepthCollisionThreshold;// Index:   57.y
//       float cPlaneCollisionHeight;   // Index:   57.z
//       float3 emitterPosition;        // Index:   57.w
//       float3 emitterVelocity;        // Index:   58.z
//       float3 velocityDirectionWorld; // Index:   59.y
//       float3x3 emitterOrientation;   // Index:   60
//       float emitterDistance;         // Index:   62.y
//       float cMFXEventProbability;    // Index:   62.z
//       uint4 ramp1Indices[2];         // Index:   62.w
//       uint4 ramp3Indices;            // Index:   64.w
//       uint4 ramp1Constants[2];       // Index:   65.w
//       float4 ramp3Constants;         // Index:   67.w
//
//   } $Element;                        // Index:    0-68.z           Components:   275
//
// }
//
// Resource bind info for resourceTables__passData.spriteGeometryData
// {
//
//   struct ParticleGPUSpriteGeometryData
//   {
//
//       float3 positionCS;             // Index:    0
//       uint particleID;               // Index:    0.w
//       uint flipbook;                 // Index:    1
//       uint colorR_colorG;            // Index:    1.y
//       uint colorB_colorA;            // Index:    1.z
//       uint axis0X_axis0Y;            // Index:    1.w
//       uint axis0Z_axis1X;            // Index:    2
//       uint axis1Y_axis1Z;            // Index:    2.y
//       uint normalX_normalY;          // Index:    2.z
//       uint normalZ_age;              // Index:    2.w
//       uint axis2Scale_unused;        // Index:    3
//
//   } $Element;                        // Index:    0-3.x            Components:    13
//
// }
//
// Resource bind info for resourceTables__passData.sortEntries
// {
//
//   struct ParticleGPUSortEntry
//   {
//
//       float key;                     // Index:    0
//       uint index;                    // Index:    0.y
//
//   } $Element;                        // Index:    0.xy             Components:     2
//
// }
//
// Resource bind info for resourceTables__passData.ramp1Data
// {
//
//   struct ParticleGPURamp1Data
//   {
//
//       float multiplier;              // Index:    0
//       float offset;                  // Index:    0.y
//
//   } $Element;                        // Index:    0.xy             Components:     2
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// resourceTables__passData__smpLinearClamp    sampler      NA          NA    0        1
// resourceTables__viewData__smpLinearClamp    sampler      NA          NA    6        1
// resourceTables__passData.lifeTimes    texture  struct         r/o    4        1
// resourceTables__passData.distances    texture  struct         r/o    6        1
// resourceTables__passData.systemData    texture  struct         r/o    7        1
// resourceTables__passData.spriteGeometryData    texture  struct         r/o    8        1
// resourceTables__passData.sortEntries    texture  struct         r/o   10        1
// resourceTables__passData.spriteDrawArgs    texture    uint         buf   12        1
// resourceTables__passData.ramp1Data    texture  struct         r/o   13        1
// resourceTables__passData.ramp1Textures    texture   float          2d   15        1
// resourceTables__passData.volumetricFog    texture  float4          3d   25        1
// resourceTables__passData.volumetricLight    texture  float4          3d   26        1
// resourceTables__passData.volumetricLightDirection    texture  float4          3d   27        1
// ConstBuf__passData                cbuffer      NA          NA    0        1
// ConstBuf__batchData               cbuffer      NA          NA    2        1
// ConstBuf__viewData                cbuffer      NA          NA    3        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_VertexID              0   x           0   VERTID    uint   x
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float   xyzw
// POSITION                 0   xyz         1     NONE   float   xyz
// NORMAL                   0   xyz         2     NONE   float   xyz
// TEXCOORD                 0   xy          3     NONE   float   xy
// TEXCOORD                 1   xyz         4     NONE   float   xyz
// COLOR                    0   xyzw        5     NONE   float   xyzw
// COLOR                    1   xyzw        6     NONE   float   xyzw
// TEXCOORD                 2   xyzw        7     NONE   float   xyzw
// TEXCOORD                 3   x           8     NONE    uint   x
// TEXCOORD                 7   xyz         9     NONE   float   xyz
// TEXCOORD                 8   xyz        10     NONE   float   xyz
// TEXCOORD                 9   xyz        11     NONE   float   xyz
// TEXCOORD                10   xyz        12     NONE   float   xyz
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[847], immediateIndexed
dcl_constantbuffer cb2[1], immediateIndexed
dcl_constantbuffer cb3[12], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s6, mode_default
dcl_resource_structured t4, 4
dcl_resource_structured t6, 4
dcl_resource_structured t7, 1100
dcl_resource_structured t8, 52
dcl_resource_structured t10, 8
dcl_resource_buffer (uint,uint,uint,uint) t12
dcl_resource_structured t13, 8
dcl_resource_texture2d (float,float,float,float) t15
dcl_resource_texture3d (float,float,float,float) t25
dcl_resource_texture3d (float,float,float,float) t26
dcl_resource_texture3d (float,float,float,float) t27
dcl_input_sgv v0.x, vertex_id
dcl_output_siv o0.xyzw, position
dcl_output o1.xyz
dcl_output o2.xyz
dcl_output o3.xy
dcl_output o4.xyz
dcl_output o5.xyzw
dcl_output o6.xyzw
dcl_output o7.xyzw
dcl_output o8.x
dcl_output o9.xyz
dcl_output o10.xyz
dcl_output o11.xyz
dcl_output o12.xyz
dcl_temps 50
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r40.xyzw, l(0, 0, 0, 0), t125.xyzw
ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r0.xyzw, cb2[0].x, l(268), t7.xyzw
ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r1.xyz, cb2[0].x, l(284), t7.xyzx
ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r2.xyz, cb2[0].x, l(300), t7.xyzx
ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r3.xyz, cb2[0].x, l(316), t7.xyzx
ieq r3.zw, r3.zzzz, l(0, 0, 5, 6)
or r1.w, r3.w, r3.z
and r4.xyzw, r2.xxxx, l(4096, 8192, 0x00004000, 0x08000000)
and r1.w, r1.w, l(1)
movc r2.w, r4.x, l(1), l(2)
movc r2.w, r4.y, l(2), r2.w
movc r2.w, r4.z, l(3), r2.w
ushr r2.w, v0.x, r2.w
iadd r1.w, r1.w, r2.w
iadd r3.zw, r1.wwww, cb2[0].zzzy
ld_structured_indexable(structured_buffer, stride=8)(mixed,mixed,mixed,mixed) r1.w, r3.z, l(4), t10.xxxx
movc r1.w, r4.w, r1.w, r3.w
ld_structured_indexable(structured_buffer, stride=52)(mixed,mixed,mixed,mixed) r5.xyzw, r1.w, l(0), t8.xyzw
ld_structured_indexable(structured_buffer, stride=52)(mixed,mixed,mixed,mixed) r6.xyzw, r1.w, l(16), t8.xyzw
ld_structured_indexable(structured_buffer, stride=52)(mixed,mixed,mixed,mixed) r7.xyzw, r1.w, l(32), t8.xyzw
ld_structured_indexable(structured_buffer, stride=52)(mixed,mixed,mixed,mixed) r2.w, r1.w, l(48), t8.xxxx
ubfe r3.z, l(8), l(16), r6.x
and r3.w, r6.x, l(0x0000ffff)
utof r3.w, r3.w
mul o5.z, r3.w, l(0.0000152590219)
ushr r8.xyzw, r7.xwyz, l(16, 16, 16, 16)
ushr r9.xyzw, r6.xyzw, l(24, 16, 16, 16)
f16tof32 o6.y, r9.y
f16tof32 o6.xz, r6.yyzy
f16tof32 r6.z, r6.w
f16tof32 r6.xy, r9.zwzz
f16tof32 r7.xy, r7.xyxx
f16tof32 r10.xyz, r8.xyzx
f16tof32 o2.xz, r7.zzwz
f16tof32 o2.y, r8.w
f16tof32 r2.w, r2.w
mov r6.w, r7.x
mov r10.w, r7.y
mul r7.xyz, r6.wzyw, r10.wzxw
mad r7.xyz, r6.ywzy, r10.zxwz, -r7.xyzx
dp3 r3.w, r7.xyzx, r7.xyzx
sqrt r3.w, r3.w
div r2.w, r2.w, r3.w
mul r7.xyz, r2.wwww, r7.xyzx
movc r7.xyz, r4.zzzz, r7.xyzx, l(0,0,1.000000,0)
xor r2.w, r5.w, l(61)
ushr r3.w, r5.w, l(16)
xor r2.w, r2.w, r3.w
imul null, r2.w, r2.w, l(9)
ushr r3.w, r2.w, l(4)
xor r2.w, r2.w, r3.w
imul null, r2.w, r2.w, l(0x27d4eb2d)
ushr r3.w, r2.w, l(15)
xor r2.w, r2.w, r3.w
movc r2.w, r4.x, r3.y, r2.w
and r8.xyzw, r2.xxxx, l(0x00010000, 0x00080000, 48, 16)
ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.y, r5.w, l(0), t4.xxxx
lt r3.w, l(0.000000), r2.z
mul r2.z, r2.z, r2.y
utof r4.w, r2.w
mad r4.w, r4.w, l(4.656612873E-010), l(-1.000000)
mad r2.z, r2.z, r4.w, r2.y
movc r2.y, r3.w, r2.z, r2.y
movc r2.y, r8.x, r3.y, r2.y
div_sat r11.w, r10.y, r2.y
if_nz r8.y
  ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r2.y, cb2[0].x, l(1020), t7.xxxx
  ieq r3.yw, r2.yyyy, l(0, -2, 0, -3)
  or r2.z, r3.w, r3.y
  if_z r2.z
    ld_structured_indexable(structured_buffer, stride=8)(mixed,mixed,mixed,mixed) r8.xy, r2.y, l(0), t13.xyxx
    utof r2.y, r2.y
    add r2.y, r2.y, l(0.500000)
    mul r11.x, r2.y, l(0.000244140625)
    sample_l_indexable(texture2d)(float,float,float,float) r2.y, r11.wxww, t15.yxzw, s0, l(0.000000)
    mad r11.y, r8.x, r2.y, r8.y
  else
    ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r2.y, cb2[0].x, l(1068), t7.xxxx
    f16tof32 r2.z, r2.y
    ushr r2.y, r2.y, l(16)
    f16tof32 r2.y, r2.y
    add r2.y, -r2.z, r2.y
    mad r2.y, r11.w, r2.y, r2.z
    movc r11.y, r3.y, r2.z, r2.y
  endif
else
  mov r11.y, r11.w
endif
mad r12.zw, r1.xxxy, r3.xxxx, r0.zzzw
and r0.zw, r2.wwww, l(0, 0, 4096, 0x00008000)
movc r0.zw, r0.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000)
movc r0.z, r8.w, r0.z, l(1.000000)
mul r1.x, r0.z, r0.x
and r2.xy, r2.xxxx, l(32, 0x40000000, 0, 0)
movc r0.z, r2.x, r0.w, l(1.000000)
mul r1.y, r0.z, r0.y
movc r12.xy, r8.zzzz, r1.xyxx, r0.xyxx
if_nz r4.z
  and r0.xyz, v0.xxxx, l(7, 4, 2, 0)
  ieq r13.xyzw, r0.xxxx, l(0, 3, 4, 7)
  or r0.x, r13.y, r13.x
  or r0.x, r13.z, r0.x
  or r0.x, r13.w, r0.x
  movc r0.xyz, r0.xzyx, l(0.500000,0.500000,0.500000,0), l(-0.500000,-0.500000,-0.500000,0)
  mov r0.xyw, r0.xyxz
  mov o3.xy, r12.xzxx
else
  if_nz r4.x
    and r1.xy, v0.xxxx, l(3, 1, 0, 0)
    utof r1.xy, r1.xyxx
    mul r0.z, r1.x, l(0.333333343)
    movc r0.z, r4.y, r0.z, r1.y
    switch r1.z
      case l(0)
      mov r0.w, r11.w
      break
      case l(1)
      add r0.w, r3.x, -r10.y
      break
      case l(2)
      ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.w, r5.w, l(0), t6.xxxx
      break
      default
      mov r0.w, l(0)
      break
    endswitch
    add r0.x, r0.z, l(-0.500000)
    add r1.xy, r12.zwzz, r0.xwxx
    mad o3.xy, r1.xyxx, r12.xyxx, l(0.500000, 0.000000, 0.000000, 0.000000)
    mov r0.w, l(0)
  else
    ubfe r0.z, l(1), l(1), v0.x
    utof r0.z, r0.z
    add r0.x, r0.z, l(-0.500000)
    and r0.z, v0.x, l(1)
    utof r0.z, r0.z
    add r0.w, r0.z, l(-0.500000)
    mad r1.xy, r0.xwxx, r12.xyxx, r12.zwzz
    add o3.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
  endif
  mov r0.y, l(0)
endif
mad r1.xyz, r0.xxxx, r6.zywz, r5.xyzx
mad r0.xzw, r0.wwww, r10.xxwz, r1.xxyz
mad r1.xyz, r0.yyyy, r7.xyzx, r0.xzwx
movc r0.xyz, r4.zzzz, r1.xyzx, r0.xzwx
if_nz r2.y
  ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r1.x, cb2[0].x, l(68), t7.xxxx
  ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r5.xyzw, cb2[0].x, l(448), t7.xyzw
  ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r1.y, cb2[0].x, l(464), t7.xxxx
  ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r1.z, cb2[0].x, l(1004), t7.xxxx
  movc r2.xyz, r4.yyyy, l(0.0555555560,4.000000,-4,0), l(0.166666672,2.000000,-2,0)
  imul null, r1.x, r1.x, l(5)
  ld_indexable(buffer)(uint,uint,uint,uint) r1.x, r1.xxxx, t12.xyzw
  utof r1.x, r1.x
  mul r1.x, r2.x, r1.x
  mul r1.x, r2.y, r1.x
  and r2.x, r2.z, v0.x
  utof r2.x, r2.x
  div r1.x, r2.x, r1.x
  min r1.x, r1.x, l(1.000000)
  add r2.x, -r1.x, l(1.000000)
  lt r1.x, l(0.000000), r1.y
  ishl r2.z, r2.w, l(13)
  xor r2.z, r2.z, r2.w
  ushr r3.x, r2.z, l(17)
  xor r2.z, r2.z, r3.x
  ishl r3.x, r2.z, l(5)
  xor r2.z, r2.z, r3.x
  movc r2.z, r8.z, r2.z, r2.w
  utof r2.z, r2.z
  mad r2.z, r2.z, l(4.656612873E-010), l(-1.000000)
  and r2.z, r1.x, r2.z
  switch r5.z
    case l(0)
    mov r3.x, l(0)
    break
    case l(1)
    mov r3.x, r2.x
    break
    case l(2)
    lt r3.y, l(0.000010), |r5.w|
    lt r3.w, l(0.000000), r5.w
    lt r4.x, r5.w, l(0.000000)
    iadd r3.w, -r3.w, r4.x
    itof r3.w, r3.w
    mul r3.w, r3.w, l(0.000100)
    movc r3.y, r3.y, r5.w, r3.w
    mul r3.w, r2.x, r3.y
    exp r3.w, r3.w
    exp r3.y, r3.y
    add r3.yw, r3.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000)
    div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y
    mul r3.y, r3.y, r3.w
    max r3.x, r3.y, l(0.000000)
    break
    case l(3)
    add r3.y, |r5.w|, l(6.000000)
    add r3.w, -r2.x, l(0.500000)
    mul r3.y, r3.w, r3.y
    exp r3.y, r3.y
    add r3.y, r3.y, l(1.000000)
    div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y
    break
    default
    mov r3.x, l(0)
    break
  endswitch
  add r3.y, -r5.x, r5.y
  mad r3.x, r3.x, r3.y, r5.x
  mul r1.y, r1.y, r3.x
  mad r1.y, r1.y, r2.z, r3.x
  movc_sat r1.x, r1.x, r1.y, r3.x
  ieq r3.xy, r1.zzzz, l(-2, -3, 0, 0)
  or r1.y, r3.y, r3.x
  if_z r1.y
    ld_structured_indexable(structured_buffer, stride=8)(mixed,mixed,mixed,mixed) r3.yw, r1.z, l(0), t13.xxxy
    utof r1.y, r1.z
    add r1.y, r1.y, l(0.500000)
    mul r2.y, r1.y, l(0.000244140625)
    sample_l_indexable(texture2d)(float,float,float,float) r1.y, r2.xyxx, t15.yxzw, s0, l(0.000000)
    mad r1.y, r3.y, r1.y, r3.w
  else
    ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r1.z, cb2[0].x, l(1052), t7.xxxx
    f16tof32 r2.y, r1.z
    ushr r1.z, r1.z, l(16)
    f16tof32 r1.z, r1.z
    add r1.z, -r2.y, r1.z
    mad r1.z, r2.x, r1.z, r2.y
    movc r1.y, r3.x, r2.y, r1.z
  endif
  mul r1.z, r1.y, r1.x
  lt r2.x, r1.z, l(0.040450)
  mad r1.x, r1.x, r1.y, l(0.055000)
  mul r1.xz, r1.xxzx, l(0.947867334, 0.000000, 0.0773993805, 0.000000)
  log r1.x, r1.x
  mul r1.x, r1.x, l(2.400000)
  exp r1.x, r1.x
  movc r1.x, r2.x, r1.z, r1.x
else
  mov r1.x, l(1.000000)
endif
mov r0.w, l(1.000000)
dp4 r4.x, r0.xyzw, cb3[8].xyzw
dp4 r4.y, r0.xyzw, cb3[9].xyzw
dp4 r4.z, r0.xyzw, cb3[10].xyzw
dp4 r4.w, r0.xyzw, cb3[11].xyzw
dp4 r2.x, r0.xyzw, cb3[4].xyzw
dp4 r2.y, r0.xyzw, cb3[5].xyzw
dp4 r2.z, r0.xyzw, cb3[6].xyzw
mul o6.w, r1.x, r6.x
utof o5.x, r9.x
utof o5.y, r3.z
ishl r0.w, r2.w, l(13)
xor r0.w, r0.w, r2.w
ushr r1.x, r0.w, l(17)
xor r0.w, r0.w, r1.x
ishl r1.x, r0.w, l(5)
xor r0.w, r0.w, r1.x
movc r0.w, r8.z, r0.w, r2.w
utof r0.w, r0.w
mul r11.x, r0.w, l(2.328306437E-010)

mov r34.xyzw, r4.xyzw
add r40.w, r34.w, -r40.y
mad r34.x, r40.x, r40.w, r34.x

div r1.xyz, r34.xyzx, r4.wwww
mad_sat r3.xy, r1.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
mad r0.w, r1.z, cb0[836].z, cb0[836].w
rcp r0.w, r0.w
mad r0.w, -r0.w, cb0[845].w, l(1.000000)
log r0.w, r0.w
mul_sat r3.z, r0.w, cb0[845].z
itof r1.xyz, cb0[846].yzwy
mad r5.xyz, r1.xyzx, cb0[846].xxxx, l(-1.000000, -1.000000, -1.000000, 0.000000)
mad r5.xyz, r3.xyzx, r5.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
div r6.xyz, l(1.000000, 1.000000, 1.000000, 1.000000), r1.xyzx
mul r5.xyz, r5.xyzx, r6.xyzx
sample_l_indexable(texture3d)(float,float,float,float) r5.xyzw, r5.xyzx, t25.xyzw, s6, l(0.000000)
exp r0.w, -r5.w
min r0.w, r0.w, l(1.000000)
lt r2.w, l(0.000000), cb0[836].y
if_nz r2.w
  add r7.xyz, r2.xyzx, -cb0[835].xyzx
  dp3 r2.w, r7.xyzx, r7.xyzx
  sqrt r2.w, r2.w
  max r3.w, r2.w, l(0.001000)
  div r7.xzw, r7.xxyz, r3.wwww
  mul r3.w, r7.y, cb0[834].w
  lt r6.w, l(0.010000), |r3.w|
  mul r7.y, r3.w, l(-1.442695)
  exp r7.y, r7.y
  add r7.y, -r7.y, l(1.000000)
  div r3.w, r7.y, r3.w
  mul r3.w, r3.w, cb0[835].w
  movc r3.w, r6.w, r3.w, cb0[835].w
  dp3_sat r6.w, r7.xzwx, cb0[841].xyzx
  log r6.w, r6.w
  mul r6.w, r6.w, cb0[841].w
  exp r6.w, r6.w
  mul r3.w, r3.w, cb0[836].y
  add r2.w, r2.w, -cb0[836].x
  max r2.w, r2.w, l(0.000000)
  mul r7.x, r2.w, r3.w
  exp r7.x, -r7.x
  min r7.x, r7.x, l(1.000000)
  mad r7.yzw, r6.wwww, cb0[842].xxyz, cb0[834].xxyz
  mul r7.yzw, r0.wwww, r7.yyzw
  add r6.w, -r7.x, l(1.000000)
  mad r5.xyz, r7.yzwy, r6.wwww, r5.xyzx
  mad r2.w, r3.w, r2.w, r5.w
  exp r2.w, -r2.w
  min r0.w, r2.w, l(1.000000)
endif
add r1.xyz, r1.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000)
mad r1.xyz, r3.xyzx, r1.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
mul r1.xyz, r6.xyzx, r1.xyzx
sample_l_indexable(texture3d)(float,float,float,float) r3.xyz, r1.xyzx, t26.xyzw, s6, l(0.000000)
sample_l_indexable(texture3d)(float,float,float,float) r1.xyz, r1.xyzx, t27.xyzw, s6, l(0.000000)
mov o0.xyzw, r4.xyzw
mov o5.w, l(0)
mov r11.z, r10.y
mov o7.xyzw, r11.zwxy
mov o1.xyz, r2.xyzx
mov o4.xyz, r0.xyzx
mov o9.xyz, r0.wwww
mov o10.xyz, r5.xyzx
mov o11.xyz, r3.xyzx
mov o12.xyz, r1.xyzx
mov o8.x, r1.w
ret
// Approximately 326 instruction slots used
