Детальное текстурирование
Детальное текстурирование (англ. Detail mapping) — программная техника в трёхмерной компьютерной графике, которая позволяет улучшить детализацию текстур на близком расстоянии от камеры. Конечный результат создаёт иллюзию использования текстуры огромного разрешения.
При приближении камеры к полигональной модели текстура становится размытой. В случае достаточного объема свободной памяти размытие может быть устранено увеличением разрешения текстуры. Однако хранение каждой текстуры в огромном разрешении не является практичным решением. Детальное текстурирование решает проблему другим путём:
- Базовая текстура оставляется в разумном среднем разрешении
- Создаётся детальная текстура с крупномасштабным изображением мелких деталей (отдельные травинки, галька, структура древесины и т. д.)
- Полученная текстура обесцвечивается
- Фильтром верхних частот удаляется всё, кроме самых мелких деталей
- Фильтром коррекции гистограммы устанавливается средняя яркость на уровне 0.5
- Обе текстуры смешиваются в пиксельном шейдере
- Перед смешиванием текстурные координаты детальной текстуры масштабируются, чтобы детальная текстура повторялась в несколько раз чаще базовой
- Для снижения заметности повторений детальной текстуры масштаб выбирается нецелочисленным
- Цвет базовой текстуры умножается на цвет детальной, умноженный на 2 (для сохранения исходной яркости)
Пример исходного кода шейдера
const float detailRepeat = 7.5;
float4 color = tex2D(TextureSampler, input.uv);
float4 detail = tex2D(DetailSampler, input.uv * detailRepeat);
color.rgb *= detail * 2;
См. также
Ссылки
- Shawn Hargreaves. Detail textures (3 ноября 2008). Архивировано 12 июня 2013 года.
- Detail textures: теория и практика . GameDev.ru (28 ноября 2001).
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.