Отбор передних граней DirectX 11 не отбрасывает передние грани в карте теней

Я пытаюсь реализовать отображение теней (CSM) на DirectX 11, и мне удалось заставить работать прототип. Прямо сейчас я нарисовал геометрию, используя отсечение задней грани в проходе карты теней, но теперь я хочу переключиться на отсечение передней грани, чтобы еще больше уменьшить теневые прыщи.

Однако переключение на отсечение лицевой стороны ничего не меняет. После углубленного анализа с использованием отладчика графики Visual Studio я застрял.

Графический отладчик говорит, что состояние растеризации установлено правильно.

введите здесь описание изображения

Но значения глубины в карте теней, кажется, немного не меняются.

введите здесь описание изображения

Насколько я понимаю, отсечение передней/задней грани применяется до того, как значения глубины будут записаны в буфер глубины.

Где я ошибаюсь? Есть ли какое-либо особое поведение при рендеринге в буфер глубины без целевого представления рендеринга, а только с представлением трафарета глубины, прикрепленным к выходному слиянию?


person Busy Beaver    schedule 07.10.2018    source источник
comment
Вы правы, это не похоже на выбраковку лицевой стороны. Можете ли вы проверить, есть ли в вашей модели дублированные лица с обратной ориентацией? Или внутренний корпус?   -  person Nico Schertler    schedule 11.10.2018


Ответы (1)


На самом деле у модели был внутренний корпус, потому что загрузчик модели (для файлов Sketchup) добавил к каждой грани модели внутреннюю и внешнюю грани.

Спасибо за комментарий и указание!

person Busy Beaver    schedule 20.10.2018