Я реализовал отображение теней для создания теней на местности. Я визуализирую сцену (или объекты, которые отбрасывают тени) с точки зрения источника света, а затем генерирую карту глубины, которая будет сэмплирована во время второго прохода рендеринга (как объясняют все учебные пособия в Интернете). Вроде работало нормально, но потом я заметил, что объекты на холме отбрасывают более одной тени:
Я думаю, что это правильное поведение, так как я не визуализирую ландшафт во время создания карты глубины (небольшой квадрат вверху справа показывает буфер глубины во время первого прохода рендеринга), поэтому больше фрагментов ландшафта выглядит так, как будто они находятся за объектом из точки. точка зрения света. Однако ни в одном учебнике по отображению теней эта проблема не упоминается. Я что-то упустил, или этот метод генерации теней очень прост, и проблемы, подобные этой, могут возникнуть?
ИЗМЕНИТЬ
вот мой код рендеринга:
// in my Render() method:
mShadowRenderer.SetLight(*mLights[0]);
mShadowRenderer.Render();
RenderSkyBox();
RenderEntities();
RenderGeometryTerrain(mTerrains[0],
mShadowRenderer.GetLightViewProjectionMatrix());
shadowRenderer — это класс, отвечающий за отрисовку в буфер за пределами экрана и за возврат карты глубины в виде представления ресурсов шейдера. Карта глубины добавляется к ландшафту, когда я вызываю метод рендеринга, чтобы ее можно было использовать в пиксельном шейдере Terrai для создания теней.