UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
HeterogeneousVolumes.cpp File Reference
#include "HeterogeneousVolumes.h"
#include "HeterogeneousVolumeInterface.h"
#include "PixelShaderUtils.h"
#include "PostProcess/PostProcessing.h"
#include "RayTracingDefinitions.h"
#include "RayTracingInstance.h"
#include "RayTracingInstanceBufferUtil.h"
#include "RendererPrivate.h"
#include "ScenePrivate.h"
#include "PrimitiveDrawingUtils.h"

Classes

class  FHeterogeneousVolumesUpsampleCS
 
class  FHeterogeneousVolumesFilterCS
 
class  FHeterogeneousVolumesCompositeCS
 

Namespaces

namespace  HeterogeneousVolumes
 

Functions

 DECLARE_GPU_STAT_NAMED (HeterogeneousVolumeShadowsStat, TEXT("HeterogeneousVolumeShadows"))
 
 DECLARE_GPU_STAT_NAMED (HeterogeneousVolumesStat, TEXT("HeterogeneousVolumes"))
 
bool ShouldHeterogeneousVolumesCastShadows ()
 
bool ShouldCompositeHeterogeneousVolumesWithTranslucency ()
 
EShadowType HeterogeneousVolumes::GetShadowType ()
 
EShadowType HeterogeneousVolumes::GetTranslucencyCompositingMode ()
 
EHeterogeneousVolumesCompositionType GetHeterogeneousVolumesCompositionType ()
 
EHeterogeneousVolumesCompositionType GetHeterogeneousVolumesComposition ()
 
bool ShouldRenderHeterogeneousVolumes (const FScene *Scene)
 
bool ShouldRenderHeterogeneousVolumesForAnyView (const TArrayView< FViewInfo > &Views)
 
bool ShouldRenderHeterogeneousVolumesForView (const FViewInfo &View)
 
int32 GetPrimaryViewIndex (const TArrayView< FViewInfo > &Views)
 
FViewInfoGetPrimaryViewForView (const TArrayView< FViewInfo > &Views, int32 ViewIndex)
 
bool ShouldRenderHeterogeneousVolumesForView (const TArrayView< FViewInfo > &Views, int32 ViewIndex)
 
TArray< FVolumetricMeshBatch, SceneRenderingAllocatorGetHeterogeneousVolumesMeshBatches (const TArrayView< FViewInfo > &Views, int32 ViewIndex)
 
bool ShouldRenderHeterogeneousVolumesAsHoldoutForView (const FViewInfo &View)
 
bool DoesMaterialShaderSupportHeterogeneousVolumes (const FMaterialShaderParameters &MaterialShaderParameters)
 
bool DoesMaterialShaderSupportHeterogeneousVolumes (const FMaterial &Material)
 
bool ShouldRenderMeshBatchWithHeterogeneousVolumes (const FMeshBatch *Mesh, const FPrimitiveSceneProxy *Proxy, ERHIFeatureLevel::Type FeatureLevel)
 
int32 HeterogeneousVolumes::GetDownsampleFactor ()
 
int32 HeterogeneousVolumes::GetUpsampleMode ()
 
int32 HeterogeneousVolumes::GetFilterMode ()
 
int32 HeterogeneousVolumes::GetFilterWidth ()
 
FIntPoint HeterogeneousVolumes::GetDownsampledResolution (FIntPoint Resolution, int32 DownsampleFactor)
 
FIntPoint HeterogeneousVolumes::GetScaledViewRect (FIntRect ViewRect)
 
FIntVector HeterogeneousVolumes::GetVolumeResolution (const IHeterogeneousVolumeInterface *Interface)
 
float HeterogeneousVolumes::GetShadowStepSize ()
 
float HeterogeneousVolumes::GetMaxTraceDistance ()
 
float HeterogeneousVolumes::GetMaxShadowTraceDistance ()
 
float HeterogeneousVolumes::GetStepSize ()
 
float HeterogeneousVolumes::GetMaxStepCount ()
 
int32 HeterogeneousVolumes::GetMipLevel ()
 
uint32 HeterogeneousVolumes::GetSparseVoxelMipBias ()
 
int32 HeterogeneousVolumes::GetDebugMode ()
 
EShadowPipeline HeterogeneousVolumes::GetShadowPipeline ()
 
EStochasticFilteringMode HeterogeneousVolumes::GetStochasticFilteringMode ()
 
bool HeterogeneousVolumes::UseSparseVoxelPipeline ()
 
bool HeterogeneousVolumes::ShouldRefineSparseVoxels ()
 
bool HeterogeneousVolumes::UseSparseVoxelPerTileCulling ()
 
int32 HeterogeneousVolumes::GetLightingCacheMode ()
 
