UE4读取usf文件并设置Pass渲染

CompileDirectlyThroughDll 调用D3D.dll编译**.usf文件 只处理想要处理的usf文件
void FShaderCompileThreadRunnable::CompileDirectlyThroughDll()
{for (int32 WorkerIndex = 0; WorkerIndex < WorkerInfos.Num(); WorkerIndex++)
    {
        FShaderCompileWorkerInfo& CurrentWorkerInfo = *WorkerInfos[WorkerIndex];
        if (CurrentWorkerInfo.QueuedJobs.Num() > 0)
        {
            for (int32 JobIndex = 0; JobIndex < CurrentWorkerInfo.QueuedJobs.Num(); JobIndex++)
            {
                FShaderCommonCompileJob& CurrentJob = *CurrentWorkerInfo.QueuedJobs[JobIndex];
auto* SingleJob = CurrentJob.GetSingleShaderJob(); if (SingleJob) { if (SingleJob->Input.VirtualSourceFilePath.Find("PositionOnlyDepthVertexShader.usf")<0)             { continue; } } else { auto* PipelineJob = CurrentJob.GetShaderPipelineJob(); CompileShaderPipeline(Compiler, Format, PipelineJob, FString(FPlatformProcess::ShaderDir())); } } CurrentWorkerInfo.bComplete = true; } } }

 调用pD3DCompile-Api编译usf文件AnsiSourceFile为编译Ansi码,EntryPointName为shader入口函数

static bool CompileAndProcessD3DShader(FString& PreprocessedShaderSource, const FString& CompilerPath,
    uint32 CompileFlags, const FShaderCompilerInput& Input, FString& EntryPointName,
    const TCHAR* ShaderProfile, bool bProcessingSecondTime, TArray<FString>& FilteredErrors, FShaderCompilerOutput& Output)
{
    if (D3DCompileFunc)
    {
        bool bException = false;

        Result = D3DCompileWrapper(
            D3DCompileFunc,
            bException,
            AnsiSourceFile.Get(),
            AnsiSourceFile.Length(),
            TCHAR_TO_ANSI(*Input.VirtualSourceFilePath),
            /*pDefines=*/ NULL,
            /*pInclude=*/ NULL,
            TCHAR_TO_ANSI(*EntryPointName),
            TCHAR_TO_ANSI(ShaderProfile),
            CompileFlags,
            0,
            Shader.GetInitReference(),
            Errors.GetInitReference()
            );

        if (bException)
        {
            FilteredErrors.Add(TEXT("D3DCompile exception"));
        }
    }
}

 对应的shader代码

#line 1 "/Engine/Private/PositionOnlyDepthVertexShader.usf"
#line 7 "/Engine/Private/PositionOnlyDepthVertexShader.usf"
#line 1 "Common.ush"
#line 9 "/Engine/Private/Common.ush"
#line 1 "/Engine/Public/Platform.ush"
#line 9 "/Engine/Public/Platform.ush"
#line 1 "FP16Math.ush"
#line 10 "/Engine/Public/Platform.ush"
#line 37 "/Engine/Public/Platform.ush"
#line 1 "ShaderVersion.ush"
#line 38 "/Engine/Public/Platform.ush"
#line 554 "/Engine/Public/Platform.ush"
float min3( float a, float b, float c )
{
    return min( a, min( b, c ) );
}

float max3( float a, float b, float c )
{
    return max( a, max( b, c ) );
}

float4 min3( float4 a, float4 b, float4 c )
{
    return float4(
        min3( a.x, b.x, c.x ),
        min3( a.y, b.y, c.y ),
        min3( a.z, b.z, c.z ),
        min3( a.w, b.w, c.w )
    );
}

float4 max3( float4 a, float4 b, float4 c )
{
    return float4(
        max3( a.x, b.x, c.x ),
        max3( a.y, b.y, c.y ),
        max3( a.z, b.z, c.z ),
        max3( a.w, b.w, c.w )
    );
}
#line 10 "/Engine/Private/Common.ush"
#line 51 "/Engine/Private/Common.ush"
#line 1 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/View.ush"


cbuffer View
{
    float4x4 View_TranslatedWorldToClip;
    float4x4 View_WorldToClip;
    float4x4 View_TranslatedWorldToView;
    float4x4 View_ViewToTranslatedWorld;
    float4x4 View_TranslatedWorldToCameraView;
    float4x4 View_CameraViewToTranslatedWorld;
    float4x4 View_ViewToClip;
    float4x4 View_ViewToClipNoAA;
    float4x4 View_ClipToView;
    float4x4 View_ClipToTranslatedWorld;
    float4x4 View_SVPositionToTranslatedWorld;
    float4x4 View_ScreenToWorld;
    float4x4 View_ScreenToTranslatedWorld;
    float3  View_ViewForward;
    float  PrePadding_View_844;
    float3  View_ViewUp;
    float  PrePadding_View_860;
    float3  View_ViewRight;
    float  PrePadding_View_876;
    float3  View_HMDViewNoRollUp;
    float  PrePadding_View_892;
    float3  View_HMDViewNoRollRight;
    float  PrePadding_View_908;
    float4 View_InvDeviceZToWorldZTransform;
    float4  View_ScreenPositionScaleBias;
    float3 View_WorldCameraOrigin;
    float PrePadding_View_956;
    float3 View_TranslatedWorldCameraOrigin;
    float PrePadding_View_972;
    float3 View_WorldViewOrigin;
    float PrePadding_View_988;
    float3 View_PreViewTranslation;
    float PrePadding_View_1004;
    float4x4 View_PrevProjection;
    float4x4 View_PrevViewProj;
    float4x4 View_PrevViewRotationProj;
    float4x4 View_PrevViewToClip;
    float4x4 View_PrevClipToView;
    float4x4 View_PrevTranslatedWorldToClip;
    float4x4 View_PrevTranslatedWorldToView;
    float4x4 View_PrevViewToTranslatedWorld;
    float4x4 View_PrevTranslatedWorldToCameraView;
    float4x4 View_PrevCameraViewToTranslatedWorld;
    float3 View_PrevWorldCameraOrigin;
    float PrePadding_View_1660;
    float3 View_PrevWorldViewOrigin;
    float PrePadding_View_1676;
    float3 View_PrevPreViewTranslation;
    float PrePadding_View_1692;
    float4x4 View_PrevInvViewProj;
    float4x4 View_PrevScreenToTranslatedWorld;
    float4x4 View_ClipToPrevClip;
    float4 View_TemporalAAJitter;
    float4 View_GlobalClippingPlane;
    float2 View_FieldOfViewWideAngles;
    float2 View_PrevFieldOfViewWideAngles;
    float4  View_ViewRectMin;
    float4 View_ViewSizeAndInvSize;
    float4 View_BufferSizeAndInvSize;
    float4 View_BufferBilinearUVMinMax;
    int View_NumSceneColorMSAASamples;
    float  View_PreExposure;
    float  View_OneOverPreExposure;
    float  PrePadding_View_2012;
    float4  View_DiffuseOverrideParameter;
    float4  View_SpecularOverrideParameter;
    float4  View_NormalOverrideParameter;
    float2  View_RoughnessOverrideParameter;
    float View_PrevFrameGameTime;
    float View_PrevFrameRealTime;
    float  View_OutOfBoundsMask;
    float  PrePadding_View_2084;
    float  PrePadding_View_2088;
    float  PrePadding_View_2092;
    float3 View_WorldCameraMovementSinceLastFrame;
    float View_CullingSign;
    float  View_NearPlane;
    float View_AdaptiveTessellationFactor;
    float View_GameTime;
    float View_RealTime;
    float View_MaterialTextureMipBias;
    float View_MaterialTextureDerivativeMultiply;
    uint View_Random;
    uint View_FrameNumber;
    uint View_StateFrameIndexMod8;
    float  View_CameraCut;
    float  View_UnlitViewmodeMask;
    float  PrePadding_View_2156;
    float4  View_DirectionalLightColor;
    float3  View_DirectionalLightDirection;
    float  PrePadding_View_2188;
    float4 View_TranslucencyLightingVolumeMin[2];
    float4 View_TranslucencyLightingVolumeInvSize[2];
    float4 View_TemporalAAParams;
    float4 View_CircleDOFParams;
    float View_DepthOfFieldSensorWidth;
    float View_DepthOfFieldFocalDistance;
    float View_DepthOfFieldScale;
    float View_DepthOfFieldFocalLength;
    float View_DepthOfFieldFocalRegion;
    float View_DepthOfFieldNearTransitionRegion;
    float View_DepthOfFieldFarTransitionRegion;
    float View_MotionBlurNormalizedToPixel;
    float View_bSubsurfacePostprocessEnabled;
    float View_GeneralPurposeTweak;
    float  View_DemosaicVposOffset;
    float  PrePadding_View_2332;
    float3 View_IndirectLightingColorScale;
    float  View_HDR32bppEncodingMode;
    float3 View_AtmosphericFogSunDirection;
    float  View_AtmosphericFogSunPower;
    float  View_AtmosphericFogPower;
    float  View_AtmosphericFogDensityScale;
    float  View_AtmosphericFogDensityOffset;
    float  View_AtmosphericFogGroundOffset;
    float  View_AtmosphericFogDistanceScale;
    float  View_AtmosphericFogAltitudeScale;
    float  View_AtmosphericFogHeightScaleRayleigh;
    float  View_AtmosphericFogStartDistance;
    float  View_AtmosphericFogDistanceOffset;
    float  View_AtmosphericFogSunDiscScale;
    uint View_AtmosphericFogRenderMask;
    uint View_AtmosphericFogInscatterAltitudeSampleNum;
    float4 View_AtmosphericFogSunColor;
    float3 View_NormalCurvatureToRoughnessScaleBias;
    float View_RenderingReflectionCaptureMask;
    float4 View_AmbientCubemapTint;
    float View_AmbientCubemapIntensity;
    float View_SkyLightParameters;
    float PrePadding_View_2472;
    float PrePadding_View_2476;
    float4 View_SkyLightColor;
    float4 View_SkyIrradianceEnvironmentMap[7];
    float View_MobilePreviewMode;
    float View_HMDEyePaddingOffset;
    float  View_ReflectionCubemapMaxMip;
    float View_ShowDecalsMask;
    uint View_DistanceFieldAOSpecularOcclusionMode;
    float View_IndirectCapsuleSelfShadowingIntensity;
    float PrePadding_View_2632;
    float PrePadding_View_2636;
    float3 View_ReflectionEnvironmentRoughnessMixingScaleBiasAndLargestWeight;
    int View_StereoPassIndex;
    float4 View_GlobalVolumeCenterAndExtent[4];
    float4 View_GlobalVolumeWorldToUVAddAndMul[4];
    float View_GlobalVolumeDimension;
    float View_GlobalVolumeTexelSize;
    float View_MaxGlobalDistance;
    float View_bCheckerboardSubsurfaceProfileRendering;
    float3 View_VolumetricFogInvGridSize;
    float PrePadding_View_2812;
    float3 View_VolumetricFogGridZParams;
    float PrePadding_View_2828;
    float2 View_VolumetricFogSVPosToVolumeUV;
    float View_VolumetricFogMaxDistance;
    float PrePadding_View_2844;
    float3 View_VolumetricLightmapWorldToUVScale;
    float PrePadding_View_2860;
    float3 View_VolumetricLightmapWorldToUVAdd;
    float PrePadding_View_2876;
    float3 View_VolumetricLightmapIndirectionTextureSize;
    float View_VolumetricLightmapBrickSize;
    float3 View_VolumetricLightmapBrickTexelSize;
    float View_StereoIPD;
}
SamplerState View_MaterialTextureBilinearWrapedSampler;
SamplerState View_MaterialTextureBilinearClampedSampler;
Texture3D<uint4> View_VolumetricLightmapIndirectionTexture;
Texture3D View_VolumetricLightmapBrickAmbientVector;
Texture3D View_VolumetricLightmapBrickSHCoefficients0;
Texture3D View_VolumetricLightmapBrickSHCoefficients1;
Texture3D View_VolumetricLightmapBrickSHCoefficients2;
Texture3D View_VolumetricLightmapBrickSHCoefficients3;
Texture3D View_VolumetricLightmapBrickSHCoefficients4;
Texture3D View_VolumetricLightmapBrickSHCoefficients5;
Texture3D View_SkyBentNormalBrickTexture;
Texture3D View_DirectionalLightShadowingBrickTexture;
SamplerState View_VolumetricLightmapBrickAmbientVectorSampler;
SamplerState View_VolumetricLightmapTextureSampler0;
SamplerState View_VolumetricLightmapTextureSampler1;
SamplerState View_VolumetricLightmapTextureSampler2;
SamplerState View_VolumetricLightmapTextureSampler3;
SamplerState View_VolumetricLightmapTextureSampler4;
SamplerState View_VolumetricLightmapTextureSampler5;
SamplerState View_SkyBentNormalTextureSampler;
SamplerState View_DirectionalLightShadowingTextureSampler;
Texture3D View_GlobalDistanceFieldTexture0;
SamplerState View_GlobalDistanceFieldSampler0;
Texture3D View_GlobalDistanceFieldTexture1;
SamplerState View_GlobalDistanceFieldSampler1;
Texture3D View_GlobalDistanceFieldTexture2;
SamplerState View_GlobalDistanceFieldSampler2;
Texture3D View_GlobalDistanceFieldTexture3;
SamplerState View_GlobalDistanceFieldSampler3;
Texture2D View_AtmosphereTransmittanceTexture;
SamplerState View_AtmosphereTransmittanceTextureSampler;
Texture2D View_AtmosphereIrradianceTexture;
SamplerState View_AtmosphereIrradianceTextureSampler;
Texture3D View_AtmosphereInscatterTexture;
SamplerState View_AtmosphereInscatterTextureSampler;
Texture2D View_PerlinNoiseGradientTexture;
SamplerState View_PerlinNoiseGradientTextureSampler;
Texture3D View_PerlinNoise3DTexture;
SamplerState View_PerlinNoise3DTextureSampler;
Texture2D<uint> View_SobolSamplingTexture;
SamplerState View_SharedPointWrappedSampler;
SamplerState View_SharedPointClampedSampler;
SamplerState View_SharedBilinearWrappedSampler;
SamplerState View_SharedBilinearClampedSampler;
SamplerState View_SharedTrilinearWrappedSampler;
SamplerState View_SharedTrilinearClampedSampler;
Texture2D View_PreIntegratedBRDF;
SamplerState View_PreIntegratedBRDFSampler;
/*atic const struct
{
    float4x4 TranslatedWorldToClip;
    float4x4 WorldToClip;
    float4x4 TranslatedWorldToView;
    float4x4 ViewToTranslatedWorld;
    float4x4 TranslatedWorldToCameraView;
    float4x4 CameraViewToTranslatedWorld;
    float4x4 ViewToClip;
    float4x4 ViewToClipNoAA;
    float4x4 ClipToView;
    float4x4 ClipToTranslatedWorld;
    float4x4 SVPositionToTranslatedWorld;
    float4x4 ScreenToWorld;
    float4x4 ScreenToTranslatedWorld;
    float3  ViewForward;
    float3  ViewUp;
    float3  ViewRight;
    float3  HMDViewNoRollUp;
    float3  HMDViewNoRollRight;
    float4 InvDeviceZToWorldZTransform;
    float4  ScreenPositionScaleBias;
    float3 WorldCameraOrigin;
    float3 TranslatedWorldCameraOrigin;
    float3 WorldViewOrigin;
    float3 PreViewTranslation;
    float4x4 PrevProjection;
    float4x4 PrevViewProj;
    float4x4 PrevViewRotationProj;
    float4x4 PrevViewToClip;
    float4x4 PrevClipToView;
    float4x4 PrevTranslatedWorldToClip;
    float4x4 PrevTranslatedWorldToView;
    float4x4 PrevViewToTranslatedWorld;
    float4x4 PrevTranslatedWorldToCameraView;
    float4x4 PrevCameraViewToTranslatedWorld;
    float3 PrevWorldCameraOrigin;
    float3 PrevWorldViewOrigin;
    float3 PrevPreViewTranslation;
    float4x4 PrevInvViewProj;
    float4x4 PrevScreenToTranslatedWorld;
    float4x4 ClipToPrevClip;
    float4 TemporalAAJitter;
    float4 GlobalClippingPlane;
    float2 FieldOfViewWideAngles;
    float2 PrevFieldOfViewWideAngles;
    float4  ViewRectMin;
    float4 ViewSizeAndInvSize;
    float4 BufferSizeAndInvSize;
    float4 BufferBilinearUVMinMax;
    int NumSceneColorMSAASamples;
    float  PreExposure;
    float  OneOverPreExposure;
    float4  DiffuseOverrideParameter;
    float4  SpecularOverrideParameter;
    float4  NormalOverrideParameter;
    float2  RoughnessOverrideParameter;
    float PrevFrameGameTime;
    float PrevFrameRealTime;
    float  OutOfBoundsMask;
    float3 WorldCameraMovementSinceLastFrame;
    float CullingSign;
    float  NearPlane;
    float AdaptiveTessellationFactor;
    float GameTime;
    float RealTime;
    float MaterialTextureMipBias;
    float MaterialTextureDerivativeMultiply;
    uint Random;
    uint FrameNumber;
    uint StateFrameIndexMod8;
    float  CameraCut;
    float  UnlitViewmodeMask;
    float4  DirectionalLightColor;
    float3  DirectionalLightDirection;
    float4 TranslucencyLightingVolumeMin[2];
    float4 TranslucencyLightingVolumeInvSize[2];
    float4 TemporalAAParams;
    float4 CircleDOFParams;
    float DepthOfFieldSensorWidth;
    float DepthOfFieldFocalDistance;
    float DepthOfFieldScale;
    float DepthOfFieldFocalLength;
    float DepthOfFieldFocalRegion;
    float DepthOfFieldNearTransitionRegion;
    float DepthOfFieldFarTransitionRegion;
    float MotionBlurNormalizedToPixel;
    float bSubsurfacePostprocessEnabled;
    float GeneralPurposeTweak;
    float  DemosaicVposOffset;
    float3 IndirectLightingColorScale;
    float  HDR32bppEncodingMode;
    float3 AtmosphericFogSunDirection;
    float  AtmosphericFogSunPower;
    float  AtmosphericFogPower;
    float  AtmosphericFogDensityScale;
    float  AtmosphericFogDensityOffset;
    float  AtmosphericFogGroundOffset;
    float  AtmosphericFogDistanceScale;
    float  AtmosphericFogAltitudeScale;
    float  AtmosphericFogHeightScaleRayleigh;
    float  AtmosphericFogStartDistance;
    float  AtmosphericFogDistanceOffset;
    float  AtmosphericFogSunDiscScale;
    uint AtmosphericFogRenderMask;
    uint AtmosphericFogInscatterAltitudeSampleNum;
    float4 AtmosphericFogSunColor;
    float3 NormalCurvatureToRoughnessScaleBias;
    float RenderingReflectionCaptureMask;
    float4 AmbientCubemapTint;
    float AmbientCubemapIntensity;
    float SkyLightParameters;
    float4 SkyLightColor;
    float4 SkyIrradianceEnvironmentMap[7];
    float MobilePreviewMode;
    float HMDEyePaddingOffset;
    float  ReflectionCubemapMaxMip;
    float ShowDecalsMask;
    uint DistanceFieldAOSpecularOcclusionMode;
    float IndirectCapsuleSelfShadowingIntensity;
    float3 ReflectionEnvironmentRoughnessMixingScaleBiasAndLargestWeight;
    int StereoPassIndex;
    float4 GlobalVolumeCenterAndExtent[4];
    float4 GlobalVolumeWorldToUVAddAndMul[4];
    float GlobalVolumeDimension;
    float GlobalVolumeTexelSize;
    float MaxGlobalDistance;
    float bCheckerboardSubsurfaceProfileRendering;
    float3 VolumetricFogInvGridSize;
    float3 VolumetricFogGridZParams;
    float2 VolumetricFogSVPosToVolumeUV;
    float VolumetricFogMaxDistance;
    float3 VolumetricLightmapWorldToUVScale;
    float3 VolumetricLightmapWorldToUVAdd;
    float3 VolumetricLightmapIndirectionTextureSize;
    float VolumetricLightmapBrickSize;
    float3 VolumetricLightmapBrickTexelSize;
    float StereoIPD;
    SamplerState MaterialTextureBilinearWrapedSampler;
    SamplerState MaterialTextureBilinearClampedSampler;
    Texture3D<uint4> VolumetricLightmapIndirectionTexture;
    Texture3D VolumetricLightmapBrickAmbientVector;
    Texture3D VolumetricLightmapBrickSHCoefficients0;
    Texture3D VolumetricLightmapBrickSHCoefficients1;
    Texture3D VolumetricLightmapBrickSHCoefficients2;
    Texture3D VolumetricLightmapBrickSHCoefficients3;
    Texture3D VolumetricLightmapBrickSHCoefficients4;
    Texture3D VolumetricLightmapBrickSHCoefficients5;
    Texture3D SkyBentNormalBrickTexture;
    Texture3D DirectionalLightShadowingBrickTexture;
    SamplerState VolumetricLightmapBrickAmbientVectorSampler;
    SamplerState VolumetricLightmapTextureSampler0;
    SamplerState VolumetricLightmapTextureSampler1;
    SamplerState VolumetricLightmapTextureSampler2;
    SamplerState VolumetricLightmapTextureSampler3;
    SamplerState VolumetricLightmapTextureSampler4;
    SamplerState VolumetricLightmapTextureSampler5;
    SamplerState SkyBentNormalTextureSampler;
    SamplerState DirectionalLightShadowingTextureSampler;
    Texture3D GlobalDistanceFieldTexture0;
    SamplerState GlobalDistanceFieldSampler0;
    Texture3D GlobalDistanceFieldTexture1;
    SamplerState GlobalDistanceFieldSampler1;
    Texture3D GlobalDistanceFieldTexture2;
    SamplerState GlobalDistanceFieldSampler2;
    Texture3D GlobalDistanceFieldTexture3;
    SamplerState GlobalDistanceFieldSampler3;
    Texture2D AtmosphereTransmittanceTexture;
    SamplerState AtmosphereTransmittanceTextureSampler;
    Texture2D AtmosphereIrradianceTexture;
    SamplerState AtmosphereIrradianceTextureSampler;
    Texture3D AtmosphereInscatterTexture;
    SamplerState AtmosphereInscatterTextureSampler;
    Texture2D PerlinNoiseGradientTexture;
    SamplerState PerlinNoiseGradientTextureSampler;
    Texture3D PerlinNoise3DTexture;
    SamplerState PerlinNoise3DTextureSampler;
    Texture2D<uint> SobolSamplingTexture;
    SamplerState SharedPointWrappedSampler;
    SamplerState SharedPointClampedSampler;
    SamplerState SharedBilinearWrappedSampler;
    SamplerState SharedBilinearClampedSampler;
    SamplerState SharedTrilinearWrappedSampler;
    SamplerState SharedTrilinearClampedSampler;
    Texture2D PreIntegratedBRDF;
    SamplerState PreIntegratedBRDFSampler;
} View = { View_TranslatedWorldToClip,View_WorldToClip,View_TranslatedWorldToView,View_ViewToTranslatedWorld,View_TranslatedWorldToCameraView,View_CameraViewToTranslatedWorld,View_ViewToClip,View_ViewToClipNoAA,View_ClipToView,View_ClipToTranslatedWorld,View_SVPositionToTranslatedWorld,View_ScreenToWorld,View_ScreenToTranslatedWorld,View_ViewForward,View_ViewUp,View_ViewRight,View_HMDViewNoRollUp,View_HMDViewNoRollRight,View_InvDeviceZToWorldZTransform,View_ScreenPositionScaleBias,View_WorldCameraOrigin,View_TranslatedWorldCameraOrigin,View_WorldViewOrigin,View_PreViewTranslation,View_PrevProjection,View_PrevViewProj,View_PrevViewRotationProj,View_PrevViewToClip,View_PrevClipToView,View_PrevTranslatedWorldToClip,View_PrevTranslatedWorldToView,View_PrevViewToTranslatedWorld,View_PrevTranslatedWorldToCameraView,View_PrevCameraViewToTranslatedWorld,View_PrevWorldCameraOrigin,View_PrevWorldViewOrigin,View_PrevPreViewTranslation,View_PrevInvViewProj,View_PrevScreenToTranslatedWorld,View_ClipToPrevClip,View_TemporalAAJitter,View_GlobalClippingPlane,View_FieldOfViewWideAngles,View_PrevFieldOfViewWideAngles,View_ViewRectMin,View_ViewSizeAndInvSize,View_BufferSizeAndInvSize,View_BufferBilinearUVMinMax,View_NumSceneColorMSAASamples,View_PreExposure,View_OneOverPreExposure,View_DiffuseOverrideParameter,View_SpecularOverrideParameter,View_NormalOverrideParameter,View_RoughnessOverrideParameter,View_PrevFrameGameTime,View_PrevFrameRealTime,View_OutOfBoundsMask,View_WorldCameraMovementSinceLastFrame,View_CullingSign,View_NearPlane,View_AdaptiveTessellationFactor,View_GameTime,View_RealTime,View_MaterialTextureMipBias,View_MaterialTextureDerivativeMultiply,View_Random,View_FrameNumber,View_StateFrameIndexMod8,View_CameraCut,View_UnlitViewmodeMask,View_DirectionalLightColor,View_DirectionalLightDirection,View_TranslucencyLightingVolumeMin,View_TranslucencyLightingVolumeInvSize,View_TemporalAAParams,View_CircleDOFParams,View_DepthOfFieldSensorWidth,View_DepthOfFieldFocalDistance,View_DepthOfFieldScale,View_DepthOfFieldFocalLength,View_DepthOfFieldFocalRegion,View_DepthOfFieldNearTransitionRegion,View_DepthOfFieldFarTransitionRegion,View_MotionBlurNormalizedToPixel,View_bSubsurfacePostprocessEnabled,View_GeneralPurposeTweak,View_DemosaicVposOffset,View_IndirectLightingColorScale,View_HDR32bppEncodingMode,View_AtmosphericFogSunDirection,View_AtmosphericFogSunPower,View_AtmosphericFogPower,View_AtmosphericFogDensityScale,View_AtmosphericFogDensityOffset,View_AtmosphericFogGroundOffset,View_AtmosphericFogDistanceScale,View_AtmosphericFogAltitudeScale,View_AtmosphericFogHeightScaleRayleigh,View_AtmosphericFogStartDistance,View_AtmosphericFogDistanceOffset,View_AtmosphericFogSunDiscScale,View_AtmosphericFogRenderMask,View_AtmosphericFogInscatterAltitudeSampleNum,View_AtmosphericFogSunColor,View_NormalCurvatureToRoughnessScaleBias,View_RenderingReflectionCaptureMask,View_AmbientCubemapTint,View_AmbientCubemapIntensity,View_SkyLightParameters,View_SkyLightColor,View_SkyIrradianceEnvironmentMap,View_MobilePreviewMode,View_HMDEyePaddingOffset,View_ReflectionCubemapMaxMip,View_ShowDecalsMask,View_DistanceFieldAOSpecularOcclusionMode,View_IndirectCapsuleSelfShadowingIntensity,View_ReflectionEnvironmentRoughnessMixingScaleBiasAndLargestWeight,View_StereoPassIndex,View_GlobalVolumeCenterAndExtent,View_GlobalVolumeWorldToUVAddAndMul,View_GlobalVolumeDimension,View_GlobalVolumeTexelSize,View_MaxGlobalDistance,View_bCheckerboardSubsurfaceProfileRendering,View_VolumetricFogInvGridSize,View_VolumetricFogGridZParams,View_VolumetricFogSVPosToVolumeUV,View_VolumetricFogMaxDistance,View_VolumetricLightmapWorldToUVScale,View_VolumetricLightmapWorldToUVAdd,View_VolumetricLightmapIndirectionTextureSize,View_VolumetricLightmapBrickSize,View_VolumetricLightmapBrickTexelSize,View_StereoIPD,View_MaterialTextureBilinearWrapedSampler,View_MaterialTextureBilinearClampedSampler,View_VolumetricLightmapIndirectionTexture,View_VolumetricLightmapBrickAmbientVector,View_VolumetricLightmapBrickSHCoefficients0,View_VolumetricLightmapBrickSHCoefficients1,View_VolumetricLightmapBrickSHCoefficients2,View_VolumetricLightmapBrickSHCoefficients3,View_VolumetricLightmapBrickSHCoefficients4,View_VolumetricLightmapBrickSHCoefficients5,View_SkyBentNormalBrickTexture,View_DirectionalLightShadowingBrickTexture,View_VolumetricLightmapBrickAmbientVectorSampler,View_VolumetricLightmapTextureSampler0,View_VolumetricLightmapTextureSampler1,View_VolumetricLightmapTextureSampler2,View_VolumetricLightmapTextureSampler3,View_VolumetricLightmapTextureSampler4,View_VolumetricLightmapTextureSampler5,View_SkyBentNormalTextureSampler,View_DirectionalLightShadowingTextureSampler,View_GlobalDistanceFieldTexture0,View_GlobalDistanceFieldSampler0,View_GlobalDistanceFieldTexture1,View_GlobalDistanceFieldSampler1,View_GlobalDistanceFieldTexture2,View_GlobalDistanceFieldSampler2,View_GlobalDistanceFieldTexture3,View_GlobalDistanceFieldSampler3,View_AtmosphereTransmittanceTexture,View_AtmosphereTransmittanceTextureSampler,View_AtmosphereIrradianceTexture,View_AtmosphereIrradianceTextureSampler,View_AtmosphereInscatterTexture,View_AtmosphereInscatterTextureSampler,View_PerlinNoiseGradientTexture,View_PerlinNoiseGradientTextureSampler,View_PerlinNoise3DTexture,View_PerlinNoise3DTextureSampler,View_SobolSamplingTexture,View_SharedPointWrappedSampler,View_SharedPointClampedSampler,View_SharedBilinearWrappedSampler,View_SharedBilinearClampedSampler,View_SharedTrilinearWrappedSampler,View_SharedTrilinearClampedSampler,View_PreIntegratedBRDF,View_PreIntegratedBRDFSampler*/
#line 2 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/Primitive.ush"


cbuffer Primitive
{
    float4x4 Primitive_LocalToWorld;
    float4x4 Primitive_WorldToLocal;
    float4 Primitive_ObjectWorldPositionAndRadius;
    float3 Primitive_ObjectBounds;
    float  Primitive_LocalToWorldDeterminantSign;
    float3 Primitive_ActorWorldPosition;
    float  Primitive_DecalReceiverMask;
    float  Primitive_PerObjectGBufferData;
    float  Primitive_UseSingleSampleShadowFromStationaryLights;
    float  Primitive_UseVolumetricLightmapShadowFromStationaryLights;
    float  Primitive_UseEditorDepthTest;
    float4  Primitive_ObjectOrientation;
    float4  Primitive_NonUniformScale;
    float4  Primitive_InvNonUniformScale;
    float3 Primitive_LocalObjectBoundsMin;
    float PrePadding_Primitive_252;
    float3 Primitive_LocalObjectBoundsMax;
    uint Primitive_LightingChannelMask;
    float Primitive_LpvBiasMultiplier;
}
/*atic const struct
{
    float4x4 LocalToWorld;
    float4x4 WorldToLocal;
    float4 ObjectWorldPositionAndRadius;
    float3 ObjectBounds;
    float  LocalToWorldDeterminantSign;
    float3 ActorWorldPosition;
    float  DecalReceiverMask;
    float  PerObjectGBufferData;
    float  UseSingleSampleShadowFromStationaryLights;
    float  UseVolumetricLightmapShadowFromStationaryLights;
    float  UseEditorDepthTest;
    float4  ObjectOrientation;
    float4  NonUniformScale;
    float4  InvNonUniformScale;
    float3 LocalObjectBoundsMin;
    float3 LocalObjectBoundsMax;
    uint LightingChannelMask;
    float LpvBiasMultiplier;
} Primitive = { Primitive_LocalToWorld,Primitive_WorldToLocal,Primitive_ObjectWorldPositionAndRadius,Primitive_ObjectBounds,Primitive_LocalToWorldDeterminantSign,Primitive_ActorWorldPosition,Primitive_DecalReceiverMask,Primitive_PerObjectGBufferData,Primitive_UseSingleSampleShadowFromStationaryLights,Primitive_UseVolumetricLightmapShadowFromStationaryLights,Primitive_UseEditorDepthTest,Primitive_ObjectOrientation,Primitive_NonUniformScale,Primitive_InvNonUniformScale,Primitive_LocalObjectBoundsMin,Primitive_LocalObjectBoundsMax,Primitive_LightingChannelMask,Primitive_LpvBiasMultiplier*/
#line 3 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/DrawRectangleParameters.ush"


