Почему H (blinn) используется вместо R (phong) в зеркальном затенении?


22

Я не могу найти вескую причину для этого нигде. Вектор отражения, используемый в фонге, имеет простую основу в физике. Но половинный вектор, используемый в блинне, по-видимому, не имеет рациональной основы и не является надлежащим отражением. И все же он используется в каждой так называемой «физической» функции затенения. Если для этого есть хорошая физическая основа, я хотел бы знать.

То, что я смог найти, это несколько причин:

Это быстрее - есть смешанная информация об этом, но даже в этом случае это была бы веская причина ... в 1998 году.

Он лучше обрабатывает углы выше 90 градусов - насколько я могу судить, единственная причина этого в том, что термин «фонг» использовался неправильно. Точечный продукт отражения и вида дает угол между -1 и +1. Обычно этот угол ограничен от 0 до 1, это является прямой причиной проблемы 90 градусов. Повторно нормализуйте угол вместо того, чтобы зажать его, и вы получите полный охват 180 градусов. Я отказываюсь верить, что простая операция x * 0.5 + 0.5 ускользнула от мира графики на 40 лет.

он лучше обрабатывает края - «проблема» с краями также существует в решении blinn, но в меньшей степени. Основная причина - неправильное моделирование освещения области на терминаторе, что должно быть важно для любого «физически основанного» шейдера. Но даже в более простых ситуациях сигмовидная функция может правильно аппроксимировать линию мягкого терминатора. Умножение на термин Ламберта некорректно, так как оно неправильно уменьшает зеркальный термин, это может отменить термин Френеля и привести к дальнейшим ошибкам.

У него длинные отражения на краю - мне кажется, что, хотя анизотропные отражения могут быть реалистичными, блинн не является правильным способом их реализации, поскольку они появляются только на краю. Это просто счастливое совпадение, что ошибка в термине H выглядит реалистичной.

Ни одна из этих причин не является удовлетворительной, я хочу разобраться в этом безумии.

Я хочу уточнить , что я не говорю о Blinn и Фонга конкретно , но вместо этого о компонентах вектора H и R, которые используются в качестве основы для этих шейдеров, а также других.

Ответы:


24

Для идеально отражающих поверхностей Phong-модель имеет смысл. Однако откуда берется n в (RV) ^ n модели Фонга для аппроксимации более грубых поверхностей? Где теория, что вам нужно поднять результат точечного произведения до власти, за исключением того, что он просто эмпирически дает правильный результат?

Для модели Блинна существует физически обоснованная теория микрообъектов для поддержки всех компонентов в уравнении, а также есть эмпирические доказательства того, что модель приближает поверхности реального мира более близко (хотя и не идеально). Половинный вектор в модели Блинна используется в качестве входных данных для функции нормального распределения (NDF), которая является приближением того, как микрофасеты распределены по нормали к поверхности как функция шероховатости поверхности. Т.е., когда H-вектор указывает на нормальное направление, значение является наибольшим, поскольку большинство микрообъектов указывают на это направление, и вероятность уменьшается соответственно, когда угол между нормалью и H-вектором увеличивается.

Хотя модель Блинна не идеальна ни в коем случае, и в ней, например, не учитывается геометрический термин модели микрообъема (т.е. затенение и маскирование микрообъектов, значение которых возрастает в углах скольжения).


Я не говорю о конкретной реализации Phong, которая действительно не имеет физической основы. Но я не вижу, как теория микрообъектов поддерживает H лучше, чем R в качестве основы для вектора отражения. Ни одна модель затенения не поддерживается эмпирически, каждая из них не воспроизводит реальные материалы в соответствии с надписью «Экспериментальная проверка BRDF» 2005 года. Мне кажется, что микрофасеты моделируются в фонге через скалярное произведение R · V, которое может служить основа для более физически правильного выделения либо с помощью функции переназначения или рампы. Степенная функция - это просто самое простое, неправильное отображение.
BmB

