Постоянный-Линеный-Квадратичный спад яркости

From Valve Developer Community
< Ru
Jump to: navigation, search
English (en)Français (fr)Русский (ru)Translate (Translate)

Введение

При удалении от источника света яркость его освещения обычно уменьшается, тем самым ограничивая область, которую этот источник может освещать. Это уменьшение называется "истощение света" (англ. Light attenuation) или "спад освещённости" (англ. Falloff).

По умолчанию весь свет имеет полностью квадратичный спад, так как это поведение света в реальной жизни (в соответствии с законом обратных квадратов). Такой темп спада иногда слишком резок для виртуального освещения, а так же иногда создаёт слишком яркие места на близких поверхностях, таких как потолки.

Система Constant-Linear-Quadratic - старый способ описать поведения спада освещённости. Она была заменена системой процентных спадов, которую многие найдут проще в использовании.

Отношение между тремя значениями Constant (_constant_attn), Linear (_linear_attn) and Quadratic (_quadratic_attn) определяют спад освещённости. Эти три параметра получили свои имена от математической функции, описывающей спад света.

Постоянный спад

Constant attenuation

Картинка справа поясняет самый простой случай затенения: постоянное. Constant, Linear и Quadratic устанавливаются в 1, 0 и 0 соответственно, создавая Constant-Linear-Quadratic отношение 1:0:0, означая, что спад равен 100% Constant, 0% Linear и 0% Quadratic.

Полностью постоянный спад означает, что яркость света не будет спадать вообще. Яркость света, создаваемого источником, не будет изменяться с расстоянием и осветит всю область, на которую падает свет с одной и той же яркостью. Теоретически, такой источник может освещать поверхность бесконечного размера. Такой тип света можно увидеть от неба (солнечный свет, лунный свет и звёздный свет) и других больших и отдалённых источников света. Он также может быть использован для создания эмбиентного освещения (позволяя освещать тени в помещении) или освещения для настроения.

Линейный спад

Linear attenuation

Это та же самая энтити света, но с соотношением 0:1:0, делающим её освещение 100% линейным.

Математически, спад этого типа света линеен, обратно пропорционален расстоянию до источника света (I = 1/d, где I - яркость, а d - расстояние). Это означает, что яркость света (установленная его настройками яркости) будет постоянно спадать при движении от своего источника. Чтобы скомпенсировать этот спад, Valve увеличили яркость источника света в 100 раз.

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

Квадратичный спад

Quadratic attenuation

Это обычный, немодифицированный источник света, по умолчанию установленный на 0:0:1, делая его полностью квадратичным.

Математически, спад полностью квадратичного света экспоненциален (квадратичен), выражаемый как I = 1/d^2, означая что чем дальше свет путешествует от своего источника, тем сильнее он будет спадать. Это создаёт очень резкий спад в уровне освещённости. Чтобы скомпенсировать быстрый спад квадратичного света, Valve увеличили его яркость в 100^2 (10 000) раз.

Немодифицированный (полностью квадратичный) источник света представляет собой истинный "точечный источник света" в реальном мире. В виртуальном мире, этот эффект больше похож на свет, проходящий через грязную воду, выглядя непохожим на типичное поведение света в реальном мире.

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

Смешанный спад

Смешивая эти три типа спада, Вы устанавливаете пропорцию между этими тремя типами. Помните, что кратные пропорции означают один и тот же тип затенения (к примеру 3:6:1 равнозначно 6:12:2 или 30:60:10)

Постоянный-Линеный-Квадратичный в сравнении с 50%-0% спадом

Как упоминалось выше, при ослаблении света с использованием натройки постоянный-линейный-квадратичный яркость света может быть изменена в 10'000 раз. Хотя такие высокие значения невозможно отобразить с помощью LDR, при освещении [HDR] с функцией bloom свет умеренной яроксти будет казаться ослепительно белым. Такого масштабирования не произойдёт если опредлены дистанции 50-ти процентного спада и полного исчезновения (спад 0%) яркости.

Яркость реального источника света будет спадать на расстоянии в соотвествии с заноном обратных квадратов (плюс немного линейно из-за рассеяния в атмосфере). Чтобы найти подходящее расстояние 50% спада яркости, можно использовать следующее уравнение:

Яркость/2 = Яркость/Расстояние^2
Расстояние = sqrt(2)

Другими словами, яркость света уменьшится до 50%, когда расстояние от источника света станет равно квадратному корню от 2, или приблизительно 1.41.

Полное исчезновение (спад 0%) на самом деле явлется точкой в которой яроксть становится равной 1/256, которое vrad.exe(en) считает cнезначительным. Таким образом, эту точку можно найти следующим образом:

1/256 = Яркость/Расстояние^2
Расстояние = sqrt(Яркость)*16

Опять же, говоря по-русски, свет "исчезает" на расстоянии равном 16-кратному квадратному корню от первоначальной яркости.

What is missing here are units to go with these numbers. Clearly 1.41 Source units is much too soon for a light to drop by 50%, and a light of 100 brightness should reach much farther than 160 units. Some experimentation in a test map indicates that a 50% falloff distance of 10 looks good, which corresponds to sqrt(I)*113. That could easily be rounded to sqrt(I)*100 for simplicity's sake (and to account for that atmospheric scattering mentioned above). With this equation a light with a brightness of 100 would reach 1000 units before ceasing to exist.

Если будут найдены более точные или адекватные значения, их следует опубликовать здесь!

Внешние ресурсы