Подповерхностное рассеяние ( SSS ), также известное как подповерхностный перенос света ( SSLT ), [1] представляет собой механизм переноса света , при котором свет, проникающий через поверхность полупрозрачного объекта, рассеивается , взаимодействуя с материалом, и потенциально выходит из поверхности в другой точке. Свет обычно проникает через поверхность и рассеивается несколько раз под нерегулярными углами внутри материала, прежде чем выйти обратно из материала под другим углом, чем если бы он отражался непосредственно от поверхности.
Подповерхностное рассеивание важно для реалистичной 3D компьютерной графики , поскольку необходимо для рендеринга таких материалов, как мрамор , кожа , листья , воск и молоко . Если подповерхностное рассеивание не реализовано, материал может выглядеть неестественно, как пластик или металл.
Для повышения эффективности рендеринга многие алгоритмы компьютерной графики в реальном времени вычисляют отражательную способность только на *поверхности* объекта. В действительности многие материалы слегка полупрозрачны: свет проникает на поверхность; поглощается, рассеивается и переизлучается — потенциально в другой точке. Кожа — хороший пример; только около 6% отражательной способности является прямым, 94% — это подповерхностное рассеяние. [2] Неотъемлемым свойством полупрозрачных материалов является поглощение. Чем дальше свет проходит через материал, тем больше доля поглощения. Чтобы смоделировать этот эффект, необходимо получить меру расстояния, которое свет прошел через материал.
Опубликованная Pixar, эта техника считается передовой. Обычно интегрируется в трассировщик путей. По сути, она имитирует то, что происходит с реальными фотонами, прослеживая путь света в материале, генерируя новые пути с использованием ламбертовского распределения вокруг перевернутой нормали, а затем выбирая новые направления на нескольких шагах для дальнейшего рассеивания пути света, отсюда и название «случайное блуждание». Изотропное рассеяние имитируется путем выбора случайных направлений равномерно вдоль сферы. Анизотропное рассеяние имитируется обычно с использованием фазовой функции Хеньи-Гринштейна. Например, человеческая кожа имеет анизотропное рассеяние. Оптическая глубина/поглощение применяется на основе длины путей с использованием закона Бера-Ламберта. Пути могут заканчиваться внутри материала, когда они достигают минимального порога вклада или максимального числа итераций. Когда путь (луч) снова попадает на поверхность, он используется для сбора излучения со сцены, взвешенного ламбертовским распределением, как в традиционном трассировщике путей. Этот метод интуитивно понятен и устойчив к тонким геометрическим объектам и т. д.
Одним из методов оценки этого расстояния является использование карт глубины [3] способом, аналогичным теневому отображению . Сцена визуализируется с точки зрения источника света в карту глубины, так что расстояние до ближайшей поверхности сохраняется. Затем карта глубины проецируется на нее с помощью стандартного проективного текстурного отображения , и сцена визуализируется повторно. В этом проходе при затенении заданной точки расстояние от источника света в точке, где луч вошел в поверхность, может быть получено путем простого поиска текстуры. Вычитая это значение из точки, в которой луч вышел из объекта, мы можем получить оценку расстояния, которое свет прошел через объект. [ необходима цитата ]
Измерение расстояния, полученное этим методом, можно использовать несколькими способами. Один из таких способов — использовать его для индексации непосредственно в созданной художником одномерной текстуре, которая экспоненциально уменьшается с расстоянием. Этот подход в сочетании с другими более традиционными моделями освещения позволяет создавать различные материалы, такие как мрамор , нефрит и воск . [ требуется цитата ]
Потенциально, могут возникнуть проблемы, если модели не являются выпуклыми, но для избежания этой проблемы можно использовать глубинное шелушение [4] . Аналогично, глубинное шелушение можно использовать для учета различных плотностей под поверхностью, таких как кости или мышцы, чтобы получить более точную модель рассеяния.
Как видно на изображении восковой головы справа, свет не рассеивается при прохождении через объект с использованием этой техники; задние детали четко видны. Одним из решений этой проблемы является взятие нескольких образцов в разных точках на поверхности карты глубины. В качестве альтернативы можно использовать другой подход к аппроксимации, известный как диффузия в пространстве текстуры . [ необходима цитата ]
Как было отмечено в начале раздела, одним из наиболее очевидных эффектов подповерхностного рассеивания является общее размытие диффузного освещения. Вместо произвольного изменения функции диффузии диффузию можно точнее смоделировать, симулировав ее в пространстве текстур . Эта техника была впервые применена при рендеринге лиц в фильме «Матрица: Перезагрузка» [5] , но также используется в области методов рендеринга в реальном времени.
Метод разворачивает сетку объекта с помощью вершинного шейдера, сначала вычисляя освещение на основе исходных координат вершин. Затем вершины переназначаются с использованием координат текстуры UV в качестве экранного положения вершины, соответствующим образом преобразованного из диапазона координат текстуры [0, 1] в диапазон нормализованных координат устройства [-1, 1]. Освещая развернутую сетку таким образом, мы получаем 2D-изображение, представляющее освещение на объекте, которое затем можно обработать и повторно применить к модели в качестве карты освещения . Для имитации диффузии текстура карты освещения может быть просто размыта. Рендеринг освещения в текстуру с более низким разрешением сам по себе обеспечивает определенное размытие. Количество размытия, необходимое для точного моделирования подповерхностного рассеяния в коже, все еще находится в стадии активного исследования, но выполнение только одного размытия плохо моделирует истинные эффекты. [6] Чтобы имитировать зависимую от длины волны природу диффузии, образцы, используемые во время (гауссовского) размытия, могут быть взвешены по каналу. Это своего рода художественный процесс. Для человеческой кожи самое широкое рассеивание приходится на красный цвет, затем на зеленый, а синий цвет имеет очень слабое рассеивание. [ необходима цитата ]
Главным преимуществом этого метода является его независимость от разрешения экрана; затенение выполняется только один раз на тексель в текстурной карте, а не для каждого пикселя на объекте. Таким образом, очевидным требованием является то, чтобы объект имел хорошее UV-отображение, в том смысле, что каждая точка на текстуре должна соответствовать только одной точке объекта. Кроме того, использование диффузии в пространстве текстуры обеспечивает один из нескольких факторов, которые способствуют мягким теням, устраняя одну из причин недостатка реализма при отображении теней . [ необходима цитата ]