Поделиться через


Уравнения PRT (Direct3D 9)

Чтобы полностью понять шейдер, реализующий PRT, полезно наследовать формулу, которую шейдер использует для вычисления сияния выхода.

Чтобы начать, следующее уравнение является общим уравнением для вычисления выходного сияния, полученного от прямого освещения на диффузном объекте с произвольным удаленным освещением.

уравнение выходного сияния, полученное от прямого освещения на диффузном объекте с произвольным удаленным освещением

где:

Параметр Описание
Rp Выход сияния на вершине p. Вычисляется на каждой вершине сетки.
pd Альбэдо поверхности.
пи Константой, используемой в качестве фактора нормализации экономии энергии.
L(s) Среда освещения (исходная сияние).
Vp₍s₎ Функция двоичной видимости для точки p. Это 1, если точка может увидеть свет, 0, если нет.
Hnp₍s₎ Косинус термин от закона Ламберта. Равно max(Np· s), 0), где Np является нормальной поверхностью в точке p.
s Переменная, которая интегрируется с сферой.

 

Используя сферические базовые функции, такие как сферические гармоники, следующее уравнение приблизит среду освещения.

уравнение среды освещения

где:

Параметр Описание
L(s) Среда освещения (исходная сияние).
я Целое число, которое суммирует количество базовых функций.
O Порядок сферических гармоник.
li Коэффициент.
Yi(s) Некоторые базовые функции над сферой.

 

Коллекция этих коэффициентов, L', обеспечивает оптимальное приближение для функций L(s) с базовыми функциями Y. Подстановка и распределение дает следующее уравнение.

уравнение выходного радиации после замены l(s) и распределения

Целочисленность Yi(s)Vp₍s₎Hnp₍s₎ является коэффициентом передачи tpi, что симулятор предварительно компютирует для каждой вершины сетки. Заменяя это дает следующее уравнение.

уравнение выходного радиации после замены коэффициента передачи

Изменение этого векторного нотации дает следующее несжатые уравнения для вычисления выходного сияния для каждого канала.

уравнение выходного радиации после изменения векторной нотации

где:

Параметр Описание
Rp Выход сияния на вершине p.
pd Альбэдо поверхности.
L' Вектор liи является проекцией исходного сияния в сферические гармонические функции. Это вектор порядка 2000-х шаровых гармоничных коэффициентов.
Tp Вектор передачи order 2 для вершины p. Симулятор делит коэффициенты передачи на p.

 

Оба этих вектора представляют собой вектор порядка 2000-точечных коэффициентов, поэтому обратите внимание, что это просто точка продукта. В зависимости от порядка точка может быть дорогой, чтобы можно было использовать сжатие. Алгоритм, называемый кластеризованным анализом основных компонентов (CPCA), эффективно сжимает данные. Это позволяет использовать сферическое приближение с более высоким порядком, что приводит к более острым тени.

CPCA предоставляет следующее уравнение для приближения вектора передачи.

уравнение приблизительного вектора передачи

где:

Параметр Описание
Tp Вектор передачи для вершины p.
Mk Среднее значение для кластера k.
j Целое число, которое суммирует число векторов PCA.
N Количество векторов PCA.
wpj Вес Jth PCA для точки p.
Bkj Базовый вектор Jth PCA для кластера k.

 

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

Подстановка этих двух уравнений дает следующее:

уравнение выходного радиации после замены вектора передачи

Затем распределение точечных продуктов дает следующее уравнение.

уравнение выходного сияния после распределения точки продукта

Потому что оба (Mk· L') и (Bkj· L') является константой на вершину, пример вычисляет эти значения с ЦП и передает их в виде констант в вершинный шейдер; поскольку wpj изменения для каждой вершины, образец сохраняет эти данные на вершины в буфере вершин.

предварительно компьютированные передачи сияния