---
title: RenderLights
date: 2023-04-09 10:23:21
excerpt: 
tags: 
rating: ⭐
---
# 关键函数
取得所有ShadowMap的投影信息
```c++
const FVisibleLightInfo& VisibleLightInfo = VisibleLightInfos[LightSceneInfo->Id];  
const TArray<FProjectedShadowInfo*, SceneRenderingAllocator>& ShadowMaps = VisibleLightInfo.ShadowsToProject;  
for (int32 ShadowIndex = 0; ShadowIndex < ShadowMaps.Num(); ShadowIndex++)  
{  
   const FProjectedShadowInfo* ProjectedShadowInfo = ShadowMaps[ShadowIndex];
}
```

# 透明体积图元渲染
## InjectSimpleTranslucencyLightingVolumeArray
插入简单透明体积物体渲染。应该是根据3D贴图渲染体积效果。默认状态下不运行。
- InjectSimpleLightsTranslucentLighting
- InjectSimpleTranslucentLightArray 

## InjectTranslucencyLightingVolume
在收集用于渲染透明体积的灯光代理信息后进行渲染,主要用于云的渲染。
- InjectTranslucencyLightingVolume

# 直接光照
## RenderVirtualShadowMapProjectionMaskBits
- VirtualShadowMapProjectionMaskBits
- VirtualShadowMapProjection(RayCount:%u(%s),SamplesPerRay:%u,Input:%s%s)

输出到名为`Shadow.Virtual.MaskBits`与`Shadow.Virtual.MaskBits(HairStrands)`的UAV。

## AddClusteredDeferredShadingPass

## RenderSimpleLightsStandardDeferred

## RenderLight
针对每个灯在ShadowProjectionOnOpaque渲染ShadowMask
- VirualShadowMapProjection
- CompositeVirtualShadowMapMask