PRT 수식(Direct3D 9)

PRT를 구현하는 셰이더를 완전히 이해하려면 셰이더가 종료 광채를 계산하는 데 사용하는 수식을 파생시키는 것이 유용합니다.

시작하기 위해 다음 수식은 임의의 먼 조명이 있는 확산 개체의 직접 조명으로 인해 발생하는 출구 광채를 계산하는 일반적인 수식입니다.

임의 먼 조명이 있는 확산 개체의 직접 조명으로 인한 출구 광채의 수식

여기서

매개 변수 설명
Rp 꼭짓점 p의 종료 광채입니다. 메시의 모든 꼭짓점에서 평가됩니다.
pd 표면의 알베도입니다.
pi 에너지 절약 정규화 요소로 사용되는 상수입니다.
L(s) 조명 환경(원본 밝기)입니다.
Vp₍s₎ 점 p에 대한 이진 표시 유형 함수입니다. 점이 빛을 볼 수 있으면 1이고, 그렇지 않으면 0입니다.
Hnp₍s₎ 램버트의 법칙에서 코사인 용어. max((Np· s), 0)과 같습니다. 여기서 Np는 포인트 p의 표면 표준입니다.
구에 통합되는 변수입니다.

 

구형 고조파와 같은 구형 기저 함수를 사용하여 다음 수식은 조명 환경을 근사화합니다.

조명 환경의 수식

여기서

매개 변수 설명
L(s) 조명 환경(원본 밝기)입니다.
i 기본 함수 수에 대한 합계를 계산하는 정수입니다.
O 구형 고조파의 순서입니다.
li 계수입니다.
Yi(s) 구에 대한 일부 기본 함수입니다.

 

이러한 계수 L'의 컬렉션은 기본 함수 Y를 사용하여 함수 L에 대한 최적의 근사치를 제공합니다. 대체 및 분산은 다음 수식을 생성합니다.

l을 대체하고 배포한 후의 출구 광채 수식

Yi(s)Vp₍s₎Hnp₍s₎ 정수는 시뮬레이터가 메시의 모든 꼭짓점에서 미리 계산하는 전송 계수 tpi 입니다. 이를 대체하면 다음 수식이 생성합니다.

전송 계수를 대체한 후의 출구 방사형 수식

이를 벡터 표기법으로 변경하면 다음과 같은 압축되지 않은 수식이 생성되어 각 채널의 종료 광채를 계산합니다.

벡터 표기법으로 변경한 후의 종료 방사형 수식

여기서

매개 변수 설명
Rp 꼭짓점 p의 종료 광채입니다.
pd 표면의 알베도입니다.
L' li의 벡터이며, 구형 고조파 기저 함수에 대한 원본 광채의 프로젝션입니다. 구형 조화 계수의 order² 벡터입니다.
Tp 꼭짓점 p에 대한 order² 전송 벡터입니다. 시뮬레이터는 전송 계수를 p로 나눕니다.

 

이러한 두 벡터는 구형 고조파 계수의 order² 벡터이므로 단순히 점 제품이라는 점에 유의하세요. 순서에 따라 점의 비용이 많이 들 수 있으므로 압축을 사용할 수 있습니다. CPCA(클러스터형 보안 주체 구성 요소 분석)라는 알고리즘은 데이터를 효율적으로 압축합니다. 이렇게 하면 더 높은 순서의 구형 고조파 근사치를 사용하여 더 선명한 그림자를 생성할 수 있습니다.

CPCA는 전송 벡터를 근사화하기 위해 다음 수식을 제공합니다.

근사 전송 벡터의 수식

여기서

매개 변수 설명
Tp 꼭짓점 p의 전송 벡터입니다.
Mk 클러스터 k의 평균입니다.
j PCA 벡터 수를 합산하는 정수입니다.
N PCA 벡터 수입니다.
wpj 포인트 p에 대한 jth PCA 가중치입니다.
Bkj 클러스터 k에 대한 jth PCA 기본 벡터입니다.

 

클러스터는 동일한 평균 벡터를 공유하는 꼭짓점의 일부일 뿐입니다. 클러스터 평균, PCA 가중치, PCA 기본 벡터 및 꼭짓점의 클러스터 ID를 가져오는 방법은 아래에 설명되어 있습니다.

이러한 두 수식을 대체하면 다음이 생성됩니다.

전송 벡터를 대체한 후의 종료 방사형 수식

그런 다음 점 제품을 배포하면 다음 수식이 생성됩니다.

점 제품을 배포한 후의 출구 광채의 수식

왜냐하면 둘 다 (Mk· L') 및 (Bkj· L')은 꼭짓점당 상수이며, 샘플은 CPU를 사용하여 이러한 값을 계산하고 꼭짓점 셰이더에 상수로 전달합니다. 각 꼭짓점에 대해 wpj 가 변경되므로 샘플은 이 꼭짓점별 데이터를 꼭짓점 버퍼에 저장합니다.

사전 계산된 Radiance 전송