Тема: raycasting
Показать сообщение отдельно
Старый 21.10.2013, 23:03   #25
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: raycasting

Сообщение от mr.DIMAS
Возможно ли при рейкастинге сделать мипфильтрацию? А то аж рябит в глазах от выборки пикселей.
На самом деле проблема случайных пикселей (ряби текстур) должна решаться комплексным подходом с помощью MIP-mapping и анизотропной фильтрации. Один только mipmapping не решает проблему с текстурами на поверхностях, которые находятся под острым углом к вектору направления обзора. Потому что на большом расстоянии разрешение подходящей mip текстуры поперек вектора обзора будет на много выше чем вдоль вектора обзора и невозможно будет подобрать оптимальную mip текстуру. Здесь нужна анизотропная фильтрация, которая сначала подбирает нужную mip текстуру поперек вектора направления обзора, а затем делает несколько выборок вдоль и усредняет результат. Но именно анизотропная фильтрация очень требовательна к пропускной способности памяти, что может сильно перегружать RAM, и так загруженную работой с фрейбуферами.

Однако я точно не уверен, поэтому попробовать нужно. Но все же надо подумать и об альтернативных вариантах, может быть есть какие то варианты процедурной обработки или генерации текстур, промежуточные форматы хранения или что то в этом роде, не создающие большой трафик в памяти.

Третий вариант - это просто сделать правильные текстуры, в которых впринципе не будет такого большого контраста текселей. Или например сделать специальную mip фильтрацию (на стадии загрузки или даже сохранения текстуры в редакторе), которая в каждой следующей уменьшеной копии текстуры убирает сильно выделяющиеся по контрасту текселы, в таком случае можно обойтись mip-mapping'ом с обычным nearest (или bilinear) фильтром.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mr.DIMAS (22.10.2013)