You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Optionnal outputs are : CustomData, PreshadowFactors and Velocity (when enabled) Controlled by ini file variable : r.SelectiveBasePassOutputs=true #code_review: Brian.Karis [CL 2702718 by Uriel Doyon in Main branch]
81 lines
3.6 KiB
Plaintext
81 lines
3.6 KiB
Plaintext
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
|
|
|
/*=============================================================================
|
|
BasePassCommon.usf: Base pass definitions used by both vertex and pixel shader
|
|
=============================================================================*/
|
|
|
|
#undef NEEDS_LIGHTMAP_COORDINATE
|
|
|
|
#define NEEDS_LIGHTMAP_COORDINATE (HQ_TEXTURE_LIGHTMAP || LQ_TEXTURE_LIGHTMAP)
|
|
// Translucent materials need to compute fogging in the forward shading pass
|
|
// Materials that read from scene color skip getting fogged, because the contents of the scene color lookup have already been fogged
|
|
// This is not foolproof, as any additional color the material adds will then not be fogged correctly
|
|
#define NEEDS_BASEPASS_FOGGING (ENABLE_TRANSLUCENCY_VERTEX_FOG && ((MATERIALBLENDING_TRANSLUCENT || MATERIALBLENDING_ADDITIVE || MATERIALBLENDING_MODULATE) && !MATERIAL_USES_SCENE_COLOR_COPY))
|
|
#define NEEDS_LIGHTMAP (NEEDS_LIGHTMAP_COORDINATE)
|
|
|
|
#define USES_GBUFFER (FEATURE_LEVEL >= FEATURE_LEVEL_SM4 && (MATERIALBLENDING_SOLID || MATERIALBLENDING_MASKED) && !NO_GBUFFER)
|
|
|
|
// Only some shader models actually need custom data.
|
|
#define WRITES_CUSTOMDATA_TO_GBUFFER (USES_GBUFFER && (!SELECTIVE_BASEPASS_OUTPUTS || MATERIAL_SHADINGMODEL_SUBSURFACE || MATERIAL_SHADINGMODEL_PREINTEGRATED_SKIN || MATERIAL_SHADINGMODEL_SUBSURFACE_PROFILE || MATERIAL_SHADINGMODEL_CLEAR_COAT))
|
|
|
|
// Based on GetPrecomputedShadowMasks()
|
|
#define WRITES_PRECSHADOWFACTOR_TO_GBUFFER (USES_GBUFFER && ALLOW_STATIC_LIGHTING && (!SELECTIVE_BASEPASS_OUTPUTS || (STATICLIGHTING_TEXTUREMASK && STATICLIGHTING_SIGNEDDISTANCEFIELD)))
|
|
#define WRITES_PRECSHADOWFACTOR_ZERO (USES_GBUFFER && ALLOW_STATIC_LIGHTING && (!SELECTIVE_BASEPASS_OUTPUTS || HQ_TEXTURE_LIGHTMAP || LQ_TEXTURE_LIGHTMAP))
|
|
|
|
// If a primitive has static lighting, we assume it is not moving. If it is, it will be rerendered in an extra renderpass.
|
|
#define WRITES_VELOCITY_TO_GBUFFER (USES_GBUFFER && OUTPUT_GBUFFER_VELOCITY && (!SELECTIVE_BASEPASS_OUTPUTS || !(STATICLIGHTING_TEXTUREMASK || STATICLIGHTING_SIGNEDDISTANCEFIELD || HQ_TEXTURE_LIGHTMAP || LQ_TEXTURE_LIGHTMAP)))
|
|
|
|
// Use an extra interpolator for position
|
|
#define WRITES_VELOCITY_TO_GBUFFER_USE_POS_INTERPOLATOR (WRITES_VELOCITY_TO_GBUFFER && USING_TESSELLATION)
|
|
|
|
struct FSharedBasePassInterpolants
|
|
{
|
|
//for texture-lightmapped translucency we can pass the vertex fog in its own interpolator
|
|
#if NEEDS_BASEPASS_FOGGING
|
|
float4 VertexFog : TEXCOORD7;
|
|
#endif
|
|
|
|
#if !PC_D3D && !GL4_PROFILE
|
|
// Note: TEXCOORD8 is unused
|
|
|
|
#if USE_WORLD_POSITION_EXCLUDING_SHADER_OFFSETS
|
|
float3 PixelPositionExcludingWPO : TEXCOORD9;
|
|
#endif
|
|
#endif
|
|
|
|
#if WRITES_VELOCITY_TO_GBUFFER
|
|
// .xy is clip position, pre divide by w; .w is clip W; .z is 0 or 1 to mask out the velocity output
|
|
float4 VelocityPrevScreenPosition : VELOCITY_PREV_POS;
|
|
#if WRITES_VELOCITY_TO_GBUFFER_USE_POS_INTERPOLATOR
|
|
float4 VelocityScreenPosition : VELOCITY_POS;
|
|
#endif
|
|
#endif
|
|
};
|
|
|
|
#if PC_D3D || GL4_PROFILE
|
|
|
|
/** Interpolants passed from the vertex shader to the pixel shader. */
|
|
struct FBasePassInterpolantsVSToPS : FSharedBasePassInterpolants
|
|
{
|
|
// Note: TEXCOORD8 is unused
|
|
|
|
#if USE_WORLD_POSITION_EXCLUDING_SHADER_OFFSETS
|
|
float3 PixelPositionExcludingWPO : TEXCOORD9;
|
|
#endif
|
|
};
|
|
|
|
/** Interpolants passed from the vertex shader to the domain shader. */
|
|
struct FBasePassInterpolantsVSToDS : FSharedBasePassInterpolants
|
|
{
|
|
#if USE_WORLD_POSITION_EXCLUDING_SHADER_OFFSETS
|
|
float3 WorldPositionExcludingWPO : TEXCOORD9;
|
|
#endif
|
|
};
|
|
|
|
#else
|
|
|
|
// Only the PC shader compiler supports HLSL inheritance
|
|
#define FBasePassInterpolantsVSToPS FSharedBasePassInterpolants
|
|
|
|
#endif
|