bool HeterogeneousVolumes::UseAdaptiveVolumetricShadowMapForSelfShadowing (const FPrimitiveSceneProxy *PrimitiveSceneProxy)
 
bool HeterogeneousVolumes::UseLightingCacheForInscattering ()
 
bool HeterogeneousVolumes::UseLightingCacheForTransmittance ()
 
bool HeterogeneousVolumes::ShouldJitter ()
 
bool HeterogeneousVolumes::UseHardwareRayTracing ()
 
bool HeterogeneousVolumes::UseIndirectLighting ()
 
float HeterogeneousVolumes::GetIndirectLightingFactor ()
 
EIndirectLightingMode HeterogeneousVolumes::GetIndirectLightingMode ()
 
bool HeterogeneousVolumes::ShouldDepthSort ()
 
bool HeterogeneousVolumes::ShouldApplyHeightFog ()
 
bool HeterogeneousVolumes::ShouldApplyVolumetricFog ()
 
EFogMode HeterogeneousVolumes::GetFogInscatteringMode ()
 
bool HeterogeneousVolumes::UseAnalyticDerivatives ()
 
bool HeterogeneousVolumes::ShouldWriteVelocity ()
 
bool HeterogeneousVolumes::UseContinuousLOD ()
 
float HeterogeneousVolumes::GetCLODBias ()
 
int HeterogeneousVolumes::GetVoxelCount (FIntVector VolumeResolution)
 
int HeterogeneousVolumes::GetVoxelCount (const FRDGTextureDesc &TextureDesc)
 
FIntVector HeterogeneousVolumes::GetMipVolumeResolution (FIntVector VolumeResolution, uint32 MipLevel)
 
float HeterogeneousVolumes::CalcLODBias (const IHeterogeneousVolumeInterface *HeterogeneousVolume)
 
FLODValue HeterogeneousVolumes::CalcLOD (const HeterogeneousVolumes::FLODInfo &LODInfo, const IHeterogeneousVolumeInterface *HeterogeneousVolume)
 
FLODValue HeterogeneousVolumes::CalcLOD (const FSceneView &View, const IHeterogeneousVolumeInterface *HeterogeneousVolume)
 
float HeterogeneousVolumes::CalcLODFactor (float LODValue, float LODBias)
 
float HeterogeneousVolumes::CalcLODFactor (const HeterogeneousVolumes::FLODInfo &LODInfo, const IHeterogeneousVolumeInterface *HeterogeneousVolume)
 
float HeterogeneousVolumes::CalcLODFactor (const FSceneView &View, const IHeterogeneousVolumeInterface *HeterogeneousVolume)
 
FIntVector HeterogeneousVolumes::GetLightingCacheResolution (const IHeterogeneousVolumeInterface *RenderInterface, FLODValue LODValue)
 
bool HeterogeneousVolumes::IsHoldout (const IHeterogeneousVolumeInterface *HeterogeneousVolumeInterface)
 
bool ShouldBuildVoxelGrids (const FScene *Scene)
 
bool ShouldCacheVoxelGrids (const FScene *Scene, FSceneViewState *ViewState)
 
 DECLARE_CYCLE_STAT (TEXT("Heterogeneous Volumes Render"), STATGROUP_HeterogeneousVolumesRender, STATGROUP_HeterogeneousVolumesRT)
 
void RenderHeterogeneousVolumeShadows (FRDGBuilder &GraphBuilder, FScene *Scene, const FSceneTextures &SceneTextures, FViewInfo &View, TArray< FVisibleLightInfo, SceneRenderingAllocator > &VisibleLightInfos)
 
 IMPLEMENT_GLOBAL_SHADER (FHeterogeneousVolumesUpsampleCS, "/Engine/Private/HeterogeneousVolumes/HeterogeneousVolumesComposite.usf", "HeterogeneousVolumesUpsampleCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FHeterogeneousVolumesFilterCS, "/Engine/Private/HeterogeneousVolumes/HeterogeneousVolumesComposite.usf", "HeterogeneousVolumesFilterCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FHeterogeneousVolumesCompositeCS, "/Engine/Private/HeterogeneousVolumes/HeterogeneousVolumesComposite.usf", "HeterogeneousVolumesCompositeCS", SF_Compute)
 
void HeterogeneousVolumes::PostRender (FScene &Scene, TArray< FViewInfo > &Views)
 

Function Documentation

◆ DECLARE_CYCLE_STAT()

