Лучшие вопросы
Таймлайн
Чат
Перспективы

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

Из Википедии, свободной энциклопедии

Детальное текстурирование
Remove ads

Детальное текстурирование (англ. Detail mapping) — программная техника в трёхмерной компьютерной графике, которая позволяет улучшить детализацию текстур на близком расстоянии от камеры. Конечный результат создаёт иллюзию использования текстуры огромного разрешения.

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

При приближении камеры к полигональной модели текстура становится размытой. В случае достаточного объема свободной памяти размытие может быть устранено увеличением разрешения текстуры. Однако хранение каждой текстуры в огромном разрешении не является практичным решением. Детальное текстурирование решает проблему другим путём:

  • Базовая текстура оставляется в разумном среднем разрешении
  • Создаётся детальная текстура с крупномасштабным изображением мелких деталей (отдельные травинки, галька, структура древесины и т. д.)
  • Полученная текстура обесцвечивается
  • Фильтром верхних частот удаляется всё, кроме самых мелких деталей
  • Фильтром коррекции гистограммы устанавливается средняя яркость на уровне 0.5
  • Обе текстуры смешиваются в пиксельном шейдере
  • Перед смешиванием текстурные координаты детальной текстуры масштабируются, чтобы детальная текстура повторялась в несколько раз чаще базовой
  • Для снижения заметности повторений детальной текстуры масштаб выбирается нецелочисленным
  • Цвет базовой текстуры умножается на цвет детальной, умноженный на 2 (для сохранения исходной яркости)
Remove ads

Пример исходного кода шейдера

    const float detailRepeat = 7.5;
    
    float4 color = tex2D(TextureSampler, input.uv);
    float4 detail = tex2D(DetailSampler, input.uv * detailRepeat);
    
    color.rgb *= detail * 2;

См. также

Ссылки

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads