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

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

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

equation of the exit radiance resulting from direct lighting on a diffuse object with arbitrary distant lighting

где:

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

 

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

equation of the lighting environment

где:

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

 

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

equation of the exit radiance after substituting l(s) and distributing

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

equation of the exit radiance after substituting the transfer coefficient

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

equation of the exit radiance after changing to vector notation

где:

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

 

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

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

equation of the approximated transfer vector

где:

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

 

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

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

equation of the exit radiance after substituting the transfer vector

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

equation of the exit radiance after distributing the dot product

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

Предкомпьютерная передача radiance