DECLARE_CYCLE_STAT ( TEXT("Heterogeneous Volumes Render" ,
STATGROUP_HeterogeneousVolumesRender  ,
STATGROUP_HeterogeneousVolumesRT   
)

◆ DECLARE_GPU_STAT_NAMED() [1/2]

DECLARE_GPU_STAT_NAMED ( HeterogeneousVolumeShadowsStat  ,
TEXT("HeterogeneousVolumeShadows")   
)

◆ DECLARE_GPU_STAT_NAMED() [2/2]

DECLARE_GPU_STAT_NAMED ( HeterogeneousVolumesStat  ,
TEXT("HeterogeneousVolumes")   
)

◆ DoesMaterialShaderSupportHeterogeneousVolumes() [1/2]

bool DoesMaterialShaderSupportHeterogeneousVolumes ( const FMaterial Material)

◆ DoesMaterialShaderSupportHeterogeneousVolumes() [2/2]

bool DoesMaterialShaderSupportHeterogeneousVolumes ( const FMaterialShaderParameters MaterialShaderParameters)

◆ GetHeterogeneousVolumesComposition()

EHeterogeneousVolumesCompositionType GetHeterogeneousVolumesComposition ( )

◆ GetHeterogeneousVolumesCompositionType()

EHeterogeneousVolumesCompositionType GetHeterogeneousVolumesCompositionType ( )

◆ GetHeterogeneousVolumesMeshBatches()

TArray< FVolumetricMeshBatch, SceneRenderingAllocator > GetHeterogeneousVolumesMeshBatches ( const TArrayView< FViewInfo > &  Views,
int32  ViewIndex 
)

◆ GetPrimaryViewForView()

FViewInfo * GetPrimaryViewForView ( const TArrayView< FViewInfo > &  Views,
int32  ViewIndex 
)

◆ GetPrimaryViewIndex()

int32 GetPrimaryViewIndex ( const TArrayView< FViewInfo > &  Views)

◆ IMPLEMENT_GLOBAL_SHADER() [1/3]

IMPLEMENT_GLOBAL_SHADER ( FHeterogeneousVolumesCompositeCS  ,
"/Engine/Private/HeterogeneousVolumes/HeterogeneousVolumesComposite.usf"  ,
"HeterogeneousVolumesCompositeCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [2/3]

IMPLEMENT_GLOBAL_SHADER ( FHeterogeneousVolumesFilterCS  ,
"/Engine/Private/HeterogeneousVolumes/HeterogeneousVolumesComposite.usf"  ,
"HeterogeneousVolumesFilterCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [3/3]

IMPLEMENT_GLOBAL_SHADER ( FHeterogeneousVolumesUpsampleCS  ,
"/Engine/Private/HeterogeneousVolumes/HeterogeneousVolumesComposite.usf"  ,
"HeterogeneousVolumesUpsampleCS"  ,
SF_Compute   
)

◆ RenderHeterogeneousVolumeShadows()

void RenderHeterogeneousVolumeShadows ( FRDGBuilder GraphBuilder,
FScene Scene,
const FSceneTextures SceneTextures,
FViewInfo View,
TArray< FVisibleLightInfo, SceneRenderingAllocator > &  VisibleLightInfos 
)

◆ ShouldBuildVoxelGrids()

bool ShouldBuildVoxelGrids ( const FScene Scene)

◆ ShouldCacheVoxelGrids()

bool ShouldCacheVoxelGrids ( const FScene Scene,
FSceneViewState ViewState 
)

◆ ShouldCompositeHeterogeneousVolumesWithTranslucency()

bool ShouldCompositeHeterogeneousVolumesWithTranslucency ( )

◆ ShouldHeterogeneousVolumesCastShadows()

bool ShouldHeterogeneousVolumesCastShadows ( )

◆ ShouldRenderHeterogeneousVolumes()

bool ShouldRenderHeterogeneousVolumes ( const FScene Scene)

◆ ShouldRenderHeterogeneousVolumesAsHoldoutForView()

bool ShouldRenderHeterogeneousVolumesAsHoldoutForView ( const FViewInfo View)

◆ ShouldRenderHeterogeneousVolumesForAnyView()

bool ShouldRenderHeterogeneousVolumesForAnyView ( const TArrayView< FViewInfo > &  Views)

◆ ShouldRenderHeterogeneousVolumesForView() [1/2]

bool ShouldRenderHeterogeneousVolumesForView ( const FViewInfo View)

◆ ShouldRenderHeterogeneousVolumesForView() [2/2]

bool ShouldRenderHeterogeneousVolumesForView ( const TArrayView< FViewInfo > &  Views,
int32  ViewIndex 
)

◆ ShouldRenderMeshBatchWithHeterogeneousVolumes()

bool ShouldRenderMeshBatchWithHeterogeneousVolumes ( const FMeshBatch Mesh,
const FPrimitiveSceneProxy Proxy,
ERHIFeatureLevel::Type  FeatureLevel 
)