Files
UnrealEngine/Engine/Shaders/Private/Definitions.usf
2025-05-18 13:04:45 +08:00

326 lines
9.3 KiB
HLSL

// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================
Definitions.usf: Defines undefined defines to 0 as Cg can't handle them.
=============================================================================*/
#pragma once
#ifndef MATERIAL_TWOSIDED
#define MATERIAL_TWOSIDED 0
#endif
#ifndef MATERIAL_ISTHINSURFACE
#define MATERIAL_ISTHINSURFACE 0
#endif
#ifndef MATERIAL_TANGENTSPACENORMAL
#define MATERIAL_TANGENTSPACENORMAL 0
#endif
#ifndef MATERIALBLENDING_SOLID
#define MATERIALBLENDING_SOLID 0
#endif
#ifndef MATERIALBLENDING_MASKED
#define MATERIALBLENDING_MASKED 0
#endif
#ifndef MATERIALBLENDING_TRANSLUCENT
#define MATERIALBLENDING_TRANSLUCENT 0
#endif
#ifndef TRANSLUCENT_SHADOW_WITH_MASKED_OPACITY
#define TRANSLUCENT_SHADOW_WITH_MASKED_OPACITY 0
#endif
#ifndef MATERIALBLENDING_ADDITIVE
#define MATERIALBLENDING_ADDITIVE 0
#endif
#ifndef MATERIALBLENDING_MODULATE
#define MATERIALBLENDING_MODULATE 0
#endif
#ifndef MATERIALBLENDING_ALPHACOMPOSITE
#define MATERIALBLENDING_ALPHACOMPOSITE 0
#endif
#ifndef MATERIALBLENDING_ALPHAHOLDOUT
#define MATERIALBLENDING_ALPHAHOLDOUT 0
#endif
#ifndef MATERIAL_IS_SUBSTRATE
#define MATERIAL_IS_SUBSTRATE 0
#endif
#ifndef SUBSTRATE_BLENDING_OPAQUE
#define SUBSTRATE_BLENDING_OPAQUE 0
#endif
#ifndef SUBSTRATE_BLENDING_MASKED
#define SUBSTRATE_BLENDING_MASKED 0
#endif
#ifndef SUBSTRATE_BLENDING_TRANSLUCENT_GREYTRANSMITTANCE
#define SUBSTRATE_BLENDING_TRANSLUCENT_GREYTRANSMITTANCE 0
#endif
#ifndef SUBSTRATE_BLENDING_TRANSLUCENT_COLOREDTRANSMITTANCE
#define SUBSTRATE_BLENDING_TRANSLUCENT_COLOREDTRANSMITTANCE 0
#endif
#ifndef SUBSTRATE_BLENDING_COLOREDTRANSMITTANCEONLY
#define SUBSTRATE_BLENDING_COLOREDTRANSMITTANCEONLY 0
#endif
#ifndef SUBSTRATE_BLENDING_ALPHAHOLDOUT
#define SUBSTRATE_BLENDING_ALPHAHOLDOUT 0
#endif
// We detect the isolated unlit BSDF node case to make sure lots of code is optimised out.
// When unlit is selected as part of the legacy dynamic shading model, the SLAB model is used instead.
#ifndef SUBSTRATE_OPTIMIZED_UNLIT
#define SUBSTRATE_OPTIMIZED_UNLIT 0
#endif
#ifndef SUBSTRATE_MATERIAL_ROUGHNESS_TRACKING
#define SUBSTRATE_MATERIAL_ROUGHNESS_TRACKING 1
#endif
#ifndef SUBSTRATE_NORMAL_QUALITY
#define SUBSTRATE_NORMAL_QUALITY 0
#define SUBSTRATE_TOP_LAYER_TYPE uint
#endif
#ifndef SUBSTRATE_LEGACY_IRIS_NORMAL
#define SUBSTRATE_LEGACY_IRIS_NORMAL 0
#endif
#ifndef SUBSTRATE_LEGACY_IRIS_TANGENT
#define SUBSTRATE_LEGACY_IRIS_TANGENT 0
#endif
#ifndef MATERIAL_SHADINGMODEL_DEFAULT_LIT
#define MATERIAL_SHADINGMODEL_DEFAULT_LIT 0
#endif
#ifndef MATERIAL_SHADINGMODEL_SUBSURFACE
#define MATERIAL_SHADINGMODEL_SUBSURFACE 0
#endif
#ifndef MATERIAL_SHADINGMODEL_PREINTEGRATED_SKIN
#define MATERIAL_SHADINGMODEL_PREINTEGRATED_SKIN 0
#endif
#ifndef MATERIAL_SHADINGMODEL_UNLIT
#define MATERIAL_SHADINGMODEL_UNLIT 0
#endif
#ifndef MATERIAL_SHADINGMODEL_SINGLELAYERWATER
#define MATERIAL_SHADINGMODEL_SINGLELAYERWATER 0
#endif
#ifndef SINGLE_LAYER_WATER_SEPARATED_MAIN_LIGHT
#define SINGLE_LAYER_WATER_SEPARATED_MAIN_LIGHT 0
#endif
#ifndef SINGLE_LAYER_WATER_NO_DISCARD
#define SINGLE_LAYER_WATER_NO_DISCARD 0
#endif
#ifndef MATERIAL_SINGLE_SHADINGMODEL
#define MATERIAL_SINGLE_SHADINGMODEL 0
#endif
#ifndef HAS_PRIMITIVE_UNIFORM_BUFFER
#define HAS_PRIMITIVE_UNIFORM_BUFFER 0
#endif
#ifndef NEEDS_VERTEX_FACTORY_INTERPOLATION
#define NEEDS_VERTEX_FACTORY_INTERPOLATION 0
#endif
// Nanite deferred material shading
#ifndef IS_NANITE_SHADING_PASS
#define IS_NANITE_SHADING_PASS 0
#endif
// Nanite programmable rasterizer
#ifndef IS_NANITE_RASTER_PASS
#define IS_NANITE_RASTER_PASS 0
#endif
#ifndef IS_NANITE_PASS
#define IS_NANITE_PASS (IS_NANITE_SHADING_PASS || IS_NANITE_RASTER_PASS)
#endif
// This is set by the material translator and signifies whether the material is using the DDX or DDY material graph nodes.
// In that case the material shader might want to implement this functionality with analytic derivatives if hardware derivatives are not supported.
#ifndef USES_EXPLICIT_DERIVATIVES
#define USES_EXPLICIT_DERIVATIVES 0
#endif
// Whether USE_ANALYTIC_DERIVATIVES may be enabled when USES_EXPLICIT_DERIVATIVES is true
#ifndef ALLOW_ANALYTIC_DERIVATIVES
#define ALLOW_ANALYTIC_DERIVATIVES 0
#endif
// Whether to use analytic derivatives
#ifndef USE_ANALYTIC_DERIVATIVES
#define USE_ANALYTIC_DERIVATIVES (ALLOW_ANALYTIC_DERIVATIVES && USES_EXPLICIT_DERIVATIVES)
#endif
#ifndef GBUFFER_HAS_VELOCITY
#define GBUFFER_HAS_VELOCITY 0
#endif
#define PC_D3D (SM6_PROFILE || SM5_PROFILE)
#ifndef NEEDS_LIGHTMAP_COORDINATE
#define NEEDS_LIGHTMAP_COORDINATE 0
#endif
#ifndef LANDSCAPE_XYOFFSET
#define LANDSCAPE_XYOFFSET 0
#endif
#ifndef MATERIAL_SKY_ATMOSPHERE
#define MATERIAL_SKY_ATMOSPHERE 0
#endif
#ifndef BASEPASS_SKYATMOSPHERE_AERIALPERSPECTIVE
#define BASEPASS_SKYATMOSPHERE_AERIALPERSPECTIVE 0
#endif
#ifndef NUM_VF_PACKED_INTERPOLANTS
#define NUM_VF_PACKED_INTERPOLANTS 0
#endif
#ifndef REVERSEBITS
#define REVERSEBITS reversebits
#endif
#ifndef INSTANCED_STEREO
#define INSTANCED_STEREO 0
#endif
#ifndef MULTI_VIEW
#define MULTI_VIEW 0
#endif
#ifndef CLEAR_COAT_BOTTOM_NORMAL
#define CLEAR_COAT_BOTTOM_NORMAL 0
#endif
#ifndef IRIS_NORMAL
#define IRIS_NORMAL 0
#endif
#ifndef TEX_COORD_SCALE_ANALYSIS
#define TEX_COORD_SCALE_ANALYSIS 0
#endif
#ifndef LIGHTMAP_VT_ENABLED
#define LIGHTMAP_VT_ENABLED 0
#endif
#define NOEXPRESSIONOPTIMIZATIONS
#ifndef HAS_INVERTED_Z_BUFFER
#define HAS_INVERTED_Z_BUFFER 1
#endif
/** When defined sets the layer index for volumetric rendering in the vertex shader, rather than using a geometry shader */
#ifndef USING_VERTEX_SHADER_LAYER
#define USING_VERTEX_SHADER_LAYER 0
#endif
#ifndef DISABLE_FORWARD_LOCAL_LIGHTS
#define DISABLE_FORWARD_LOCAL_LIGHTS 0
#endif
// 0: Full quality, 1: mobile shading, sampling underwater depth from a texture 2: mobile shading, sampling underwater depth from the depth buffer
#ifndef SINGLE_LAYER_WATER_SHADING_QUALITY
#define SINGLE_LAYER_WATER_SHADING_QUALITY 0
#endif
#ifndef CLOUD_LAYER_PIXEL_SHADER
#define CLOUD_LAYER_PIXEL_SHADER 0
#endif
#ifndef SUPPORTS_ANISOTROPIC_MATERIALS
#define SUPPORTS_ANISOTROPIC_MATERIALS 0
#endif
#ifndef FORCE_MATERIAL_FLOAT_FULL_PRECISION
#define FORCE_MATERIAL_FLOAT_FULL_PRECISION 0
#endif
#ifndef SUPPORT_FIRST_PERSON_RENDERING
#define SUPPORT_FIRST_PERSON_RENDERING 1
#endif
///////////////////////////////////////////////////////////////////////////////
// Global Substrate material export related defines
#ifndef SUBSTRATE_MATERIAL_EXPORT_TYPE
#define SUBSTRATE_MATERIAL_EXPORT_TYPE 0
#endif
#ifndef SUBSTRATE_MATERIAL_EXPORT_CONTEXT
#define SUBSTRATE_MATERIAL_EXPORT_CONTEXT 0
#endif
#ifndef SUBSTRATE_MATERIAL_EXPORT_LEGACY_BLEND_MODE
#define SUBSTRATE_MATERIAL_EXPORT_LEGACY_BLEND_MODE 0
#endif
#ifndef SUBSTRATE_USE_FULLYSIMPLIFIED_MATERIAL
#define SUBSTRATE_USE_FULLYSIMPLIFIED_MATERIAL 0
#endif
#if (SUBSTRATE_MATERIAL_EXPORT_TYPE > 0)
// When exporting any material properties or when using the blendable GBuffer, we always use the fully simplified Substrate materials.
#undef SUBSTRATE_USE_FULLYSIMPLIFIED_MATERIAL
#define SUBSTRATE_USE_FULLYSIMPLIFIED_MATERIAL 1
#endif
// Those define usage should match the meaning of ESubstrateMaterialExport enum from MaterialCompiler.h
#define SUBSTRATE_MATERIAL_EXPORT_NONE 0
#define SUBSTRATE_MATERIAL_EXPORT_BASE_COLOR_POST_COVERAGE 1
#define SUBSTRATE_MATERIAL_EXPORT_BASE_COLOR 2
#define SUBSTRATE_MATERIAL_EXPORT_NORMAL 3
#define SUBSTRATE_MATERIAL_EXPORT_EMISSIVE 4
#define SUBSTRATE_MATERIAL_EXPORT_SPECULAR 5
#define SUBSTRATE_MATERIAL_EXPORT_ROUGHNESS 6
#define SUBSTRATE_MATERIAL_EXPORT_ANISOTROPY 7
#define SUBSTRATE_MATERIAL_EXPORT_METALLIC 8
#define SUBSTRATE_MATERIAL_EXPORT_TRANSMITTANCE 9
#define SUBSTRATE_MATERIAL_EXPORT_OPACITY 10
#define SUBSTRATE_MATERIAL_EXPORT_OPACITYMASK 11
#define SUBSTRATE_MATERIAL_EXPORT_CUSTOMDATA0 12
#define SUBSTRATE_MATERIAL_EXPORT_CUSTOMDATA1 13
#define SUBSTRATE_MATERIAL_EXPORT_SUBSURFACECOLOR 14
#define SUBSTRATE_MATERIAL_EXPORT_TANGENT 15
#define SUBSTRATE_MATERIAL_EXPORT_SHADINGMODEL 16
#define SUBSTRATE_MATERIAL_EXPORT_MATERIAL_PREVIEW 17
#define SUBSTRATE_MATERIAL_EXPORT_CONTEXT_OPAQUE 0
#define SUBSTRATE_MATERIAL_EXPORT_CONTEXT_TRANSLUCENT 1
#define SUBSTRATE_MATERIAL_EXPORT_LEGACY_BLEND_OPAQUE 0
#define SUBSTRATE_MATERIAL_EXPORT_LEGACY_BLEND_MASKED 1
#define SUBSTRATE_MATERIAL_EXPORT_LEGACY_BLEND_TRANSLUCENT 2
#define SUBSTRATE_MATERIAL_EXPORT_LEGACY_BLEND_ADDITIVE 3
#define SUBSTRATE_MATERIAL_EXPORT_LEGACY_BLEND_MODULATE 4
#define SUBSTRATE_MATERIAL_EXPORT_LEGACY_BLEND_ALPHACOMPOSITE 5
#define SUBSTRATE_MATERIAL_EXPORT_LEGACY_BLEND_ALPHAHOLDOUT 6
#define SUBSTRATE_MATERIAL_EXPORT_EXECUTED (SUBSTRATE_MATERIAL_EXPORT_TYPE > 0)
#define SUBSTRATE_MATERIAL_EXPORT_FROM_OPAQUE (SUBSTRATE_MATERIAL_EXPORT_EXECUTED && (SUBSTRATE_MATERIAL_EXPORT_CONTEXT == SUBSTRATE_MATERIAL_EXPORT_CONTEXT_OPAQUE))
#define SUBSTRATE_MATERIAL_EXPORT_FROM_TRANSLUCENT (SUBSTRATE_MATERIAL_EXPORT_EXECUTED && (SUBSTRATE_MATERIAL_EXPORT_CONTEXT == SUBSTRATE_MATERIAL_EXPORT_CONTEXT_TRANSLUCENT))