UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SubsurfaceProfile.cpp File Reference

Classes

class  FSSProfilePreIntegratedPS
 

Namespaces

namespace  SubsurfaceProfile
 

Macros

#define SSSS_TINT_SCALE_OFFSET   0
 
#define BSSS_SURFACEALBEDO_OFFSET   (SSSS_TINT_SCALE_OFFSET+1)
 
#define BSSS_DMFP_OFFSET   (BSSS_SURFACEALBEDO_OFFSET+1)
 
#define SSSS_TRANSMISSION_OFFSET   (BSSS_DMFP_OFFSET+1)
 
#define SSSS_BOUNDARY_COLOR_BLEED_OFFSET   (SSSS_TRANSMISSION_OFFSET+1)
 
#define SSSS_DUAL_SPECULAR_OFFSET   (SSSS_BOUNDARY_COLOR_BLEED_OFFSET+1)
 
#define SSSS_KERNEL0_OFFSET   (SSSS_DUAL_SPECULAR_OFFSET+1)
 
#define SSSS_KERNEL0_SIZE   13
 
#define SSSS_KERNEL1_OFFSET   (SSSS_KERNEL0_OFFSET + SSSS_KERNEL0_SIZE)
 
#define SSSS_KERNEL1_SIZE   9
 
#define SSSS_KERNEL2_OFFSET   (SSSS_KERNEL1_OFFSET + SSSS_KERNEL1_SIZE)
 
#define SSSS_KERNEL2_SIZE   6
 
#define SSSS_KERNEL_TOTAL_SIZE   (SSSS_KERNEL0_SIZE + SSSS_KERNEL1_SIZE + SSSS_KERNEL2_SIZE)
 
#define BSSS_TRANSMISSION_PROFILE_OFFSET   (SSSS_KERNEL0_OFFSET + SSSS_KERNEL_TOTAL_SIZE)
 
#define BSSS_TRANSMISSION_PROFILE_SIZE   32
 
#define SSSS_MAX_TRANSMISSION_PROFILE_DISTANCE   5.0f
 
#define SSSS_MAX_DUAL_SPECULAR_ROUGHNESS   2.0f
 
#define SSS_TYPE_BURLEY   0
 
#define SSS_TYPE_SSSS   1
 
#define ENC_WORLDUNITSCALE_IN_CM_TO_UNIT   0.02f
 
#define DEC_UNIT_TO_WORLDUNITSCALE_IN_CM   1/ENC_WORLDUNITSCALE_IN_CM_TO_UNIT
 
#define ENC_DIFFUSEMEANFREEPATH_IN_MM_TO_UNIT   (0.01f*0.2f)
 
#define DEC_UNIT_TO_DIFFUSEMEANFREEPATH_IN_MM   1/ENC_DIFFUSEMEANFREEPATH_IN_MM_TO_UNIT
 
#define ENC_EXTINCTIONSCALE_FACTOR   0.01f
 
#define DEC_EXTINCTIONSCALE_FACTOR   1/ENC_EXTINCTIONSCALE_FACTOR
 

Functions

 DEFINE_LOG_CATEGORY_STATIC (LogSubsurfaceProfile, Log, All)
 
void ConvertSubsurfaceParametersFromSeparableToBurley (const FSubsurfaceProfileStruct &Settings, FLinearColor &SurfaceAlbedo, FLinearColor &MeanFreePathColor, float &MeanFreePathDistance)
 
void UpgradeSeparableToBurley (FSubsurfaceProfileStruct &Settings)
 
void UpgradeDiffuseMeanFreePathToMeanFreePath (FSubsurfaceProfileStruct &Settings)
 
void UpgradeSubsurfaceProfileParameters (FSubsurfaceProfileStruct &Settings)
 
 IMPLEMENT_GLOBAL_SHADER (FSSProfilePreIntegratedPS, "/Engine/Private/SSProfilePreIntegratedMobile.usf", "SSProfilePreIntegratedPS", SF_Pixel)
 
float EncodeWorldUnitScale (float WorldUnitScale)
 
float DecodeWorldUnitScale (float EncodedWorldUnitScale)
 
FLinearColor EncodeDiffuseMeanFreePath (FLinearColor DiffuseMeanFreePath)
 
FLinearColor DecodeDiffuseMeanFreePath (FLinearColor EncodedDiffuseMeanFreePath)
 
float EncodeScatteringDistribution (float ScatteringDistribution)
 
float DecodeScatteringDistribution (float ScatteringDistribution)
 
float EncodeExtinctionScale (float ExtinctionScale)
 
float DecodeExtinctionScale (float ExtinctionScale)
 
void SetupSurfaceAlbedoAndDiffuseMeanFreePath (FLinearColor &SurfaceAlbedo, FLinearColor &Dmfp)
 
float Sqrt2 (float X)
 
float Pow4 (float X)
 
TCHAR MiniFontCharFromIndex (uint32 Index)
 
FName GetSubsurfaceProfileParameterName ()
 
FName CreateSubsurfaceProfileParameterName (const USubsurfaceProfile *InProfile)
 
