Туман в трёхмерной графике (Mrbgu f mj~]byjukw ijgsnty)

Перейти к навигации Перейти к поиску
Туман в трёхмерной графике

Эффект тумана в трёхмерной графике имитирует рассеяние света в тумане. Дальние объекты становятся менее контрастными и приобретают цвет тумана. В ночных сценах туман обычно чёрный, в дневных — белый или голубой, в туманных — белёсый, как настоящий туман.

Применение

[править | править код]

Применяется в первую очередь на маломощном трёхмерном аппаратном обеспечении, чтобы скрыть внезапное появление объектов «из ниоткуда», отсутствие теней и пониженную детализацию моделей на расстоянии. На Playstation и Nintendo 64 туман применялся чаще, чем на ПК. В Silent Hill туман успешно «вплетён» в уникальную атмосферу игр.

Впрочем, в реальности свет рассеивается даже в самую ясную погоду — поэтому эффект тумана верно служит и поныне, повышая реализм изображений.

Туман бывает двух видов: пиксельным (табличным) и вершинным.

В пиксельном (табличном) тумане цвета смешиваются с цветом тумана. Коэффициенты смешивания берутся отдельные для каждого пикселя, по первым битам Z-буфера из особой предварительно вычисленной таблицы — отсюда название. Вычисления проводились программно, на уровне драйвера; видеоплат, работавших с таким туманом аппаратно, не существовало[1]. К тому же на больших углах зрения был заметен артефакт: некоторые объекты, располагающиеся на краю поля зрения, чётко видны; но стоит повернуть камеру к объекту, его Z-координата увеличивается, и он уходит в туман[1].

Вершинный туман — более прогрессивная методика. Он работает на этапе Transform & Lighting, вычисляя коэффициенты для каждой вершины, а затем интерполируя их — как и в обычном освещении.

Из-за рассеяния света вокруг ярких предметов (факелов, фонарей, светофоров) появляются ореолы и объёмные лучи. Эти ореолы приходится рисовать отдельно.

Разумеется, туман можно делать и с помощью вершинных шейдеров.

Примечания

[править | править код]
  1. 1 2 Vertex Fog (Direct3D 9) (Windows). Дата обращения: 3 июля 2011. Архивировано 14 марта 2011 года.