Для начала я настоятельно рекомендую прочитать презентацию Siggraph Нати Хоффмана посвященную физике рендеринга. Тем не менее, я постараюсь ответить на ваши конкретные вопросы, заимствуя изображения из своей презентации.
Глядя на единственную легкую частицу, попавшую в точку на поверхности материала, он может делать 2 вещи: отражать или преломлять. Отраженный свет будет отражаться от поверхности, как зеркало. Преломленный свет отражается внутри материала и может выходить из материала на некотором расстоянии от того места, куда он попал. Наконец, каждый раз, когда свет взаимодействует с молекулами материала, он теряет некоторую энергию. Если он теряет достаточно своей энергии, мы считаем, что он полностью поглощен.
По словам Нати, «свет состоит из электромагнитных волн. Таким образом, оптические свойства вещества тесно связаны с его электрическими свойствами». Вот почему мы группируем материалы как металлы или неметаллы.
Неметаллы будут демонстрировать как отражение, так и преломление.
Металлические материалы имеют только отражение. Весь преломленный свет поглощается.
Было бы чрезмерно дорого пытаться смоделировать взаимодействие легкой частицы с молекулами материала. Мы вместо этого делаем некоторые предположения и упрощения.
Если размер пикселя или область затенения велики по сравнению с расстояниями входа-выхода, мы можем сделать предположение, что расстояния фактически равны нулю. Для удобства мы разбили световые взаимодействия на два разных термина. Мы называем термин «поверхностное отражение» «зеркальным», а термин, возникающий в результате преломления, поглощения, рассеяния и повторного преломления, мы называем «рассеянным».
Однако это довольно большое предположение. Для большинства непрозрачных материалов это предположение в порядке и не слишком отличается от реальной жизни. Однако для материалов с любой прозрачностью это предположение не выполняется. Например, молоко, кожа, мыло и т. Д.
Наблюдаемый цвет материала - это свет, который не поглощается. Это комбинация как отраженного света, так и любого преломленного света, который выходит из материала. Например, чистый зеленый материал будет поглощать весь свет, который не является зеленым, поэтому единственный свет, который достигает наших глаз, - это зеленый свет.
Поэтому художник моделирует цвет материала, давая нам функцию ослабления материала, то есть то, как материал будет поглощаться светом. В нашей упрощенной диффузной / зеркальной модели это может быть представлено двумя цветами: диффузным цветом и зеркальным цветом. Еще до того, как использовались физические материалы, художник произвольно выбирал каждый из этих цветов. Однако должно показаться очевидным, что эти два цвета должны быть связаны. Вот где появляется цвет альбедо. Например, в UE4 они рассчитывают диффузный и зеркальный цвет следующим образом:
DiffuseColor = AlbedoColor - AlbedoColor * Metallic;
SpecColor = lerp(0.08 * Specular.xxx, AlbedoColor, Metallic)
где Metallic равен 0 для неметаллов и 1 для металлов. Параметр «Specular» контролирует зеркальность объекта (но обычно он составляет 0,5 для 99% материалов).