fog {
plane (nx,ny, nz) dlst color (r, g, b) density dens
}

Вторая команда имеет вид

linear-fog {
plane (nx,ny, nz) dist color (r, g, b) offset offs gradient (gx, gy, gz)
}

При этом для простоты считается, что туман задается всего одной плоскостью (это ограничение только класса БсепеОесоёег).

Используемые параметры задают следующие величины:

(пх, л у, nz)

Нормаль к плоскости, ограничивающей туман

dist

Расстояние со знаком от плоскости к началу координат

(r, g, b)

Цвет тумана

dens

Плотность тумана (для тумана с постоянной плотностью)

(Я*> ЯУ, gz)

Градиент тумана (см. формулу (12.3)

offs

Второй коэффициент из формулы (12.3)

Микрофактурные текстуры

Использование пирамидального фильтрования (mipmapping) в OpenGL позволяет легко бороться с искажениями, возникающими при рендеринге сильно удаленных граней. Однако определенные проблемы могут возникать и при рендеринге близко расположенных к наблюдателю (камере) граней. В этом случае одному пикселу текстуры соответствует сразу несколько пикселов экрана. Это приводит к явной блочной структуре изображения грани (если интерполяция текстуры выключена), или же блочная структура присутствует, но сильно размыта (в случае применения интерполяции текстуры). В первом случае артефакты наиболее заметны и сразу бросаются в глаза, но и во втором случае они легко заметны - на изображении грани отсутствуют мелкие детали, придающие изображению реалистичность.

Очевидный шаг - увеличение разрешения текстуры - ведет к существенному увеличению объема памяти, требуемого для хранения текстуры (при увеличении разрешения текстуры в 2 раза и по ширине и по высоте требуемый объем памяти возрастает в 4 раза). Кроме того, подобный подход проблему не решает, просто "критическое расстояние" чуть отодвигается.

Одним из достаточно простых способов борьбы с этим неприятным эффектом, не прибегая к значительному увеличению размеров текстуры, является использование так называемых микрофасетных текстур (detail textures).

Для создания требуемой детализации поверх основной текстуры выводится специальная текстура, модулирующая основную. При этом для вывода этой дополнительной текстуры используется преобразование текстурных координат, умножающее их на достаточно большую величину (10-50 раз). За счет использования этого преобразования не происходит "размытия" этой текстуры и на строящемся изображении появляются необходимые детали.


⇐ Предыдущая| |Следующая ⇒