cbuffer DrawRectangleParameters
{
    float4 DrawRectangleParameters_PosScaleBias;
    float4 DrawRectangleParameters_UVScaleBias;
    float4 DrawRectangleParameters_InvTargetSizeAndTextureSize;
}
/*atic const struct
{
    float4 PosScaleBias;
    float4 UVScaleBias;
    float4 InvTargetSizeAndTextureSize;
} DrawRectangleParameters = { DrawRectangleParameters_PosScaleBias,DrawRectangleParameters_UVScaleBias,DrawRectangleParameters_InvTargetSizeAndTextureSize*/
#line 4 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/InstancedView.ush"


cbuffer InstancedView
{
    float4x4 InstancedView_TranslatedWorldToClip;
    float4x4 InstancedView_WorldToClip;
    float4x4 InstancedView_TranslatedWorldToView;
    float4x4 InstancedView_ViewToTranslatedWorld;
    float4x4 InstancedView_TranslatedWorldToCameraView;
    float4x4 InstancedView_CameraViewToTranslatedWorld;
    float4x4 InstancedView_ViewToClip;
    float4x4 InstancedView_ViewToClipNoAA;
    float4x4 InstancedView_ClipToView;
    float4x4 InstancedView_ClipToTranslatedWorld;
    float4x4 InstancedView_SVPositionToTranslatedWorld;
    float4x4 InstancedView_ScreenToWorld;
    float4x4 InstancedView_ScreenToTranslatedWorld;
    float3  InstancedView_ViewForward;
    float  PrePadding_InstancedView_844;
    float3  InstancedView_ViewUp;
    float  PrePadding_InstancedView_860;
    float3  InstancedView_ViewRight;
    float  PrePadding_InstancedView_876;
    float3  InstancedView_HMDViewNoRollUp;
    float  PrePadding_InstancedView_892;
    float3  InstancedView_HMDViewNoRollRight;
    float  PrePadding_InstancedView_908;
    float4 InstancedView_InvDeviceZToWorldZTransform;
    float4  InstancedView_ScreenPositionScaleBias;
    float3 InstancedView_WorldCameraOrigin;
    float PrePadding_InstancedView_956;
    float3 InstancedView_TranslatedWorldCameraOrigin;
    float PrePadding_InstancedView_972;
    float3 InstancedView_WorldViewOrigin;
    float PrePadding_InstancedView_988;
    float3 InstancedView_PreViewTranslation;
    float PrePadding_InstancedView_1004;
    float4x4 InstancedView_PrevProjection;
    float4x4 InstancedView_PrevViewProj;
    float4x4 InstancedView_PrevViewRotationProj;
    float4x4 InstancedView_PrevViewToClip;
    float4x4 InstancedView_PrevClipToView;
    float4x4 InstancedView_PrevTranslatedWorldToClip;
    float4x4 InstancedView_PrevTranslatedWorldToView;
    float4x4 InstancedView_PrevViewToTranslatedWorld;
    float4x4 InstancedView_PrevTranslatedWorldToCameraView;
    float4x4 InstancedView_PrevCameraViewToTranslatedWorld;
    float3 InstancedView_PrevWorldCameraOrigin;
    float PrePadding_InstancedView_1660;
    float3 InstancedView_PrevWorldViewOrigin;
    float PrePadding_InstancedView_1676;
    float3 InstancedView_PrevPreViewTranslation;
    float PrePadding_InstancedView_1692;
    float4x4 InstancedView_PrevInvViewProj;
    float4x4 InstancedView_PrevScreenToTranslatedWorld;
    float4x4 InstancedView_ClipToPrevClip;
    float4 InstancedView_TemporalAAJitter;
    float4 InstancedView_GlobalClippingPlane;
    float2 InstancedView_FieldOfViewWideAngles;
    float2 InstancedView_PrevFieldOfViewWideAngles;
    float4  InstancedView_ViewRectMin;
    float4 InstancedView_ViewSizeAndInvSize;
    float4 InstancedView_BufferSizeAndInvSize;
    float4 InstancedView_BufferBilinearUVMinMax;
    int InstancedView_NumSceneColorMSAASamples;
    float  InstancedView_PreExposure;
    float  InstancedView_OneOverPreExposure;
    float  PrePadding_InstancedView_2012;
    float4  InstancedView_DiffuseOverrideParameter;
    float4  InstancedView_SpecularOverrideParameter;
    float4  InstancedView_NormalOverrideParameter;
    float2  InstancedView_RoughnessOverrideParameter;
    float InstancedView_PrevFrameGameTime;
    float InstancedView_PrevFrameRealTime;
    float  InstancedView_OutOfBoundsMask;
    float  PrePadding_InstancedView_2084;
    float  PrePadding_InstancedView_2088;
    float  PrePadding_InstancedView_2092;
    float3 InstancedView_WorldCameraMovementSinceLastFrame;
    float InstancedView_CullingSign;
    float  InstancedView_NearPlane;
    float InstancedView_AdaptiveTessellationFactor;
    float InstancedView_GameTime;
    float InstancedView_RealTime;
    float InstancedView_MaterialTextureMipBias;
    float InstancedView_MaterialTextureDerivativeMultiply;
    uint InstancedView_Random;
    uint InstancedView_FrameNumber;
    uint InstancedView_StateFrameIndexMod8;
    float  InstancedView_CameraCut;
    float  InstancedView_UnlitViewmodeMask;
    float  PrePadding_InstancedView_2156;
    float4  InstancedView_DirectionalLightColor;
    float3  InstancedView_DirectionalLightDirection;
    float  PrePadding_InstancedView_2188;
    float4 InstancedView_TranslucencyLightingVolumeMin[2];
    float4 InstancedView_TranslucencyLightingVolumeInvSize[2];
    float4 InstancedView_TemporalAAParams;
    float4 InstancedView_CircleDOFParams;
    float InstancedView_DepthOfFieldSensorWidth;
    float InstancedView_DepthOfFieldFocalDistance;
    float InstancedView_DepthOfFieldScale;
    float InstancedView_DepthOfFieldFocalLength;
    float InstancedView_DepthOfFieldFocalRegion;
    float InstancedView_DepthOfFieldNearTransitionRegion;
    float InstancedView_DepthOfFieldFarTransitionRegion;
    float InstancedView_MotionBlurNormalizedToPixel;
    float InstancedView_bSubsurfacePostprocessEnabled;
    float InstancedView_GeneralPurposeTweak;
    float  InstancedView_DemosaicVposOffset;
    float  PrePadding_InstancedView_2332;
    float3 InstancedView_IndirectLightingColorScale;
    float  InstancedView_HDR32bppEncodingMode;
    float3 InstancedView_AtmosphericFogSunDirection;
    float  InstancedView_AtmosphericFogSunPower;
    float  InstancedView_AtmosphericFogPower;
    float  InstancedView_AtmosphericFogDensityScale;
    float  InstancedView_AtmosphericFogDensityOffset;
    float  InstancedView_AtmosphericFogGroundOffset;
    float  InstancedView_AtmosphericFogDistanceScale;
    float  InstancedView_AtmosphericFogAltitudeScale;
    float  InstancedView_AtmosphericFogHeightScaleRayleigh;
    float  InstancedView_AtmosphericFogStartDistance;
    float  InstancedView_AtmosphericFogDistanceOffset;
    float  InstancedView_AtmosphericFogSunDiscScale;
    uint InstancedView_AtmosphericFogRenderMask;
    uint InstancedView_AtmosphericFogInscatterAltitudeSampleNum;
    float4 InstancedView_AtmosphericFogSunColor;
    float3 InstancedView_NormalCurvatureToRoughnessScaleBias;
    float InstancedView_RenderingReflectionCaptureMask;
    float4 InstancedView_AmbientCubemapTint;
    float InstancedView_AmbientCubemapIntensity;
    float InstancedView_SkyLightParameters;
    float PrePadding_InstancedView_2472;
    float PrePadding_InstancedView_2476;
    float4 InstancedView_SkyLightColor;
    float4 InstancedView_SkyIrradianceEnvironmentMap[7];
    float InstancedView_MobilePreviewMode;
    float InstancedView_HMDEyePaddingOffset;
    float  InstancedView_ReflectionCubemapMaxMip;
    float InstancedView_ShowDecalsMask;
    uint InstancedView_DistanceFieldAOSpecularOcclusionMode;
    float InstancedView_IndirectCapsuleSelfShadowingIntensity;
    float PrePadding_InstancedView_2632;
    float PrePadding_InstancedView_2636;
    float3 InstancedView_ReflectionEnvironmentRoughnessMixingScaleBiasAndLargestWeight;
    int InstancedView_StereoPassIndex;
    float4 InstancedView_GlobalVolumeCenterAndExtent[4];
    float4 InstancedView_GlobalVolumeWorldToUVAddAndMul[4];
    float InstancedView_GlobalVolumeDimension;
    float InstancedView_GlobalVolumeTexelSize;
    float InstancedView_MaxGlobalDistance;
    float InstancedView_bCheckerboardSubsurfaceProfileRendering;
    float3 InstancedView_VolumetricFogInvGridSize;
    float PrePadding_InstancedView_2812;
    float3 InstancedView_VolumetricFogGridZParams;
    float PrePadding_InstancedView_2828;
    float2 InstancedView_VolumetricFogSVPosToVolumeUV;
    float InstancedView_VolumetricFogMaxDistance;
    float PrePadding_InstancedView_2844;
    float3 InstancedView_VolumetricLightmapWorldToUVScale;
    float PrePadding_InstancedView_2860;
    float3 InstancedView_VolumetricLightmapWorldToUVAdd;
    float PrePadding_InstancedView_2876;
    float3 InstancedView_VolumetricLightmapIndirectionTextureSize;
    float InstancedView_VolumetricLightmapBrickSize;
    float3 InstancedView_VolumetricLightmapBrickTexelSize;
    float InstancedView_StereoIPD;
}
/*atic const struct
{
    float4x4 TranslatedWorldToClip;
    float4x4 WorldToClip;
    float4x4 TranslatedWorldToView;
    float4x4 ViewToTranslatedWorld;
    float4x4 TranslatedWorldToCameraView;
    float4x4 CameraViewToTranslatedWorld;
    float4x4 ViewToClip;
    float4x4 ViewToClipNoAA;
    float4x4 ClipToView;
    float4x4 ClipToTranslatedWorld;
    float4x4 SVPositionToTranslatedWorld;
    float4x4 ScreenToWorld;
    float4x4 ScreenToTranslatedWorld;
    float3  ViewForward;
    float3  ViewUp;
    float3  ViewRight;
    float3  HMDViewNoRollUp;
    float3  HMDViewNoRollRight;
    float4 InvDeviceZToWorldZTransform;
    float4  ScreenPositionScaleBias;
    float3 WorldCameraOrigin;
    float3 TranslatedWorldCameraOrigin;
    float3 WorldViewOrigin;
    float3 PreViewTranslation;
    float4x4 PrevProjection;
    float4x4 PrevViewProj;
    float4x4 PrevViewRotationProj;
    float4x4 PrevViewToClip;
    float4x4 PrevClipToView;
    float4x4 PrevTranslatedWorldToClip;
    float4x4 PrevTranslatedWorldToView;
    float4x4 PrevViewToTranslatedWorld;
    float4x4 PrevTranslatedWorldToCameraView;
    float4x4 PrevCameraViewToTranslatedWorld;
    float3 PrevWorldCameraOrigin;
    float3 PrevWorldViewOrigin;
    float3 PrevPreViewTranslation;
    float4x4 PrevInvViewProj;
    float4x4 PrevScreenToTranslatedWorld;
    float4x4 ClipToPrevClip;
    float4 TemporalAAJitter;
    float4 GlobalClippingPlane;
    float2 FieldOfViewWideAngles;
    float2 PrevFieldOfViewWideAngles;
    float4  ViewRectMin;
    float4 ViewSizeAndInvSize;
    float4 BufferSizeAndInvSize;
    float4 BufferBilinearUVMinMax;
    int NumSceneColorMSAASamples;
    float  PreExposure;
    float  OneOverPreExposure;
    float4  DiffuseOverrideParameter;
    float4  SpecularOverrideParameter;
    float4  NormalOverrideParameter;
    float2  RoughnessOverrideParameter;
    float PrevFrameGameTime;
    float PrevFrameRealTime;
    float  OutOfBoundsMask;
    float3 WorldCameraMovementSinceLastFrame;
    float CullingSign;
    float  NearPlane;
    float AdaptiveTessellationFactor;
    float GameTime;
    float RealTime;
    float MaterialTextureMipBias;
    float MaterialTextureDerivativeMultiply;
    uint Random;
    uint FrameNumber;
    uint StateFrameIndexMod8;
    float  CameraCut;
    float  UnlitViewmodeMask;
    float4  DirectionalLightColor;
    float3  DirectionalLightDirection;
    float4 TranslucencyLightingVolumeMin[2];
    float4 TranslucencyLightingVolumeInvSize[2];
    float4 TemporalAAParams;
    float4 CircleDOFParams;
    float DepthOfFieldSensorWidth;
    float DepthOfFieldFocalDistance;
    float DepthOfFieldScale;
    float DepthOfFieldFocalLength;
    float DepthOfFieldFocalRegion;
    float DepthOfFieldNearTransitionRegion;
    float DepthOfFieldFarTransitionRegion;
    float MotionBlurNormalizedToPixel;
    float bSubsurfacePostprocessEnabled;
    float GeneralPurposeTweak;
    float  DemosaicVposOffset;
    float3 IndirectLightingColorScale;
    float  HDR32bppEncodingMode;
    float3 AtmosphericFogSunDirection;
    float  AtmosphericFogSunPower;
    float  AtmosphericFogPower;
    float  AtmosphericFogDensityScale;
    float  AtmosphericFogDensityOffset;
    float  AtmosphericFogGroundOffset;
    float  AtmosphericFogDistanceScale;
    float  AtmosphericFogAltitudeScale;
    float  AtmosphericFogHeightScaleRayleigh;
    float  AtmosphericFogStartDistance;
    float  AtmosphericFogDistanceOffset;
    float  AtmosphericFogSunDiscScale;
    uint AtmosphericFogRenderMask;
    uint AtmosphericFogInscatterAltitudeSampleNum;
    float4 AtmosphericFogSunColor;
    float3 NormalCurvatureToRoughnessScaleBias;
    float RenderingReflectionCaptureMask;
    float4 AmbientCubemapTint;
    float AmbientCubemapIntensity;
    float SkyLightParameters;
    float4 SkyLightColor;
    float4 SkyIrradianceEnvironmentMap[7];
    float MobilePreviewMode;
    float HMDEyePaddingOffset;
    float  ReflectionCubemapMaxMip;
    float ShowDecalsMask;
    uint DistanceFieldAOSpecularOcclusionMode;
    float IndirectCapsuleSelfShadowingIntensity;
    float3 ReflectionEnvironmentRoughnessMixingScaleBiasAndLargestWeight;
    int StereoPassIndex;
    float4 GlobalVolumeCenterAndExtent[4];
    float4 GlobalVolumeWorldToUVAddAndMul[4];
    float GlobalVolumeDimension;
    float GlobalVolumeTexelSize;
    float MaxGlobalDistance;
    float bCheckerboardSubsurfaceProfileRendering;
    float3 VolumetricFogInvGridSize;
    float3 VolumetricFogGridZParams;
    float2 VolumetricFogSVPosToVolumeUV;
    float VolumetricFogMaxDistance;
    float3 VolumetricLightmapWorldToUVScale;
    float3 VolumetricLightmapWorldToUVAdd;
    float3 VolumetricLightmapIndirectionTextureSize;
    float VolumetricLightmapBrickSize;
    float3 VolumetricLightmapBrickTexelSize;
    float StereoIPD;
} InstancedView = { InstancedView_TranslatedWorldToClip,InstancedView_WorldToClip,InstancedView_TranslatedWorldToView,InstancedView_ViewToTranslatedWorld,InstancedView_TranslatedWorldToCameraView,InstancedView_CameraViewToTranslatedWorld,InstancedView_ViewToClip,InstancedView_ViewToClipNoAA,InstancedView_ClipToView,InstancedView_ClipToTranslatedWorld,InstancedView_SVPositionToTranslatedWorld,InstancedView_ScreenToWorld,InstancedView_ScreenToTranslatedWorld,InstancedView_ViewForward,InstancedView_ViewUp,InstancedView_ViewRight,InstancedView_HMDViewNoRollUp,InstancedView_HMDViewNoRollRight,InstancedView_InvDeviceZToWorldZTransform,InstancedView_ScreenPositionScaleBias,InstancedView_WorldCameraOrigin,InstancedView_TranslatedWorldCameraOrigin,InstancedView_WorldViewOrigin,InstancedView_PreViewTranslation,InstancedView_PrevProjection,InstancedView_PrevViewProj,InstancedView_PrevViewRotationProj,InstancedView_PrevViewToClip,InstancedView_PrevClipToView,InstancedView_PrevTranslatedWorldToClip,InstancedView_PrevTranslatedWorldToView,InstancedView_PrevViewToTranslatedWorld,InstancedView_PrevTranslatedWorldToCameraView,InstancedView_PrevCameraViewToTranslatedWorld,InstancedView_PrevWorldCameraOrigin,InstancedView_PrevWorldViewOrigin,InstancedView_PrevPreViewTranslation,InstancedView_PrevInvViewProj,InstancedView_PrevScreenToTranslatedWorld,InstancedView_ClipToPrevClip,InstancedView_TemporalAAJitter,InstancedView_GlobalClippingPlane,InstancedView_FieldOfViewWideAngles,InstancedView_PrevFieldOfViewWideAngles,InstancedView_ViewRectMin,InstancedView_ViewSizeAndInvSize,InstancedView_BufferSizeAndInvSize,InstancedView_BufferBilinearUVMinMax,InstancedView_NumSceneColorMSAASamples,InstancedView_PreExposure,InstancedView_OneOverPreExposure,InstancedView_DiffuseOverrideParameter,InstancedView_SpecularOverrideParameter,InstancedView_NormalOverrideParameter,InstancedView_RoughnessOverrideParameter,InstancedView_PrevFrameGameTime,InstancedView_PrevFrameRealTime,InstancedView_OutOfBoundsMask,InstancedView_WorldCameraMovementSinceLastFrame,InstancedView_CullingSign,InstancedView_NearPlane,InstancedView_AdaptiveTessellationFactor,InstancedView_GameTime,InstancedView_RealTime,InstancedView_MaterialTextureMipBias,InstancedView_MaterialTextureDerivativeMultiply,InstancedView_Random,InstancedView_FrameNumber,InstancedView_StateFrameIndexMod8,InstancedView_CameraCut,InstancedView_UnlitViewmodeMask,InstancedView_DirectionalLightColor,InstancedView_DirectionalLightDirection,InstancedView_TranslucencyLightingVolumeMin,InstancedView_TranslucencyLightingVolumeInvSize,InstancedView_TemporalAAParams,InstancedView_CircleDOFParams,InstancedView_DepthOfFieldSensorWidth,InstancedView_DepthOfFieldFocalDistance,InstancedView_DepthOfFieldScale,InstancedView_DepthOfFieldFocalLength,InstancedView_DepthOfFieldFocalRegion,InstancedView_DepthOfFieldNearTransitionRegion,InstancedView_DepthOfFieldFarTransitionRegion,InstancedView_MotionBlurNormalizedToPixel,InstancedView_bSubsurfacePostprocessEnabled,InstancedView_GeneralPurposeTweak,InstancedView_DemosaicVposOffset,InstancedView_IndirectLightingColorScale,InstancedView_HDR32bppEncodingMode,InstancedView_AtmosphericFogSunDirection,InstancedView_AtmosphericFogSunPower,InstancedView_AtmosphericFogPower,InstancedView_AtmosphericFogDensityScale,InstancedView_AtmosphericFogDensityOffset,InstancedView_AtmosphericFogGroundOffset,InstancedView_AtmosphericFogDistanceScale,InstancedView_AtmosphericFogAltitudeScale,InstancedView_AtmosphericFogHeightScaleRayleigh,InstancedView_AtmosphericFogStartDistance,InstancedView_AtmosphericFogDistanceOffset,InstancedView_AtmosphericFogSunDiscScale,InstancedView_AtmosphericFogRenderMask,InstancedView_AtmosphericFogInscatterAltitudeSampleNum,InstancedView_AtmosphericFogSunColor,InstancedView_NormalCurvatureToRoughnessScaleBias,InstancedView_RenderingReflectionCaptureMask,InstancedView_AmbientCubemapTint,InstancedView_AmbientCubemapIntensity,InstancedView_SkyLightParameters,InstancedView_SkyLightColor,InstancedView_SkyIrradianceEnvironmentMap,InstancedView_MobilePreviewMode,InstancedView_HMDEyePaddingOffset,InstancedView_ReflectionCubemapMaxMip,InstancedView_ShowDecalsMask,InstancedView_DistanceFieldAOSpecularOcclusionMode,InstancedView_IndirectCapsuleSelfShadowingIntensity,InstancedView_ReflectionEnvironmentRoughnessMixingScaleBiasAndLargestWeight,InstancedView_StereoPassIndex,InstancedView_GlobalVolumeCenterAndExtent,InstancedView_GlobalVolumeWorldToUVAddAndMul,InstancedView_GlobalVolumeDimension,InstancedView_GlobalVolumeTexelSize,InstancedView_MaxGlobalDistance,InstancedView_bCheckerboardSubsurfaceProfileRendering,InstancedView_VolumetricFogInvGridSize,InstancedView_VolumetricFogGridZParams,InstancedView_VolumetricFogSVPosToVolumeUV,InstancedView_VolumetricFogMaxDistance,InstancedView_VolumetricLightmapWorldToUVScale,InstancedView_VolumetricLightmapWorldToUVAdd,InstancedView_VolumetricLightmapIndirectionTextureSize,InstancedView_VolumetricLightmapBrickSize,InstancedView_VolumetricLightmapBrickTexelSize,InstancedView_StereoIPD*/
#line 5 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/PrimitiveFade.ush"


cbuffer PrimitiveFade
{
    float2  PrimitiveFade_FadeTimeScaleBias;
}
/*atic const struct
{
    float2  FadeTimeScaleBias;
} PrimitiveFade = { PrimitiveFade_FadeTimeScaleBias*/
#line 6 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/MobileSceneTextures.ush"


cbuffer MobileSceneTextures
{
}
Texture2D MobileSceneTextures_SceneColorTexture;
SamplerState MobileSceneTextures_SceneColorTextureSampler;
Texture2D MobileSceneTextures_SceneDepthTexture;
SamplerState MobileSceneTextures_SceneDepthTextureSampler;
Texture2D MobileSceneTextures_SceneAlphaCopyTexture;
SamplerState MobileSceneTextures_SceneAlphaCopyTextureSampler;
Texture2D MobileSceneTextures_CustomDepthTexture;
SamplerState MobileSceneTextures_CustomDepthTextureSampler;
Texture2D MobileSceneTextures_MobileCustomStencilTexture;
SamplerState MobileSceneTextures_MobileCustomStencilTextureSampler;
/*atic const struct
{
    Texture2D SceneColorTexture;
    SamplerState SceneColorTextureSampler;
    Texture2D SceneDepthTexture;
    SamplerState SceneDepthTextureSampler;
    Texture2D SceneAlphaCopyTexture;
    SamplerState SceneAlphaCopyTextureSampler;
    Texture2D CustomDepthTexture;
    SamplerState CustomDepthTextureSampler;
    Texture2D MobileCustomStencilTexture;
    SamplerState MobileCustomStencilTextureSampler;
} MobileSceneTextures = { MobileSceneTextures_SceneColorTexture,MobileSceneTextures_SceneColorTextureSampler,MobileSceneTextures_SceneDepthTexture,MobileSceneTextures_SceneDepthTextureSampler,MobileSceneTextures_SceneAlphaCopyTexture,MobileSceneTextures_SceneAlphaCopyTextureSampler,MobileSceneTextures_CustomDepthTexture,MobileSceneTextures_CustomDepthTextureSampler,MobileSceneTextures_MobileCustomStencilTexture,MobileSceneTextures_MobileCustomStencilTextureSampler*/
#line 7 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/SceneTexturesStruct.ush"


cbuffer SceneTexturesStruct
{
}
Texture2D SceneTexturesStruct_SceneColorTexture;
SamplerState SceneTexturesStruct_SceneColorTextureSampler;
Texture2D SceneTexturesStruct_SceneDepthTexture;
SamplerState SceneTexturesStruct_SceneDepthTextureSampler;
Texture2D<float> SceneTexturesStruct_SceneDepthTextureNonMS;
Texture2D SceneTexturesStruct_GBufferATexture;
Texture2D SceneTexturesStruct_GBufferBTexture;
Texture2D SceneTexturesStruct_GBufferCTexture;
Texture2D SceneTexturesStruct_GBufferDTexture;
Texture2D SceneTexturesStruct_GBufferETexture;
Texture2D SceneTexturesStruct_GBufferVelocityTexture;
Texture2D<float4> SceneTexturesStruct_GBufferATextureNonMS;
Texture2D<float4> SceneTexturesStruct_GBufferBTextureNonMS;
Texture2D<float4> SceneTexturesStruct_GBufferCTextureNonMS;
Texture2D<float4> SceneTexturesStruct_GBufferDTextureNonMS;
Texture2D<float4> SceneTexturesStruct_GBufferETextureNonMS;
Texture2D<float4> SceneTexturesStruct_GBufferVelocityTextureNonMS;
SamplerState SceneTexturesStruct_GBufferATextureSampler;
SamplerState SceneTexturesStruct_GBufferBTextureSampler;
SamplerState SceneTexturesStruct_GBufferCTextureSampler;
SamplerState SceneTexturesStruct_GBufferDTextureSampler;
SamplerState SceneTexturesStruct_GBufferETextureSampler;
SamplerState SceneTexturesStruct_GBufferVelocityTextureSampler;
Texture2D SceneTexturesStruct_ScreenSpaceAOTexture;
SamplerState SceneTexturesStruct_ScreenSpaceAOTextureSampler;
Texture2D<float> SceneTexturesStruct_CustomDepthTextureNonMS;
Texture2D SceneTexturesStruct_CustomDepthTexture;
SamplerState SceneTexturesStruct_CustomDepthTextureSampler;
Texture2D<uint2> SceneTexturesStruct_CustomStencilTexture;
Texture2D<uint2> SceneTexturesStruct_SceneStencilTexture;
Texture2D SceneTexturesStruct_EyeAdaptation;
Texture2D SceneTexturesStruct_SceneColorCopyTexture;
SamplerState SceneTexturesStruct_SceneColorCopyTextureSampler;
/*atic const struct
{
    Texture2D SceneColorTexture;
    SamplerState SceneColorTextureSampler;
    Texture2D SceneDepthTexture;
    SamplerState SceneDepthTextureSampler;
    Texture2D<float> SceneDepthTextureNonMS;
    Texture2D GBufferATexture;
    Texture2D GBufferBTexture;
    Texture2D GBufferCTexture;
    Texture2D GBufferDTexture;
    Texture2D GBufferETexture;
    Texture2D GBufferVelocityTexture;
    Texture2D<float4> GBufferATextureNonMS;
    Texture2D<float4> GBufferBTextureNonMS;
    Texture2D<float4> GBufferCTextureNonMS;
    Texture2D<float4> GBufferDTextureNonMS;
    Texture2D<float4> GBufferETextureNonMS;
    Texture2D<float4> GBufferVelocityTextureNonMS;
    SamplerState GBufferATextureSampler;
    SamplerState GBufferBTextureSampler;
    SamplerState GBufferCTextureSampler;
    SamplerState GBufferDTextureSampler;
    SamplerState GBufferETextureSampler;
    SamplerState GBufferVelocityTextureSampler;
    Texture2D ScreenSpaceAOTexture;
    SamplerState ScreenSpaceAOTextureSampler;
    Texture2D<float> CustomDepthTextureNonMS;
    Texture2D CustomDepthTexture;
    SamplerState CustomDepthTextureSampler;
    Texture2D<uint2> CustomStencilTexture;
    Texture2D<uint2> SceneStencilTexture;
    Texture2D EyeAdaptation;
    Texture2D SceneColorCopyTexture;
    SamplerState SceneColorCopyTextureSampler;
} SceneTexturesStruct = { SceneTexturesStruct_SceneColorTexture,SceneTexturesStruct_SceneColorTextureSampler,SceneTexturesStruct_SceneDepthTexture,SceneTexturesStruct_SceneDepthTextureSampler,SceneTexturesStruct_SceneDepthTextureNonMS,SceneTexturesStruct_GBufferATexture,SceneTexturesStruct_GBufferBTexture,SceneTexturesStruct_GBufferCTexture,SceneTexturesStruct_GBufferDTexture,SceneTexturesStruct_GBufferETexture,SceneTexturesStruct_GBufferVelocityTexture,SceneTexturesStruct_GBufferATextureNonMS,SceneTexturesStruct_GBufferBTextureNonMS,SceneTexturesStruct_GBufferCTextureNonMS,SceneTexturesStruct_GBufferDTextureNonMS,SceneTexturesStruct_GBufferETextureNonMS,SceneTexturesStruct_GBufferVelocityTextureNonMS,SceneTexturesStruct_GBufferATextureSampler,SceneTexturesStruct_GBufferBTextureSampler,SceneTexturesStruct_GBufferCTextureSampler,SceneTexturesStruct_GBufferDTextureSampler,SceneTexturesStruct_GBufferETextureSampler,SceneTexturesStruct_GBufferVelocityTextureSampler,SceneTexturesStruct_ScreenSpaceAOTexture,SceneTexturesStruct_ScreenSpaceAOTextureSampler,SceneTexturesStruct_CustomDepthTextureNonMS,SceneTexturesStruct_CustomDepthTexture,SceneTexturesStruct_CustomDepthTextureSampler  ,SceneTexturesStruct_CustomStencilTexture   ,SceneTexturesStruct_SceneStencilTexture  ,SceneTexturesStruct_EyeAdaptation,SceneTexturesStruct_SceneColorCopyTexture,SceneTexturesStruct_SceneColorCopyTextureSampler*/
#line 8 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/SpeedTreeData.ush"


