1. Постановка задачи
Целью данной лабораторной работы является добавление процедуры смещения извлекаемой текстурной координаты для имитации микрорельефа посредством текстуры.
Для смещения текстуры рекомендуется использовать один из двух методов: relief mapping или parallax occlusion mapping.
Вычисление смещения текстурной координаты выполняется целиком во фрагментном шейдере в касательном пространстве рассчитываемого фрагмента. При этом пространство, занимаемое имитируемым микрорельефом, разбивается на N слоёв.
Далее необходимо обнаружить два слоя, обрамляющие точку пересечения луча, идущего от наблюдателя к обрабатываемому фрагменту, с имитируемой поверхностью. Это делается путём последовательного трассирования слоев, начиная с самого верхнего. Пересечения луча наблюдения с каждым слоем даёт точку, координаты x и y которой, в касательном пространстве могут быть использованы для получения значения высоты в данной точке. Если значение высоты меньше, чем высота рассматриваемого слоя, то выбирается следующий слой, иначе трассировка прекращается и два последних рассмотренных слоя считаются обрамляющими.
Relief mapping. Для нахождения точного значения точки пересечения использован метод половинного деления.
Рисунок изображает приближенный участок с реальной точкой пересечения. Метод половинного деления заключается в последовательном делении интервала 3_4 на половинки и выборе в качестве следующего интервала для деления, интервала, содержащего точку пересечения (выбираемые интервалы обозначены красными точками на рисунке ). Когда интервал становится достаточно маленьким, искомая точка пересечения определяется как его середина. Координаты x и y искомой точки в касательном пространстве используются для извлечения значения цвета из диффузной текстуры.
Parallax occlusion mapping.
Читать дальше