Детальное текстурирование () — программная техника в трёхмерной компьютерной графике, которая позволяет улучшить детализацию текстур на близком расстоянии от камеры. Конечный результат создаёт иллюзию использования текстуры огромного разрешения.
При приближении камеры к полигональной модели текстура становится размытой. В случае достаточного объема свободной памяти размытие может быть устранено увеличением разрешения текстуры. Однако хранение каждой текстуры в огромном разрешении не является практичным решением. Детальное текстурирование решает проблему другим путём:
Базовая текстура оставляется в разумном среднем разрешении Создаётся детальная текстура с крупномасштабным изображением мелких деталей (отдельные травинки, галька, структура древесины и т. д.) Полученная текстура обесцвечивается Фильтром верхних частот удаляется всё, кроме самых мелких деталей Фильтром коррекции гистограммы устанавливается средняя яркость на уровне 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;
См. также Текстура
Ссылки
Категория:Методы текстурирования