float GetSubsurfaceProfileId (const USubsurfaceProfile *In)
 
FRHITextureGetSubsurfaceProfileTexture ()
 
FRHITextureGetSubsurfaceProfileTextureWithFallback ()
 
FRHITextureGetSSProfilesPreIntegratedTextureWithFallback ()
 
void UpdateSubsurfaceProfileTexture (FRDGBuilder &GraphBuilder, EShaderPlatform ShaderPlatform)
 
ENGINE_API FName SubsurfaceProfile::GetSubsurfaceProfileParameterName ()
 
ENGINE_API FName SubsurfaceProfile::CreateSubsurfaceProfileParameterName (const USubsurfaceProfile *InProfile)
 
ENGINE_API float SubsurfaceProfile::GetSubsurfaceProfileId (const USubsurfaceProfile *In)
 
ENGINE_API FRHITextureSubsurfaceProfile::GetSubsurfaceProfileTexture ()
 
ENGINE_API FRHITextureSubsurfaceProfile::GetSubsurfaceProfileTextureWithFallback ()
 
ENGINE_API FRHITextureSubsurfaceProfile::GetSSProfilesPreIntegratedTextureWithFallback ()
 
ENGINE_API void SubsurfaceProfile::UpdateSubsurfaceProfileTexture (class FRDGBuilder &GraphBuilder, EShaderPlatform ShaderPlatform)
 

Variables

ENGINE_API TGlobalResource< FSubsurfaceProfileTextureGSubsurfaceProfileTextureObject
 
const float Dmfp2MfpMagicNumber = 0.6f
 

Macro Definition Documentation

◆ BSSS_DMFP_OFFSET

#define BSSS_DMFP_OFFSET   (BSSS_SURFACEALBEDO_OFFSET+1)

◆ BSSS_SURFACEALBEDO_OFFSET

#define BSSS_SURFACEALBEDO_OFFSET   (SSSS_TINT_SCALE_OFFSET+1)

◆ BSSS_TRANSMISSION_PROFILE_OFFSET

#define BSSS_TRANSMISSION_PROFILE_OFFSET   (SSSS_KERNEL0_OFFSET + SSSS_KERNEL_TOTAL_SIZE)

◆ BSSS_TRANSMISSION_PROFILE_SIZE

#define BSSS_TRANSMISSION_PROFILE_SIZE   32

◆ DEC_EXTINCTIONSCALE_FACTOR

#define DEC_EXTINCTIONSCALE_FACTOR   1/ENC_EXTINCTIONSCALE_FACTOR

◆ DEC_UNIT_TO_DIFFUSEMEANFREEPATH_IN_MM

#define DEC_UNIT_TO_DIFFUSEMEANFREEPATH_IN_MM   1/ENC_DIFFUSEMEANFREEPATH_IN_MM_TO_UNIT

◆ DEC_UNIT_TO_WORLDUNITSCALE_IN_CM

#define DEC_UNIT_TO_WORLDUNITSCALE_IN_CM   1/ENC_WORLDUNITSCALE_IN_CM_TO_UNIT

◆ ENC_DIFFUSEMEANFREEPATH_IN_MM_TO_UNIT

#define ENC_DIFFUSEMEANFREEPATH_IN_MM_TO_UNIT   (0.01f*0.2f)

◆ ENC_EXTINCTIONSCALE_FACTOR

#define ENC_EXTINCTIONSCALE_FACTOR   0.01f

◆ ENC_WORLDUNITSCALE_IN_CM_TO_UNIT

#define ENC_WORLDUNITSCALE_IN_CM_TO_UNIT   0.02f

◆ SSS_TYPE_BURLEY

#define SSS_TYPE_BURLEY   0

◆ SSS_TYPE_SSSS

#define SSS_TYPE_SSSS   1

◆ SSSS_BOUNDARY_COLOR_BLEED_OFFSET

#define SSSS_BOUNDARY_COLOR_BLEED_OFFSET   (SSSS_TRANSMISSION_OFFSET+1)

◆ SSSS_DUAL_SPECULAR_OFFSET

#define SSSS_DUAL_SPECULAR_OFFSET   (SSSS_BOUNDARY_COLOR_BLEED_OFFSET+1)

◆ SSSS_KERNEL0_OFFSET

#define SSSS_KERNEL0_OFFSET   (SSSS_DUAL_SPECULAR_OFFSET+1)

◆ SSSS_KERNEL0_SIZE

#define SSSS_KERNEL0_SIZE   13

◆ SSSS_KERNEL1_OFFSET

#define SSSS_KERNEL1_OFFSET   (SSSS_KERNEL0_OFFSET + SSSS_KERNEL0_SIZE)

◆ SSSS_KERNEL1_SIZE

#define SSSS_KERNEL1_SIZE   9

◆ SSSS_KERNEL2_OFFSET

#define SSSS_KERNEL2_OFFSET   (SSSS_KERNEL1_OFFSET + SSSS_KERNEL1_SIZE)

◆ SSSS_KERNEL2_SIZE

