Interested Article - Детальное текстурирование

Текстура низкого разрешения, детальное текстурирование отсутствует
Текстура низкого разрешения, включено детальное текстурирование

Детальное текстурирование ( англ. 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. (3 ноября 2008). 12 июня 2013 года.
  • . GameDev.ru (28 ноября 2001).
  • . Virtual Terrain Project.
  • . the303.org.
Источник —

Same as Детальное текстурирование