cbuffer SpeedTreeData
{
    float4 SpeedTreeData_WindVector;
    float4 SpeedTreeData_WindGlobal;
    float4 SpeedTreeData_WindBranch;
    float4 SpeedTreeData_WindBranchTwitch;
    float4 SpeedTreeData_WindBranchWhip;
    float4 SpeedTreeData_WindBranchAnchor;
    float4 SpeedTreeData_WindBranchAdherences;
    float4 SpeedTreeData_WindTurbulences;
    float4 SpeedTreeData_WindLeaf1Ripple;
    float4 SpeedTreeData_WindLeaf1Tumble;
    float4 SpeedTreeData_WindLeaf1Twitch;
    float4 SpeedTreeData_WindLeaf2Ripple;
    float4 SpeedTreeData_WindLeaf2Tumble;
    float4 SpeedTreeData_WindLeaf2Twitch;
    float4 SpeedTreeData_WindFrondRipple;
    float4 SpeedTreeData_WindRollingBranch;
    float4 SpeedTreeData_WindRollingLeafAndDirection;
    float4 SpeedTreeData_WindRollingNoise;
    float4 SpeedTreeData_WindAnimation;
    float4 SpeedTreeData_PrevWindVector;
    float4 SpeedTreeData_PrevWindGlobal;
    float4 SpeedTreeData_PrevWindBranch;
    float4 SpeedTreeData_PrevWindBranchTwitch;
    float4 SpeedTreeData_PrevWindBranchWhip;
    float4 SpeedTreeData_PrevWindBranchAnchor;
    float4 SpeedTreeData_PrevWindBranchAdherences;
    float4 SpeedTreeData_PrevWindTurbulences;
    float4 SpeedTreeData_PrevWindLeaf1Ripple;
    float4 SpeedTreeData_PrevWindLeaf1Tumble;
    float4 SpeedTreeData_PrevWindLeaf1Twitch;
    float4 SpeedTreeData_PrevWindLeaf2Ripple;
    float4 SpeedTreeData_PrevWindLeaf2Tumble;
    float4 SpeedTreeData_PrevWindLeaf2Twitch;
    float4 SpeedTreeData_PrevWindFrondRipple;
    float4 SpeedTreeData_PrevWindRollingBranch;
    float4 SpeedTreeData_PrevWindRollingLeafAndDirection;
    float4 SpeedTreeData_PrevWindRollingNoise;
    float4 SpeedTreeData_PrevWindAnimation;
}
/*atic const struct
{
    float4 WindVector;
    float4 WindGlobal;
    float4 WindBranch;
    float4 WindBranchTwitch;
    float4 WindBranchWhip;
    float4 WindBranchAnchor;
    float4 WindBranchAdherences;
    float4 WindTurbulences;
    float4 WindLeaf1Ripple;
    float4 WindLeaf1Tumble;
    float4 WindLeaf1Twitch;
    float4 WindLeaf2Ripple;
    float4 WindLeaf2Tumble;
    float4 WindLeaf2Twitch;
    float4 WindFrondRipple;
    float4 WindRollingBranch;
    float4 WindRollingLeafAndDirection;
    float4 WindRollingNoise;
    float4 WindAnimation;
    float4 PrevWindVector;
    float4 PrevWindGlobal;
    float4 PrevWindBranch;
    float4 PrevWindBranchTwitch;
    float4 PrevWindBranchWhip;
    float4 PrevWindBranchAnchor;
    float4 PrevWindBranchAdherences;
    float4 PrevWindTurbulences;
    float4 PrevWindLeaf1Ripple;
    float4 PrevWindLeaf1Tumble;
    float4 PrevWindLeaf1Twitch;
    float4 PrevWindLeaf2Ripple;
    float4 PrevWindLeaf2Tumble;
    float4 PrevWindLeaf2Twitch;
    float4 PrevWindFrondRipple;
    float4 PrevWindRollingBranch;
    float4 PrevWindRollingLeafAndDirection;
    float4 PrevWindRollingNoise;
    float4 PrevWindAnimation;
} SpeedTreeData = { SpeedTreeData_WindVector,SpeedTreeData_WindGlobal,SpeedTreeData_WindBranch,SpeedTreeData_WindBranchTwitch,SpeedTreeData_WindBranchWhip,SpeedTreeData_WindBranchAnchor,SpeedTreeData_WindBranchAdherences,SpeedTreeData_WindTurbulences,SpeedTreeData_WindLeaf1Ripple,SpeedTreeData_WindLeaf1Tumble,SpeedTreeData_WindLeaf1Twitch,SpeedTreeData_WindLeaf2Ripple,SpeedTreeData_WindLeaf2Tumble,SpeedTreeData_WindLeaf2Twitch,SpeedTreeData_WindFrondRipple,SpeedTreeData_WindRollingBranch,SpeedTreeData_WindRollingLeafAndDirection,SpeedTreeData_WindRollingNoise,SpeedTreeData_WindAnimation,SpeedTreeData_PrevWindVector,SpeedTreeData_PrevWindGlobal,SpeedTreeData_PrevWindBranch,SpeedTreeData_PrevWindBranchTwitch,SpeedTreeData_PrevWindBranchWhip,SpeedTreeData_PrevWindBranchAnchor,SpeedTreeData_PrevWindBranchAdherences,SpeedTreeData_PrevWindTurbulences,SpeedTreeData_PrevWindLeaf1Ripple,SpeedTreeData_PrevWindLeaf1Tumble,SpeedTreeData_PrevWindLeaf1Twitch,SpeedTreeData_PrevWindLeaf2Ripple,SpeedTreeData_PrevWindLeaf2Tumble,SpeedTreeData_PrevWindLeaf2Twitch,SpeedTreeData_PrevWindFrondRipple,SpeedTreeData_PrevWindRollingBranch,SpeedTreeData_PrevWindRollingLeafAndDirection,SpeedTreeData_PrevWindRollingNoise,SpeedTreeData_PrevWindAnimation*/
#line 9 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/View.ush"
#line 10 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/Primitive.ush"
#line 11 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/DrawRectangleParameters.ush"
#line 12 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/InstancedView.ush"
#line 13 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/LocalVF.ush"


cbuffer LocalVF
{
    int3 LocalVF_VertexFetch_Parameters;
}
Buffer<float2> LocalVF_VertexFetch_TexCoordBuffer;
Buffer<float4> LocalVF_VertexFetch_PackedTangentsBuffer;
Buffer<float4> LocalVF_VertexFetch_ColorComponentsBuffer;
/*atic const struct
{
    int3 VertexFetch_Parameters;
    Buffer<float2> VertexFetch_TexCoordBuffer;
    Buffer<float4> VertexFetch_PackedTangentsBuffer;
    Buffer<float4> VertexFetch_ColorComponentsBuffer;
} LocalVF = { LocalVF_VertexFetch_Parameters  ,LocalVF_VertexFetch_TexCoordBuffer   ,LocalVF_VertexFetch_PackedTangentsBuffer   ,LocalVF_VertexFetch_ColorComponentsBuffer  */
#line 14 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/PrecomputedLightingBuffer.ush"


cbuffer PrecomputedLightingBuffer
{
    float3 PrecomputedLightingBuffer_IndirectLightingCachePrimitiveAdd;
    float PrePadding_PrecomputedLightingBuffer_12;
    float3 PrecomputedLightingBuffer_IndirectLightingCachePrimitiveScale;
    float PrePadding_PrecomputedLightingBuffer_28;
    float3 PrecomputedLightingBuffer_IndirectLightingCacheMinUV;
    float PrePadding_PrecomputedLightingBuffer_44;
    float3 PrecomputedLightingBuffer_IndirectLightingCacheMaxUV;
    float PrePadding_PrecomputedLightingBuffer_60;
    float4 PrecomputedLightingBuffer_PointSkyBentNormal;
    float  PrecomputedLightingBuffer_DirectionalLightShadowing;
    float  PrePadding_PrecomputedLightingBuffer_84;
    float  PrePadding_PrecomputedLightingBuffer_88;
    float  PrePadding_PrecomputedLightingBuffer_92;
    float4 PrecomputedLightingBuffer_StaticShadowMapMasks;
    float4 PrecomputedLightingBuffer_InvUniformPenumbraSizes;
    float4 PrecomputedLightingBuffer_IndirectLightingSHCoefficients0[3];
    float4 PrecomputedLightingBuffer_IndirectLightingSHCoefficients1[3];
    float4 PrecomputedLightingBuffer_IndirectLightingSHCoefficients2;
    float4  PrecomputedLightingBuffer_IndirectLightingSHSingleCoefficient;
    float4 PrecomputedLightingBuffer_LightMapCoordinateScaleBias;
    float4 PrecomputedLightingBuffer_ShadowMapCoordinateScaleBias;
    float4  PrecomputedLightingBuffer_LightMapScale[2];
    float4  PrecomputedLightingBuffer_LightMapAdd[2];
}
Texture2D PrecomputedLightingBuffer_LightMapTexture;
Texture2D PrecomputedLightingBuffer_SkyOcclusionTexture;
Texture2D PrecomputedLightingBuffer_AOMaterialMaskTexture;
Texture3D PrecomputedLightingBuffer_IndirectLightingCacheTexture0;
Texture3D PrecomputedLightingBuffer_IndirectLightingCacheTexture1;
Texture3D PrecomputedLightingBuffer_IndirectLightingCacheTexture2;
Texture2D PrecomputedLightingBuffer_StaticShadowTexture;
SamplerState PrecomputedLightingBuffer_LightMapSampler;
SamplerState PrecomputedLightingBuffer_SkyOcclusionSampler;
SamplerState PrecomputedLightingBuffer_AOMaterialMaskSampler;
SamplerState PrecomputedLightingBuffer_IndirectLightingCacheTextureSampler0;
SamplerState PrecomputedLightingBuffer_IndirectLightingCacheTextureSampler1;
SamplerState PrecomputedLightingBuffer_IndirectLightingCacheTextureSampler2;
SamplerState PrecomputedLightingBuffer_StaticShadowTextureSampler;
/*atic const struct
{
    float3 IndirectLightingCachePrimitiveAdd;
    float3 IndirectLightingCachePrimitiveScale;
    float3 IndirectLightingCacheMinUV;
    float3 IndirectLightingCacheMaxUV;
    float4 PointSkyBentNormal;
    float  DirectionalLightShadowing;
    float4 StaticShadowMapMasks;
    float4 InvUniformPenumbraSizes;
    float4 IndirectLightingSHCoefficients0[3];
    float4 IndirectLightingSHCoefficients1[3];
    float4 IndirectLightingSHCoefficients2;
    float4  IndirectLightingSHSingleCoefficient;
    float4 LightMapCoordinateScaleBias;
    float4 ShadowMapCoordinateScaleBias;
    float4  LightMapScale[2];
    float4  LightMapAdd[2];
    Texture2D LightMapTexture;
    Texture2D SkyOcclusionTexture;
    Texture2D AOMaterialMaskTexture;
    Texture3D IndirectLightingCacheTexture0;
    Texture3D IndirectLightingCacheTexture1;
    Texture3D IndirectLightingCacheTexture2;
    Texture2D StaticShadowTexture;
    SamplerState LightMapSampler;
    SamplerState SkyOcclusionSampler;
    SamplerState AOMaterialMaskSampler;
    SamplerState IndirectLightingCacheTextureSampler0;
    SamplerState IndirectLightingCacheTextureSampler1;
    SamplerState IndirectLightingCacheTextureSampler2;
    SamplerState StaticShadowTextureSampler;
} PrecomputedLightingBuffer = { PrecomputedLightingBuffer_IndirectLightingCachePrimitiveAdd,PrecomputedLightingBuffer_IndirectLightingCachePrimitiveScale,PrecomputedLightingBuffer_IndirectLightingCacheMinUV,PrecomputedLightingBuffer_IndirectLightingCacheMaxUV,PrecomputedLightingBuffer_PointSkyBentNormal,PrecomputedLightingBuffer_DirectionalLightShadowing,PrecomputedLightingBuffer_StaticShadowMapMasks,PrecomputedLightingBuffer_InvUniformPenumbraSizes,PrecomputedLightingBuffer_IndirectLightingSHCoefficients0,PrecomputedLightingBuffer_IndirectLightingSHCoefficients1,PrecomputedLightingBuffer_IndirectLightingSHCoefficients2,PrecomputedLightingBuffer_IndirectLightingSHSingleCoefficient,PrecomputedLightingBuffer_LightMapCoordinateScaleBias,PrecomputedLightingBuffer_ShadowMapCoordinateScaleBias,PrecomputedLightingBuffer_LightMapScale,PrecomputedLightingBuffer_LightMapAdd,PrecomputedLightingBuffer_LightMapTexture,PrecomputedLightingBuffer_SkyOcclusionTexture,PrecomputedLightingBuffer_AOMaterialMaskTexture,PrecomputedLightingBuffer_IndirectLightingCacheTexture0,PrecomputedLightingBuffer_IndirectLightingCacheTexture1,PrecomputedLightingBuffer_IndirectLightingCacheTexture2,PrecomputedLightingBuffer_StaticShadowTexture,PrecomputedLightingBuffer_LightMapSampler,PrecomputedLightingBuffer_SkyOcclusionSampler,PrecomputedLightingBuffer_AOMaterialMaskSampler,PrecomputedLightingBuffer_IndirectLightingCacheTextureSampler0,PrecomputedLightingBuffer_IndirectLightingCacheTextureSampler1,PrecomputedLightingBuffer_IndirectLightingCacheTextureSampler2,PrecomputedLightingBuffer_StaticShadowTextureSampler*/
#line 15 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 1 "/Engine/Generated/UniformBuffers/Material.ush"


cbuffer Material
{
    float4  Material_VectorExpressions[3];
}
Texture2D Material_Texture2D_0;
SamplerState Material_Texture2D_0Sampler;
Texture2D Material_Texture2D_1;
SamplerState Material_Texture2D_1Sampler;
SamplerState Material_Wrap_WorldGroupSettings;
SamplerState Material_Clamp_WorldGroupSettings;
/*atic const struct
{
    float4  VectorExpressions[3];
    Texture2D Texture2D_0;
    SamplerState Texture2D_0Sampler;
    Texture2D Texture2D_1;
    SamplerState Texture2D_1Sampler;
    SamplerState Wrap_WorldGroupSettings;
    SamplerState Clamp_WorldGroupSettings;
} Material = { Material_VectorExpressions,Material_Texture2D_0,Material_Texture2D_0Sampler,Material_Texture2D_1,Material_Texture2D_1Sampler,Material_Wrap_WorldGroupSettings,Material_Clamp_WorldGroupSettings*/
#line 16 "/Engine/Generated/GeneratedUniformBuffers.ush"
#line 52 "/Engine/Private/Common.ush"
#line 54 "/Engine/Private/Common.ush"
#line 1 "CommonViewUniformBuffer.ush"
#line 10 "/Engine/Private/CommonViewUniformBuffer.ush"
float2 GetTanHalfFieldOfView()
{
    return float2(View_ClipToView[0][0], View_ClipToView[1][1]);
}

float2 GetPrevTanHalfFieldOfView()
{
    return float2(View_PrevClipToView[0][0], View_PrevClipToView[1][1]);
}



float2 GetCotanHalfFieldOfView()
{
    return float2(View_ViewToClip[0][0], View_ViewToClip[1][1]);
}



float2 GetPrevCotanHalfFieldOfView()
{
    return float2(View_PrevViewToClip[0][0], View_PrevViewToClip[1][1]);
}
#line 55 "/Engine/Private/Common.ush"
#line 56 "/Engine/Private/Common.ush"
#line 1 "InstancedStereo.ush"
#line 10 "/Engine/Private/InstancedStereo.ush"
#line 1 "/Engine/Generated/UniformBuffers/View.ush"
#line 11 "/Engine/Private/InstancedStereo.ush"
#line 1 "/Engine/Generated/UniformBuffers/InstancedView.ush"
#line 12 "/Engine/Private/InstancedStereo.ush"
#line 15 "/Engine/Private/InstancedStereo.ush"
#line 1 "/Engine/Generated/GeneratedInstancedStereo.ush"
struct ViewState
{
    float4x4 TranslatedWorldToClip;
    float4x4 WorldToClip;
    float4x4 TranslatedWorldToView;
    float4x4 ViewToTranslatedWorld;
    float4x4 TranslatedWorldToCameraView;
    float4x4 CameraViewToTranslatedWorld;
    float4x4 ViewToClip;
    float4x4 ViewToClipNoAA;
    float4x4 ClipToView;
    float4x4 ClipToTranslatedWorld;
    float4x4 SVPositionToTranslatedWorld;
    float4x4 ScreenToWorld;
    float4x4 ScreenToTranslatedWorld;
    float3  ViewForward;
    float3  ViewUp;
    float3  ViewRight;
    float3  HMDViewNoRollUp;
    float3  HMDViewNoRollRight;
    float4 InvDeviceZToWorldZTransform;
    float4  ScreenPositionScaleBias;
    float3 WorldCameraOrigin;
    float3 TranslatedWorldCameraOrigin;
    float3 WorldViewOrigin;
    float3 PreViewTranslation;
    float4x4 PrevProjection;
    float4x4 PrevViewProj;
    float4x4 PrevViewRotationProj;
    float4x4 PrevViewToClip;
    float4x4 PrevClipToView;
    float4x4 PrevTranslatedWorldToClip;
    float4x4 PrevTranslatedWorldToView;
    float4x4 PrevViewToTranslatedWorld;
    float4x4 PrevTranslatedWorldToCameraView;
    float4x4 PrevCameraViewToTranslatedWorld;
    float3 PrevWorldCameraOrigin;
    float3 PrevWorldViewOrigin;
    float3 PrevPreViewTranslation;
    float4x4 PrevInvViewProj;
    float4x4 PrevScreenToTranslatedWorld;
    float4x4 ClipToPrevClip;
    float4 TemporalAAJitter;
    float4 GlobalClippingPlane;
    float2 FieldOfViewWideAngles;
    float2 PrevFieldOfViewWideAngles;
    float4  ViewRectMin;
    float4 ViewSizeAndInvSize;
    float4 BufferSizeAndInvSize;
    float4 BufferBilinearUVMinMax;
    int NumSceneColorMSAASamples;
    float  PreExposure;
    float  OneOverPreExposure;
    float4  DiffuseOverrideParameter;
    float4  SpecularOverrideParameter;
    float4  NormalOverrideParameter;
    float2  RoughnessOverrideParameter;
    float PrevFrameGameTime;
    float PrevFrameRealTime;
    float  OutOfBoundsMask;
    float3 WorldCameraMovementSinceLastFrame;
    float CullingSign;
    float  NearPlane;
    float AdaptiveTessellationFactor;
    float GameTime;
    float RealTime;
    float MaterialTextureMipBias;
    float MaterialTextureDerivativeMultiply;
    uint Random;
    uint FrameNumber;
    uint StateFrameIndexMod8;
    float  CameraCut;
    float  UnlitViewmodeMask;
    float4  DirectionalLightColor;
    float3  DirectionalLightDirection;
    float4 TranslucencyLightingVolumeMin[2];
    float4 TranslucencyLightingVolumeInvSize[2];
    float4 TemporalAAParams;
    float4 CircleDOFParams;
    float DepthOfFieldSensorWidth;
    float DepthOfFieldFocalDistance;
    float DepthOfFieldScale;
    float DepthOfFieldFocalLength;
    float DepthOfFieldFocalRegion;
    float DepthOfFieldNearTransitionRegion;
    float DepthOfFieldFarTransitionRegion;
    float MotionBlurNormalizedToPixel;
    float bSubsurfacePostprocessEnabled;
    float GeneralPurposeTweak;
    float  DemosaicVposOffset;
    float3 IndirectLightingColorScale;
    float  HDR32bppEncodingMode;
    float3 AtmosphericFogSunDirection;
    float  AtmosphericFogSunPower;
    float  AtmosphericFogPower;
    float  AtmosphericFogDensityScale;
    float  AtmosphericFogDensityOffset;
    float  AtmosphericFogGroundOffset;
    float  AtmosphericFogDistanceScale;
    float  AtmosphericFogAltitudeScale;
    float  AtmosphericFogHeightScaleRayleigh;
    float  AtmosphericFogStartDistance;
    float  AtmosphericFogDistanceOffset;
    float  AtmosphericFogSunDiscScale;
    uint AtmosphericFogRenderMask;
    uint AtmosphericFogInscatterAltitudeSampleNum;
    float4 AtmosphericFogSunColor;
    float3 NormalCurvatureToRoughnessScaleBias;
    float RenderingReflectionCaptureMask;
    float4 AmbientCubemapTint;
    float AmbientCubemapIntensity;
    float SkyLightParameters;
    float4 SkyLightColor;
    float4 SkyIrradianceEnvironmentMap[7];
    float MobilePreviewMode;
    float HMDEyePaddingOffset;
    float  ReflectionCubemapMaxMip;
    float ShowDecalsMask;
    uint DistanceFieldAOSpecularOcclusionMode;
    float IndirectCapsuleSelfShadowingIntensity;
    float3 ReflectionEnvironmentRoughnessMixingScaleBiasAndLargestWeight;
    int StereoPassIndex;
    float4 GlobalVolumeCenterAndExtent[4];
    float4 GlobalVolumeWorldToUVAddAndMul[4];
    float GlobalVolumeDimension;
    float GlobalVolumeTexelSize;
    float MaxGlobalDistance;
    float bCheckerboardSubsurfaceProfileRendering;
    float3 VolumetricFogInvGridSize;
    float3 VolumetricFogGridZParams;
    float2 VolumetricFogSVPosToVolumeUV;
    float VolumetricFogMaxDistance;
    float3 VolumetricLightmapWorldToUVScale;
    float3 VolumetricLightmapWorldToUVAdd;
    float3 VolumetricLightmapIndirectionTextureSize;
    float VolumetricLightmapBrickSize;
    float3 VolumetricLightmapBrickTexelSize;
    float StereoIPD;
};
ViewState GetPrimaryView()
{
    ViewState Result;
    Result.TranslatedWorldToClip = View_TranslatedWorldToClip;
    Result.WorldToClip = View_WorldToClip;
    Result.TranslatedWorldToView = View_TranslatedWorldToView;
    Result.ViewToTranslatedWorld = View_ViewToTranslatedWorld;
    Result.TranslatedWorldToCameraView = View_TranslatedWorldToCameraView;
    Result.CameraViewToTranslatedWorld = View_CameraViewToTranslatedWorld;
    Result.ViewToClip = View_ViewToClip;
    Result.ViewToClipNoAA = View_ViewToClipNoAA;
    Result.ClipToView = View_ClipToView;
    Result.ClipToTranslatedWorld = View_ClipToTranslatedWorld;
    Result.SVPositionToTranslatedWorld = View_SVPositionToTranslatedWorld;
    Result.ScreenToWorld = View_ScreenToWorld;
    Result.ScreenToTranslatedWorld = View_ScreenToTranslatedWorld;
    Result.ViewForward = View_ViewForward;
    Result.ViewUp = View_ViewUp;
    Result.ViewRight = View_ViewRight;
    Result.HMDViewNoRollUp = View_HMDViewNoRollUp;
    Result.HMDViewNoRollRight = View_HMDViewNoRollRight;
    Result.InvDeviceZToWorldZTransform = View_InvDeviceZToWorldZTransform;
    Result.ScreenPositionScaleBias = View_ScreenPositionScaleBias;
    Result.WorldCameraOrigin = View_WorldCameraOrigin;
    Result.TranslatedWorldCameraOrigin = View_TranslatedWorldCameraOrigin;
    Result.WorldViewOrigin = View_WorldViewOrigin;
    Result.PreViewTranslation = View_PreViewTranslation;
    Result.PrevProjection = View_PrevProjection;
    Result.PrevViewProj = View_PrevViewProj;
    Result.PrevViewRotationProj = View_PrevViewRotationProj;
    Result.PrevViewToClip = View_PrevViewToClip;
    Result.PrevClipToView = View_PrevClipToView;
    Result.PrevTranslatedWorldToClip = View_PrevTranslatedWorldToClip;
    Result.PrevTranslatedWorldToView = View_PrevTranslatedWorldToView;
    Result.PrevViewToTranslatedWorld = View_PrevViewToTranslatedWorld;
    Result.PrevTranslatedWorldToCameraView = View_PrevTranslatedWorldToCameraView;
    Result.PrevCameraViewToTranslatedWorld = View_PrevCameraViewToTranslatedWorld;
    Result.PrevWorldCameraOrigin = View_PrevWorldCameraOrigin;
    Result.PrevWorldViewOrigin = View_PrevWorldViewOrigin;
    Result.PrevPreViewTranslation = View_PrevPreViewTranslation;
    Result.PrevInvViewProj = View_PrevInvViewProj;
    Result.PrevScreenToTranslatedWorld = View_PrevScreenToTranslatedWorld;
    Result.ClipToPrevClip = View_ClipToPrevClip;
    Result.TemporalAAJitter = View_TemporalAAJitter;
    Result.GlobalClippingPlane = View_GlobalClippingPlane;
    Result.FieldOfViewWideAngles = View_FieldOfViewWideAngles;
    Result.PrevFieldOfViewWideAngles = View_PrevFieldOfViewWideAngles;
    Result.ViewRectMin = View_ViewRectMin;
    Result.ViewSizeAndInvSize = View_ViewSizeAndInvSize;
    Result.BufferSizeAndInvSize = View_BufferSizeAndInvSize;
    Result.BufferBilinearUVMinMax = View_BufferBilinearUVMinMax;
    Result.NumSceneColorMSAASamples = View_NumSceneColorMSAASamples;
    Result.PreExposure = View_PreExposure;
    Result.OneOverPreExposure = View_OneOverPreExposure;
    Result.DiffuseOverrideParameter = View_DiffuseOverrideParameter;
    Result.SpecularOverrideParameter = View_SpecularOverrideParameter;
    Result.NormalOverrideParameter = View_NormalOverrideParameter;
    Result.RoughnessOverrideParameter = View_RoughnessOverrideParameter;
    Result.PrevFrameGameTime = View_PrevFrameGameTime;
    Result.PrevFrameRealTime = View_PrevFrameRealTime;
    Result.OutOfBoundsMask = View_OutOfBoundsMask;
    Result.WorldCameraMovementSinceLastFrame = View_WorldCameraMovementSinceLastFrame;
    Result.CullingSign = View_CullingSign;
    Result.NearPlane = View_NearPlane;
    Result.AdaptiveTessellationFactor = View_AdaptiveTessellationFactor;
    Result.GameTime = View_GameTime;
    Result.RealTime = View_RealTime;
    Result.MaterialTextureMipBias = View_MaterialTextureMipBias;
    Result.MaterialTextureDerivativeMultiply = View_MaterialTextureDerivativeMultiply;
    Result.Random = View_Random;
    Result.FrameNumber = View_FrameNumber;
    Result.StateFrameIndexMod8 = View_StateFrameIndexMod8;
    Result.CameraCut = View_CameraCut;
    Result.UnlitViewmodeMask = View_UnlitViewmodeMask;
    Result.DirectionalLightColor = View_DirectionalLightColor;
    Result.DirectionalLightDirection = View_DirectionalLightDirection;
    Result.TranslucencyLightingVolumeMin = View_TranslucencyLightingVolumeMin;
    Result.TranslucencyLightingVolumeInvSize = View_TranslucencyLightingVolumeInvSize;
    Result.TemporalAAParams = View_TemporalAAParams;
    Result.CircleDOFParams = View_CircleDOFParams;
    Result.DepthOfFieldSensorWidth = View_DepthOfFieldSensorWidth;
    Result.DepthOfFieldFocalDistance = View_DepthOfFieldFocalDistance;
    Result.DepthOfFieldScale = View_DepthOfFieldScale;
    Result.DepthOfFieldFocalLength = View_DepthOfFieldFocalLength;
    Result.DepthOfFieldFocalRegion = View_DepthOfFieldFocalRegion;
    Result.DepthOfFieldNearTransitionRegion = View_DepthOfFieldNearTransitionRegion;
    Result.DepthOfFieldFarTransitionRegion = View_DepthOfFieldFarTransitionRegion;
    Result.MotionBlurNormalizedToPixel = View_MotionBlurNormalizedToPixel;
    Result.bSubsurfacePostprocessEnabled = View_bSubsurfacePostprocessEnabled;
    Result.GeneralPurposeTweak = View_GeneralPurposeTweak;
    Result.DemosaicVposOffset = View_DemosaicVposOffset;
    Result.IndirectLightingColorScale = View_IndirectLightingColorScale;
    Result.HDR32bppEncodingMode = View_HDR32bppEncodingMode;
    Result.AtmosphericFogSunDirection = View_AtmosphericFogSunDirection;
    Result.AtmosphericFogSunPower = View_AtmosphericFogSunPower;
    Result.AtmosphericFogPower = View_AtmosphericFogPower;
    Result.AtmosphericFogDensityScale = View_AtmosphericFogDensityScale;
    Result.AtmosphericFogDensityOffset = View_AtmosphericFogDensityOffset;
    Result.AtmosphericFogGroundOffset = View_AtmosphericFogGroundOffset;
    Result.AtmosphericFogDistanceScale = View_AtmosphericFogDistanceScale;
    Result.AtmosphericFogAltitudeScale = View_AtmosphericFogAltitudeScale;
    Result.AtmosphericFogHeightScaleRayleigh = View_AtmosphericFogHeightScaleRayleigh;
    Result.AtmosphericFogStartDistance = View_AtmosphericFogStartDistance;
    Result.AtmosphericFogDistanceOffset = View_AtmosphericFogDistanceOffset;
    Result.AtmosphericFogSunDiscScale = View_AtmosphericFogSunDiscScale;
    Result.AtmosphericFogRenderMask = View_AtmosphericFogRenderMask;
    Result.AtmosphericFogInscatterAltitudeSampleNum = View_AtmosphericFogInscatterAltitudeSampleNum;
    Result.AtmosphericFogSunColor = View_AtmosphericFogSunColor;
    Result.NormalCurvatureToRoughnessScaleBias = View_NormalCurvatureToRoughnessScaleBias;
    Result.RenderingReflectionCaptureMask = View_RenderingReflectionCaptureMask;
    Result.AmbientCubemapTint = View_AmbientCubemapTint;
    Result.AmbientCubemapIntensity = View_AmbientCubemapIntensity;
    Result.SkyLightParameters = View_SkyLightParameters;
    Result.SkyLightColor = View_SkyLightColor;
    Result.SkyIrradianceEnvironmentMap = View_SkyIrradianceEnvironmentMap;
    Result.MobilePreviewMode = View_MobilePreviewMode;
    Result.HMDEyePaddingOffset = View_HMDEyePaddingOffset;
    Result.ReflectionCubemapMaxMip = View_ReflectionCubemapMaxMip;
    Result.ShowDecalsMask = View_ShowDecalsMask;
    Result.DistanceFieldAOSpecularOcclusionMode = View_DistanceFieldAOSpecularOcclusionMode;
    Result.IndirectCapsuleSelfShadowingIntensity = View_IndirectCapsuleSelfShadowingIntensity;
    Result.ReflectionEnvironmentRoughnessMixingScaleBiasAndLargestWeight = View_ReflectionEnvironmentRoughnessMixingScaleBiasAndLargestWeight;
    Result.StereoPassIndex = View_StereoPassIndex;
    Result.GlobalVolumeCenterAndExtent = View_GlobalVolumeCenterAndExtent;
    Result.GlobalVolumeWorldToUVAddAndMul = View_GlobalVolumeWorldToUVAddAndMul;
    Result.GlobalVolumeDimension = View_GlobalVolumeDimension;
    Result.GlobalVolumeTexelSize = View_GlobalVolumeTexelSize;
    Result.MaxGlobalDistance = View_MaxGlobalDistance;
    Result.bCheckerboardSubsurfaceProfileRendering = View_bCheckerboardSubsurfaceProfileRendering;
    Result.VolumetricFogInvGridSize = View_VolumetricFogInvGridSize;
    Result.VolumetricFogGridZParams = View_VolumetricFogGridZParams;
    Result.VolumetricFogSVPosToVolumeUV = View_VolumetricFogSVPosToVolumeUV;
    Result.VolumetricFogMaxDistance = View_VolumetricFogMaxDistance;
    Result.VolumetricLightmapWorldToUVScale = View_VolumetricLightmapWorldToUVScale;
    Result.VolumetricLightmapWorldToUVAdd = View_VolumetricLightmapWorldToUVAdd;
    Result.VolumetricLightmapIndirectionTextureSize = View_VolumetricLightmapIndirectionTextureSize;
    Result.VolumetricLightmapBrickSize = View_VolumetricLightmapBrickSize;
    Result.VolumetricLightmapBrickTexelSize = View_VolumetricLightmapBrickTexelSize;
    Result.StereoIPD = View_StereoIPD;
    return Result;
}
ViewState GetInstancedView()
{
    ViewState Result;
    Result.TranslatedWorldToClip = InstancedView_TranslatedWorldToClip;
    Result.WorldToClip = InstancedView_WorldToClip;
    Result.TranslatedWorldToView = InstancedView_TranslatedWorldToView;
    Result.ViewToTranslatedWorld = InstancedView_ViewToTranslatedWorld;
    Result.TranslatedWorldToCameraView = InstancedView_TranslatedWorldToCameraView;
    Result.CameraViewToTranslatedWorld = InstancedView_CameraViewToTranslatedWorld;
    Result.ViewToClip = InstancedView_ViewToClip;
    Result.ViewToClipNoAA = InstancedView_ViewToClipNoAA;
    Result.ClipToView = InstancedView_ClipToView;
    Result.ClipToTranslatedWorld = InstancedView_ClipToTranslatedWorld;
    Result.SVPositionToTranslatedWorld = InstancedView_SVPositionToTranslatedWorld;
    Result.ScreenToWorld = InstancedView_ScreenToWorld;
    Result.ScreenToTranslatedWorld = InstancedView_ScreenToTranslatedWorld;
    Result.ViewForward = InstancedView_ViewForward;
    Result.ViewUp = InstancedView_ViewUp;
    Result.ViewRight = InstancedView_ViewRight;
    Result.HMDViewNoRollUp = InstancedView_HMDViewNoRollUp;
    Result.HMDViewNoRollRight = InstancedView_HMDViewNoRollRight;
    Result.InvDeviceZToWorldZTransform = InstancedView_InvDeviceZToWorldZTransform;
    Result.ScreenPositionScaleBias = InstancedView_ScreenPositionScaleBias;
    Result.WorldCameraOrigin = InstancedView_WorldCameraOrigin;
    Result.TranslatedWorldCameraOrigin = InstancedView_TranslatedWorldCameraOrigin;
    Result.WorldViewOrigin = InstancedView_WorldViewOrigin;
    Result.PreViewTranslation = InstancedView_PreViewTranslation;
    Result.PrevProjection = InstancedView_PrevProjection;
    Result.PrevViewProj = InstancedView_PrevViewProj;
    Result.PrevViewRotationProj = InstancedView_PrevViewRotationProj;
    Result.PrevViewToClip = InstancedView_PrevViewToClip;
    Result.PrevClipToView = InstancedView_PrevClipToView;
    Result.PrevTranslatedWorldToClip = InstancedView_PrevTranslatedWorldToClip;
    Result.PrevTranslatedWorldToView = InstancedView_PrevTranslatedWorldToView;
    Result.PrevViewToTranslatedWorld = InstancedView_PrevViewToTranslatedWorld;
    Result.PrevTranslatedWorldToCameraView = InstancedView_PrevTranslatedWorldToCameraView;
    Result.PrevCameraViewToTranslatedWorld = InstancedView_PrevCameraViewToTranslatedWorld;
    Result.PrevWorldCameraOrigin = InstancedView_PrevWorldCameraOrigin;
    Result.PrevWorldViewOrigin = InstancedView_PrevWorldViewOrigin;
    Result.PrevPreViewTranslation = InstancedView_PrevPreViewTranslation;
    Result.PrevInvViewProj = InstancedView_PrevInvViewProj;
    Result.PrevScreenToTranslatedWorld = InstancedView_PrevScreenToTranslatedWorld;
    Result.ClipToPrevClip = InstancedView_ClipToPrevClip;
    Result.TemporalAAJitter = InstancedView_TemporalAAJitter;
    Result.GlobalClippingPlane = InstancedView_GlobalClippingPlane;
    Result.FieldOfViewWideAngles = InstancedView_FieldOfViewWideAngles;
    Result.PrevFieldOfViewWideAngles = InstancedView_PrevFieldOfViewWideAngles;
    Result.ViewRectMin = InstancedView_ViewRectMin;
    Result.ViewSizeAndInvSize = InstancedView_ViewSizeAndInvSize;
    Result.BufferSizeAndInvSize = InstancedView_BufferSizeAndInvSize;
    Result.BufferBilinearUVMinMax = InstancedView_BufferBilinearUVMinMax;
    Result.NumSceneColorMSAASamples = InstancedView_NumSceneColorMSAASamples;
    Result.PreExposure = InstancedView_PreExposure;
    Result.OneOverPreExposure = InstancedView_OneOverPreExposure;
    Result.DiffuseOverrideParameter = InstancedView_DiffuseOverrideParameter;
    Result.SpecularOverrideParameter = InstancedView_SpecularOverrideParameter;
    Result.NormalOverrideParameter = InstancedView_NormalOverrideParameter;
    Result.RoughnessOverrideParameter = InstancedView_RoughnessOverrideParameter;
    Result.PrevFrameGameTime = InstancedView_PrevFrameGameTime;
    Result.PrevFrameRealTime = InstancedView_PrevFrameRealTime;
    Result.OutOfBoundsMask = InstancedView_OutOfBoundsMask;
    Result.WorldCameraMovementSinceLastFrame = InstancedView_WorldCameraMovementSinceLastFrame;
    Result.CullingSign = InstancedView_CullingSign;
    Result.NearPlane = InstancedView_NearPlane;
    Result.AdaptiveTessellationFactor = InstancedView_AdaptiveTessellationFactor;
    Result.GameTime = InstancedView_GameTime;
    Result.RealTime = InstancedView_RealTime;
    Result.MaterialTextureMipBias = InstancedView_MaterialTextureMipBias;
    Result.MaterialTextureDerivativeMultiply = InstancedView_MaterialTextureDerivativeMultiply;
    Result.Random = InstancedView_Random;
    Result.FrameNumber = InstancedView_FrameNumber;
    Result.StateFrameIndexMod8 = InstancedView_StateFrameIndexMod8;
    Result.CameraCut = InstancedView_CameraCut;
    Result.UnlitViewmodeMask = InstancedView_UnlitViewmodeMask;
    Result.DirectionalLightColor = InstancedView_DirectionalLightColor;
    Result.DirectionalLightDirection = InstancedView_DirectionalLightDirection;
    Result.TranslucencyLightingVolumeMin = InstancedView_TranslucencyLightingVolumeMin;
    Result.TranslucencyLightingVolumeInvSize = InstancedView_TranslucencyLightingVolumeInvSize;
    Result.TemporalAAParams = InstancedView_TemporalAAParams;
    Result.CircleDOFParams = InstancedView_CircleDOFParams;
    Result.DepthOfFieldSensorWidth = InstancedView_DepthOfFieldSensorWidth;
    Result.DepthOfFieldFocalDistance = InstancedView_DepthOfFieldFocalDistance;
    Result.DepthOfFieldScale = InstancedView_DepthOfFieldScale;
    Result.DepthOfFieldFocalLength = InstancedView_DepthOfFieldFocalLength;
    Result.DepthOfFieldFocalRegion = InstancedView_DepthOfFieldFocalRegion;
    Result.DepthOfFieldNearTransitionRegion = InstancedView_DepthOfFieldNearTransitionRegion;
    Result.DepthOfFieldFarTransitionRegion = InstancedView_DepthOfFieldFarTransitionRegion;
    Result.MotionBlurNormalizedToPixel = InstancedView_MotionBlurNormalizedToPixel;
    Result.bSubsurfacePostprocessEnabled = InstancedView_bSubsurfacePostprocessEnabled;
    Result.GeneralPurposeTweak = InstancedView_GeneralPurposeTweak;
    Result.DemosaicVposOffset = InstancedView_DemosaicVposOffset;
    Result.IndirectLightingColorScale = InstancedView_IndirectLightingColorScale;
    Result.HDR32bppEncodingMode = InstancedView_HDR32bppEncodingMode;
    Result.AtmosphericFogSunDirection = InstancedView_AtmosphericFogSunDirection;
    Result.AtmosphericFogSunPower = InstancedView_AtmosphericFogSunPower;
    Result.AtmosphericFogPower = InstancedView_AtmosphericFogPower;
    Result.AtmosphericFogDensityScale = InstancedView_AtmosphericFogDensityScale;
    Result.AtmosphericFogDensityOffset = InstancedView_AtmosphericFogDensityOffset;
    Result.AtmosphericFogGroundOffset = InstancedView_AtmosphericFogGroundOffset;
    Result.AtmosphericFogDistanceScale = InstancedView_AtmosphericFogDistanceScale;
    Result.AtmosphericFogAltitudeScale = InstancedView_AtmosphericFogAltitudeScale;
    Result.AtmosphericFogHeightScaleRayleigh = InstancedView_AtmosphericFogHeightScaleRayleigh;
    Result.AtmosphericFogStartDistance = InstancedView_AtmosphericFogStartDistance;
    Result.AtmosphericFogDistanceOffset = InstancedView_AtmosphericFogDistanceOffset;
    Result.AtmosphericFogSunDiscScale = InstancedView_AtmosphericFogSunDiscScale;
    Result.AtmosphericFogRenderMask = InstancedView_AtmosphericFogRenderMask;
    Result.AtmosphericFogInscatterAltitudeSampleNum = InstancedView_AtmosphericFogInscatterAltitudeSampleNum;
    Result.AtmosphericFogSunColor = InstancedView_AtmosphericFogSunColor;
    Result.NormalCurvatureToRoughnessScaleBias = InstancedView_NormalCurvatureToRoughnessScaleBias;
    Result.RenderingReflectionCaptureMask = InstancedView_RenderingReflectionCaptureMask;
    Result.AmbientCubemapTint = InstancedView_AmbientCubemapTint;
    Result.AmbientCubemapIntensity = InstancedView_AmbientCubemapIntensity;
    Result.SkyLightParameters = InstancedView_SkyLightParameters;
    Result.SkyLightColor = InstancedView_SkyLightColor;
    Result.SkyIrradianceEnvironmentMap = InstancedView_SkyIrradianceEnvironmentMap;
    Result.MobilePreviewMode = InstancedView_MobilePreviewMode;
    Result.HMDEyePaddingOffset = InstancedView_HMDEyePaddingOffset;
    Result.ReflectionCubemapMaxMip = InstancedView_ReflectionCubemapMaxMip;
    Result.ShowDecalsMask = InstancedView_ShowDecalsMask;
    Result.DistanceFieldAOSpecularOcclusionMode = InstancedView_DistanceFieldAOSpecularOcclusionMode;
    Result.IndirectCapsuleSelfShadowingIntensity = InstancedView_IndirectCapsuleSelfShadowingIntensity;
    Result.ReflectionEnvironmentRoughnessMixingScaleBiasAndLargestWeight = InstancedView_ReflectionEnvironmentRoughnessMixingScaleBiasAndLargestWeight;
    Result.StereoPassIndex = InstancedView_StereoPassIndex;
    Result.GlobalVolumeCenterAndExtent = InstancedView_GlobalVolumeCenterAndExtent;
    Result.GlobalVolumeWorldToUVAddAndMul = InstancedView_GlobalVolumeWorldToUVAddAndMul;
    Result.GlobalVolumeDimension = InstancedView_GlobalVolumeDimension;
    Result.GlobalVolumeTexelSize = InstancedView_GlobalVolumeTexelSize;
    Result.MaxGlobalDistance = InstancedView_MaxGlobalDistance;
    Result.bCheckerboardSubsurfaceProfileRendering = InstancedView_bCheckerboardSubsurfaceProfileRendering;
    Result.VolumetricFogInvGridSize = InstancedView_VolumetricFogInvGridSize;
    Result.VolumetricFogGridZParams = InstancedView_VolumetricFogGridZParams;
    Result.VolumetricFogSVPosToVolumeUV = InstancedView_VolumetricFogSVPosToVolumeUV;
    Result.VolumetricFogMaxDistance = InstancedView_VolumetricFogMaxDistance;
    Result.VolumetricLightmapWorldToUVScale = InstancedView_VolumetricLightmapWorldToUVScale;
    Result.VolumetricLightmapWorldToUVAdd = InstancedView_VolumetricLightmapWorldToUVAdd;
    Result.VolumetricLightmapIndirectionTextureSize = InstancedView_VolumetricLightmapIndirectionTextureSize;
    Result.VolumetricLightmapBrickSize = InstancedView_VolumetricLightmapBrickSize;
    Result.VolumetricLightmapBrickTexelSize = InstancedView_VolumetricLightmapBrickTexelSize;
    Result.StereoIPD = InstancedView_StereoIPD;
    return Result;
}
#line 16 "/Engine/Private/InstancedStereo.ush"


