Глубина выборки из карты теней без отключения аппаратного PCF

У меня есть карта теней с включенной аппаратной процентной фильтрацией. Но мне также нужно получить значение глубины, хранящееся в карте теней, чтобы использовать его для реализации других методов в пиксельном шейдере. Проблема в том, что все функции выборки (tex2D, tex2Dproj) возвращают окончательный результат сравнения глубины. Это работает хорошо, но я не могу получить само значение глубины.

Можно ли сохранить аппаратный PCF для отображения теней и сэмплировать само значение глубины?

Однако есть ограничение: я не могу справиться с тем, как приложение создает карту теней, я могу только редактировать шейдеры.


person Homer    schedule 18.05.2016    source источник


Ответы (1)


Если вы можете найти неиспользуемый слот привязки SamplerState/sampler2D, вы сможете объявить его там и использовать с общей операцией Sample/tex2D. Поскольку слот состояния сэмплера не привязан к приложению, драйвер должен использовать настройки точечной выборки по умолчанию. Если буфер глубины поддерживает этот тип доступа, он должен вернуть значение pre-PCF.

person MooseBoys    schedule 31.05.2016
comment
Я тоже попробовал эту идею, но, к сожалению, она не сработала. Я не уверен на 100%, потому что я не могу найти хорошую документацию, но похоже, что аппаратный PCF хитрый, и он начинает работать автоматически при выполнении определенных условий. Кажется, он работает и с другими семплерами, потому что сама текстура была объявлена ​​​​правильно. Вроде все перепробовал. Что бы я ни делал, я получаю результаты глубинного тестирования. - person Homer; 01.06.2016