2
@BmB Нет, микрофасеты не «смоделированы в фонге», но используют распределение вероятностей микроразмеров, определенных с помощью NDF, которые «отбираются» с помощью H-вектора. NDF обычно симметричен относительно нормали (изотропный / анизотропный), поэтому для него имеет смысл использовать H-вектор. Я сказал , что есть эмпирические доказательства того, что Blinn-модель более близко аппроксимирует реальный мир материалы , чем Фонг.
JarkkoL

Любое отражение, которое не лежит вдоль вектора отражения, не является идеальным зеркальным отражением. Точечное произведение дает значение отражательной способности для углов, которые не являются идеальными. Обязательно, они должны быть произведены микрообъемами. Таким образом, точечный продукт делает моделирующими микрофаски. Простая точка производит линейное распределение. Но распределение может быть смоделировано любой функцией с R так же хорошо, как и с H. Это ничего не объясняет относительно справедливости H над R.
BmB

1
@BmB Я предлагаю вам прочитать о теории микрофасеты и, в частности, о NDF-части, чтобы понять концепцию. Это поможет вам получить ответ на ваш вопрос.
JarkkoL

1
Вам следует открыть новый вопрос о микрообъектах и ​​NDF, потому что, очевидно, вы многое не понимаете в этих понятиях, и комментарии не являются подходящим местом для их объяснения.
JarkkoL

6

На самом деле, я думаю, что вы сами перечислили причины, по которым Блинн является дефолтом по сравнению с Phong.

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

В целом все это приводит к тому, что Блинн по умолчанию лучше, чем Фонг.

Блинн идеален? Это лучше, чем Фонг?

Нет.

Но это разумное по умолчанию. Не стесняйтесь заменять Phong на Blinn в любом рендерере / шейдере, который вы пишете.


Согласитесь, это именно так. Ни одна модель не идеальна. Приближение Блинна было прежде всего оптимизацией производительности, так как вычисление половинного угла намного дешевле. Оказалось, что в большинстве случаев он тоже выглядит лучше.
Деймон

-2

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

Для физического затенения отраженный свет должен подчиняться уравнениям Френеля. (Большинство «физически основанных» шейдеров этого не делают) Микрофасеты также должны подчиняться уравнениям Френеля, которые основаны на угле падения света, а также показателе преломления интерфейса для получения правильного результата.

Согласно закону отражения угол падения должен быть отражен с углом отражения по нормали к поверхности. Чтобы луч света попал в камеру - мы знаем, что он это сделал - он должен был отражаться от света - от которого мы знаем направление. Таким образом, нормаль поверхности должна быть вычетом быть зеркальной осью для этих двух направлений. Это дает нам половину вектора H, которая находится между ними. Рассчитывается путем нормализации суммы обоих.

Теперь, вычисляя угол между направлением света L и половинным вектором H, мы получаем угол падения для зеркального отражения микрообъекта и можем правильно его ослабить, используя термин Френеля.

Обратите внимание, что направление обзора равно R для этого микрообъекта, H не является отражающим членом. Блин, Кук, Торранс и Воробей могут сосать. Фонг и Френель были правы.


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

Микрочастица материала имеет те же свойства, что и материал. Поэтому микрообъект несовершенного отражателя сам по себе не может быть идеальным отражателем. Ваша логика несостоятельна и бесполезна. N точка H не имеет физического значения.
BmB

4
Нет, это не то, как работает модель микрофасса. Моя логика совершенно логична, что может подтвердить любой, кто понимает даже основы микромассажной модели. Каждый микроразмер представляет собой идеальный отражатель (то есть оптически плоский), и несовершенное отражение материала происходит из-за дисперсии нормали микроразмера, как определено NDF. Ваша настойчивость игнорировать совершенно обоснованные советы довольно забавна;)
JarkkoL

Вы не дали никакого совета, все, что вы сделали, - настойчиво утверждали, что вы правы, не имея ничего, чтобы поддержать это, и бросали оскорбления. Н является нормой микрообъекта, а не отражением. Отражение можно рассчитать по нормали. Основная физика не согласна с вами.
BmB
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.