uint PackEyeIndex(uint EyeIndex, bool bIsInstancedStereo)
{
    uint Result = 0;
    Result |= (uint)bIsInstancedStereo << 31;
    Result |= EyeIndex;
    return Result;
}

uint GetEyeIndex(uint PackedIndex)
{
    return PackedIndex & 0x1;
}

bool IsInstancedStereo(uint PackedIndex)
{
    return (PackedIndex >> 1) > 0;
}

static ViewState ResolvedView;

ViewState ResolveView()
{
    return GetPrimaryView();
}
#line 57 "/Engine/Private/Common.ush"
#line 58 "/Engine/Private/Common.ush"
#line 1 "Definitions.usf"
#line 59 "/Engine/Private/Common.ush"
#line 71 "/Engine/Private/Common.ush"
float4  Texture1DSample(Texture1D Tex, SamplerState Sampler, float UV)
{



    return Tex.Sample(Sampler, UV);

}
float4  Texture2DSample(Texture2D Tex, SamplerState Sampler, float2 UV)
{



    return Tex.Sample(Sampler, UV);

}
float  Texture2DSample_A8(Texture2D Tex, SamplerState Sampler, float2 UV)
{



    return Tex.Sample(Sampler, UV)  .a ;

}
float4  Texture3DSample(Texture3D Tex, SamplerState Sampler, float3 UV)
{



    return Tex.Sample(Sampler, UV);

}
float4  TextureCubeSample(TextureCube Tex, SamplerState Sampler, float3 UV)
{



    return Tex.Sample(Sampler, UV);

}
float4  Texture1DSampleLevel(Texture1D Tex, SamplerState Sampler, float UV,  float  Mip)
{
    return Tex.SampleLevel(Sampler, UV, Mip);
}
float4  Texture2DSampleLevel(Texture2D Tex, SamplerState Sampler, float2 UV,  float  Mip)
{
    return Tex.SampleLevel(Sampler, UV, Mip);
}
float4  Texture2DSampleBias(Texture2D Tex, SamplerState Sampler, float2 UV,  float  MipBias)
{



    return Tex.SampleBias(Sampler, UV, MipBias);

}
float4  Texture2DSampleGrad(Texture2D Tex, SamplerState Sampler, float2 UV,  float2  DDX,  float2  DDY)
{
    return Tex.SampleGrad(Sampler, UV, DDX, DDY);
}
float4  Texture3DSampleLevel(Texture3D Tex, SamplerState Sampler, float3 UV,  float  Mip)
{
    return Tex.SampleLevel(Sampler, UV, Mip);
}
float4  Texture3DSampleBias(Texture3D Tex, SamplerState Sampler, float3 UV,  float  MipBias)
{



    return Tex.SampleBias(Sampler, UV, MipBias);

}
float4  Texture3DSampleGrad(Texture3D Tex, SamplerState Sampler, float3 UV,  float3  DDX,  float3  DDY)
{
    return Tex.SampleGrad(Sampler, UV, DDX, DDY);
}
float4  TextureCubeSampleLevel(TextureCube Tex, SamplerState Sampler, float3 UV,  float  Mip)
{
    return Tex.SampleLevel(Sampler, UV, Mip);
}
float  TextureCubeSampleDepthLevel(TextureCube TexDepth, SamplerState Sampler, float3 UV,  float  Mip)
{
return TexDepth.SampleLevel(Sampler, UV, Mip).r;
}
float4  TextureCubeSampleBias(TextureCube Tex, SamplerState Sampler, float3 UV,  float  MipBias)
{



    return Tex.SampleBias(Sampler, UV, MipBias);

}
float4  TextureCubeSampleGrad(TextureCube Tex, SamplerState Sampler, float3 UV,  float3  DDX,  float3  DDY)
{
    return Tex.SampleGrad(Sampler, UV, DDX, DDY);
}
float4  TextureExternalSample( Texture2D  Tex, SamplerState Sampler, float2 UV)
{



    return Tex.Sample(Sampler, UV);

}
float4  TextureExternalSampleLevel(Texture2D Tex, SamplerState Sampler, float2 UV,  float  Mip)
{
    return Tex.SampleLevel(Sampler, UV, Mip);
}


float2 Tile1Dto2D(float xsize, float idx)
{
    float2 xyidx = 0;
    xyidx.y = floor(idx / xsize);
    xyidx.x = idx - xsize * xyidx.y;

    return xyidx;
}
#line 200 "/Engine/Private/Common.ush"
float4 PseudoVolumeTexture(Texture2D Tex, SamplerState TexSampler, float3 inPos, float2 xysize, float numframes,
    uint mipmode = 0, float miplevel = 0, float2 InDDX = 0, float2 InDDY = 0)
{
    float zframe = ceil(inPos.z * numframes);
    float zphase = frac(inPos.z * numframes);

    float2 uv = frac(inPos.xy) / xysize;

    float2 curframe = Tile1Dto2D(xysize.x, zframe) / xysize;
    float2 nextframe = Tile1Dto2D(xysize.x, zframe + 1) / xysize;

    float4 sampleA = 0, sampleB = 0;
    switch (mipmode)
    {
    case 0:
        sampleA = Tex.SampleLevel(TexSampler, uv + curframe, miplevel);
        sampleB = Tex.SampleLevel(TexSampler, uv + nextframe, miplevel);
        break;
    case 1:
        sampleA = Texture2DSample(Tex, TexSampler, uv + curframe);
        sampleB = Texture2DSample(Tex, TexSampler, uv + nextframe);
        break;
    case 2:
        sampleA = Tex.SampleGrad(TexSampler, uv + curframe, InDDX, InDDY);
        sampleB = Tex.SampleGrad(TexSampler, uv + nextframe, InDDX, InDDY);
        break;
    default:
        break;
    }

    return lerp(sampleA, sampleB, zphase);
}


    float4  TextureCubeArraySampleLevel(TextureCubeArray Tex, SamplerState Sampler, float3 UV, float ArrayIndex,  float  Mip)
    {
        return Tex.SampleLevel(Sampler, float4(UV, ArrayIndex), Mip);
    }


void Bicubic2DCatmullRom( in float2 UV, in float2 Size, in float2 InvSize, out float2 Sample[3], out float2 Weight[3] )
{
    UV *= Size;

    float2 tc = floor( UV - 0.5 ) + 0.5;
    float2 f = UV - tc;
    float2 f2 = f * f;
    float2 f3 = f2 * f;

    float2 w0 = f2 - 0.5 * (f3 + f);
    float2 w1 = 1.5 * f3 - 2.5 * f2 + 1;
    float2 w3 = 0.5 * (f3 - f2);
    float2 w2 = 1 - w0 - w1 - w3;

    Weight[0] = w0;
    Weight[1] = w1 + w2;
    Weight[2] = w3;

    Sample[0] = tc - 1;
    Sample[1] = tc + w2 / Weight[1];
    Sample[2] = tc + 2;

    Sample[0] *= InvSize;
    Sample[1] *= InvSize;
    Sample[2] *= InvSize;
}



struct FCatmullRomSamples
{

    uint Count;


    int2 UVDir[ 5 ];


    float2 UV[ 5 ];


    float Weight[ 5 ];


    float FinalMultiplier;
};

FCatmullRomSamples GetBicubic2DCatmullRomSamples(float2 UV, float2 Size, in float2 InvSize)
{
    FCatmullRomSamples Samples;
    Samples.Count =  5 ;

    float2 Weight[3];
    float2 Sample[3];
    Bicubic2DCatmullRom( UV, Size, InvSize, Sample, Weight );


    Samples.UV[0] = float2(Sample[1].x, Sample[0].y);
    Samples.UV[1] = float2(Sample[0].x, Sample[1].y);
    Samples.UV[2] = float2(Sample[1].x, Sample[1].y);
    Samples.UV[3] = float2(Sample[2].x, Sample[1].y);
    Samples.UV[4] = float2(Sample[1].x, Sample[2].y);

    Samples.Weight[0] = Weight[1].x * Weight[0].y;
    Samples.Weight[1] = Weight[0].x * Weight[1].y;
    Samples.Weight[2] = Weight[1].x * Weight[1].y;
    Samples.Weight[3] = Weight[2].x * Weight[1].y;
    Samples.Weight[4] = Weight[1].x * Weight[2].y;

    Samples.UVDir[0] = int2(0, -1);
    Samples.UVDir[1] = int2(-1, 0);
    Samples.UVDir[2] = int2(0, 0);
    Samples.UVDir[3] = int2(1, 0);
    Samples.UVDir[4] = int2(0, 1);


    float CornerWeights;
    CornerWeights = Samples.Weight[0];
    CornerWeights += Samples.Weight[1];
    CornerWeights += Samples.Weight[2];
    CornerWeights += Samples.Weight[3];
    CornerWeights += Samples.Weight[4];
    Samples.FinalMultiplier = 1 / CornerWeights;

    return Samples;
}

float4  Texture2DSampleBicubic( Texture2D Tex, SamplerState Sampler, float2 UV, float2 Size, in float2 InvSize )
{
    FCatmullRomSamples Samples = GetBicubic2DCatmullRomSamples(UV, Size, InvSize);

    float4 OutColor = 0;
    for (uint i = 0; i < Samples.Count; i++)
    {
        OutColor += Tex.SampleLevel(Sampler, Samples.UV[i], 0) * Samples.Weight[i];
    }
    OutColor *= Samples.FinalMultiplier;

    return OutColor;
}
#line 378 "/Engine/Private/Common.ush"
float  Luminance(  float3  LinearColor )
{
    return dot( LinearColor,  float3 ( 0.3, 0.59, 0.11 ) );
}

const static  float  PI = 3.1415926535897932f;

float  length2( float2  v)
{
    return dot(v, v);
}
float  length2( float3  v)
{
    return dot(v, v);
}
float  length2( float4  v)
{
    return dot(v, v);
}

uint Mod(uint a, uint b)
{

    return a % b;
#line 405 "/Engine/Private/Common.ush"
}

uint2 Mod(uint2 a, uint2 b)
{

    return a % b;
#line 414 "/Engine/Private/Common.ush"
}

uint3 Mod(uint3 a, uint3 b)
{

    return a % b;
#line 423 "/Engine/Private/Common.ush"
}

float  UnClampedPow( float  X,  float  Y)
{
    return pow(X, Y);
}
float2  UnClampedPow( float2  X,  float2  Y)
{
    return pow(X, Y);
}
float3  UnClampedPow( float3  X,  float3  Y)
{
    return pow(X, Y);
}
float4  UnClampedPow( float4  X,  float4  Y)
{
    return pow(X, Y);
}


float  ClampedPow( float  X, float  Y)
{
    return pow(max(abs(X),0.000001f),Y);
}
float2  ClampedPow( float2  X, float2  Y)
{
    return pow(max(abs(X), float2 (0.000001f,0.000001f)),Y);
}
float3  ClampedPow( float3  X, float3  Y)
{
    return pow(max(abs(X), float3 (0.000001f,0.000001f,0.000001f)),Y);
}
float4  ClampedPow( float4  X, float4  Y)
{
    return pow(max(abs(X), float4 (0.000001f,0.000001f,0.000001f,0.000001f)),Y);
}

float  PositiveClampedPow( float  X, float  Y)
{
    return pow(max(X,0.0f),Y);
}
float2  PositiveClampedPow( float2  X, float2  Y)
{
    return pow(max(X, float2 (0.0f,0.0f)),Y);
}
float3  PositiveClampedPow( float3  X, float3  Y)
{
    return pow(max(X, float3 (0.0f,0.0f,0.0f)),Y);
}
float4  PositiveClampedPow( float4  X, float4  Y)
{
    return pow(max(X, float4 (0.0f,0.0f,0.0f,0.0f)),Y);
}

float DDX(float Input)
{



    return ddx(Input);

}

float2 DDX(float2 Input)
{



    return ddx(Input);

}

float3 DDX(float3 Input)
{



    return ddx(Input);

}

float4 DDX(float4 Input)
{



    return ddx(Input);

}

float DDY(float Input)
{



    return ddy(Input);

}

float2 DDY(float2 Input)
{



    return ddy(Input);

}

float3 DDY(float3 Input)
{



    return ddy(Input);

}

float4 DDY(float4 Input)
{



    return ddy(Input);

}
#line 549 "/Engine/Private/Common.ush"
#line 1 "FastMath.ush"
#line 46 "/Engine/Private/FastMath.ush"
float rsqrtFast( float x )
{

    int i = asint(x);
    i = 0x5f3759df - (i >> 1);
    return asfloat(i);
#line 55 "/Engine/Private/FastMath.ush"
}




float sqrtFast( float x )
{

    int i = asint(x);
    i = 0x1FBD1DF5 + (i >> 1);
    return asfloat(i);
#line 69 "/Engine/Private/FastMath.ush"
}




float rcpFast( float x )
{

    int i = asint(x);
    i = 0x7EF311C2 - i;
    return asfloat(i);
#line 83 "/Engine/Private/FastMath.ush"
}





float rcpFastNR1( float x )
{

    int i = asint(x);
    i = 0x7EF311C3 - i;
    float xRcp = asfloat(i);
    xRcp = xRcp * (-xRcp * x + 2.0f);
    return xRcp;
#line 100 "/Engine/Private/FastMath.ush"
}

float lengthFast( float3 v )
{
    float LengthSqr = dot(v,v);
    return sqrtFast( LengthSqr );
}

float3 normalizeFast( float3 v )
{
    float LengthSqr = dot(v,v);
    return v * rsqrtFast( LengthSqr );
}

float4 fastClamp(float4 x, float4 Min, float4 Max)
{




    return clamp(x, Min, Max);

}

float3 fastClamp(float3 x, float3 Min, float3 Max)
{




    return clamp(x, Min, Max);

}

float2 fastClamp(float2 x, float2 Min, float2 Max)
{




    return clamp(x, Min, Max);

}

float fastClamp(float x, float Min, float Max)
{




    return clamp(x, Min, Max);

}









float acosFast(float inX)
{
    float x = abs(inX);
    float res = -0.156583f * x + (0.5 * PI);
    res *= sqrt(1.0f - x);
    return (inX >= 0) ? res : PI - res;
}




float asinFast( float x )
{
    return (0.5 * PI) - acosFast(x);
}





float atanFastPos( float x )
{
    float t0 = (x < 1.0f) ? x : 1.0f / x;
    float t1 = t0 * t0;
    float poly = 0.0872929f;
    poly = -0.301895f + poly * t1;
    poly = 1.0f + poly * t1;
    poly = poly * t0;
    return (x < 1.0f) ? poly : (0.5 * PI) - poly;
}



float atanFast( float x )
{
    float t0 = atanFastPos( abs(x) );
    return (x < 0) ? -t0: t0;
}

float atan2Fast( float y, float x )
{
    float t0 = max( abs(x), abs(y) );
    float t1 = min( abs(x), abs(y) );
    float t3 = t1 / t0;
    float t4 = t3 * t3;


    t0 = + 0.0872929;
    t0 = t0 * t4 - 0.301895;
    t0 = t0 * t4 + 1.0;
    t3 = t0 * t3;

    t3 = abs(y) > abs(x) ? (0.5 * PI) - t3 : t3;
    t3 = x < 0 ? PI - t3 : t3;
    t3 = y < 0 ? -t3 : t3;

    return t3;
}





float acosFast4(float inX)
{
    float x1 = abs(inX);
    float x2 = x1 * x1;
    float x3 = x2 * x1;
    float s;

    s = -0.2121144f * x1 + 1.5707288f;
    s = 0.0742610f * x2 + s;
    s = -0.0187293f * x3 + s;
    s = sqrt(1.0f - x1) * s;



    return inX >= 0.0f ? s : PI - s;
}




float asinFast4( float x )
{
    return (0.5 * PI) - acosFast4(x);
}




float CosBetweenVectors(float3 A, float3 B)
{

    return dot(A, B) * rsqrt(length2(A) * length2(B));
}



float AngleBetweenVectors(float3 A, float3 B)
{
    return acos(CosBetweenVectors(A, B));
}


float AngleBetweenVectorsFast(float3 A, float3 B)
{
    return acosFast(CosBetweenVectors(A, B));
}


int SignFastInt(float v)
{
    return 1 - int((asuint(v) & 0x7fffffff) >> 30);
}

int2 SignFastInt(float2 v)
{
    return int2(SignFastInt(v.x), SignFastInt(v.y));
}
#line 550 "/Engine/Private/Common.ush"
#line 1 "Random.ush"
#line 13 "/Engine/Private/Random.ush"
float PseudoRandom(float2 xy)
{
    float2 pos = frac(xy / 128.0f) * 128.0f + float2(-64.340622f, -72.465622f);


    return frac(dot(pos.xyx * pos.xyy, float3(20.390625f, 60.703125f, 2.4281209f)));
}







float InterleavedGradientNoise( float2 uv, float FrameId )
{

    uv += FrameId * (float2(47, 17) * 0.695f);

    const float3 magic = float3( 0.06711056f, 0.00583715f, 52.9829189f );
    return frac(magic.z * frac(dot(uv, magic.xy)));
}



float RandFast( uint2 PixelPos, float Magic = 3571.0 )
{
    float2 Random2 = ( 1.0 / 4320.0 ) * PixelPos + float2( 0.25, 0.0 );
    float Random = frac( dot( Random2 * Random2, Magic ) );
    Random = frac( Random * Random * (2 * Magic) );
    return Random;
}
#line 57 "/Engine/Private/Random.ush"
float RandBBSfloat(float seed)
{
    float s = frac(seed /  4093 );
    s = frac(s * s *  4093 );
    s = frac(s * s *  4093 );
    return s;
}








uint3 Rand3DPCG16(int3 p)
{

    uint3 v = uint3(p);




    v = v * 1664525u + 1013904223u;
#line 95 "/Engine/Private/Random.ush"
    v.x += v.y*v.z;
    v.y += v.z*v.x;
    v.z += v.x*v.y;
    v.x += v.y*v.z;
    v.y += v.z*v.x;
    v.z += v.x*v.y;


    return v >> 16u;
}








uint3 Rand3DPCG32(int3 p)
{

    uint3 v = uint3(p);


    v = v * 1664525u + 1013904223u;


    v = v * (1u << 16u) + (v >> 16u);


    v.x += v.y*v.z;
    v.y += v.z*v.x;
    v.z += v.x*v.y;
    v.x += v.y*v.z;
    v.y += v.z*v.x;
    v.z += v.x*v.y;

    return v;
}










uint4 Rand4DPCG32(int4 p)
{

    uint4 v = uint4(p);


    v = v * 1664525u + 1013904223u;


    v = v * (1u << 16u) + (v >> 16u);


    v.x += v.y*v.w;
    v.y += v.z*v.x;
    v.z += v.x*v.y;
    v.w += v.y*v.z;
    v.x += v.y*v.w;
    v.y += v.z*v.x;
    v.z += v.x*v.y;
    v.w += v.y*v.z;

    return v;
}
#line 175 "/Engine/Private/Random.ush"
void FindBestAxisVectors(float3 In, out float3 Axis1, out float3 Axis2 )
{
    const float3 N = abs(In);


    if( N.z > N.x && N.z > N.y )
    {
        Axis1 = float3(1, 0, 0);
    }
    else
    {
        Axis1 = float3(0, 0, 1);
    }

    Axis1 = normalize(Axis1 - In * dot(Axis1, In));
    Axis2 = cross(Axis1, In);
}
#line 216 "/Engine/Private/Random.ush"
uint2 ScrambleTEA(uint2 v, uint IterationCount = 3)
{

    uint k[4] ={ 0xA341316Cu , 0xC8013EA4u , 0xAD90777Du , 0x7E95761Eu };

    uint y = v[0];
    uint z = v[1];
    uint sum = 0;

    [unroll]  for(uint i = 0; i < IterationCount; ++i)
    {
        sum += 0x9e3779b9;
        y += ((z << 4u) + k[0]) ^ (z + sum) ^ ((z >> 5u) + k[1]);
        z += ((y << 4u) + k[2]) ^ (y + sum) ^ ((y >> 5u) + k[3]);
    }

    return uint2(y, z);
}






float3 NoiseTileWrap(float3 v, bool bTiling, float RepeatSize)
{
    return bTiling ? (frac(v / RepeatSize) * RepeatSize) : v;
}




float4 PerlinRamp(float4 t)
{
    return t * t * t * (t * (t * 6 - 15) + 10);
}




float4 PerlinRampDerivative(float4 t)
{
    return t * t * (t * (t * 30 - 60) + 30);
}







float4 MGradient(int seed, float3 offset)
{
    uint rand = Rand3DPCG16(int3(seed,0,0)).x;
    float3 direction = float3(rand.xxx &  int3(0x8000, 0x4000, 0x2000) ) *  float3(1. / 0x4000, 1. / 0x2000, 1. / 0x1000)  - 1;
    return float4(direction, dot(direction, offset));
}







float3 NoiseSeeds(float3 v, bool bTiling, float RepeatSize,
    out float seed000, out float seed001, out float seed010, out float seed011,
    out float seed100, out float seed101, out float seed110, out float seed111)
{
    float3 fv = frac(v);
    float3 iv = floor(v);

    const float3 primes = float3(19, 47, 101);

    if (bTiling)
    {
        seed000 = dot(primes, NoiseTileWrap(iv, true, RepeatSize));
        seed100 = dot(primes, NoiseTileWrap(iv + float3(1, 0, 0), true, RepeatSize));
        seed010 = dot(primes, NoiseTileWrap(iv + float3(0, 1, 0), true, RepeatSize));
        seed110 = dot(primes, NoiseTileWrap(iv + float3(1, 1, 0), true, RepeatSize));
        seed001 = dot(primes, NoiseTileWrap(iv + float3(0, 0, 1), true, RepeatSize));
        seed101 = dot(primes, NoiseTileWrap(iv + float3(1, 0, 1), true, RepeatSize));
        seed011 = dot(primes, NoiseTileWrap(iv + float3(0, 1, 1), true, RepeatSize));
        seed111 = dot(primes, NoiseTileWrap(iv + float3(1, 1, 1), true, RepeatSize));
    }
    else
    {
        seed000 = dot(iv, primes);
        seed100 = seed000 + primes.x;
        seed010 = seed000 + primes.y;
        seed110 = seed100 + primes.y;
        seed001 = seed000 + primes.z;
        seed101 = seed100 + primes.z;
        seed011 = seed010 + primes.z;
        seed111 = seed110 + primes.z;
    }

    return fv;
}







