Files
UnrealEngineUWP/Engine/Shaders/Private/MobileBasePassCommon.ush
sebastien hillaire 5ca4969d74 LFV - sampling on straightforward on translucent.
#rb none
#prelfight https://horde.devtools.epicgames.com/job/64f9c66e190d96dd29c652fa

[CL 27698199 by sebastien hillaire in ue5-main branch]
2023-09-07 20:36:59 -04:00

60 lines
2.2 KiB
Plaintext

// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================
MobileBasePassCommon.ush: Base pass definitions used by both vertex and pixel shader
=============================================================================*/
#include "BasePassCommon.ush"
#define FogStruct MobileBasePass.Fog
#define PlanarReflectionStruct MobileBasePass.PlanarReflection
#define LFVStruct MobileBasePass
#undef NEEDS_LIGHTMAP_COORDINATE
#define NEEDS_LIGHTMAP_COORDINATE (LQ_TEXTURE_LIGHTMAP)
#define NEEDS_LIGHTMAP (NEEDS_LIGHTMAP_COORDINATE)
#ifndef PROJECT_MOBILE_DISABLE_VERTEX_FOG
#define PROJECT_MOBILE_DISABLE_VERTEX_FOG 0
#endif
// Use vertex fogging for translucency and opaque if project does not use per-pixel fog
// And always use vertex fogging on sky for perf
#define USE_VERTEX_FOG (!PROJECT_MOBILE_DISABLE_VERTEX_FOG || MATERIAL_IS_SKY || (MATERIAL_ENABLE_TRANSLUCENCY_FOGGING && (MATERIALBLENDING_ANY_TRANSLUCENT || MATERIAL_SHADINGMODEL_SINGLELAYERWATER)))
// Local fog volumes are always evaluated per vertex for now, on mobile, it simply follow VertexFog.
#define LOCAL_FOG_VOLUME_ON_TRANSLUCENT (PROJECT_LOCALFOGVOLUME_APPLYONTRANSLUCENT && USE_VERTEX_FOG)
#define PACK_INTERPOLANTS (USE_VERTEX_FOG && NUM_VF_PACKED_INTERPOLANTS > 0 && (ES3_1_PROFILE))
#define LANDSCAPE_BUG_WORKAROUND (IOS && IS_MOBILE_BASEPASS_VERTEX_SHADER && PACK_INTERPOLANTS)
struct FSharedMobileBasePassInterpolants
{
#if USE_VERTEX_FOG && !PACK_INTERPOLANTS
half4 VertexFog : TEXCOORD7;
#endif
float4 PixelPosition : TEXCOORD8; // xyz = world position, w = clip z
#if USE_WORLD_POSITION_EXCLUDING_SHADER_OFFSETS
float3 PixelPositionExcludingWPO : TEXCOORD9;
#endif
#if USE_GLOBAL_CLIP_PLANE
float OutClipDistance : SV_ClipDistance;
#endif
#if MOBILE_MULTI_VIEW
nointerpolation uint MultiViewId : VIEW_ID;
#endif
// Keep this dummy at the bottom of the structure for the DXC compiler
// as it currently uses indexing for interpolator naming. Otherwise
// the VS to PS attribute mapping won't match
#if LANDSCAPE_BUG_WORKAROUND
half4 DummyInterp : DUMMY_INTERP;
#endif
};
#define FMobileBasePassInterpolantsVSToPS FSharedMobileBasePassInterpolants