×
Menu

NiFogProperty - notes

 
ФОГ оказался ценным и полезным инструментом позволившим решить некоторые задачи!
в особенности, своей способностью убирать проявления полигонов объектов в туманных локациях и под водой.
Т.е. решает проблему, так называемой "светимости" см. раздел скриншотов.
 
Описание настроек.
Flags
1,2,4 и пр.. после 32 начинают наматывать повторы. Т.е. лимит 32 флага.
 
10-й флаг, в сочетании с плотностью тумана, убивает текстуру, т.е. заливая объект цвет тумана.
3-й аналогично 10ому.
Флаг 0 тоже работает, аналогичен флагу 3 по всем параметрам.
 
Fog Depth
плотность тумана.
 
Если флаг 10 и плотность выше 2х объект будет полностью залит фоном тумана.
Если плотность 1-3 то текстура будет частично видна, т.е. эффект, работает как заливка цветом.
 
Оптимально 1.0000 либо 0.9000.
Лучше не 0.8000, если не требуется заливать объект цветом, но лишь снять проблем засветки в туманных локациях и под водой.
 
Fog Color
задается цвет тумана.
 
Работает в сочетании с 10-ым флагом
 
 
Примечание.
Фог не работает в моделях накладывающихся на Distand Land в MGE XE.
Т.е. имеет проблемы с моделью удаленного ландшафта!
Фог не работает при использовании в МГЕ ХЕ PPL (per pixel light) режима.
Последнее было (частично) исправлено в МГЕ ХЕ 11.0 версии.
Т.е. если модель с ФОГом не работает - первым делом следует проверить режиме PPL в МГЕ ХЕ.
 
Примечание.
Поддержку ФОГ завезли в ОпМВ (0.45 night build - и далее в 0.46) сборки.
 
Примечание.
НЕ работает на полностью прозрачных моделях.
Материал прозрачность 0.0 и альфа 4845.
Т.е. не будет давать цветовой оттенок такой поверхности по мере удаления от камеры.
Т.е. вероятно требует базовые текстуры на которые и воздействует меняя оттенок объекта по мере удаления от камеры.
Однако! Продолжает снимать проблему светимости поверхности под водой, или в туманных локациях.
Т.е. даже для прозрачных поверхностей это будет работать..
 
Примечание.
По видимости можно (?) совмещать с текстурным эффектом в режиме тумана.
Т.е. может взаимодействовать с текстурными эффектами (?) *требуется доп. проверка этого момента.
 
Примечание.
Если флаги: 1,4,5,8,9,12, 13 и далее от 16го, то объект остается различимым в тумане до придела видимости.
Но цвет тумана не будет применяться!
Если флаги: 0,2,3,6,7,10,11,14,15 и плотность 0.5 - 1.0 на границы видимости объект будет менять свой цвет согласно заданному в настройках цвета.
Если плотность тумана выше 1.0 объект может быть полностью перекрыт цветом тумана.
Т.е. текстура будет не различима даже если стоять к объекту вплотную.
Если требуется менять цвет объекта по удалению от него, оптимальные значения не выше 1.0
 
Для включения заливки объекта фоном тумана на удалении от камеры, флаги 0,3,10.
Для обхода фона тумана в ячейке и бага светящихся полигонов, флага 4 будет достаточно.
 
Примечание.
Наиболее положительные результаты на объектах с альфа свойствами с активным значением ONE в одном из параметров.
На объектах без альфы, или с текстурным эффектом в режиме Light не столь позитивен.
Объект отрабатывается так, словно в ячейке полностью прозрачная атмосфера.
Что, впрочем, может иметь свою область применения.
На объектах с регулярными флагами альфы, т.е. "светимости" - эффект отрабатывает подобно моделям без альфы.
Т.е. объект будет четко различим в тумане.
 
Примечание.
Можно применять на системы частиц, или спрайтовый туман в локациях с высокими значениями "Fog".
Если выставить цвет тумана в объекте равным значению цвета тумана в ячейке, то это, может быть, поможет спрятать объект.
Либо наоборот поможет показать некие объекты издалека.
Например, светильники маяков в экстерьерных локациях.
Поскольку ФОГ будет более различим на большем удалении, чем текстуры.
 