float GradientNoise3D_ALU(float3 v, bool bTiling, float RepeatSize)
{
    float seed000, seed001, seed010, seed011, seed100, seed101, seed110, seed111;
    float3 fv = NoiseSeeds(v, bTiling, RepeatSize, seed000, seed001, seed010, seed011, seed100, seed101, seed110, seed111);

    float rand000 = MGradient(int(seed000), fv - float3(0, 0, 0)).w;
    float rand100 = MGradient(int(seed100), fv - float3(1, 0, 0)).w;
    float rand010 = MGradient(int(seed010), fv - float3(0, 1, 0)).w;
    float rand110 = MGradient(int(seed110), fv - float3(1, 1, 0)).w;
    float rand001 = MGradient(int(seed001), fv - float3(0, 0, 1)).w;
    float rand101 = MGradient(int(seed101), fv - float3(1, 0, 1)).w;
    float rand011 = MGradient(int(seed011), fv - float3(0, 1, 1)).w;
    float rand111 = MGradient(int(seed111), fv - float3(1, 1, 1)).w;

    float3 Weights = PerlinRamp(float4(fv, 0)).xyz;

    float i = lerp(lerp(rand000, rand100, Weights.x), lerp(rand010, rand110, Weights.x), Weights.y);
    float j = lerp(lerp(rand001, rand101, Weights.x), lerp(rand011, rand111, Weights.x), Weights.y);
    return lerp(i, j, Weights.z).x;
}





float4x3 SimplexCorners(float3 v)
{

    float3 tet = floor(v + v.x/3 + v.y/3 + v.z/3);
    float3 base = tet - tet.x/6 - tet.y/6 - tet.z/6;
    float3 f = v - base;



    float3 g = step(f.yzx, f.xyz), h = 1 - g.zxy;
    float3 a1 = min(g, h) - 1. / 6., a2 = max(g, h) - 1. / 3.;


    return float4x3(base, base + a1, base + a2, base + 0.5);
}




float4 SimplexSmooth(float4x3 f)
{
    const float scale = 1024. / 375.;
    float4 d = float4(dot(f[0], f[0]), dot(f[1], f[1]), dot(f[2], f[2]), dot(f[3], f[3]));
    float4 s = saturate(2 * d);
    return (1 * scale + s*(-3 * scale + s*(3 * scale - s*scale)));
}




float3x4 SimplexDSmooth(float4x3 f)
{
    const float scale = 1024. / 375.;
    float4 d = float4(dot(f[0], f[0]), dot(f[1], f[1]), dot(f[2], f[2]), dot(f[3], f[3]));
    float4 s = saturate(2 * d);
    s = -12 * scale + s*(24 * scale - s * 12 * scale);

    return float3x4(
        s * float4(f[0][0], f[1][0], f[2][0], f[3][0]),
        s * float4(f[0][1], f[1][1], f[2][1], f[3][1]),
        s * float4(f[0][2], f[1][2], f[2][2], f[3][2]));
}
#line 404 "/Engine/Private/Random.ush"
float3x4 JacobianSimplex_ALU(float3 v, bool bTiling, float RepeatSize)
{

    float4x3 T = SimplexCorners(v);
    uint3 rand;
    float4x3 gvec[3], fv;
    float3x4 grad;



    fv[0] = v - T[0];
    rand = Rand3DPCG16(int3(floor(NoiseTileWrap(6 * T[0] + 0.5, bTiling, RepeatSize))));
    gvec[0][0] = float3(rand.xxx &  int3(0x8000, 0x4000, 0x2000) ) *  float3(1. / 0x4000, 1. / 0x2000, 1. / 0x1000)  - 1;
    gvec[1][0] = float3(rand.yyy &  int3(0x8000, 0x4000, 0x2000) ) *  float3(1. / 0x4000, 1. / 0x2000, 1. / 0x1000)  - 1;
    gvec[2][0] = float3(rand.zzz &  int3(0x8000, 0x4000, 0x2000) ) *  float3(1. / 0x4000, 1. / 0x2000, 1. / 0x1000)  - 1;
    grad[0][0] = dot(gvec[0][0], fv[0]);
    grad[1][0] = dot(gvec[1][0], fv[0]);
    grad[2][0] = dot(gvec[2][0], fv[0]);

    fv[1] = v - T[1];
    rand = Rand3DPCG16(int3(floor(NoiseTileWrap(6 * T[1] + 0.5, bTiling, RepeatSize))));
    gvec[0][1] = float3(rand.xxx &  int3(0x8000, 0x4000, 0x2000) ) *  float3(1. / 0x4000, 1. / 0x2000, 1. / 0x1000)  - 1;
    gvec[1][1] = float3(rand.yyy &  int3(0x8000, 0x4000, 0x2000) ) *  float3(1. / 0x4000, 1. / 0x2000, 1. / 0x1000)  - 1;
    gvec[2][1] = float3(rand.zzz &  int3(0x8000, 0x4000, 0x2000) ) *  float3(1. / 0x4000, 1. / 0x2000, 1. / 0x1000)  - 1;
    grad[0][1] = dot(gvec[0][1], fv[1]);
    grad[1][1] = dot(gvec[1][1], fv[1]);
    grad[2][1] = dot(gvec[2][1], fv[1]);

    fv[2] = v - T[2];
    rand = Rand3DPCG16(int3(floor(NoiseTileWrap(6 * T[2] + 0.5, bTiling, RepeatSize))));
    gvec[0][2] = float3(rand.xxx &  int3(0x8000, 0x4000, 0x2000) ) *  float3(1. / 0x4000, 1. / 0x2000, 1. / 0x1000)  - 1;
    gvec[1][2] = float3(rand.yyy &  int3(0x8000, 0x4000, 0x2000) ) *  float3(1. / 0x4000, 1. / 0x2000, 1. / 0x1000)  - 1;
    gvec[2][2] = float3(rand.zzz &  int3(0x8000, 0x4000, 0x2000) ) *  float3(1. / 0x4000, 1. / 0x2000, 1. / 0x1000)  - 1;
    grad[0][2] = dot(gvec[0][2], fv[2]);
    grad[1][2] = dot(gvec[1][2], fv[2]);
    grad[2][2] = dot(gvec[2][2], fv[2]);

    fv[3] = v - T[3];
    rand = Rand3DPCG16(int3(floor(NoiseTileWrap(6 * T[3] + 0.5, bTiling, RepeatSize))));
    gvec[0][3] = float3(rand.xxx &  int3(0x8000, 0x4000, 0x2000) ) *  float3(1. / 0x4000, 1. / 0x2000, 1. / 0x1000)  - 1;
    gvec[1][3] = float3(rand.yyy &  int3(0x8000, 0x4000, 0x2000) ) *  float3(1. / 0x4000, 1. / 0x2000, 1. / 0x1000)  - 1;
    gvec[2][3] = float3(rand.zzz &  int3(0x8000, 0x4000, 0x2000) ) *  float3(1. / 0x4000, 1. / 0x2000, 1. / 0x1000)  - 1;
    grad[0][3] = dot(gvec[0][3], fv[3]);
    grad[1][3] = dot(gvec[1][3], fv[3]);
    grad[2][3] = dot(gvec[2][3], fv[3]);


    float4 sv = SimplexSmooth(fv);
    float3x4 ds = SimplexDSmooth(fv);

    float3x4 jacobian;
    jacobian[0] = float4(mul(sv, gvec[0]) + mul(ds, grad[0]), dot(sv, grad[0]));
    jacobian[1] = float4(mul(sv, gvec[1]) + mul(ds, grad[1]), dot(sv, grad[1]));
    jacobian[2] = float4(mul(sv, gvec[2]) + mul(ds, grad[2]), dot(sv, grad[2]));

    return jacobian;
}






float ValueNoise3D_ALU(float3 v, bool bTiling, float RepeatSize)
{
    float seed000, seed001, seed010, seed011, seed100, seed101, seed110, seed111;
    float3 fv = NoiseSeeds(v, bTiling, RepeatSize, seed000, seed001, seed010, seed011, seed100, seed101, seed110, seed111);

    float rand000 = RandBBSfloat(seed000) * 2 - 1;
    float rand100 = RandBBSfloat(seed100) * 2 - 1;
    float rand010 = RandBBSfloat(seed010) * 2 - 1;
    float rand110 = RandBBSfloat(seed110) * 2 - 1;
    float rand001 = RandBBSfloat(seed001) * 2 - 1;
    float rand101 = RandBBSfloat(seed101) * 2 - 1;
    float rand011 = RandBBSfloat(seed011) * 2 - 1;
    float rand111 = RandBBSfloat(seed111) * 2 - 1;

    float3 Weights = PerlinRamp(float4(fv, 0)).xyz;

    float i = lerp(lerp(rand000, rand100, Weights.x), lerp(rand010, rand110, Weights.x), Weights.y);
    float j = lerp(lerp(rand001, rand101, Weights.x), lerp(rand011, rand111, Weights.x), Weights.y);
    return lerp(i, j, Weights.z).x;
}









float GradientNoise3D_TEX(float3 v, bool bTiling, float RepeatSize)
{
    bTiling = true;
    float3 fv = frac(v);
    float3 iv0 = NoiseTileWrap(floor(v), bTiling, RepeatSize);
    float3 iv1 = NoiseTileWrap(iv0 + 1, bTiling, RepeatSize);

    const int2 ZShear = int2(17, 89);

    float2 OffsetA = iv0.z * ZShear;
    float2 OffsetB = OffsetA + ZShear;
    if (bTiling)
    {
        OffsetB = iv1.z * ZShear;
    }


    float ts = 1 / 128.0f;


    float2 TexA0 = (iv0.xy + OffsetA + 0.5f) * ts;
    float2 TexB0 = (iv0.xy + OffsetB + 0.5f) * ts;


    float2 TexA1 = TexA0 + ts;
    float2 TexB1 = TexB0 + ts;
    if (bTiling)
    {
        TexA1 = (iv1.xy + OffsetA + 0.5f) * ts;
        TexB1 = (iv1.xy + OffsetB + 0.5f) * ts;
    }



    float3 A = Texture2DSampleLevel(View_PerlinNoiseGradientTexture, View_PerlinNoiseGradientTextureSampler, float2(TexA0.x, TexA0.y), 0).xyz * 2 - 1;
    float3 B = Texture2DSampleLevel(View_PerlinNoiseGradientTexture, View_PerlinNoiseGradientTextureSampler, float2(TexA1.x, TexA0.y), 0).xyz * 2 - 1;
    float3 C = Texture2DSampleLevel(View_PerlinNoiseGradientTexture, View_PerlinNoiseGradientTextureSampler, float2(TexA0.x, TexA1.y), 0).xyz * 2 - 1;
    float3 D = Texture2DSampleLevel(View_PerlinNoiseGradientTexture, View_PerlinNoiseGradientTextureSampler, float2(TexA1.x, TexA1.y), 0).xyz * 2 - 1;
    float3 E = Texture2DSampleLevel(View_PerlinNoiseGradientTexture, View_PerlinNoiseGradientTextureSampler, float2(TexB0.x, TexB0.y), 0).xyz * 2 - 1;
    float3 F = Texture2DSampleLevel(View_PerlinNoiseGradientTexture, View_PerlinNoiseGradientTextureSampler, float2(TexB1.x, TexB0.y), 0).xyz * 2 - 1;
    float3 G = Texture2DSampleLevel(View_PerlinNoiseGradientTexture, View_PerlinNoiseGradientTextureSampler, float2(TexB0.x, TexB1.y), 0).xyz * 2 - 1;
    float3 H = Texture2DSampleLevel(View_PerlinNoiseGradientTexture, View_PerlinNoiseGradientTextureSampler, float2(TexB1.x, TexB1.y), 0).xyz * 2 - 1;

    float a = dot(A, fv - float3(0, 0, 0));
    float b = dot(B, fv - float3(1, 0, 0));
    float c = dot(C, fv - float3(0, 1, 0));
    float d = dot(D, fv - float3(1, 1, 0));
    float e = dot(E, fv - float3(0, 0, 1));
    float f = dot(F, fv - float3(1, 0, 1));
    float g = dot(G, fv - float3(0, 1, 1));
    float h = dot(H, fv - float3(1, 1, 1));

    float3 Weights = PerlinRamp(frac(float4(fv, 0))).xyz;

    float i = lerp(lerp(a, b, Weights.x), lerp(c, d, Weights.x), Weights.y);
    float j = lerp(lerp(e, f, Weights.x), lerp(g, h, Weights.x), Weights.y);

    return lerp(i, j, Weights.z);
}



float FastGradientPerlinNoise3D_TEX(float3 xyz)
{

    float Extent = 16;



    xyz = frac(xyz / (Extent - 1)) * (Extent - 1);


    float3 uvw = frac(xyz);


    float3 p0 = xyz - uvw;


    float3 f = PerlinRamp(float4(uvw, 0)).xyz;

    float3 p = p0 + f;

    float4 NoiseSample = Texture3DSampleLevel(View_PerlinNoise3DTexture, View_PerlinNoise3DTextureSampler, p / Extent + 0.5f / Extent, 0);



    float3 n = NoiseSample.xyz * 255.0f / 127.0f - 1.0f;
    float d = NoiseSample.w * 255.f - 127;
    return dot(xyz, n) - d;
}





float3 VoronoiCornerSample(float3 pos, int Quality)
{

    float3 noise = float3(Rand3DPCG16(int3(pos))) / 0xffff - 0.5;



    if (Quality <= 2)
    {
        return normalize(noise) * 0.2588;
    }



    if (Quality == 3)
    {
        return normalize(noise) * 0.3090;
    }


    return noise;
}








float4 VoronoiCompare(float4 minval, float3 candidate, float3 offset, bool bDistanceOnly)
{
    if (bDistanceOnly)
    {
        return float4(0, 0, 0, min(minval.w, dot(offset, offset)));
    }
    else
    {
        float newdist = dot(offset, offset);
        return newdist > minval.w ? minval : float4(candidate, newdist);
    }
}


float4 VoronoiNoise3D_ALU(float3 v, int Quality, bool bTiling, float RepeatSize, bool bDistanceOnly)
{
    float3 fv = frac(v), fv2 = frac(v + 0.5);
    float3 iv = floor(v), iv2 = floor(v + 0.5);


    float4 mindist = float4(0,0,0,100);
    float3 p, offset;


    if (Quality == 3)
    {
        [unroll]  for (offset.x = -1; offset.x <= 1; ++offset.x)
        {
            [unroll]  for (offset.y = -1; offset.y <= 1; ++offset.y)
            {
                [unroll]  for (offset.z = -1; offset.z <= 1; ++offset.z)
                {
                    p = offset + VoronoiCornerSample(NoiseTileWrap(iv2 + offset, bTiling, RepeatSize), Quality);
                    mindist = VoronoiCompare(mindist, iv2 + p, fv2 - p, bDistanceOnly);
                }
            }
        }
    }


    else
    {
        [unroll]  for (offset.x = 0; offset.x <= 1; ++offset.x)
        {
            [unroll]  for (offset.y = 0; offset.y <= 1; ++offset.y)
            {
                [unroll]  for (offset.z = 0; offset.z <= 1; ++offset.z)
                {
                    p = offset + VoronoiCornerSample(NoiseTileWrap(iv + offset, bTiling, RepeatSize), Quality);
                    mindist = VoronoiCompare(mindist, iv + p, fv - p, bDistanceOnly);


                    if (Quality == 2)
                    {

                        p = offset + VoronoiCornerSample(NoiseTileWrap(iv2 + offset, bTiling, RepeatSize) + 467, Quality);
                        mindist = VoronoiCompare(mindist, iv2 + p, fv2 - p, bDistanceOnly);
                    }
                }
            }
        }
    }


    if (Quality >= 4)
    {
        [unroll]  for (offset.x = -1; offset.x <= 2; offset.x += 3)
        {
            [unroll]  for (offset.y = 0; offset.y <= 1; ++offset.y)
            {
                [unroll]  for (offset.z = 0; offset.z <= 1; ++offset.z)
                {

                    p = offset.xyz + VoronoiCornerSample(NoiseTileWrap(iv + offset.xyz, bTiling, RepeatSize), Quality);
                    mindist = VoronoiCompare(mindist, iv + p, fv - p, bDistanceOnly);


                    p = offset.yzx + VoronoiCornerSample(NoiseTileWrap(iv + offset.yzx, bTiling, RepeatSize), Quality);
                    mindist = VoronoiCompare(mindist, iv + p, fv - p, bDistanceOnly);


                    p = offset.zxy + VoronoiCornerSample(NoiseTileWrap(iv + offset.zxy, bTiling, RepeatSize), Quality);
                    mindist = VoronoiCompare(mindist, iv + p, fv - p, bDistanceOnly);
                }
            }
        }
    }


    return float4(mindist.xyz, sqrt(mindist.w));
}







float3 ComputeSimplexWeights2D(float2 OrthogonalPos, out float2 PosA, out float2 PosB, out float2 PosC)
{
    float2 OrthogonalPosFloor = floor(OrthogonalPos);
    PosA = OrthogonalPosFloor;
    PosB = PosA + float2(1, 1);

    float2 LocalPos = OrthogonalPos - OrthogonalPosFloor;

    PosC = PosA + ((LocalPos.x > LocalPos.y) ? float2(1,0) : float2(0,1));

    float b = min(LocalPos.x, LocalPos.y);
    float c = abs(LocalPos.y - LocalPos.x);
    float a = 1.0f - b - c;

    return float3(a, b, c);
}



float4 ComputeSimplexWeights3D(float3 OrthogonalPos, out float3 PosA, out float3 PosB, out float3 PosC, out float3 PosD)
{
    float3 OrthogonalPosFloor = floor(OrthogonalPos);

    PosA = OrthogonalPosFloor;
    PosB = PosA + float3(1, 1, 1);

    OrthogonalPos -= OrthogonalPosFloor;

    float Largest = max(OrthogonalPos.x, max(OrthogonalPos.y, OrthogonalPos.z));
    float Smallest = min(OrthogonalPos.x, min(OrthogonalPos.y, OrthogonalPos.z));

    PosC = PosA + float3(Largest == OrthogonalPos.x, Largest == OrthogonalPos.y, Largest == OrthogonalPos.z);
    PosD = PosA + float3(Smallest != OrthogonalPos.x, Smallest != OrthogonalPos.y, Smallest != OrthogonalPos.z);

    float4 ret;

    float RG = OrthogonalPos.x - OrthogonalPos.y;
    float RB = OrthogonalPos.x - OrthogonalPos.z;
    float GB = OrthogonalPos.y - OrthogonalPos.z;

    ret.b =
          min(max(0, RG), max(0, RB))
        + min(max(0, -RG), max(0, GB))
        + min(max(0, -RB), max(0, -GB));

    ret.a =
          min(max(0, -RG), max(0, -RB))
        + min(max(0, RG), max(0, -GB))
        + min(max(0, RB), max(0, GB));

    ret.g = Smallest;
    ret.r = 1.0f - ret.g - ret.b - ret.a;

    return ret;
}

float2 GetPerlinNoiseGradientTextureAt(float2 v)
{
    float2 TexA = (v.xy + 0.5f) / 128.0f;


    float3 p = Texture2DSampleLevel(View_PerlinNoiseGradientTexture, View_PerlinNoiseGradientTextureSampler, TexA, 0).xyz * 2 - 1;
    return normalize(p.xy + p.z * 0.33f);
}

float3 GetPerlinNoiseGradientTextureAt(float3 v)
{
    const float2 ZShear = int2(17, 89);

    float2 OffsetA = v.z * ZShear;
    float2 TexA = (v.xy + OffsetA + 0.5f) / 128.0f;

    return Texture2DSampleLevel(View_PerlinNoiseGradientTexture, View_PerlinNoiseGradientTextureSampler, TexA , 0).xyz * 2 - 1;
}

float2 SkewSimplex(float2 In)
{
    return In + dot(In, (sqrt(3.0f) - 1.0f) * 0.5f );
}
float2 UnSkewSimplex(float2 In)
{
    return In - dot(In, (3.0f - sqrt(3.0f)) / 6.0f );
}
float3 SkewSimplex(float3 In)
{
    return In + dot(In, 1.0 / 3.0f );
}
float3 UnSkewSimplex(float3 In)
{
    return In - dot(In, 1.0 / 6.0f );
}




float GradientSimplexNoise2D_TEX(float2 EvalPos)
{
    float2 OrthogonalPos = SkewSimplex(EvalPos);

    float2 PosA, PosB, PosC, PosD;
    float3 Weights = ComputeSimplexWeights2D(OrthogonalPos, PosA, PosB, PosC);


    float2 A = GetPerlinNoiseGradientTextureAt(PosA);
    float2 B = GetPerlinNoiseGradientTextureAt(PosB);
    float2 C = GetPerlinNoiseGradientTextureAt(PosC);

    PosA = UnSkewSimplex(PosA);
    PosB = UnSkewSimplex(PosB);
    PosC = UnSkewSimplex(PosC);

    float DistanceWeight;

    DistanceWeight = saturate(0.5f - length2(EvalPos - PosA)); DistanceWeight *= DistanceWeight; DistanceWeight *= DistanceWeight;
    float a = dot(A, EvalPos - PosA) * DistanceWeight;
    DistanceWeight = saturate(0.5f - length2(EvalPos - PosB)); DistanceWeight *= DistanceWeight; DistanceWeight *= DistanceWeight;
    float b = dot(B, EvalPos - PosB) * DistanceWeight;
    DistanceWeight = saturate(0.5f - length2(EvalPos - PosC)); DistanceWeight *= DistanceWeight; DistanceWeight *= DistanceWeight;
    float c = dot(C, EvalPos - PosC) * DistanceWeight;

    return 70 * (a + b + c);
}






float SimplexNoise3D_TEX(float3 EvalPos)
{
    float3 OrthogonalPos = SkewSimplex(EvalPos);

    float3 PosA, PosB, PosC, PosD;
    float4 Weights = ComputeSimplexWeights3D(OrthogonalPos, PosA, PosB, PosC, PosD);


    float3 A = GetPerlinNoiseGradientTextureAt(PosA);
    float3 B = GetPerlinNoiseGradientTextureAt(PosB);
    float3 C = GetPerlinNoiseGradientTextureAt(PosC);
    float3 D = GetPerlinNoiseGradientTextureAt(PosD);

    PosA = UnSkewSimplex(PosA);
    PosB = UnSkewSimplex(PosB);
    PosC = UnSkewSimplex(PosC);
    PosD = UnSkewSimplex(PosD);

    float DistanceWeight;

    DistanceWeight = saturate(0.6f - length2(EvalPos - PosA)); DistanceWeight *= DistanceWeight; DistanceWeight *= DistanceWeight;
    float a = dot(A, EvalPos - PosA) * DistanceWeight;
    DistanceWeight = saturate(0.6f - length2(EvalPos - PosB)); DistanceWeight *= DistanceWeight; DistanceWeight *= DistanceWeight;
    float b = dot(B, EvalPos - PosB) * DistanceWeight;
    DistanceWeight = saturate(0.6f - length2(EvalPos - PosC)); DistanceWeight *= DistanceWeight; DistanceWeight *= DistanceWeight;
    float c = dot(C, EvalPos - PosC) * DistanceWeight;
    DistanceWeight = saturate(0.6f - length2(EvalPos - PosD)); DistanceWeight *= DistanceWeight; DistanceWeight *= DistanceWeight;
    float d = dot(D, EvalPos - PosD) * DistanceWeight;

    return 32 * (a + b + c + d);
}


float VolumeRaymarch(float3 posPixelWS, float3 posCameraWS)
{
    float ret = 0;
    int cnt = 60;

    [loop]  for(int i=0; i < cnt; ++i)
    {
        ret += saturate(FastGradientPerlinNoise3D_TEX(lerp(posPixelWS, posCameraWS, i/(float)cnt) * 0.01) - 0.2f);
    }

    return ret / cnt * (length(posPixelWS - posCameraWS) * 0.001f );
}
#line 551 "/Engine/Private/Common.ush"
#line 556 "/Engine/Private/Common.ush"
float  PhongShadingPow( float  X,  float  Y)
{
#line 574 "/Engine/Private/Common.ush"
    return ClampedPow(X, Y);
}
#line 608 "/Engine/Private/Common.ush"
Texture2D LightAttenuationTexture;
SamplerState LightAttenuationTextureSampler;





float ConvertTangentUnormToSnorm8(float Input)
{
    int IntVal = int(round(Input * 255.0f));

    IntVal = (IntVal > 127) ? (IntVal | 0xFFFFFF80) : IntVal;
    return clamp(IntVal / 127.0f, -1, 1);
}

float2 ConvertTangentUnormToSnorm8(float2 Input)
{
    int2 IntVal = int2(round(Input * 255.0f));

    IntVal = (IntVal > 127) ? (IntVal | 0xFFFFFF80) : IntVal;
    return clamp(IntVal / 127.0f, -1, 1);
}

float3 ConvertTangentUnormToSnorm8(float3 Input)
{
    int3 IntVal = int3(round(Input * 255.0f));
    IntVal = (IntVal > 127) ? (IntVal | 0xFFFFFF80) : IntVal;
    return clamp(IntVal / 127.0f, -1, 1);
}

float4 ConvertTangentUnormToSnorm8(float4 Input)
{
    int4 IntVal = int4(round(Input * 255.0f));

    IntVal = (IntVal > 127) ? (IntVal | 0xFFFFFF80) : IntVal;
    return clamp(IntVal / 127.0f, -1, 1);
}

float ConvertTangentUnormToSnorm16(float Input)
{
    int IntVal = int(round(Input * 65535.0f));

    IntVal = (IntVal > 32767) ? (IntVal | 0xFFFF8000) : IntVal;
    return clamp(IntVal / 32767.0f, -1, 1);
}

float2 ConvertTangentUnormToSnorm16(float2 Input)
{
    int2 IntVal = int2(round(Input * 65535.0f));

    IntVal = (IntVal > 32767) ? (IntVal | 0xFFFFFF80) : IntVal;
    return clamp(IntVal / 32767.0f, -1, 1);
}

float3 ConvertTangentUnormToSnorm16(float3 Input)
{
    int3 IntVal = int3(round(Input * 65535.0f));
    IntVal = (IntVal > 32767) ? (IntVal | 0xFFFFFF80) : IntVal;
    return clamp(IntVal / 32767.0f, -1, 1);
}

float4 ConvertTangentUnormToSnorm16(float4 Input)
{
    int4 IntVal = int4(round(Input * 65535.0f));

    IntVal = (IntVal > 32767) ? (IntVal | 0xFFFFFF80) : IntVal;
    return clamp(IntVal / 32767.0f, -1, 1);
}

float ConvertTangentSnormToUnorm8(float Input)
{
    float Res = Input >= 0.0f ? Input * 127 : ((Input + 1.0) * 127) + 128;
    return clamp(Res / 255, 0.0f, 0.99f);
}

float2 ConvertTangentSnormToUnorm8(float2 Input)
{
    float2 Res = Input >= 0.0f ? Input * 127 : ((Input + 1.0) * 127) + 128;
    return clamp(Res / 255, 0.0f, 0.99f);
}

float3 ConvertTangentSnormToUnorm8(float3 Input)
{
    float3 Res = Input >= 0.0f ? Input * 127 : ((Input + 1.0) * 127) + 128;
    return clamp(Res / 255, 0.0f, 0.99f);
}

float4 ConvertTangentSnormToUnorm8(float4 Input)
{
    float4 Res = Input >= 0.0f ? Input * 127 : ((Input + 1.0) * 127) + 128;
    return clamp(Res / 255, 0.0f, 0.99f);
}

float ConvertTangentSnormToUnorm16(float Input)
{
    float Res = Input >= 0.0f ? Input * 32767 : ((Input + 1.0) * 32767) + 32768;
    return clamp(Res / 65535, 0.0f, 0.99f);
}

float2 ConvertTangentSnormToUnorm16(float2 Input)
{
    float2 Res = Input >= 0.0f ? Input * 32767 : ((Input + 1.0) * 32767) + 32768;
    return clamp(Res / 65535, 0.0f, 0.99f);
}

float3 ConvertTangentSnormToUnorm16(float3 Input)
{
    float3 Res = Input >= 0.0f ? Input * 32767 : ((Input + 1.0) * 32767) + 32768;
    return clamp(Res / 65535, 0.0f, 0.99f);
}

float4 ConvertTangentSnormToUnorm16(float4 Input)
{
    float4 Res = Input >= 0.0f ? Input * 32767 : ((Input + 1.0) * 32767) + 32768;
    return clamp(Res / 65535, 0.0f, 0.99f);
}






float Square( float x )
{
    return x*x;
}

float2 Square( float2 x )
{
    return x*x;
}

float3 Square( float3 x )
{
    return x*x;
}

float4 Square( float4 x )
{
    return x*x;
}

float Pow2( float x )
{
    return x*x;
}

float2 Pow2( float2 x )
{
    return x*x;
}

float3 Pow2( float3 x )
{
    return x*x;
}

float4 Pow2( float4 x )
{
    return x*x;
}

float Pow3( float x )
{
    return x*x*x;
}

float2 Pow3( float2 x )
{
    return x*x*x;
}

float3 Pow3( float3 x )
{
    return x*x*x;
}

float4 Pow3( float4 x )
{
    return x*x*x;
}

float Pow4( float x )
{
    float xx = x*x;
    return xx * xx;
}

float2 Pow4( float2 x )
{
    float2 xx = x*x;
    return xx * xx;
}

float3 Pow4( float3 x )
{
    float3 xx = x*x;
    return xx * xx;
}

float4 Pow4( float4 x )
{
    float4 xx = x*x;
    return xx * xx;
}

float Pow5( float x )
{
    float xx = x*x;
    return xx * xx * x;
}

float2 Pow5( float2 x )
{
    float2 xx = x*x;
    return xx * xx * x;
}

float3 Pow5( float3 x )
{
    float3 xx = x*x;
    return xx * xx * x;
}

float4 Pow5( float4 x )
{
    float4 xx = x*x;
    return xx * xx * x;
}

float Pow6( float x )
{
    float xx = x*x;
    return xx * xx * xx;
}

float2 Pow6( float2 x )
{
    float2 xx = x*x;
    return xx * xx * xx;
}

float3 Pow6( float3 x )
{
    float3 xx = x*x;
    return xx * xx * xx;
}

float4 Pow6( float4 x )
{
    float4 xx = x*x;
    return xx * xx * xx;
}


float  AtanFast(  float  x )
{

    float3  A = x < 1 ?  float3 ( x, 0, 1 ) :  float3 ( 1/x, 0.5 * PI, -1 );
    return A.y + A.z * ( ( ( -0.130234 * A.x - 0.0954105 ) * A.x + 1.00712 ) * A.x - 0.00001203333 );
}
#line 873 "/Engine/Private/Common.ush"
float3x3  GetLocalToWorld3x3()
{
    return ( float3x3 )Primitive_LocalToWorld;
}


float  EncodeLightAttenuation( float  InColor)
{


    return sqrt(InColor);
}


float4  EncodeLightAttenuation( float4  InColor)
{
    return sqrt(InColor);
}
#line 919 "/Engine/Private/Common.ush"
float3  HdrMosaic( float3  LinearColor, float2 VPos)
{
    float2 V;
    V = VPos.xy * 0.5;
    V.y += V.x;
    V = frac(V);
    float2  C;
    C = (V *  float2 (2.0 * (-0.5/255.0),  (( 6.0 * ((255.0-( 6.0 / (1.0/2.0) ))/255.0) - (1.0/2.0) ) * 2.0) )) +  float2 (-0.5/255.0,  (1.0/2.0) );
    return (LinearColor * C.y) + C.x;
}





