来自多个光源的阴影 (DX11)

Shadows from multiple light sources (DX11)

本文关键字:阴影 DX11 光源      更新时间:2023-10-16

我目前正在尝试扩展我当前的基本阴影映射系统,以允许对象从多个光源投射阴影。目前,我已经正确生成了两个阴影贴图,但问题是将它们都渲染在场景中。

我的绘制函数目前是这样的:

for (int iLight = 0; iLight < mNumLights; iLight++)
{
    mShadowMap[iLight]->SetNullRenderTarget(md3dImmediateContext);
    DrawSceneToShadowMap(iLight);
    RestoreRenderTarget();
    SetShadowMap(iLight);
    SetShadowTransform(iLight);
    DrawScene();
}
mSwapChain->Present(0, 0)

只使用和绘制了第二个阴影贴图,我在这里错过了什么?

在前向渲染器中组合阴影贴图的两种标准方法是使用加法混合进行多通道光照,其中每个通道都会添加来自不同光源的光贡献,或者单通道光照,其中着色器循环访问场景中的灯光并累积其光贡献。MIN混合并不是在多通道照明方法中组合多个光源贡献的正确方法。我建议尝试添加剂混合。