В настоящее время я пытаюсь расширить свою текущую базовую систему отображения теней, чтобы объекты могли отбрасывать тени от нескольких источников света. В настоящий момент я сгенерировал обе карты теней правильно, но проблема в том, чтобы заставить их отображаться на сцене.
Моя функция рисования в настоящее время выглядит так:
for (int iLight = 0; iLight < mNumLights; iLight++)
{
mShadowMap[iLight]->SetNullRenderTarget(md3dImmediateContext);
DrawSceneToShadowMap(iLight);
RestoreRenderTarget();
SetShadowMap(iLight);
SetShadowTransform(iLight);
DrawScene();
}
mSwapChain->Present(0, 0)
Используется и рисуется только вторая карта теней, чего мне здесь не хватает?
Два стандартных способа комбинирования карт теней в прямом рендерере состоят в том, чтобы сделать многопроходное освещение с аддитивным смешиванием, где каждый проход добавляет световой вклад от другого освещения или однопроходное освещение, где шейдер зацикливается на источниках света в сценах и накапливает их легкий вклад. Смешивание MIN на самом деле не является правильным способом комбинировать вклады от нескольких источников света в многопроходный подход к освещению. Я бы предложил попробовать аддитивное смешивание.
Других решений пока нет …