float3  HdrDemosaic( float3  Pixel,  float3  OtherPixel, float2 VPos)
{
    float  A = frac(dot(VPos + View_DemosaicVposOffset, float2(0.5, 0.5)));
    float  B = 0.5 - A;
    A = A *  (((1.0/ 6.0 ) - (1.0/ (1.0/2.0) )) * 2.0)  +  (1.0/ (1.0/2.0) ) ;
    B = B *  (((1.0/ 6.0 ) - (1.0/ (1.0/2.0) )) * 2.0)  +  (1.0/ (1.0/2.0) ) ;





        return max((Pixel * A), (OtherPixel * B));

}



float4  RGBTEncode( float3  Color)
{
    float4  RGBT;
    float  Max = max(max(Color.r, Color.g), max(Color.b, 1e-6));
    float  RcpMax = rcp(Max);
    RGBT.rgb = Color.rgb * RcpMax;
    RGBT.a = Max * rcp(1.0 + Max);
    return RGBT;
}

float3  RGBTDecode( float4  RGBT)
{
    RGBT.a = RGBT.a * rcp(1.0 - RGBT.a);
    return RGBT.rgb * RGBT.a;
}



float4  RGBMEncode(  float3  Color )
{
    Color *= 1.0 / 64.0;

    float4 rgbm;
    rgbm.a = saturate( max( max( Color.r, Color.g ), max( Color.b, 1e-6 ) ) );
    rgbm.a = ceil( rgbm.a * 255.0 ) / 255.0;
    rgbm.rgb = Color / rgbm.a;
    return rgbm;
}

float4  RGBMEncodeFast(  float3  Color )
{

    float4  rgbm;
    rgbm.a = dot( Color, 255.0 / 64.0 );
    rgbm.a = ceil( rgbm.a );
    rgbm.rgb = Color / rgbm.a;
    rgbm *=  float4 ( 255.0 / 64.0, 255.0 / 64.0, 255.0 / 64.0, 1.0 / 255.0 );
    return rgbm;
}

float3  RGBMDecode(  float4  rgbm,  float  MaxValue )
{
    return rgbm.rgb * (rgbm.a * MaxValue);
}

float3  RGBMDecode(  float4  rgbm )
{
    return rgbm.rgb * (rgbm.a * 64.0f);
}

float4  RGBTEncode8BPC( float3  Color,  float  Range)
{
    float  Max = max(max(Color.r, Color.g), max(Color.b, 1e-6));
    Max = min(Max, Range);

    float4  RGBT;
    RGBT.a = (Range + 1) / Range * Max / (1 + Max);


    RGBT.a = ceil(RGBT.a*255.0) / 255.0;
    Max = RGBT.a / (1 + 1 / Range - RGBT.a);

    float  RcpMax = rcp(Max);
    RGBT.rgb = Color.rgb * RcpMax;
    return RGBT;
}

float3  RGBTDecode8BPC( float4  RGBT,  float  Range)
{
    RGBT.a = RGBT.a / (1 + 1 / Range - RGBT.a);
    return RGBT.rgb * RGBT.a;
}






float  GetHDR32bppEncodeMode()
{
#line 1040 "/Engine/Private/Common.ush"
    return  0.0 ;
}



float4  Encode32BPPHDR( float4  Color, float2 SvPosition)
{
    float  Mode = GetHDR32bppEncodeMode();
    if (Mode ==  1.0 )
    {
        return  float4 (HdrMosaic(Color.rgb, SvPosition), Color.a);
    }
    else if (Mode ==  2.0 )
    {
        return RGBTEncode8BPC(Color.rgb,  1024.0 );
    }
    else
    {

        return Color;
    }
}

float4  Decode32BPPHDR( float4  Encoded,  float3  OtherEncoded =  float3 (0, 0, 0), float2 SvPosition = float2(0, 0))
{
    float  Mode = GetHDR32bppEncodeMode();
    if (Mode ==  1.0 )
    {
        return  float4 (HdrDemosaic(Encoded.rgb, OtherEncoded, SvPosition), 0.0f);
    }
    if (Mode ==  2.0 )
    {
        return  float4 (RGBTDecode8BPC(Encoded,  1024.0 ), 0.0f);
    }
    else
    {

        return Encoded;
    }
}


float4 Decode32BPPHDR(float4 Pixel, float2 SvPosition, Texture2D SourceTexture, SamplerState SourceSampler, float2 InTexCoords[4])
{
    float3  PixelColorN = SourceTexture.Sample(SourceSampler, InTexCoords[0].xy).rgb;
    float3  PixelColorE = SourceTexture.Sample(SourceSampler, InTexCoords[1].xy).rgb;
    float3  PixelColorW = SourceTexture.Sample(SourceSampler, InTexCoords[2].xy).rgb;
    float3  PixelColorS = SourceTexture.Sample(SourceSampler, InTexCoords[3].xy).rgb;
    float3  PixelColorV = PixelColorN * 0.5 + PixelColorS * 0.5;
    float3  PixelColorH = PixelColorW * 0.5 + PixelColorE * 0.5;
    if(abs(PixelColorN.g - PixelColorS.g) < abs(PixelColorW.g - PixelColorE.g))
    {
        PixelColorH = PixelColorV;
    }
    Pixel.rgb = Decode32BPPHDR(Pixel, PixelColorH, SvPosition.xy).rgb;
    Pixel.a = 0.0;
    return Pixel;
}
#line 1117 "/Engine/Private/Common.ush"
float2 CalcScreenUVFromOffsetFraction(float4 ScreenPosition, float2 OffsetFraction)
{
    float2 NDC = ScreenPosition.xy / ScreenPosition.w;



    float2 OffsetNDC = clamp(NDC + OffsetFraction * float2(2, -2), -.999f, .999f);
    return float2(OffsetNDC * ResolvedView.ScreenPositionScaleBias.xy + ResolvedView.ScreenPositionScaleBias.wz);
}

float4 GetPerPixelLightAttenuation(float2 UV)
{
    return Square(Texture2DSampleLevel(LightAttenuationTexture, LightAttenuationTextureSampler, UV, 0));
}




float ConvertFromDeviceZ(float DeviceZ)
{

    return DeviceZ * View_InvDeviceZToWorldZTransform[0] + View_InvDeviceZToWorldZTransform[1] + 1.0f / (DeviceZ * View_InvDeviceZToWorldZTransform[2] - View_InvDeviceZToWorldZTransform[3]);
}




float ConvertToDeviceZ(float SceneDepth)
{
    [flatten]
    if (View_ViewToClip[3][3] < 1.0f)
    {

        return 1.0f / ((SceneDepth + View_InvDeviceZToWorldZTransform[3]) * View_InvDeviceZToWorldZTransform[2]);
    }
    else
    {

        return SceneDepth * View_ViewToClip[2][2] + View_ViewToClip[3][2];
    }
}

float2 ScreenPositionToBufferUV(float4 ScreenPosition)
{
    return float2(ScreenPosition.xy / ScreenPosition.w * ResolvedView.ScreenPositionScaleBias.xy + ResolvedView.ScreenPositionScaleBias.wz);
}

float2 SvPositionToBufferUV(float4 SvPosition)
{
    return SvPosition.xy * View_BufferSizeAndInvSize.zw;
}


float3 SvPositionToTranslatedWorld(float4 SvPosition)
{
    float4 HomWorldPos = mul(float4(SvPosition.xyz, 1), View_SVPositionToTranslatedWorld);

    return HomWorldPos.xyz / HomWorldPos.w;
}


float3 SvPositionToResolvedTranslatedWorld(float4 SvPosition)
{
    float4 HomWorldPos = mul(float4(SvPosition.xyz, 1), ResolvedView.SVPositionToTranslatedWorld);

    return HomWorldPos.xyz / HomWorldPos.w;
}


float3 SvPositionToWorld(float4 SvPosition)
{
    return SvPositionToTranslatedWorld(SvPosition) - View_PreViewTranslation;
}


float4 SvPositionToScreenPosition(float4 SvPosition)
{



    float2 PixelPos = SvPosition.xy - View_ViewRectMin.xy;


    float3 NDCPos = float3( (PixelPos * View_ViewSizeAndInvSize.zw - 0.5f) * float2(2, -2), SvPosition.z);


    return float4(NDCPos.xyz, 1) * SvPosition.w;
}


float4 SvPositionToResolvedScreenPosition(float4 SvPosition)
{
    float2 PixelPos = SvPosition.xy - ResolvedView.ViewRectMin.xy;


    float3 NDCPos = float3( (PixelPos * ResolvedView.ViewSizeAndInvSize.zw - 0.5f) * float2(2, -2), SvPosition.z);


    return float4(NDCPos.xyz, 1) * SvPosition.w;
}

float2 SvPositionToViewportUV(float4 SvPosition)
{

    float2 PixelPos = SvPosition.xy - View_ViewRectMin.xy;

    return PixelPos.xy * View_ViewSizeAndInvSize.zw;
}

float2 BufferUVToViewportUV(float2 BufferUV)
{
    float2 PixelPos = BufferUV.xy * View_BufferSizeAndInvSize.xy - View_ViewRectMin.xy;
    return PixelPos.xy * View_ViewSizeAndInvSize.zw;
}

float2 ViewportUVToBufferUV(float2 ViewportUV)
{
    float2 PixelPos = ViewportUV * View_ViewSizeAndInvSize.xy;
    return (PixelPos + View_ViewRectMin.xy) * View_BufferSizeAndInvSize.zw;
}


float2 ViewportUVToScreenPos(float2 ViewportUV)
{
    return float2(2 * ViewportUV.x - 1, 1 - 2 * ViewportUV.y);
}
#line 1250 "/Engine/Private/Common.ush"
float2  ScreenAlignedPosition( float4 ScreenPosition )
{
    return  float2 (ScreenPositionToBufferUV(ScreenPosition));
}
#line 1258 "/Engine/Private/Common.ush"
float2  ScreenAlignedUV(  float2  UV )
{
    return (UV* float2 (2,-2) +  float2 (-1,1))*View_ScreenPositionScaleBias.xy + View_ScreenPositionScaleBias.wz;
}
#line 1266 "/Engine/Private/Common.ush"
float2  GetViewportCoordinates( float2  InFragmentCoordinates)
{
    return InFragmentCoordinates;
}
#line 1274 "/Engine/Private/Common.ush"
float4  UnpackNormalMap(  float4  TextureSample )
{






        float2  NormalXY = TextureSample.rg;


    NormalXY = NormalXY *  float2 (2.0f,2.0f) -  float2 (1.0f,1.0f);
    float  NormalZ = sqrt( saturate( 1.0f - dot( NormalXY, NormalXY ) ) );
    return  float4 ( NormalXY.xy, NormalZ, 1.0f );

}


float AntialiasedTextureMask( Texture2D Tex, SamplerState Sampler, float2 UV, float ThresholdConst, int Channel )
{

    float4  MaskConst =  float4 (Channel == 0, Channel == 1, Channel == 2, Channel == 3);


    const float WidthConst = 1.0f;
    float InvWidthConst = 1 / WidthConst;
#line 1322 "/Engine/Private/Common.ush"
    float Result;
    {

        float Sample1 = dot(MaskConst, Texture2DSample(Tex, Sampler, UV));


        float2 TexDD = float2(DDX(Sample1), DDY(Sample1));

        float TexDDLength = max(abs(TexDD.x), abs(TexDD.y));
        float Top = InvWidthConst * (Sample1 - ThresholdConst);
        Result = Top / TexDDLength + ThresholdConst;
    }

    Result = saturate(Result);

    return Result;
}

float Noise3D_Multiplexer(int Function, float3 Position, int Quality, bool bTiling, uint RepeatSize)
{

    switch(Function)
    {
        case 0:
            return SimplexNoise3D_TEX(Position);
        case 1:
            return GradientNoise3D_TEX(Position, bTiling, RepeatSize);
        case 2:
            return FastGradientPerlinNoise3D_TEX(Position);
        case 3:
            return GradientNoise3D_ALU(Position, bTiling, RepeatSize);
        case 4:
            return ValueNoise3D_ALU(Position, bTiling, RepeatSize);
        default:
            return VoronoiNoise3D_ALU(Position, Quality, bTiling, RepeatSize, true).w * 2. - 1.;
    }
    return 0;
}



float  MaterialExpressionNoise(float3 Position, float Scale, int Quality, int Function, bool bTurbulence, uint Levels, float OutputMin, float OutputMax, float LevelScale, float FilterWidth, bool bTiling, float RepeatSize)
{
    Position *= Scale;
    FilterWidth *= Scale;

    float Out = 0.0f;
    float OutScale = 1.0f;
    float InvLevelScale = 1.0f / LevelScale;

    [loop]  for(uint i = 0; i < Levels; ++i)
    {

        OutScale *= saturate(1.0 - FilterWidth);

        if(bTurbulence)
        {
            Out += abs(Noise3D_Multiplexer(Function, Position, Quality, bTiling, RepeatSize)) * OutScale;
        }
        else
        {
            Out += Noise3D_Multiplexer(Function, Position, Quality, bTiling, RepeatSize) * OutScale;
        }

        Position *= LevelScale;
        RepeatSize *= LevelScale;
        OutScale *= InvLevelScale;
        FilterWidth *= LevelScale;
    }

    if(!bTurbulence)
    {

        Out = Out * 0.5f + 0.5f;
    }


    return lerp(OutputMin, OutputMax, Out);
}





float4  MaterialExpressionVectorNoise( float3  Position, int Quality, int Function, bool bTiling, float TileSize)
{
    float4 result = float4(0,0,0,1);
    float3x4 Jacobian = JacobianSimplex_ALU(Position, bTiling, TileSize);


    switch (Function)
    {
    case 0:
        result.xyz = float3(Rand3DPCG16(int3(floor(NoiseTileWrap(Position, bTiling, TileSize))))) / 0xffff;
        break;
    case 1:
        result.xyz = float3(Jacobian[0].w, Jacobian[1].w, Jacobian[2].w);
        break;
    case 2:
        result = Jacobian[0];
        break;
    case 3:
        result.xyz = float3(Jacobian[2][1] - Jacobian[1][2], Jacobian[0][2] - Jacobian[2][0], Jacobian[1][0] - Jacobian[0][1]);
        break;
    default:
        result = VoronoiNoise3D_ALU(Position, Quality, bTiling, TileSize, false);
        break;
    }
    return result;
}
#line 1447 "/Engine/Private/Common.ush"
float2 LineBoxIntersect(float3 RayOrigin, float3 RayEnd, float3 BoxMin, float3 BoxMax)
{
    float3 InvRayDir = 1.0f / (RayEnd - RayOrigin);


    float3 FirstPlaneIntersections = (BoxMin - RayOrigin) * InvRayDir;

    float3 SecondPlaneIntersections = (BoxMax - RayOrigin) * InvRayDir;

    float3 ClosestPlaneIntersections = min(FirstPlaneIntersections, SecondPlaneIntersections);

    float3 FurthestPlaneIntersections = max(FirstPlaneIntersections, SecondPlaneIntersections);

    float2 BoxIntersections;

    BoxIntersections.x = max(ClosestPlaneIntersections.x, max(ClosestPlaneIntersections.y, ClosestPlaneIntersections.z));

    BoxIntersections.y = min(FurthestPlaneIntersections.x, min(FurthestPlaneIntersections.y, FurthestPlaneIntersections.z));

    return saturate(BoxIntersections);
}


float  ComputeDistanceFromBoxToPoint( float3  Mins,  float3  Maxs,  float3  InPoint)
{
    float3  DistancesToMin = InPoint < Mins ? abs(InPoint - Mins) : 0;
    float3  DistancesToMax = InPoint > Maxs ? abs(InPoint - Maxs) : 0;


    float  Distance = dot(DistancesToMin, 1);
    Distance += dot(DistancesToMax, 1);
    return Distance;
}


float  ComputeSquaredDistanceFromBoxToPoint( float3  BoxCenter,  float3  BoxExtent,  float3  InPoint)
{
    float3  AxisDistances = max(abs(InPoint - BoxCenter) - BoxExtent, 0);
    return dot(AxisDistances, AxisDistances);
}


float ComputeDistanceFromBoxToPointInside(float3 BoxCenter, float3 BoxExtent, float3 InPoint)
{
    float3 DistancesToMin = max(InPoint - BoxCenter + BoxExtent, 0);
    float3 DistancesToMax = max(BoxCenter + BoxExtent - InPoint, 0);
    float3 ClosestDistances = min(DistancesToMin, DistancesToMax);
    return min(ClosestDistances.x, min(ClosestDistances.y, ClosestDistances.z));
}

bool RayHitSphere(float3 RayOrigin, float3 UnitRayDirection, float3 SphereCenter, float SphereRadius)
{
    float3 ClosestPointOnRay = max(0, dot(SphereCenter - RayOrigin, UnitRayDirection)) * UnitRayDirection;
    float3 CenterToRay = RayOrigin + ClosestPointOnRay - SphereCenter;
    return dot(CenterToRay, CenterToRay) <= Square(SphereRadius);
}

bool RaySegmentHitSphere(float3 RayOrigin, float3 UnitRayDirection, float RayLength, float3 SphereCenter, float SphereRadius)
{
    float DistanceAlongRay = dot(SphereCenter - RayOrigin, UnitRayDirection);
    float3 ClosestPointOnRay = DistanceAlongRay * UnitRayDirection;
    float3 CenterToRay = RayOrigin + ClosestPointOnRay - SphereCenter;
    return dot(CenterToRay, CenterToRay) <= Square(SphereRadius) && DistanceAlongRay > -SphereRadius && DistanceAlongRay - SphereRadius < RayLength;
}
#line 1516 "/Engine/Private/Common.ush"
float2 RayIntersectSphere(float3 RayOrigin, float3 RayDirection, float4 Sphere)
{
    float3 LocalPosition = RayOrigin - Sphere.xyz;
    float LocalPositionSqr = dot(LocalPosition, LocalPosition);

    float3 QuadraticCoef;
    QuadraticCoef.x = dot(RayDirection, RayDirection);
    QuadraticCoef.y = 2 * dot(RayDirection, LocalPosition);
    QuadraticCoef.z = LocalPositionSqr - Sphere.w * Sphere.w;

    float Discriminant = QuadraticCoef.y * QuadraticCoef.y - 4 * QuadraticCoef.x * QuadraticCoef.z;

    float2 Intersections = -1;


    [flatten]
    if (Discriminant >= 0)
    {
        float SqrtDiscriminant = sqrt(Discriminant);
        Intersections = (-QuadraticCoef.y + float2(-1, 1) * SqrtDiscriminant) / (2 * QuadraticCoef.x);
    }

    return Intersections;
}


float3  TransformTangentVectorToWorld( float3x3  TangentToWorld,  float3  InTangentVector)
{


    return mul(InTangentVector, TangentToWorld);
}


float3  TransformWorldVectorToTangent( float3x3  TangentToWorld,  float3  InWorldVector)
{


    return mul(TangentToWorld, InWorldVector);
}

float3 TransformWorldVectorToView(float3 InTangentVector)
{

    return mul(InTangentVector, (float3x3)ResolvedView.TranslatedWorldToView);
}


float  GetBoxPushout( float3  Normal, float3  Extent)
{
    return dot(abs(Normal * Extent),  float3 (1.0f, 1.0f, 1.0f));
}


void GenerateCoordinateSystem(float3 ZAxis, out float3 XAxis, out float3 YAxis)
{
    if (abs(ZAxis.x) > abs(ZAxis.y))
    {
        float InverseLength = 1.0f / sqrt(dot(ZAxis.xz, ZAxis.xz));
        XAxis = float3(-ZAxis.z * InverseLength, 0.0f, ZAxis.x * InverseLength);
    }
    else
    {
        float InverseLength = 1.0f / sqrt(dot(ZAxis.yz, ZAxis.yz));
        XAxis = float3(0.0f, ZAxis.z * InverseLength, -ZAxis.y * InverseLength);
    }

    YAxis = cross(ZAxis, XAxis);
}
#line 1595 "/Engine/Private/Common.ush"
struct FScreenVertexOutput
{




    noperspective  float2  UV : TEXCOORD0;

    float4 Position : SV_POSITION;
};





float2 EncodeVelocityToTexture(float2 In)
{


    return In * (0.499f * 0.5f) + 32767.0f / 65535.0f;
}

float2 DecodeVelocityFromTexture(float2 In)
{
    const float InvDiv = 1.0f / (0.499f * 0.5f);



    return In * InvDiv - 32767.0f / 65535.0f * InvDiv;
}


bool GetGIReplaceState()
{



    return false;

}



struct FWriteToSliceGeometryOutput
{
    FScreenVertexOutput Vertex;
    uint LayerIndex : SV_RenderTargetArrayIndex;
};







void DrawRectangle( in float4 InPosition, in float2 InTexCoord, out float4 OutPosition, out float2 OutTexCoord)
{
    OutPosition = InPosition;
    OutPosition.xy = -1.0f + 2.0f * (DrawRectangleParameters_PosScaleBias.zw + (InPosition.xy * DrawRectangleParameters_PosScaleBias.xy)) * DrawRectangleParameters_InvTargetSizeAndTextureSize.xy;
    OutPosition.xy *= float2( 1, -1 );
    OutTexCoord.xy = (DrawRectangleParameters_UVScaleBias.zw + (InTexCoord.xy * DrawRectangleParameters_UVScaleBias.xy)) * DrawRectangleParameters_InvTargetSizeAndTextureSize.zw;
}


void DrawRectangle( in float4 InPosition, out float4 OutPosition)
{
    OutPosition = InPosition;
    OutPosition.xy = -1.0f + 2.0f * (DrawRectangleParameters_PosScaleBias.zw + (InPosition.xy * DrawRectangleParameters_PosScaleBias.xy)) * DrawRectangleParameters_InvTargetSizeAndTextureSize.xy;
    OutPosition.xy *= float2( 1, -1 );
}
#line 1677 "/Engine/Private/Common.ush"
float SafeSaturate(float In) { return saturate(In);}
float2 SafeSaturate(float2 In) { return saturate(In);}
float3 SafeSaturate(float3 In) { return saturate(In);}
float4 SafeSaturate(float4 In) { return saturate(In);}





float IsShadowDepthShader()
{



    return 0;

}



float DecodePackedTwoChannelValue(float2 PackedHeight)
{
    return PackedHeight.x * 255.0 * 256.0 + PackedHeight.y * 255.0;
}

float DecodeHeightValue(float InValue)
{
    return (InValue - 32768.0) *  (1.0f/128.0f) ;
}

float DecodePackedHeight(float2 PackedHeight)
{
    return DecodeHeightValue(DecodePackedTwoChannelValue(PackedHeight));
}

uint ReverseBits32( uint bits )
{

    return reversebits( bits );
#line 1724 "/Engine/Private/Common.ush"
}


struct FPixelShaderIn
{

    float4 SvPosition;


    uint Coverage;


    bool bIsFrontFace;
};

struct FPixelShaderOut
{

    float4 MRT[8];


    uint Coverage;


    float Depth;
};
#line 8 "/Engine/Private/PositionOnlyDepthVertexShader.usf"
#line 1 "/Engine/Generated/Material.ush"
#line 7 "/Engine/Generated/Material.ush"
#line 1 "/Engine/Private/SceneTexturesCommon.ush"
#line 16 "/Engine/Private/SceneTexturesCommon.ush"
float3 CalcSceneColor(float2 ScreenUV)
{



    return Texture2DSampleLevel(SceneTexturesStruct_SceneColorTexture, SceneTexturesStruct_SceneColorTextureSampler, ScreenUV, 0).rgb;

}


float4 CalcFullSceneColor(float2 ScreenUV)
{



    return Texture2DSample(SceneTexturesStruct_SceneColorTexture, SceneTexturesStruct_SceneColorTextureSampler,ScreenUV);

}

float CalcSceneDepth(float2 ScreenUV)
{



    return ConvertFromDeviceZ(Texture2DSampleLevel(SceneTexturesStruct_SceneDepthTexture, SceneTexturesStruct_SceneDepthTextureSampler, ScreenUV, 0).r);

}
#line 47 "/Engine/Private/SceneTexturesCommon.ush"
float4 CalcSceneColorAndDepth( float2 ScreenUV )
{
    return float4(CalcSceneColor(ScreenUV), CalcSceneDepth(ScreenUV));
}


float LookupDeviceZ( float2 ScreenUV )
{

    return Texture2DSampleLevel(SceneTexturesStruct_SceneDepthTexture, SceneTexturesStruct_SceneDepthTextureSampler, ScreenUV, 0).r;
}


float CalcSceneDepth(uint2 PixelPos)
{



    float DeviceZ = SceneTexturesStruct_SceneDepthTextureNonMS.Load(int3(PixelPos, 0));


    return ConvertFromDeviceZ(DeviceZ);

}
#line 8 "/Engine/Generated/Material.ush"
#line 1 "/Engine/Private/Random.ush"
#line 9 "/Engine/Generated/Material.ush"
#line 1 "/Engine/Private/MonteCarlo.ush"
#line 11 "/Engine/Private/MonteCarlo.ush"
float3x3 GetTangentBasis( float3 TangentZ )
{
    float3 UpVector = abs(TangentZ.z) < 0.999 ? float3(0,0,1) : float3(1,0,0);
    float3 TangentX = normalize( cross( UpVector, TangentZ ) );
    float3 TangentY = cross( TangentZ, TangentX );
    return float3x3( TangentX, TangentY, TangentZ );
}

float3 TangentToWorld( float3 Vec, float3 TangentZ )
{
    return mul( Vec, GetTangentBasis( TangentZ ) );
}

float2 Hammersley( uint Index, uint NumSamples, uint2 Random )
{
    float E1 = frac( (float)Index / NumSamples + float( Random.x & 0xffff ) / (1<<16) );
    float E2 = float( ReverseBits32(Index) ^ Random.y ) * 2.3283064365386963e-10;
    return float2( E1, E2 );
}
#line 49 "/Engine/Private/MonteCarlo.ush"
uint2 SobolPixel(uint2 Pixel)
{

    int3 SobolLo = int3(Pixel & 0xfu, 0);
    int3 SobolHi = int3((Pixel >> 4u) & 0xfu, 0) + int3(16, 0, 0);
    uint Packed = View_SobolSamplingTexture.Load(SobolLo) ^ View_SobolSamplingTexture.Load(SobolHi);
    return uint2(Packed, Packed << 8u) & 0xff00u;
}






uint2 SobolIndex(uint2 Base, int Index, int Bits = 10)
{
    uint2 SobolNumbers[10] = {
        uint2(0x8680u, 0x4c80u), uint2(0xf240u, 0x9240u), uint2(0x8220u, 0x0e20u), uint2(0x4110u, 0x1610u), uint2(0xa608u, 0x7608u),
        uint2(0x8a02u, 0x280au), uint2(0xe204u, 0x9e04u), uint2(0xa400u, 0x4682u), uint2(0xe300u, 0xa74du), uint2(0xb700u, 0x9817u),
    };

    uint2 Result = Base;
    [unroll]  for (int b = 0; b < 10 && b < Bits; ++b)
    {
        Result ^= (Index & (1 << b)) ? SobolNumbers[b] : 0;
    }
    return Result;
}




float2 RandToCircle(uint2 Rand)
{
    float2 sf = float2(Rand) * (sqrt(2.) / 0xffff) - sqrt(0.5);
    float2 sq = sf*sf;
    float root = sqrt(2.*max(sq.x, sq.y) - min(sq.x, sq.y));
    if (sq.x > sq.y)
    {
        sf.x = sf.x > 0 ? root : -root;
    }
    else
    {
        sf.y = sf.y > 0 ? root : -root;
    }
    return sf;
}

float4 UniformSampleSphere( float2 E )
{
    float Phi = 2 * PI * E.x;
    float CosTheta = 1 - 2 * E.y;
    float SinTheta = sqrt( 1 - CosTheta * CosTheta );

    float3 H;
    H.x = SinTheta * cos( Phi );
    H.y = SinTheta * sin( Phi );
    H.z = CosTheta;

    float PDF = 1.0 / (4 * PI);

    return float4( H, PDF );
}

float4 UniformSampleHemisphere( float2 E )
{
    float Phi = 2 * PI * E.x;
    float CosTheta = E.y;
    float SinTheta = sqrt( 1 - CosTheta * CosTheta );

    float3 H;
    H.x = SinTheta * cos( Phi );
    H.y = SinTheta * sin( Phi );
    H.z = CosTheta;

    float PDF = 1.0 / (2 * PI);

    return float4( H, PDF );
}

float2 UniformSampleDisk(float2 Random)
{
    const float Theta = 2.0f * (float)PI * Random.x;
    const float Radius = sqrt(Random.y);
    return float2(Radius * cos(Theta), Radius * sin(Theta));
}

float4 CosineSampleHemisphere( float2 E )
{
    float Phi = 2 * PI * E.x;
    float CosTheta = sqrt( E.y );
    float SinTheta = sqrt( 1 - CosTheta * CosTheta );

    float3 H;
    H.x = SinTheta * cos( Phi );
    H.y = SinTheta * sin( Phi );
    H.z = CosTheta;

    float PDF = CosTheta * (1 / PI);

    return float4( H, PDF );
}

float4 UniformSampleCone( float2 E, float CosThetaMax )
{
    float Phi = 2 * PI * E.x;
    float CosTheta = lerp( CosThetaMax, 1, E.y );
    float SinTheta = sqrt( 1 - CosTheta * CosTheta );

    float3 L;
    L.x = SinTheta * cos( Phi );
    L.y = SinTheta * sin( Phi );
    L.z = CosTheta;

    float PDF = 1.0 / ( 2 * PI * (1 - CosThetaMax) );

    return float4( L, PDF );
}

float4 ImportanceSampleBlinn( float2 E, float a2 )
{
    float n = 2 / a2 - 2;

    float Phi = 2 * PI * E.x;
    float CosTheta = ClampedPow( E.y, 1 / (n + 1) );
    float SinTheta = sqrt( 1 - CosTheta * CosTheta );

    float3 H;
    H.x = SinTheta * cos( Phi );
    H.y = SinTheta * sin( Phi );
    H.z = CosTheta;

    float D = (n+2) / (2*PI) * ClampedPow( CosTheta, n );
    float PDF = D * CosTheta;

    return float4( H, PDF );
}

float4 ImportanceSampleGGX( float2 E, float a2 )
{
    float Phi = 2 * PI * E.x;
    float CosTheta = sqrt( (1 - E.y) / ( 1 + (a2 - 1) * E.y ) );
    float SinTheta = sqrt( 1 - CosTheta * CosTheta );

    float3 H;
    H.x = SinTheta * cos( Phi );
    H.y = SinTheta * sin( Phi );
    H.z = CosTheta;

    float d = ( CosTheta * a2 - CosTheta ) * CosTheta + 1;
    float D = a2 / ( PI*d*d );
    float PDF = D * CosTheta;

    return float4( H, PDF );
}



float MISWeight( uint Num, float PDF, uint OtherNum, float OtherPDF )
{
    float Weight = Num * PDF;
    float OtherWeight = OtherNum * OtherPDF;
    return Weight * Weight / (Weight * Weight + OtherWeight * OtherWeight);
}
#line 10 "/Engine/Generated/Material.ush"
#line 1 "/Engine/Generated/UniformBuffers/Material.ush"
#line 11 "/Engine/Generated/Material.ush"
#line 13 "/Engine/Generated/Material.ush"
#line 1 "/Engine/Private/DepthOfFieldCommon.ush"
#line 9 "/Engine/Private/DepthOfFieldCommon.ush"
float4 DepthOfFieldParams[2];






float ComputeCircleOfConfusion(float SceneDepth)
{

    [flatten]  if(SceneDepth > View_DepthOfFieldFocalDistance)
    {
        SceneDepth = View_DepthOfFieldFocalDistance + max(0, SceneDepth - View_DepthOfFieldFocalDistance - View_DepthOfFieldFocalRegion);
    }


    float D = SceneDepth;

    float F = View_DepthOfFieldFocalLength;

    float P = View_DepthOfFieldFocalDistance;

    float Aperture = View_DepthOfFieldScale;



    P *= 0.001f / 100.0f;
    D *= 0.001f / 100.0f;
#line 45 "/Engine/Private/DepthOfFieldCommon.ush"
    float CoCRadius = Aperture * F * (P - D) / (D * (P - F));

    return saturate(abs(CoCRadius));
}