Примечание.
Также, хорошо использовать ФОГ для моделей неба используемых в интерьерах.
См. скрины далее.
 
Примечание.
NiFogProperty  используют текстуру для своей работы!
Т.е. если объект полностью прозрачен, эффект наблюдаться не будет!
Эффект тумана будет распространяться от наиболее непрозрачного участка текстуры.
Также, учитываются Мип-уровни текстуры.
Однако, если на модель наложен текстурный эффект в режиме FOG, то NiFogProperty окажут влияние по текстуре эффекта.
 
 
флаг 10
флаг 18.
флаг 26
флаг 3
При этом, наиболее рабочими режимами выглядят SQ и Z_LINEAR.
Хотя SSG показывает смену режима и активность свойств для прочих флагов.
Но в редакторе модели не показывают изменений.
FOG_VERTEX - не похоже что работает, даже если в модели есть альфа свойства и альфа в вертексах...
 ALPHA_SCRALPHA - вероятно баг. Т.к. сама строка имеет искаженное название.
Да, это какой-то баг (редактора?) в другой модели вместо ALPHA значилось USE_TRIANGLES... 0_о
Однако модель не вызывает ошибок и эффект не смешивания модели с туманом сохраняется.
 
Флаг 4, по сути выключенный режим тумана.
Однако, именно такой режим позволил обойти проблему со светящимися в темноте полигонами!
 
Примечание.
CapostrophicВ (из ОпМВ команды) писал:
В общем...
Если перевести флаг в двоичное число, то значимы в нем будут только 3 бита — пятый, четвертый, и второй. Но есть нюансы.
Итак, второй отвечает за состояние того, включен ли туман. То есть флаги вроде 2, 3, 6, 7 и т.д. будут его включать, а 0, 1, 4, 5, 8 и т.д. будут выключать. В двоичной системе:
00010, 00011, 00110, 00111... — включен
00000, 0001, 00100, 00101, 01000... — выключен.
Второй бит с конца в этих числах отключен, поэтому какой бы там режим ни был назначен, тумана не будет.
1 и 3 бит не отражаются ни в чем с точки зрения графа сцены. И внешне разницы никакой.
4 и 5 бит отвечают за режим тумана. Режим по умолчанию, который остается, если эти биты не 1 (если флаг меньше 8), линейный. Это означает, что по краям экрана туман будет немного дальше, чем должен быть, т.к. его сила зависит от длины перпендикуляра к игроку (Z-координаты).
Он ещё FOG_Z_LINEAR называется.
4 бит отвечает за режим тумана FOG_RANGE_SQ. Теоретически это такой режим, в котором сила тумана зависит от реального расстояния к игроку (т.н. радиальный туман или евклидов туман). На практике он какой-то сломанный, но хз, может, это я что-то напутал.
 
Т.е. флаги начиная с 8 по 15 (с 01000 по 01111) будут иметь этот режим.
И если крутиться вокруг себя, туман не будет слабеть на объектах по краям поля зрения. Мб Беседка воспользовалась этим режимом в Обливионе и позже.
5 бит отвечает за режим тумана FOG_VERTEX_ALPHA. Он
а) непрактичный (плохая производительность), потому его и снесли из Gamebryo
б) по-моему вовсе не работает в Морровинде или по крайней мере в Wine
Заключается в том, что для имитирования тумана каждый кадр обновляются цвета вершин объектов с NiFogProperty с таким флагом.
Этот режим будут назначать флаги с 16 по 23 (10000 по 10111).
А вот если и 4, и 5 бит назначены, сложнее. У этого "режима" нет названия, которое можно прочесть. Мб это просто FOG_VERTEX_ALPHA, но нельзя понять, потому что в игре туман тупо выглядит как выключенный.
 
