第一部分:ID3D11Device::CreateVertexShader
FDrawingPolicyLink構造函數中根據FeatureLevel來初始化BoundShaderStateInput
/** A set of draw list elements with the same drawing policy. */ struct FDrawingPolicyLink { /** The elements array and the compact elements array are always synchronized */ TArray<FElementCompact> CompactElements; TArray<FElement> Elements; DrawingPolicyType DrawingPolicy; FBoundShaderStateInput BoundShaderStateInput; ERHIFeatureLevel::Type FeatureLevel; /** Used when sorting policy links */ FSphere CachedBoundingSphere; /** The id of this link in the draw list's set of drawing policy links. */ FSetElementId SetId; TStaticMeshDrawList* DrawList; uint32 VisibleCount; /** Initialization constructor. */ FDrawingPolicyLink(TStaticMeshDrawList* InDrawList, const DrawingPolicyType& InDrawingPolicy, ERHIFeatureLevel::Type InFeatureLevel) : DrawingPolicy(InDrawingPolicy), FeatureLevel(InFeatureLevel), DrawList(InDrawList), VisibleCount(0) { check(IsInRenderingThread()); BoundShaderStateInput = DrawingPolicy.GetBoundShaderStateInput(FeatureLevel); } };
根據VertexShader的ID3D11VertexShader* 初始化 BoundShaderStateInput
/** * Create bound shader state using the vertex decl from the mesh draw policy * as well as the shaders needed to draw the mesh * @return new bound shader state object */ template <bool bRenderingReflectiveShadowMaps> FBoundShaderStateInput FShadowDepthDrawingPolicy<bRenderingReflectiveShadowMaps>::GetBoundShaderStateInput(ERHIFeatureLevel::Type InFeatureLevel) const { FVertexDeclarationRHIRef VertexDeclaration; if (bUsePositionOnlyVS) { VertexDeclaration = VertexFactory->GetPositionDeclaration(); } else { VertexDeclaration = FMeshDrawingPolicy::GetVertexDeclaration(); } return FBoundShaderStateInput( VertexDeclaration, VertexShader->GetVertexShader(), GETSAFERHISHADER_HULL(HullShader), GETSAFERHISHADER_DOMAIN(DomainShader), GETSAFERHISHADER_PIXEL(PixelShader), GETSAFERHISHADER_GEOMETRY(GeometryShader)); }
其中VertexShader為FShadowDepthVS*類型。FShadowDepthVS為FShader : public FDeferredCleanupInterface的子類。
/** A compiled shader and its parameter bindings. */ class SHADERCORE_API FShader : public FDeferredCleanupInterface { friend class FShaderType; private: /** Reference to the shader resource, which stores the compiled bytecode and the RHI shader resource. */ TRefCountPtr<FShaderResource> Resource; public: /** @return the shader's vertex shader */ inline const FVertexShaderRHIParamRef GetVertexShader() const { return Resource->GetVertexShader(); } /** @return the shader's pixel shader */ inline const FPixelShaderRHIParamRef GetPixelShader() const { return Resource->GetPixelShader(); } /** @return the shader's hull shader */ inline const FHullShaderRHIParamRef GetHullShader() const { return Resource->GetHullShader(); } /** @return the shader's domain shader */ inline const FDomainShaderRHIParamRef GetDomainShader() const { return Resource->GetDomainShader(); } /** @return the shader's geometry shader */ inline const FGeometryShaderRHIParamRef GetGeometryShader() const { return Resource->GetGeometryShader(); } /** @return the shader's compute shader */ inline const FComputeShaderRHIParamRef GetComputeShader() const { return Resource->GetComputeShader(); } }
Resource為FShaderResource,通過GetVertexShader調用最終調用RHICreateVertexShader創建ID3D11VertexShader
FVertexShaderRHIRef FD3D11DynamicRHI::RHICreateVertexShader(const TArray<uint8>& Code) { FShaderCodeReader ShaderCode(Code); FD3D11VertexShader* Shader = new FD3D11VertexShader; FMemoryReader Ar( Code, true ); Ar << Shader->ShaderResourceTable; int32 Offset = Ar.Tell(); const uint8* CodePtr = Code.GetData() + Offset; const size_t CodeSize = ShaderCode.GetActualShaderCodeSize() - Offset; ReadShaderOptionalData(ShaderCode, *Shader); VERIFYD3D11SHADERRESULT(Direct3DDevice->CreateVertexShader( (void*)CodePtr, CodeSize, NULL, Shader->Resource.GetInitReference() ), Shader, Direct3DDevice); // TEMP Shader->Code = Code; Shader->Offset = Offset; return Shader; }
其中Code通過序列化函數初始化
第二部分:ID3D11DeviceContext::VSSetShader
繪制函數根據BoundShaderStateInput 來設置着色器
template<typename DrawingPolicyType> template<InstancedStereoPolicy InstancedStereo> int32 TStaticMeshDrawList<DrawingPolicyType>::DrawElement( FRHICommandList& RHICmdList, const FViewInfo& View, const typename DrawingPolicyType::ContextDataType PolicyContext, FDrawingPolicyRenderState& DrawRenderState, const FElement& Element, uint64 BatchElementMask, FDrawingPolicyLink* DrawingPolicyLink, bool& bDrawnShared ) { FBoundShaderStateInput BoundShaderStateInput; if (ensure(DrawingPolicyLink->BoundShaderStateInput.VertexShaderRHI != nullptr)) { BoundShaderStateInput = DrawingPolicyLink->BoundShaderStateInput; } else { BoundShaderStateInput = DrawingPolicyLink->DrawingPolicy.GetBoundShaderStateInput(View.GetFeatureLevel()); } CommitGraphicsPipelineState(RHICmdList, DrawingPolicyLink->DrawingPolicy, DrawRenderState, BoundShaderStateInput); DrawingPolicyLink->DrawingPolicy.SetSharedState(RHICmdList, DrawRenderState, &View, PolicyContext); bDrawnShared = true;
INC_DWORD_STAT_BY(STAT_StaticDrawListMeshDrawCalls, DrawCount); return DrawCount; }
通過DrawingPolicyLink獲知此次繪制調用的是哪個usf文件創建的shader
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" }