float ComputeCircleOfConfusionNorm(float SceneDepth)
{

    [flatten]  if(SceneDepth > View_DepthOfFieldFocalDistance)
    {
        SceneDepth = View_DepthOfFieldFocalDistance + max(0, SceneDepth - View_DepthOfFieldFocalDistance - View_DepthOfFieldFocalRegion);
    }


    float  TransitionRegion = (SceneDepth < View_DepthOfFieldFocalDistance) ? View_DepthOfFieldNearTransitionRegion : View_DepthOfFieldFarTransitionRegion;

    return saturate(abs(SceneDepth - View_DepthOfFieldFocalDistance) / TransitionRegion);
}
#line 72 "/Engine/Private/DepthOfFieldCommon.ush"
float  CalcUnfocusedPercentCustomBound(float SceneDepth, float MaxBlurNear, float MaxBlurFar)
{
    float  MaxUnfocusedPercent = (SceneDepth < View_DepthOfFieldFocalDistance) ? MaxBlurNear : MaxBlurFar;

    float  Unbound = ComputeCircleOfConfusionNorm(SceneDepth);

    return min(MaxUnfocusedPercent, Unbound);
}
#line 14 "/Engine/Generated/Material.ush"
#line 1 "/Engine/Private/CircleDOFCommon.ush"
#line 10 "/Engine/Private/CircleDOFCommon.ush"
float DepthToCoc(float SceneDepth)
{

    float4 CircleDofParams = View_CircleDOFParams;



    float Focus = View_DepthOfFieldFocalDistance;
    float Radius = CircleDofParams.x;
    float CocRadius = ((SceneDepth - Focus) / SceneDepth) * Radius;
    float DepthBlurRadius = (1.0 - exp2(-SceneDepth * CircleDofParams.y)) * CircleDofParams.z;
    float ReturnCoc = max(abs(CocRadius), DepthBlurRadius);
    if(CocRadius < 0.0)
    {

        ReturnCoc = -ReturnCoc;
    }
    return ReturnCoc;
}
#line 15 "/Engine/Generated/Material.ush"
#line 1 "/Engine/Private/GlobalDistanceFieldShared.ush"
#line 63 "/Engine/Private/GlobalDistanceFieldShared.ush"
float4 SampleGlobalDistanceField(int ClipmapIndex, float3 UV)
{
    if (ClipmapIndex == 0)
    {
        return Texture3DSampleLevel( View_GlobalDistanceFieldTexture0 ,  View_GlobalDistanceFieldSampler0 , UV, 0);
    }
    else if (ClipmapIndex == 1)
    {
        return Texture3DSampleLevel( View_GlobalDistanceFieldTexture1 ,  View_GlobalDistanceFieldSampler0 , UV, 0);
    }
    else if (ClipmapIndex == 2)
    {
        return Texture3DSampleLevel( View_GlobalDistanceFieldTexture2 ,  View_GlobalDistanceFieldSampler0 , UV, 0);
    }
    else
    {
        return Texture3DSampleLevel( View_GlobalDistanceFieldTexture3 ,  View_GlobalDistanceFieldSampler0 , UV, 0);
    }
}

float3 ComputeGlobalUV(float3 WorldPosition, uint ClipmapIndex)
{

    float4 WorldToUVAddAndMul =  View_GlobalVolumeWorldToUVAddAndMul [ClipmapIndex];
    return WorldPosition * WorldToUVAddAndMul.www + WorldToUVAddAndMul.xyz;
}

float GetDistanceToNearestSurfaceGlobalClipmap(float3 WorldPosition, uint ClipmapIndex, float OuterClipmapFade)
{
    float3 GlobalUV = ComputeGlobalUV(WorldPosition, ClipmapIndex);
    float DistanceToSurface = 0;
    if (ClipmapIndex == 0)
    {
        DistanceToSurface = Texture3DSampleLevel( View_GlobalDistanceFieldTexture0 ,  View_GlobalDistanceFieldSampler0 , GlobalUV, 0).x;
    }
    else if (ClipmapIndex == 1)
    {
        DistanceToSurface = Texture3DSampleLevel( View_GlobalDistanceFieldTexture1 ,  View_GlobalDistanceFieldSampler0 , GlobalUV, 0).x;
    }
    else if (ClipmapIndex == 2)
    {
        DistanceToSurface = Texture3DSampleLevel( View_GlobalDistanceFieldTexture2 ,  View_GlobalDistanceFieldSampler0 , GlobalUV, 0).x;
    }
    else if (ClipmapIndex == 3)
    {
        DistanceToSurface = Texture3DSampleLevel( View_GlobalDistanceFieldTexture3 ,  View_GlobalDistanceFieldSampler0 , GlobalUV, 0).x;
        DistanceToSurface = lerp( View_MaxGlobalDistance , DistanceToSurface, OuterClipmapFade);
    }
    return DistanceToSurface;
}

float GetDistanceToNearestSurfaceGlobal(float3 WorldPosition)
{
    float DistanceToSurface =  View_MaxGlobalDistance ;
    float DistanceFromClipmap = ComputeDistanceFromBoxToPointInside( View_GlobalVolumeCenterAndExtent [0].xyz,  View_GlobalVolumeCenterAndExtent [0].www, WorldPosition);


    [branch]
    if (DistanceFromClipmap >  View_GlobalVolumeCenterAndExtent [0].w *  View_GlobalVolumeTexelSize )
    {
        DistanceToSurface = GetDistanceToNearestSurfaceGlobalClipmap(WorldPosition, 0, 0);
    }
    else
    {
        DistanceFromClipmap = ComputeDistanceFromBoxToPointInside( View_GlobalVolumeCenterAndExtent [1].xyz,  View_GlobalVolumeCenterAndExtent [1].www, WorldPosition);

        [branch]
        if (DistanceFromClipmap >  View_GlobalVolumeCenterAndExtent [1].w *  View_GlobalVolumeTexelSize )
        {
            DistanceToSurface = GetDistanceToNearestSurfaceGlobalClipmap(WorldPosition, 1, 0);
        }
        else
        {
            DistanceFromClipmap = ComputeDistanceFromBoxToPointInside( View_GlobalVolumeCenterAndExtent [2].xyz,  View_GlobalVolumeCenterAndExtent [2].www, WorldPosition);
            float DistanceFromLastClipmap = ComputeDistanceFromBoxToPointInside( View_GlobalVolumeCenterAndExtent [3].xyz,  View_GlobalVolumeCenterAndExtent [3].www, WorldPosition);

            [branch]
            if (DistanceFromClipmap >  View_GlobalVolumeCenterAndExtent [2].w *  View_GlobalVolumeTexelSize )
            {
                DistanceToSurface = GetDistanceToNearestSurfaceGlobalClipmap(WorldPosition, 2, 0);
            }
            else if (DistanceFromLastClipmap >  View_GlobalVolumeCenterAndExtent [3].w *  View_GlobalVolumeTexelSize )
            {

                float OuterClipmapFade = saturate(DistanceFromLastClipmap * 10 *  View_GlobalVolumeWorldToUVAddAndMul [3].w);
                DistanceToSurface = GetDistanceToNearestSurfaceGlobalClipmap(WorldPosition, 3, OuterClipmapFade);
            }
        }
    }

    return DistanceToSurface;
}

float3 GetDistanceFieldGradientGlobalClipmap(float3 WorldPosition, uint ClipmapIndex)
{
    float3 GlobalUV = ComputeGlobalUV(WorldPosition, ClipmapIndex);

    float R = 0;
    float L = 0;
    float F = 0;
    float B = 0;
    float U = 0;
    float D = 0;

    if (ClipmapIndex == 0)
    {
        R = Texture3DSampleLevel( View_GlobalDistanceFieldTexture0 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x +  View_GlobalVolumeTexelSize , GlobalUV.y, GlobalUV.z), 0).x;
        L = Texture3DSampleLevel( View_GlobalDistanceFieldTexture0 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x -  View_GlobalVolumeTexelSize , GlobalUV.y, GlobalUV.z), 0).x;
        F = Texture3DSampleLevel( View_GlobalDistanceFieldTexture0 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y +  View_GlobalVolumeTexelSize , GlobalUV.z), 0).x;
        B = Texture3DSampleLevel( View_GlobalDistanceFieldTexture0 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y -  View_GlobalVolumeTexelSize , GlobalUV.z), 0).x;
        U = Texture3DSampleLevel( View_GlobalDistanceFieldTexture0 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y, GlobalUV.z +  View_GlobalVolumeTexelSize ), 0).x;
        D = Texture3DSampleLevel( View_GlobalDistanceFieldTexture0 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y, GlobalUV.z -  View_GlobalVolumeTexelSize ), 0).x;
    }
    else if (ClipmapIndex == 1)
    {
        R = Texture3DSampleLevel( View_GlobalDistanceFieldTexture1 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x +  View_GlobalVolumeTexelSize , GlobalUV.y, GlobalUV.z), 0).x;
        L = Texture3DSampleLevel( View_GlobalDistanceFieldTexture1 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x -  View_GlobalVolumeTexelSize , GlobalUV.y, GlobalUV.z), 0).x;
        F = Texture3DSampleLevel( View_GlobalDistanceFieldTexture1 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y +  View_GlobalVolumeTexelSize , GlobalUV.z), 0).x;
        B = Texture3DSampleLevel( View_GlobalDistanceFieldTexture1 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y -  View_GlobalVolumeTexelSize , GlobalUV.z), 0).x;
        U = Texture3DSampleLevel( View_GlobalDistanceFieldTexture1 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y, GlobalUV.z +  View_GlobalVolumeTexelSize ), 0).x;
        D = Texture3DSampleLevel( View_GlobalDistanceFieldTexture1 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y, GlobalUV.z -  View_GlobalVolumeTexelSize ), 0).x;
    }
    else if (ClipmapIndex == 2)
    {
        R = Texture3DSampleLevel( View_GlobalDistanceFieldTexture2 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x +  View_GlobalVolumeTexelSize , GlobalUV.y, GlobalUV.z), 0).x;
        L = Texture3DSampleLevel( View_GlobalDistanceFieldTexture2 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x -  View_GlobalVolumeTexelSize , GlobalUV.y, GlobalUV.z), 0).x;
        F = Texture3DSampleLevel( View_GlobalDistanceFieldTexture2 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y +  View_GlobalVolumeTexelSize , GlobalUV.z), 0).x;
        B = Texture3DSampleLevel( View_GlobalDistanceFieldTexture2 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y -  View_GlobalVolumeTexelSize , GlobalUV.z), 0).x;
        U = Texture3DSampleLevel( View_GlobalDistanceFieldTexture2 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y, GlobalUV.z +  View_GlobalVolumeTexelSize ), 0).x;
        D = Texture3DSampleLevel( View_GlobalDistanceFieldTexture2 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y, GlobalUV.z -  View_GlobalVolumeTexelSize ), 0).x;
    }
    else if (ClipmapIndex == 3)
    {
        R = Texture3DSampleLevel( View_GlobalDistanceFieldTexture3 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x +  View_GlobalVolumeTexelSize , GlobalUV.y, GlobalUV.z), 0).x;
        L = Texture3DSampleLevel( View_GlobalDistanceFieldTexture3 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x -  View_GlobalVolumeTexelSize , GlobalUV.y, GlobalUV.z), 0).x;
        F = Texture3DSampleLevel( View_GlobalDistanceFieldTexture3 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y +  View_GlobalVolumeTexelSize , GlobalUV.z), 0).x;
        B = Texture3DSampleLevel( View_GlobalDistanceFieldTexture3 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y -  View_GlobalVolumeTexelSize , GlobalUV.z), 0).x;
        U = Texture3DSampleLevel( View_GlobalDistanceFieldTexture3 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y, GlobalUV.z +  View_GlobalVolumeTexelSize ), 0).x;
        D = Texture3DSampleLevel( View_GlobalDistanceFieldTexture3 ,  View_GlobalDistanceFieldSampler0 , float3(GlobalUV.x, GlobalUV.y, GlobalUV.z -  View_GlobalVolumeTexelSize ), 0).x;
    }

    float Extent =  View_GlobalVolumeCenterAndExtent [ClipmapIndex].w;
    float3 Gradient = .5f * float3(R - L, F - B, U - D) / Extent;
    return Gradient;
}

float3 GetDistanceFieldGradientGlobal(float3 WorldPosition)
{
    float3 Gradient = float3(0, 0, .001f);
    float DistanceFromClipmap = ComputeDistanceFromBoxToPointInside( View_GlobalVolumeCenterAndExtent [0].xyz,  View_GlobalVolumeCenterAndExtent [0].www, WorldPosition);

    float BorderTexels =  View_GlobalVolumeTexelSize  * 4;

    [branch]
    if (DistanceFromClipmap >  View_GlobalVolumeCenterAndExtent [0].w * BorderTexels)
    {
        Gradient = GetDistanceFieldGradientGlobalClipmap(WorldPosition, 0);
    }
    else
    {
        DistanceFromClipmap = ComputeDistanceFromBoxToPointInside( View_GlobalVolumeCenterAndExtent [1].xyz,  View_GlobalVolumeCenterAndExtent [1].www, WorldPosition);

        [branch]
        if (DistanceFromClipmap >  View_GlobalVolumeCenterAndExtent [1].w * BorderTexels)
        {
            Gradient = GetDistanceFieldGradientGlobalClipmap(WorldPosition, 1);
        }
        else
        {
            DistanceFromClipmap = ComputeDistanceFromBoxToPointInside( View_GlobalVolumeCenterAndExtent [2].xyz,  View_GlobalVolumeCenterAndExtent [2].www, WorldPosition);
            float DistanceFromLastClipmap = ComputeDistanceFromBoxToPointInside( View_GlobalVolumeCenterAndExtent [3].xyz,  View_GlobalVolumeCenterAndExtent [3].www, WorldPosition);

            [branch]
            if (DistanceFromClipmap >  View_GlobalVolumeCenterAndExtent [2].w * BorderTexels)
            {
                Gradient = GetDistanceFieldGradientGlobalClipmap(WorldPosition, 2);
            }
            else if (DistanceFromLastClipmap >  View_GlobalVolumeCenterAndExtent [3].w * BorderTexels)
            {
                Gradient = GetDistanceFieldGradientGlobalClipmap(WorldPosition, 3);
            }
        }
    }

    return Gradient;
}
#line 16 "/Engine/Generated/Material.ush"
#line 34 "/Engine/Generated/Material.ush"
#line 1 "/Engine/Private/PaniniProjection.ush"
#line 43 "/Engine/Private/PaniniProjection.ush"
float2 PaniniProjection(float2 OM, float d, float s)
{
    float PaniniDirectionXZInvLength = rsqrt(1.0f + OM.x * OM.x);
    float SinPhi = OM.x * PaniniDirectionXZInvLength;
    float TanTheta = OM.y * PaniniDirectionXZInvLength;
    float CosPhi = sqrt(1.0f - SinPhi * SinPhi);
    float S = (d + 1.0f) / (d + CosPhi);

    return S * float2(SinPhi, lerp(TanTheta, TanTheta / CosPhi, s));
}
#line 35 "/Engine/Generated/Material.ush"
#line 75 "/Engine/Generated/Material.ush"
struct FMaterialParticleParameters
{

    float  RelativeTime;

    float  MotionBlurFade;

    float  Random;

    float4  Velocity;

    float4  Color;

    float4 TranslatedWorldPositionAndSize;

    float4  MacroUV;


    float4  DynamicParameter;
#line 108 "/Engine/Generated/Material.ush"
    float4x4 LocalToWorld;
#line 118 "/Engine/Generated/Material.ush"
    float2 Size;
};

float4 GetDynamicParameter(FMaterialParticleParameters Parameters, float4 Default, int ParameterIndex=0)
{
#line 153 "/Engine/Generated/Material.ush"
    return Default;

}
#line 160 "/Engine/Generated/Material.ush"
struct FPixelMaterialInputs
{
    float3  EmissiveColor;
    float  Opacity;
    float  OpacityMask;
    float3  BaseColor;
    float  Metallic;
    float  Specular;
    float  Roughness;
    float3  Normal;
    float4  Subsurface;
    float  AmbientOcclusion;
    float2  Refraction;
    float  PixelDepthOffset;

};
#line 181 "/Engine/Generated/Material.ush"
struct FMaterialPixelParameters
{

    float2 TexCoords[ 1 ];



    float4  VertexColor;


    float3  WorldNormal;


    float3  ReflectionVector;


    float3  CameraVector;


    float3  LightVector;
#line 207 "/Engine/Generated/Material.ush"
    float4 SvPosition;


    float4 ScreenPosition;

    float  UnMirrored;

    float  TwoSidedSign;
#line 220 "/Engine/Generated/Material.ush"
    float3x3  TangentToWorld;
#line 231 "/Engine/Generated/Material.ush"
    float3 AbsoluteWorldPosition;
#line 236 "/Engine/Generated/Material.ush"
    float3 WorldPosition_CamRelative;
#line 242 "/Engine/Generated/Material.ush"
    float3 WorldPosition_NoOffsets;
#line 248 "/Engine/Generated/Material.ush"
    float3 WorldPosition_NoOffsets_CamRelative;


    float3  LightingPositionOffset;

    float AOMaterialMask;
#line 264 "/Engine/Generated/Material.ush"
    FMaterialParticleParameters Particle;
#line 284 "/Engine/Generated/Material.ush"
    uint Dummy;

};


FMaterialPixelParameters MakeInitializedMaterialPixelParameters()
{
    FMaterialPixelParameters MPP;
    MPP = (FMaterialPixelParameters)0;
    MPP.TangentToWorld = float3x3(1,0,0,0,1,0,0,0,1);
    return MPP;
}
#line 301 "/Engine/Generated/Material.ush"
struct FMaterialTessellationParameters
{



    float2 TexCoords[ 1 ];

    float4 VertexColor;

    float3 WorldPosition;
    float3 TangentToWorldPreScale;


    float3x3 TangentToWorld;
};
#line 321 "/Engine/Generated/Material.ush"
struct FMaterialVertexParameters
{



    float3 WorldPosition;

    float3x3  TangentToWorld;
#line 338 "/Engine/Generated/Material.ush"
    float3 PreSkinnedPosition;
    float3 PreSkinnedNormal;

    float4  VertexColor;

    float2 TexCoords[ 1 ];
#line 350 "/Engine/Generated/Material.ush"
    FMaterialParticleParameters Particle;
};

float3 GetTranslatedWorldPosition(FMaterialVertexParameters Parameters)
{
    return Parameters.WorldPosition;
}

float3 GetPrevTranslatedWorldPosition(FMaterialVertexParameters Parameters)
{





    return GetTranslatedWorldPosition(Parameters);
}

float3 GetWorldPosition(FMaterialVertexParameters Parameters)
{
    return GetTranslatedWorldPosition(Parameters) - ResolvedView.PreViewTranslation;
}

float3 GetPrevWorldPosition(FMaterialVertexParameters Parameters)
{
    return GetPrevTranslatedWorldPosition(Parameters) - ResolvedView.PrevPreViewTranslation;
}


float3 GetWorldPosition(FMaterialTessellationParameters Parameters)
{
    return Parameters.WorldPosition;
}

float3 GetTranslatedWorldPosition(FMaterialTessellationParameters Parameters)
{
    return Parameters.WorldPosition + ResolvedView.PreViewTranslation;
}

float3 GetWorldPosition(FMaterialPixelParameters Parameters)
{
    return Parameters.AbsoluteWorldPosition;
}

float3 GetWorldPosition_NoMaterialOffsets(FMaterialPixelParameters Parameters)
{
    return Parameters.WorldPosition_NoOffsets;
}

float3 GetTranslatedWorldPosition(FMaterialPixelParameters Parameters)
{
    return Parameters.WorldPosition_CamRelative;
}

float3 GetTranslatedWorldPosition_NoMaterialOffsets(FMaterialPixelParameters Parameters)
{
    return Parameters.WorldPosition_NoOffsets_CamRelative;
}

float4 GetScreenPosition(FMaterialVertexParameters Parameters)
{
    return mul(float4(Parameters.WorldPosition, 1.0f), ResolvedView.TranslatedWorldToClip);
}

float4 GetScreenPosition(FMaterialPixelParameters Parameters)
{
    return Parameters.ScreenPosition;
}

float2 GetSceneTextureUV(FMaterialVertexParameters Parameters)
{
    return ScreenAlignedPosition(GetScreenPosition(Parameters));
}

float2 GetSceneTextureUV(FMaterialPixelParameters Parameters)
{
    return SvPositionToBufferUV(Parameters.SvPosition);
}

float2 GetViewportUV(FMaterialVertexParameters Parameters)
{
    return BufferUVToViewportUV(GetSceneTextureUV(Parameters));
}

float2 GetPixelPosition(FMaterialVertexParameters Parameters)
{
    return GetViewportUV(Parameters) * View_ViewSizeAndInvSize.xy;
}
#line 454 "/Engine/Generated/Material.ush"
float2 GetPixelPosition(FMaterialPixelParameters Parameters)
{
    return Parameters.SvPosition.xy - float2(View_ViewRectMin.xy);
}

float2 GetViewportUV(FMaterialPixelParameters Parameters)
{
    return SvPositionToViewportUV(Parameters.SvPosition);
}





bool IsPostProcessInputSceneTexture(const uint SceneTextureId)
{
    return (SceneTextureId >= 14 && SceneTextureId <= 20);
}



float4 GetSceneTextureViewSize(const uint SceneTextureId)
{
#line 483 "/Engine/Generated/Material.ush"
    return ResolvedView.ViewSizeAndInvSize;
}



float4 GetSceneTextureUVMinMax(const uint SceneTextureId)
{
#line 504 "/Engine/Generated/Material.ush"
    return View_BufferBilinearUVMinMax;
}



float2  ViewportUVToSceneTextureUV( float2  ViewportUV, const uint SceneTextureId)
{
#line 529 "/Engine/Generated/Material.ush"
    return ViewportUVToBufferUV(ViewportUV);
}



float2  ClampSceneTextureUV( float2  BufferUV, const uint SceneTextureId)
{
#line 547 "/Engine/Generated/Material.ush"
    float4 MinMax = GetSceneTextureUVMinMax(SceneTextureId);

    return clamp(BufferUV, MinMax.xy, MinMax.zw);
}



float2  GetDefaultSceneTextureUV(FMaterialVertexParameters Parameters, const uint SceneTextureId)
{
    return GetSceneTextureUV(Parameters);
}



float2  GetDefaultSceneTextureUV(FMaterialPixelParameters Parameters, const uint SceneTextureId)
{
#line 580 "/Engine/Generated/Material.ush"
    return GetSceneTextureUV(Parameters);
}
#line 645 "/Engine/Generated/Material.ush"
    float2 ComputeDecalDDX(FMaterialPixelParameters Parameters)
    {
        return 0.0f;
    }

    float2 ComputeDecalDDY(FMaterialPixelParameters Parameters)
    {
        return 0.0f;
    }

    float ComputeDecalMipmapLevel(FMaterialPixelParameters Parameters, float2 TextureSize)
    {
        return 0.0f;
    }
#line 678 "/Engine/Generated/Material.ush"
    float3 GetActorWorldPosition()
    {
        return Primitive_ActorWorldPosition;
    }

    float3 GetObjectOrientation()
    {
        return Primitive_ObjectOrientation.xyz;
    }








    float DecalLifetimeOpacity()
    {
        return 0.0f;
    }



float3  TransformTangentVectorToWorld_PreScaled(FMaterialTessellationParameters Parameters,  float3  InTangentVector)
{


    InTangentVector *= abs( Parameters.TangentToWorldPreScale );



    return mul(InTangentVector, Parameters.TangentToWorld);
#line 714 "/Engine/Generated/Material.ush"
}


float3  TransformTangentVectorToView(FMaterialPixelParameters Parameters,  float3  InTangentVector)
{

    return mul(mul(InTangentVector, Parameters.TangentToWorld), ( float3x3 )ResolvedView.TranslatedWorldToView);
}


float3  TransformLocalVectorToWorld(FMaterialVertexParameters Parameters, float3  InLocalVector)
{



        return mul(InLocalVector, GetLocalToWorld3x3());

}


float3  TransformLocalVectorToWorld(FMaterialPixelParameters Parameters, float3  InLocalVector)
{
    return mul(InLocalVector, GetLocalToWorld3x3());
}




float3  TransformWorldVectorToLocal( float3  InWorldVector)
{
    return mul(InWorldVector, ( float3x3 )Primitive_WorldToLocal);
}


float3 TransformLocalPositionToWorld(FMaterialPixelParameters Parameters,float3 InLocalPosition)
{
    return mul(float4(InLocalPosition, 1), Primitive_LocalToWorld).xyz;
}


float3 TransformLocalPositionToWorld(FMaterialVertexParameters Parameters,float3 InLocalPosition)
{



        return mul(float4(InLocalPosition, 1), Primitive_LocalToWorld).xyz;

}






float3 GetObjectWorldPosition(FMaterialPixelParameters Parameters)
{
    return Primitive_ObjectWorldPositionAndRadius.xyz;
}

float3 GetObjectWorldPosition(FMaterialTessellationParameters Parameters)
{
    return Primitive_ObjectWorldPositionAndRadius.xyz;
}


float3 GetObjectWorldPosition(FMaterialVertexParameters Parameters)
{



        return Primitive_ObjectWorldPositionAndRadius.xyz;

}




float GetPerInstanceRandom(FMaterialVertexParameters Parameters)
{



    return 0.0;

}


float GetPerInstanceRandom(FMaterialPixelParameters Parameters)
{



    return 0.0;

}


float GetPerInstanceFadeAmount(FMaterialPixelParameters Parameters)
{



    return float(1.0);

}


float GetPerInstanceFadeAmount(FMaterialVertexParameters Parameters)
{



    return float(1.0);

}

float  GetDistanceCullFade()
{
    return saturate( ResolvedView.RealTime * PrimitiveFade_FadeTimeScaleBias.x + PrimitiveFade_FadeTimeScaleBias.y );
}


float3 RotateAboutAxis(float4 NormalizedRotationAxisAndAngle, float3 PositionOnAxis, float3 Position)
{

    float3 ClosestPointOnAxis = PositionOnAxis + NormalizedRotationAxisAndAngle.xyz * dot(NormalizedRotationAxisAndAngle.xyz, Position - PositionOnAxis);

    float3 UAxis = Position - ClosestPointOnAxis;
    float3 VAxis = cross(NormalizedRotationAxisAndAngle.xyz, UAxis);
    float CosAngle;
    float SinAngle;
    sincos(NormalizedRotationAxisAndAngle.w, SinAngle, CosAngle);

    float3 R = UAxis * CosAngle + VAxis * SinAngle;

    float3 RotatedPosition = ClosestPointOnAxis + R;

    return RotatedPosition - Position;
}


float MaterialExpressionDepthOfFieldFunction(float SceneDepth, int FunctionValueIndex)
{


    if(FunctionValueIndex == 0)
    {
        return CalcUnfocusedPercentCustomBound(SceneDepth, 1, 1);
    }
    else if(FunctionValueIndex == 1)
    {
        return CalcUnfocusedPercentCustomBound(SceneDepth, 1, 0);
    }
    else if(FunctionValueIndex == 2)
    {
        return CalcUnfocusedPercentCustomBound(SceneDepth, 0, 1);
    }
    else if(FunctionValueIndex == 3)
    {

        return DepthToCoc(SceneDepth) * 2.0f;
    }
    return 0;
}


float3 MaterialExpressionBlackBody( float Temp )
{
    float u = ( 0.860117757f + 1.54118254e-4f * Temp + 1.28641212e-7f * Temp*Temp ) / ( 1.0f + 8.42420235e-4f * Temp + 7.08145163e-7f * Temp*Temp );
    float v = ( 0.317398726f + 4.22806245e-5f * Temp + 4.20481691e-8f * Temp*Temp ) / ( 1.0f - 2.89741816e-5f * Temp + 1.61456053e-7f * Temp*Temp );

    float x = 3*u / ( 2*u - 8*v + 4 );
    float y = 2*v / ( 2*u - 8*v + 4 );
    float z = 1 - x - y;

    float Y = 1;
    float X = Y/y * x;
    float Z = Y/y * z;

    float3x3 XYZtoRGB =
    {
         3.2404542, -1.5371385, -0.4985314,
        -0.9692660, 1.8760108, 0.0415560,
         0.0556434, -0.2040259, 1.0572252,
    };

    return mul( XYZtoRGB, float3( X, Y, Z ) ) * pow( 0.0004 * Temp, 4 );
}

float4 MaterialExpressionAtmosphericFog(FMaterialPixelParameters Parameters, float3 AbsoluteWorldPosition)
{






    return float4(0.f, 0.f, 0.f, 0.f);

}

float3 MaterialExpressionAtmosphericLightVector(FMaterialPixelParameters Parameters)
{



    return float3(0.f, 0.f, 0.f);

}

float3 MaterialExpressionAtmosphericLightColor(FMaterialPixelParameters Parameters)
{



    return float3(0.f, 0.f, 0.f);

}
#line 940 "/Engine/Generated/Material.ush"
float  UnMirror(  float  Coordinate, FMaterialPixelParameters Parameters )
{
    return ((Coordinate)*(Parameters.UnMirrored)*0.5+0.5);
}
#line 948 "/Engine/Generated/Material.ush"
float2  UnMirrorU(  float2  UV, FMaterialPixelParameters Parameters )
{
    return  float2 (UnMirror(UV.x, Parameters), UV.y);
}
#line 956 "/Engine/Generated/Material.ush"
float2  UnMirrorV(  float2  UV, FMaterialPixelParameters Parameters )
{
    return  float2 (UV.x, UnMirror(UV.y, Parameters));
}
#line 964 "/Engine/Generated/Material.ush"
float2  UnMirrorUV(  float2  UV, FMaterialPixelParameters Parameters )
{
    return  float2 (UnMirror(UV.x, Parameters), UnMirror(UV.y, Parameters));
}
#line 973 "/Engine/Generated/Material.ush"
float2  GetParticleMacroUV(FMaterialPixelParameters Parameters)
{
    return (Parameters.ScreenPosition.xy / Parameters.ScreenPosition.w - Parameters.Particle.MacroUV.xy) * Parameters.Particle.MacroUV.zw +  float2 (.5, .5);
}

float4  ProcessMaterialColorTextureLookup( float4  TextureValue)
{
#line 993 "/Engine/Generated/Material.ush"
    return TextureValue;
}

float4  ProcessMaterialLinearColorTextureLookup( float4  TextureValue)
{
    return TextureValue;
}

float  ProcessMaterialGreyscaleTextureLookup( float  TextureValue)
{
#line 1016 "/Engine/Generated/Material.ush"
    return TextureValue;
}

float  ProcessMaterialLinearGreyscaleTextureLookup( float  TextureValue)
{
    return TextureValue;
}


SamplerState GetMaterialSharedSampler(SamplerState TextureSampler, SamplerState SharedSampler)
{

    return SharedSampler;
#line 1034 "/Engine/Generated/Material.ush"
}


float3  ReflectionAboutCustomWorldNormal(FMaterialPixelParameters Parameters,  float3  WorldNormal, bool bNormalizeInputNormal)
{
    if (bNormalizeInputNormal)
    {
        WorldNormal = normalize(WorldNormal);
    }

    return -Parameters.CameraVector + WorldNormal * dot(WorldNormal, Parameters.CameraVector) * 2.0;
}
#line 1055 "/Engine/Generated/Material.ush"
float GetSphericalParticleOpacity(FMaterialPixelParameters Parameters, float Density)
{
    float Opacity = 0;
#line 1070 "/Engine/Generated/Material.ush"
    float3 ParticleTranslatedWorldPosition = Primitive_ObjectWorldPositionAndRadius.xyz + ResolvedView.PreViewTranslation.xyz;
    float ParticleRadius = max(0.000001f, Primitive_ObjectWorldPositionAndRadius.w);




    float RescaledDensity = Density / ParticleRadius;


    float DistanceToParticle = length(Parameters.WorldPosition_NoOffsets_CamRelative - ParticleTranslatedWorldPosition);

    [flatten]
    if (DistanceToParticle < ParticleRadius)
    {

        float HemisphericalDistance = sqrt(ParticleRadius * ParticleRadius - DistanceToParticle * DistanceToParticle);






        float NearDistance = Parameters.ScreenPosition.w - HemisphericalDistance;
        float FarDistance = Parameters.ScreenPosition.w + HemisphericalDistance;

        float SceneDepth = CalcSceneDepth(SvPositionToBufferUV(Parameters.SvPosition));
        FarDistance = min(SceneDepth, FarDistance);


        float DistanceThroughSphere = FarDistance - NearDistance;



        Opacity = saturate(1 - exp2(-RescaledDensity * (1 - DistanceToParticle / ParticleRadius) * DistanceThroughSphere));



        Opacity = lerp(0, Opacity, saturate((Parameters.ScreenPosition.w - ParticleRadius - ResolvedView.NearPlane) / ParticleRadius));

    }



    return Opacity;
}