Этот режим назначают флаги с 24 по 31.
Шестой и дальнейшие биты шестнадцатибитного числа смысла не несут, поэтому у флагов период 32.
В общем-то все. Поэтому флаг 10 выглядит иначе (8+2, 4 и 2 бит), чем меньшие флаги.
 
Примечание.
Т.е. если коротко:
От 0 до 7 флагов идет FOG_Z_LINEAR.
От 8 до 15 флагов идет FOG_RANGE_SQ.
От 16 до 23 флагов идет FOG_VERTEX_ALPHA
От 24 до 31 идет ерунда (С)
32 флаг снова вызывает FOG_Z_LINEAR.

Из справки Нифскопа:
1's bit: Enables Fog
2's bit: Sets Fog Function to FOG_RANGE_SQ
4's bit: Sets Fog Function to FOG_VERTEX_ALPHA
If 2's and 4's bit are not set, but fog is enabled, Fog function is FOG_Z_LINEAR.
Depth of the fog in normalized units. 1.0 = begins at near plane. 0.5 = begins halfway between the near and far planes.
 
Выдержка из оригинальной справки. (NDL Gamebryo 1.1)
NiFogProperty turns fog (also known as depth-cueing) on or off and sets the parameters of the effect. This property's parameters currently include the near plane of the fog (minimum distance at which fogging occurs), the fog color and the fogging mode, which may be linear Z-based or based on the squared range (distance from eye point to the vertex). The maximum fog value is always attained at the current far plane. Fog color is independent of background color in all renderers, but applications should be careful when setting a fog color that is different from the background color, as visually jarring results can result with far-clipped geometry.
 
NiFogProperty allows the application to enable, disable and control the appearance of fogging, also known as haze.
 
Supported Fogging Functions
The following fogging functions are supported by Gamebryo, although specific renderers may or may not be able to support all of them in all modes. Note that all fogging functions are declared In reply to: the scope of NiFogProperty, and the names must be qualified as such.
Function
Description
FOG_Z_LINEAR
Fogging is linear, based on the perpendicular distance of the given point from the far plane. This type of fogging is inexpensive to compute (some 3D hardware may even be able to compute these fog values for free), but tends to cause artifacts because the fog value is not based directly upon the distance from the eye point to the fogged point.
FOG_RANGE_SQ
Fogging is based upon the squared distance of the point from the eye point. This algorithm is more expensive to compute than linear-z fogging, but tends to create fewer visual artifacts.
 
Fog, also known as haze or "depth cueing", is conceptually related to lighting, but is functionally independent in Gamebryo. Fog is a rendering effect available on some rendering systems that causes objects to gradually fade to a single "fog color" as they get further away from the camera's position. This has the practical effect of making distant objects appear "hazy", and is often used to make a close-in far clipping plane appear less jarring (as objects will fade into invisibility instead of being abruptly clipped).
There are three modes for fog in Gamebryo; two use the classic "fog increases with distance from the camera" method of fogging, while the third allows the application to specify any fog value at any vertex. Fog is controlled in Gamebryo by the NiFogProperty rendering property described later in this chapter.
Depth-based fog in Gamebryo is modified with a single parameter that is related to the nearest distance from the camera at which objects begin to be faded to the fog color. Objects always attain the full fog color at the far plane. Currently, the Direct3D, GameCube, Xbox and PS2 renderers support fogging that is linear with respect to Z value. Several also support "range squared" fog. Please see the platform renderer documentation for more details on each renderer's capabilities. Range squared fog is more accurate (as it is dependent on view position, not orientation), but is more expensive to compute.
Note that the depth parameter is independent of actual near and far plane values. A depth value of 0.0 indicates that there is no fogging (0.0 should never actually be used as a fog depth), while a depth of 1.0 indicates that fogging should start at the near plane. Values between 0.0 and 1.0 will linearly interpolate the near fogging distance between the near and far planes.
Depth-based Fog (Linear Fog)
While most applications will want to fog to have 100% fogging at the far plane, some renderers can support fogging to less than 100% at the far plane when using range- or z-based fogging.