#define SSSS_KERNEL2_SIZE   6

◆ SSSS_KERNEL_TOTAL_SIZE

#define SSSS_KERNEL_TOTAL_SIZE   (SSSS_KERNEL0_SIZE + SSSS_KERNEL1_SIZE + SSSS_KERNEL2_SIZE)

◆ SSSS_MAX_DUAL_SPECULAR_ROUGHNESS

#define SSSS_MAX_DUAL_SPECULAR_ROUGHNESS   2.0f

◆ SSSS_MAX_TRANSMISSION_PROFILE_DISTANCE

#define SSSS_MAX_TRANSMISSION_PROFILE_DISTANCE   5.0f

◆ SSSS_TINT_SCALE_OFFSET

#define SSSS_TINT_SCALE_OFFSET   0

◆ SSSS_TRANSMISSION_OFFSET

#define SSSS_TRANSMISSION_OFFSET   (BSSS_DMFP_OFFSET+1)

Function Documentation

◆ ConvertSubsurfaceParametersFromSeparableToBurley()

void ConvertSubsurfaceParametersFromSeparableToBurley ( const FSubsurfaceProfileStruct Settings,
FLinearColor SurfaceAlbedo,
FLinearColor MeanFreePathColor,
float MeanFreePathDistance 
)

◆ CreateSubsurfaceProfileParameterName()

FName CreateSubsurfaceProfileParameterName ( const USubsurfaceProfile InProfile)

◆ DecodeDiffuseMeanFreePath()

FLinearColor DecodeDiffuseMeanFreePath ( FLinearColor  EncodedDiffuseMeanFreePath)

◆ DecodeExtinctionScale()

float DecodeExtinctionScale ( float  ExtinctionScale)

◆ DecodeScatteringDistribution()

float DecodeScatteringDistribution ( float  ScatteringDistribution)

◆ DecodeWorldUnitScale()

float DecodeWorldUnitScale ( float  EncodedWorldUnitScale)

◆ DEFINE_LOG_CATEGORY_STATIC()

DEFINE_LOG_CATEGORY_STATIC ( LogSubsurfaceProfile  ,
Log  ,
All   
)

◆ EncodeDiffuseMeanFreePath()

FLinearColor EncodeDiffuseMeanFreePath ( FLinearColor  DiffuseMeanFreePath)

◆ EncodeExtinctionScale()

float EncodeExtinctionScale ( float  ExtinctionScale)

◆ EncodeScatteringDistribution()

float EncodeScatteringDistribution ( float  ScatteringDistribution)

◆ EncodeWorldUnitScale()

float EncodeWorldUnitScale ( float  WorldUnitScale)

◆ GetSSProfilesPreIntegratedTextureWithFallback()

FRHITexture * GetSSProfilesPreIntegratedTextureWithFallback ( )

◆ GetSubsurfaceProfileId()

float GetSubsurfaceProfileId ( const USubsurfaceProfile In)

◆ GetSubsurfaceProfileParameterName()

FName GetSubsurfaceProfileParameterName ( )

◆ GetSubsurfaceProfileTexture()

FRHITexture * GetSubsurfaceProfileTexture ( )

◆ GetSubsurfaceProfileTextureWithFallback()

FRHITexture * GetSubsurfaceProfileTextureWithFallback ( )

◆ IMPLEMENT_GLOBAL_SHADER()

IMPLEMENT_GLOBAL_SHADER ( FSSProfilePreIntegratedPS  ,
"/Engine/Private/SSProfilePreIntegratedMobile.usf"  ,
"SSProfilePreIntegratedPS"  ,
SF_Pixel   
)

◆ MiniFontCharFromIndex()

TCHAR MiniFontCharFromIndex ( uint32  Index)

◆ Pow4()

float Pow4 ( float  X)

◆ SetupSurfaceAlbedoAndDiffuseMeanFreePath()

void SetupSurfaceAlbedoAndDiffuseMeanFreePath ( FLinearColor SurfaceAlbedo,
FLinearColor Dmfp 
)

◆ Sqrt2()

float Sqrt2 ( float  X)

◆ UpdateSubsurfaceProfileTexture()

void UpdateSubsurfaceProfileTexture ( FRDGBuilder GraphBuilder,
EShaderPlatform  ShaderPlatform 
)

◆ UpgradeDiffuseMeanFreePathToMeanFreePath()

void UpgradeDiffuseMeanFreePathToMeanFreePath ( FSubsurfaceProfileStruct Settings)

◆ UpgradeSeparableToBurley()

void UpgradeSeparableToBurley ( FSubsurfaceProfileStruct Settings)

◆ UpgradeSubsurfaceProfileParameters()

void UpgradeSubsurfaceProfileParameters ( FSubsurfaceProfileStruct Settings)

Variable Documentation

◆ Dmfp2MfpMagicNumber

const float Dmfp2MfpMagicNumber = 0.6f

◆ GSubsurfaceProfileTextureObject

ENGINE_API TGlobalResource<FSubsurfaceProfileTexture> GSubsurfaceProfileTextureObject