float2 RotateScaleOffsetTexCoords(float2 InTexCoords, float4 InRotationScale, float2 InOffset)
{
    return float2(dot(InTexCoords, InRotationScale.xy), dot(InTexCoords, InRotationScale.zw)) + InOffset;
}
#line 1303 "/Engine/Generated/Material.ush"
float2  GetLightmapUVs(FMaterialPixelParameters Parameters)
{



    return  float2 (0,0);

}
#line 1490 "/Engine/Generated/Material.ush"
float3 DecodeSceneColorForMaterialNode(float2 ScreenUV)
{




    float4 EncodedSceneColor = Texture2DSample(SceneTexturesStruct_SceneColorCopyTexture, SceneTexturesStruct_SceneColorCopyTextureSampler, ScreenUV);


    return pow(EncodedSceneColor.rgb, 4) * 10;

}







float3  GetMaterialNormalRaw(FPixelMaterialInputs PixelMaterialInputs)
{
    return PixelMaterialInputs.Normal;
}

float3  GetMaterialNormal(FMaterialPixelParameters Parameters, FPixelMaterialInputs PixelMaterialInputs)
{
    float3  RetNormal;

    RetNormal = GetMaterialNormalRaw(PixelMaterialInputs);


    {

        float3  OverrideNormal = ResolvedView.NormalOverrideParameter.xyz;
#line 1529 "/Engine/Generated/Material.ush"
        RetNormal = RetNormal * ResolvedView.NormalOverrideParameter.w + OverrideNormal;
    }


    return RetNormal;
}

float3  GetMaterialEmissiveRaw(FPixelMaterialInputs PixelMaterialInputs)
{
    return PixelMaterialInputs.EmissiveColor;
}

float3  GetMaterialEmissive(FPixelMaterialInputs PixelMaterialInputs)
{
    float3  EmissiveColor = GetMaterialEmissiveRaw(PixelMaterialInputs);

    EmissiveColor = max(EmissiveColor, 0.0f);

    return EmissiveColor;
}

float3  GetMaterialEmissiveForCS(FMaterialPixelParameters Parameters)
{
return 0;
}

float3  GetMaterialBaseColorRaw(FPixelMaterialInputs PixelMaterialInputs)
{
    return PixelMaterialInputs.BaseColor;
}

float3  GetMaterialBaseColor(FPixelMaterialInputs PixelMaterialInputs)
{
    return saturate(GetMaterialBaseColorRaw(PixelMaterialInputs));
}

float  GetMaterialMetallicRaw(FPixelMaterialInputs PixelMaterialInputs)
{
    return PixelMaterialInputs.Metallic;
}

float  GetMaterialMetallic(FPixelMaterialInputs PixelMaterialInputs)
{
    return saturate(GetMaterialMetallicRaw(PixelMaterialInputs));
}

float  GetMaterialSpecularRaw(FPixelMaterialInputs PixelMaterialInputs)
{
    return PixelMaterialInputs.Specular;
}

float  GetMaterialSpecular(FPixelMaterialInputs PixelMaterialInputs)
{
    return saturate(GetMaterialSpecularRaw(PixelMaterialInputs));
}

float  GetMaterialRoughnessRaw(FPixelMaterialInputs PixelMaterialInputs)
{
    return PixelMaterialInputs.Roughness;
}

float  GetMaterialRoughness(FPixelMaterialInputs PixelMaterialInputs)
{
#line 1616 "/Engine/Generated/Material.ush"
    float  Roughness = saturate(GetMaterialRoughnessRaw(PixelMaterialInputs));


    {

        Roughness = Roughness * ResolvedView.RoughnessOverrideParameter.y + ResolvedView.RoughnessOverrideParameter.x;
    }


    return Roughness;

}

float  GetMaterialTranslucencyDirectionalLightingIntensity()
{
return 1.00000;
}

float  GetMaterialTranslucentShadowDensityScale()
{
return 0.50000;
}

float  GetMaterialTranslucentSelfShadowDensityScale()
{
return 2.00000;
}

float  GetMaterialTranslucentSelfShadowSecondDensityScale()
{
return 10.00000;
}

float  GetMaterialTranslucentSelfShadowSecondOpacity()
{
return 0.00000;
}

float  GetMaterialTranslucentBackscatteringExponent()
{
return 30.00000;
}

float3  GetMaterialTranslucentMultipleScatteringExtinction()
{
return  float3 (1.00000, 0.83300, 0.58800);
}



float  GetMaterialOpacityMaskClipValue()
{
return 0.33330;
}



float  GetMaterialOpacityRaw(FPixelMaterialInputs PixelMaterialInputs)
{
    return PixelMaterialInputs.Opacity;
}




float  GetMaterialMaskInputRaw(FPixelMaterialInputs PixelMaterialInputs)
{
    return PixelMaterialInputs.OpacityMask;
}



float  GetMaterialMask(FPixelMaterialInputs PixelMaterialInputs)
{
    return GetMaterialMaskInputRaw(PixelMaterialInputs) - GetMaterialOpacityMaskClipValue();
}



float  GetMaterialOpacity(FPixelMaterialInputs PixelMaterialInputs)
{

    return saturate(GetMaterialOpacityRaw(PixelMaterialInputs));
}
#line 1708 "/Engine/Generated/Material.ush"
float3 GetMaterialWorldPositionOffset(FMaterialVertexParameters Parameters)
{
#line 1717 "/Engine/Generated/Material.ush"
    return  float3 (0.00000000,0.00000000,0.00000000);;
}

float3 GetMaterialPreviousWorldPositionOffset(FMaterialVertexParameters Parameters)
{
#line 1729 "/Engine/Generated/Material.ush"
    return  float3 (0.00000000,0.00000000,0.00000000);;
}

float3  GetMaterialWorldDisplacement(FMaterialTessellationParameters Parameters)
{
    return  float3 (0.00000000,0.00000000,0.00000000);;
}

float  GetMaterialMaxDisplacement()
{
return 0.00000;
}

float  GetMaterialTessellationMultiplier(FMaterialTessellationParameters Parameters)
{
    return 1.00000000;;
}


float4  GetMaterialSubsurfaceDataRaw(FPixelMaterialInputs PixelMaterialInputs)
{
    return PixelMaterialInputs.Subsurface;
}

float4  GetMaterialSubsurfaceData(FPixelMaterialInputs PixelMaterialInputs)
{
    float4  OutSubsurface = GetMaterialSubsurfaceDataRaw(PixelMaterialInputs);
    OutSubsurface.rgb = saturate(OutSubsurface.rgb);
    return OutSubsurface;
}

float  GetMaterialCustomData0(FMaterialPixelParameters Parameters)
{
    return 1.00000000;;
}

float  GetMaterialCustomData1(FMaterialPixelParameters Parameters)
{
    return 0.10000000;;
}

float  GetMaterialAmbientOcclusionRaw(FPixelMaterialInputs PixelMaterialInputs)
{
    return PixelMaterialInputs.AmbientOcclusion;
}

float  GetMaterialAmbientOcclusion(FPixelMaterialInputs PixelMaterialInputs)
{
    return saturate(GetMaterialAmbientOcclusionRaw(PixelMaterialInputs));
}

float2  GetMaterialRefraction(FPixelMaterialInputs PixelMaterialInputs)
{
    return PixelMaterialInputs.Refraction;
}


void GetMaterialCustomizedUVs(FMaterialVertexParameters Parameters, inout float2 OutTexCoords[ 1 ])
{
    OutTexCoords[0] = Parameters.TexCoords[0].xy;

}

void GetCustomInterpolators(FMaterialVertexParameters Parameters, inout float2 OutTexCoords[ 1 ])
{

}


float GetMaterialPixelDepthOffset(FPixelMaterialInputs PixelMaterialInputs)
{
    return PixelMaterialInputs.PixelDepthOffset;
}
#line 1825 "/Engine/Generated/Material.ush"
float3 TransformTangentNormalToWorld( float3x3  TangentToWorld, float3 TangentNormal)
{
    return normalize(float3(TransformTangentVectorToWorld(TangentToWorld, TangentNormal)));
}



void CalcPixelMaterialInputs(in out FMaterialPixelParameters Parameters, in out FPixelMaterialInputs PixelMaterialInputs)
{

    float2  Local0 = (Parameters.TexCoords[0].xy * 1.00000000);
    float2  Local1 = (Local0 / 2.00000000);
    float2  Local2 = (Local1 / 0.05000000);
    float4  Local3 = UnpackNormalMap(Texture2DSampleBias(Material_Texture2D_0,Material_Texture2D_0Sampler,Local2,View_MaterialTextureMipBias));
    float3  Local4 = (Local3.rgb *  float3 (0.30000001,0.30000001,1.00000000));


    PixelMaterialInputs.Normal = Local4;



    float3 MaterialNormal = GetMaterialNormal(Parameters, PixelMaterialInputs);
#line 1855 "/Engine/Generated/Material.ush"
    MaterialNormal = normalize(MaterialNormal);




    Parameters.WorldNormal = TransformTangentNormalToWorld(Parameters.TangentToWorld, MaterialNormal);
#line 1870 "/Engine/Generated/Material.ush"
    Parameters.WorldNormal *= Parameters.TwoSidedSign;


    Parameters.ReflectionVector = ReflectionAboutCustomWorldNormal(Parameters, Parameters.WorldNormal, false);


    Parameters.Particle.MotionBlurFade = 1.0f;



    float2  Local5 = (Parameters.TexCoords[0].xy * 20.00000000);
    float4  Local6 = ProcessMaterialLinearColorTextureLookup(Texture2DSampleBias(Material_Texture2D_1,Material_Texture2D_1Sampler,Local5,View_MaterialTextureMipBias));
    float  Local7 = lerp(0.40000001,1.00000000,Local6.r);
    float  Local8 = (1.00000000 - Local7);
    float2  Local9 = (Local1 / 0.10000000);
    float4  Local10 = ProcessMaterialLinearColorTextureLookup(Texture2DSampleBias(Material_Texture2D_1,Material_Texture2D_1Sampler,Local9,View_MaterialTextureMipBias));
    float  Local11 = (GetScreenPosition(Parameters).w.r - 24.00000000);
    float  Local12 = (Local11 / 1500.00000000);
    float  Local13 = min(max(Local12,0.00000000),1.00000000);
    float  Local14 = lerp(Local10.g,1.00000000,Local13);
    float  Local15 = lerp(Local7,Local8,Local14);
    float4  Local16 = ProcessMaterialLinearColorTextureLookup(Texture2DSampleBias(Material_Texture2D_1,Material_Texture2D_1Sampler,Local1,View_MaterialTextureMipBias));
    float  Local17 = lerp(Local10.g,0.00000000,Local13);
    float  Local18 = (Local16.g + Local17);
    float  Local19 = lerp(Local18.r,0.50000000,0.50000000);
    float  Local20 = lerp(0.29499999,0.66000003,Local19);
    float  Local21 = (Local20 * 0.50000000);
    float  Local22 = (Local15 * Local21);
    float  Local23 = lerp(0.00000000,0.50000000,Local16.g);
    float  Local24 = lerp(0.69999999,1.00000000,Local10.g);
    float  Local25 = lerp(Local24,1.00000000,Local13);
    float  Local26 = (Local25 * 1.00000000);
    float  Local27 = (Local23 + Local26);
    float  Local28 = min(max(Local27,0.00000000),1.00000000);

    PixelMaterialInputs.EmissiveColor = Material_VectorExpressions[2].rgb;
    PixelMaterialInputs.Opacity = 1.00000000;
    PixelMaterialInputs.OpacityMask = 1.00000000;
    PixelMaterialInputs.BaseColor = Local22;
    PixelMaterialInputs.Metallic = 0.00000000;
    PixelMaterialInputs.Specular = 0.50000000;
    PixelMaterialInputs.Roughness = Local28;
    PixelMaterialInputs.Subsurface = 0;
    PixelMaterialInputs.AmbientOcclusion = 1.00000000;
    PixelMaterialInputs.Refraction = 0;
    PixelMaterialInputs.PixelDepthOffset = 0.00000000;

}
#line 1589 "/Engine/Generated/Material.ush"

void ClipLODTransition(float2 SvPosition, float DitherFactor)
{
    if (abs(DitherFactor) > .001)
    {
        float RandCos = cos(dot(floor(SvPosition.xy), float2(347.83451793,3343.28371963)));
        float RandomVal = frac(RandCos * 1000.0);
        float  RetVal = (DitherFactor < 0.0) ?
            (DitherFactor + 1.0 > RandomVal) :
            (DitherFactor < RandomVal);
        clip(RetVal - .001);
    }
}

void ClipLODTransition(FMaterialPixelParameters Parameters, float DitherFactor)
{
    ClipLODTransition(Parameters.SvPosition.xy, DitherFactor);
}
#line 1633 "/Engine/Generated/Material.ush"
void ClipLODTransition(FMaterialPixelParameters Parameters)
{
}
void ClipLODTransition(float2 SvPosition)
{
}


void GetMaterialClippingShadowDepth(FMaterialPixelParameters Parameters, FPixelMaterialInputs PixelMaterialInputs)
{
    ClipLODTransition(Parameters);
#line 1651 "/Engine/Generated/Material.ush"
}

void GetMaterialClippingVelocity(FMaterialPixelParameters Parameters, FPixelMaterialInputs PixelMaterialInputs)
{
    ClipLODTransition(Parameters);
#line 1663 "/Engine/Generated/Material.ush"
}


void GetMaterialCoverageAndClipping(FMaterialPixelParameters Parameters, FPixelMaterialInputs PixelMaterialInputs)
{
    ClipLODTransition(Parameters);
#line 1695 "/Engine/Generated/Material.ush"
}
#line 1734 "/Engine/Generated/Material.ush"
    float  GetFloatFacingSign( bool  bIsFrontFace)
    {
        return bIsFrontFace ? +1 : -1;
    }









void CalcMaterialParametersEx(
    in out FMaterialPixelParameters Parameters,
    in out FPixelMaterialInputs PixelMaterialInputs,
    float4 SvPosition,
    float4 ScreenPosition,
    bool  bIsFrontFace,
    float3 TranslatedWorldPosition,
    float3 TranslatedWorldPositionExcludingShaderOffsets)
{

    Parameters.WorldPosition_CamRelative = TranslatedWorldPosition.xyz;
    Parameters.AbsoluteWorldPosition = TranslatedWorldPosition.xyz - ResolvedView.PreViewTranslation.xyz;
#line 1767 "/Engine/Generated/Material.ush"
    Parameters.SvPosition = SvPosition;
    Parameters.ScreenPosition = ScreenPosition;







    Parameters.CameraVector = normalize(-Parameters.WorldPosition_CamRelative.xyz);


    Parameters.LightVector = 0;

    Parameters.TwoSidedSign = 1.0f;
#line 1792 "/Engine/Generated/Material.ush"
    CalcPixelMaterialInputs(Parameters, PixelMaterialInputs);
}



void CalcMaterialParameters(
    in out FMaterialPixelParameters Parameters,
    in out FPixelMaterialInputs PixelMaterialInputs,
    float4 SvPosition,
    bool  bIsFrontFace)
{
    float4 ScreenPosition = SvPositionToResolvedScreenPosition(SvPosition);
    float3 TranslatedWorldPosition = SvPositionToResolvedTranslatedWorld(SvPosition);

    CalcMaterialParametersEx(Parameters, PixelMaterialInputs, SvPosition, ScreenPosition, bIsFrontFace, TranslatedWorldPosition, TranslatedWorldPosition);
}

void CalcMaterialParametersPost(
    in out FMaterialPixelParameters Parameters,
    in out FPixelMaterialInputs PixelMaterialInputs,
    float4 SvPosition,
    bool  bIsFrontFace)
{
    float4 ScreenPosition = SvPositionToScreenPosition(SvPosition);
    float3 TranslatedWorldPosition = SvPositionToTranslatedWorld(SvPosition);

    CalcMaterialParametersEx(Parameters, PixelMaterialInputs, SvPosition, ScreenPosition, bIsFrontFace, TranslatedWorldPosition, TranslatedWorldPosition);
}


float3x3  AssembleTangentToWorld(  float3  TangentToWorld0,  float4  TangentToWorld2 )
{





    float3  TangentToWorld1 = cross(TangentToWorld2.xyz,TangentToWorld0) * TangentToWorld2.w;

    return  float3x3 (TangentToWorld0, TangentToWorld1, TangentToWorld2.xyz);
}
#line 1872 "/Engine/Generated/Material.ush"
float ApplyPixelDepthOffsetToMaterialParameters(inout FMaterialPixelParameters MaterialParameters, FPixelMaterialInputs PixelMaterialInputs, out float OutDepth)
{

    float PixelDepthOffset = max(GetMaterialPixelDepthOffset(PixelMaterialInputs), 0);


    MaterialParameters.ScreenPosition.w += PixelDepthOffset;
    MaterialParameters.SvPosition.w = MaterialParameters.ScreenPosition.w;
    MaterialParameters.AbsoluteWorldPosition += MaterialParameters.CameraVector * PixelDepthOffset;

    OutDepth = MaterialParameters.ScreenPosition.z / MaterialParameters.ScreenPosition.w;

    return PixelDepthOffset;
}
#line 9 "/Engine/Private/PositionOnlyDepthVertexShader.usf"
#line 1 "/Engine/Generated/VertexFactory.ush"
#line 1 "/Engine/Private/LocalVertexFactory.ush"
#line 7 "/Engine/Private/LocalVertexFactory.ush"
#line 1 "VertexFactoryCommon.ush"




float3 TransformLocalToWorld(float3 LocalPosition)
{



    return  ((Primitive_LocalToWorld[0].xyz * LocalPosition.xxx + Primitive_LocalToWorld[1].xyz * LocalPosition.yyy + Primitive_LocalToWorld[2].xyz * LocalPosition.zzz) + Primitive_LocalToWorld[3].xyz);
}

float4 TransformLocalToTranslatedWorld(float3 LocalPosition)
{
    float3 RotatedPosition = Primitive_LocalToWorld[0].xyz * LocalPosition.xxx + Primitive_LocalToWorld[1].xyz * LocalPosition.yyy + Primitive_LocalToWorld[2].xyz * LocalPosition.zzz;
    return float4(RotatedPosition + (Primitive_LocalToWorld[3].xyz + ResolvedView.PreViewTranslation.xyz),1);
}
#line 24 "/Engine/Private/VertexFactoryCommon.ush"
uint GetLayerInstanceID( uint InstanceID )
{



    return InstanceID;

}










float2 UnitToOct( float3 N )
{
    N.xy /= dot( 1, abs(N) );
    if( N.z <= 0 )
    {
        N.xy = ( 1 - abs(N.yx) ) * ( N.xy >= 0 ? float2(1,1) : float2(-1,-1) );
    }
    return N.xy;
}

float3 OctToUnit( float2 Oct )
{
    float3 N = float3( Oct, 1 - dot( 1, abs(Oct) ) );
    if( N.z < 0 )
    {
        N.xy = ( 1 - abs(N.yx) ) * ( N.xy >= 0 ? float2(1,1) : float2(-1,-1) );
    }
    return normalize(N);
}
#line 8 "/Engine/Private/LocalVertexFactory.ush"
#line 1 "LocalVertexFactoryCommon.ush"
#line 11 "/Engine/Private/LocalVertexFactoryCommon.ush"
struct FVertexFactoryInterpolantsVSToPS
{
    float4 TangentToWorld0 : TEXCOORD10_centroid; float4 TangentToWorld2 : TEXCOORD11_centroid;
#line 25 "/Engine/Private/LocalVertexFactoryCommon.ush"
    float4 TexCoords[( 1 +1)/2] : TEXCOORD0;
#line 37 "/Engine/Private/LocalVertexFactoryCommon.ush"
};


float2 GetUV(FVertexFactoryInterpolantsVSToPS Interpolants, int UVIndex)
{
    float4 UVVector = Interpolants.TexCoords[UVIndex / 2];
    return UVIndex % 2 ? UVVector.zw : UVVector.xy;
}

void SetUV(inout FVertexFactoryInterpolantsVSToPS Interpolants, int UVIndex, float2 InValue)
{
    [flatten]
    if (UVIndex % 2)
    {
        Interpolants.TexCoords[UVIndex / 2].zw = InValue;
    }
    else
    {
        Interpolants.TexCoords[UVIndex / 2].xy = InValue;
    }
}


float4 GetColor(FVertexFactoryInterpolantsVSToPS Interpolants)
{



    return 0;

}

void SetColor(inout FVertexFactoryInterpolantsVSToPS Interpolants, float4 InValue)
{
#line 74 "/Engine/Private/LocalVertexFactoryCommon.ush"
}
#line 95 "/Engine/Private/LocalVertexFactoryCommon.ush"
float4 GetTangentToWorld2(FVertexFactoryInterpolantsVSToPS Interpolants)
{
    return Interpolants.TangentToWorld2;
}

float4 GetTangentToWorld0(FVertexFactoryInterpolantsVSToPS Interpolants)
{
    return Interpolants.TangentToWorld0;
}

void SetTangents(inout FVertexFactoryInterpolantsVSToPS Interpolants, float3 InTangentToWorld0, float3 InTangentToWorld2, float InTangentToWorldSign)
{
    Interpolants.TangentToWorld0 = float4(InTangentToWorld0,0);
    Interpolants.TangentToWorld2 = float4(InTangentToWorld2,InTangentToWorldSign);
#line 112 "/Engine/Private/LocalVertexFactoryCommon.ush"
}
#line 9 "/Engine/Private/LocalVertexFactory.ush"
#line 14 "/Engine/Private/LocalVertexFactory.ush"
float4x4 PreviousLocalToWorld;
#line 16 "/Engine/Private/LocalVertexFactory.ush"
#line 1 "/Engine/Generated/UniformBuffers/PrecomputedLightingBuffer.ush"
#line 17 "/Engine/Private/LocalVertexFactory.ush"
#line 103 "/Engine/Private/LocalVertexFactory.ush"
    Buffer<float4> VertexFetch_InstanceOriginBuffer;
    Buffer<float4> VertexFetch_InstanceTransformBuffer;
    Buffer<float4> VertexFetch_InstanceLightmapBuffer;

    uint InstanceOffset;
    uint VertexOffset;






struct FVertexFactoryInput
{
    float4 Position : ATTRIBUTE0;
#line 180 "/Engine/Private/LocalVertexFactory.ush"
    uint VertexId : SV_VertexID;

};

struct FPositionOnlyVertexFactoryInput
{
    float4 Position : ATTRIBUTE0;
#line 201 "/Engine/Private/LocalVertexFactory.ush"
    uint VertexId : SV_VertexID;

};

struct FVertexFactoryIntermediates
{
    float3x3  TangentToLocal;
    float3x3  TangentToWorld;
    float  TangentToWorldSign;

    float4  Color;
#line 223 "/Engine/Private/LocalVertexFactory.ush"
};
#line 326 "/Engine/Private/LocalVertexFactory.ush"
FMaterialPixelParameters GetMaterialPixelParameters(FVertexFactoryInterpolantsVSToPS Interpolants, float4 SvPosition)
{

    FMaterialPixelParameters Result = MakeInitializedMaterialPixelParameters();


    [unroll]
    for( int CoordinateIndex = 0; CoordinateIndex <  1 ; CoordinateIndex++ )
    {
        Result.TexCoords[CoordinateIndex] = GetUV(Interpolants, CoordinateIndex);
    }
#line 345 "/Engine/Private/LocalVertexFactory.ush"
    float3  TangentToWorld0 = GetTangentToWorld0(Interpolants).xyz;
    float4  TangentToWorld2 = GetTangentToWorld2(Interpolants);
    Result.UnMirrored = TangentToWorld2.w;

    Result.VertexColor = GetColor(Interpolants);


    Result.Particle.Color =  float4 (1,1,1,1);
#line 357 "/Engine/Private/LocalVertexFactory.ush"
    Result.TangentToWorld = AssembleTangentToWorld( TangentToWorld0, TangentToWorld2 );
#line 373 "/Engine/Private/LocalVertexFactory.ush"
    Result.TwoSidedSign = 1;
    return Result;
}

float3x3  CalcTangentToWorldNoScale(in  float3x3  TangentToLocal)
{
    float3x3  LocalToWorld = GetLocalToWorld3x3();
    float3  InvScale = Primitive_InvNonUniformScale.xyz;
    LocalToWorld[0] *= InvScale.x;
    LocalToWorld[1] *= InvScale.y;
    LocalToWorld[2] *= InvScale.z;
    return mul(TangentToLocal, LocalToWorld);
}


FMaterialVertexParameters GetMaterialVertexParameters(FVertexFactoryInput Input, FVertexFactoryIntermediates Intermediates, float3 WorldPosition,  float3x3  TangentToLocal)
{
    FMaterialVertexParameters Result = (FMaterialVertexParameters)0;
    Result.WorldPosition = WorldPosition;
    Result.VertexColor = Intermediates.Color;


    Result.TangentToWorld = Intermediates.TangentToWorld;
#line 403 "/Engine/Private/LocalVertexFactory.ush"
    Result.PreSkinnedPosition = Input.Position.xyz;
    Result.PreSkinnedNormal = TangentToLocal[2];


        const uint NumFetchTexCoords = LocalVF_VertexFetch_Parameters[ 1 ];
        [unroll]
        for (uint CoordinateIndex = 0; CoordinateIndex <  1 ; CoordinateIndex++)
        {

            uint ClampedCoordinateIndex = min(CoordinateIndex, NumFetchTexCoords-1);
            Result.TexCoords[CoordinateIndex] = LocalVF_VertexFetch_TexCoordBuffer[NumFetchTexCoords * (VertexOffset + Input.VertexId) + ClampedCoordinateIndex];
        }
#line 439 "/Engine/Private/LocalVertexFactory.ush"
    return Result;
}
#line 543 "/Engine/Private/LocalVertexFactory.ush"
float4 CalcWorldPosition(float4 Position)

{
#line 560 "/Engine/Private/LocalVertexFactory.ush"
    return TransformLocalToTranslatedWorld(Position.xyz);

}

float3x3  CalcTangentToLocal(FVertexFactoryInput Input, out float TangentSign)
{
    float3x3  Result;


    float3  TangentInputX = LocalVF_VertexFetch_PackedTangentsBuffer[2 * (VertexOffset + Input.VertexId) + 0].xyz;
    float4  TangentInputZ = LocalVF_VertexFetch_PackedTangentsBuffer[2 * (VertexOffset + Input.VertexId) + 1].xyzw;
#line 580 "/Engine/Private/LocalVertexFactory.ush"
    float3  TangentX =  (TangentInputX) ;
    float4  TangentZ =  (TangentInputZ) ;


    TangentSign = TangentZ.w;
#line 595 "/Engine/Private/LocalVertexFactory.ush"
    float3  TangentY = cross(TangentZ.xyz, TangentX) * TangentZ.w;




    Result[0] = cross(TangentY, TangentZ.xyz) * TangentZ.w;
    Result[1] = TangentY;
    Result[2] = TangentZ.xyz;

    return Result;
}

float3x3  CalcTangentToWorld(FVertexFactoryIntermediates Intermediates,  float3x3  TangentToLocal)
{








    float3x3  TangentToWorld = CalcTangentToWorldNoScale(TangentToLocal);

    return TangentToWorld;
}

FVertexFactoryIntermediates GetVertexFactoryIntermediates(FVertexFactoryInput Input)
{
    FVertexFactoryIntermediates Intermediates;


    Intermediates.Color = LocalVF_VertexFetch_ColorComponentsBuffer[(VertexOffset + Input.VertexId) & LocalVF_VertexFetch_Parameters[ 0 ]]  .bgra ;
#line 646 "/Engine/Private/LocalVertexFactory.ush"
    float TangentSign;
    Intermediates.TangentToLocal = CalcTangentToLocal(Input, TangentSign);
    Intermediates.TangentToWorld = CalcTangentToWorld(Intermediates,Intermediates.TangentToLocal);
    Intermediates.TangentToWorldSign = TangentSign * Primitive_LocalToWorldDeterminantSign;
#line 673 "/Engine/Private/LocalVertexFactory.ush"
    return Intermediates;
}
#line 683 "/Engine/Private/LocalVertexFactory.ush"
float3x3  VertexFactoryGetTangentToLocal( FVertexFactoryInput Input, FVertexFactoryIntermediates Intermediates )
{
    return Intermediates.TangentToLocal;
}


float4 VertexFactoryGetWorldPosition(FVertexFactoryInput Input, FVertexFactoryIntermediates Intermediates)
{










    return CalcWorldPosition(Input.Position);

}

float4 VertexFactoryGetRasterizedWorldPosition(FVertexFactoryInput Input, FVertexFactoryIntermediates Intermediates, float4 InWorldPosition)
{
    return InWorldPosition;
}

float3 VertexFactoryGetPositionForVertexLighting(FVertexFactoryInput Input, FVertexFactoryIntermediates Intermediates, float3 TranslatedWorldPosition)
{
    return TranslatedWorldPosition;
}

FVertexFactoryInterpolantsVSToPS VertexFactoryGetInterpolantsVSToPS(FVertexFactoryInput Input, FVertexFactoryIntermediates Intermediates, FMaterialVertexParameters VertexParameters)
{
    FVertexFactoryInterpolantsVSToPS Interpolants;



    Interpolants = (FVertexFactoryInterpolantsVSToPS)0;


    float2 CustomizedUVs[ 1 ];
    GetMaterialCustomizedUVs(VertexParameters, CustomizedUVs);
    GetCustomInterpolators(VertexParameters, CustomizedUVs);

    [unroll]
    for (int CoordinateIndex = 0; CoordinateIndex <  1 ; CoordinateIndex++)
    {
        SetUV(Interpolants, CoordinateIndex, CustomizedUVs[CoordinateIndex]);
    }
#line 767 "/Engine/Private/LocalVertexFactory.ush"
    SetTangents(Interpolants, Intermediates.TangentToWorld[0], Intermediates.TangentToWorld[2], Intermediates.TangentToWorldSign);
    SetColor(Interpolants, Intermediates.Color);
#line 777 "/Engine/Private/LocalVertexFactory.ush"
    return Interpolants;
}


float4 VertexFactoryGetWorldPosition(FPositionOnlyVertexFactoryInput Input)
{
    float4 Position = Input.Position;




    return CalcWorldPosition(Position);

}
#line 798 "/Engine/Private/LocalVertexFactory.ush"
float4 VertexFactoryGetPreviousWorldPosition(FVertexFactoryInput Input, FVertexFactoryIntermediates Intermediates)
{
    float4x4 PreviousLocalToWorldTranslated = PreviousLocalToWorld;
    PreviousLocalToWorldTranslated[3][0] += ResolvedView.PrevPreViewTranslation.x;
    PreviousLocalToWorldTranslated[3][1] += ResolvedView.PrevPreViewTranslation.y;
    PreviousLocalToWorldTranslated[3][2] += ResolvedView.PrevPreViewTranslation.z;
#line 824 "/Engine/Private/LocalVertexFactory.ush"
    return mul(Input.Position, PreviousLocalToWorldTranslated);

}
#line 957 "/Engine/Private/LocalVertexFactory.ush"
float4 VertexFactoryGetTranslatedPrimitiveVolumeBounds(FVertexFactoryInterpolantsVSToPS Interpolants)
{
    return float4(Primitive_ObjectWorldPositionAndRadius.xyz + ResolvedView.PreViewTranslation.xyz, Primitive_ObjectWorldPositionAndRadius.w);
}
#line 2 "/Engine/Generated/VertexFactory.ush"
#line 10 "/Engine/Private/PositionOnlyDepthVertexShader.usf"
#line 15 "/Engine/Private/PositionOnlyDepthVertexShader.usf"
void Main(
    FPositionOnlyVertexFactoryInput Input,
    out float4 OutPosition : SV_POSITION
#line 29 "/Engine/Private/PositionOnlyDepthVertexShader.usf"
    )
{
#line 51 "/Engine/Private/PositionOnlyDepthVertexShader.usf"
    ResolvedView = ResolveView();


    float4 WorldPos = VertexFactoryGetWorldPosition(Input);


    {




        OutPosition =  (mul(WorldPos, ResolvedView.TranslatedWorldToClip));

    }
#line 83 "/Engine/Private/PositionOnlyDepthVertexShader.usf"
}

猜你喜欢

转载自www.cnblogs.com/zhuyuanlong/p/9569172.html