Persamaan PRT (Direct3D 9)

Untuk sepenuhnya memahami shader yang mengimplementasikan PRT, berguna untuk memperoleh rumus yang digunakan shader untuk menghitung cahaya keluar.

Untuk memulai, persamaan berikut adalah persamaan umum untuk menghitung cahaya keluar yang dihasilkan dari pencahayaan langsung pada objek difus dengan pencahayaan jauh arbitrer.

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

Dimana:

Parameter Deskripsi
Rp Cahaya keluar di vertex p. Dievaluasi di setiap puncak pada jala.
pd Albedo permukaan.
pi Konstanta, digunakan sebagai faktor normalisasi konservasi energi.
L(s) Lingkungan pencahayaan (cahaya sumber).
Vp₍s₎ Fungsi visibilitas biner untuk titik p. Ini adalah 1 jika titik dapat melihat cahaya, 0 jika tidak.
Hnp₍s₎ Istilah kosinus dari hukum Lambert. Sama dengan maks((Np· s), 0) di mana Np adalah permukaan normal pada titik p.
s Variabel yang terintegrasi di atas bola.

 

Menggunakan fungsi dasar bola, seperti harmonik sferis, persamaan berikut mempersamaan lingkungan pencahayaan.

equation of the lighting environment

Dimana:

Parameter Deskripsi
L(s) Lingkungan pencahayaan (cahaya sumber).
i Bilangan bulat yang menjumlahkan jumlah fungsi dasar.
O Urutan harmonik betis.
Ii Koefisien.
Yi Beberapa fungsi dasar di atas bola.

 

Pengumpulan koefisien ini, L', memberikan perkiraan optimal untuk L fungsi dengan fungsi dasar Y. Mengganti dan mendistribusikan menghasilkan persamaan berikut.

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

Integral dari Yi Vp₍s₎Hnp₍s₎ adalah tpi koefisien transfer yang dikompilasi simulator untuk setiap puncak pada jala. Menggantikan ini menghasilkan persamaan berikut.

equation of the exit radiance after substituting the transfer coefficient

Mengubah ini ke notasi vektor menghasilkan persamaan yang tidak dikompresi berikut untuk menghitung cahaya keluar untuk setiap saluran.

equation of the exit radiance after changing to vector notation

Dimana:

Parameter Deskripsi
Rp Cahaya keluar di vertex p.
pd Albedo permukaan.
L' Vektor LI, dan merupakan proyeksi dari pancaran sumber ke dalam fungsi dasar harmonis bubuk. Ini adalah vektor order² dari koefisien harmonik bulat.
Tp Vektor transfer order² untuk vertex p. Simulator membagi koefisien transfer dengan p.

 

Kedua vektor ini adalah vektor order² dari koefisien harmonik bulat, jadi perhatikan bahwa ini hanyalah produk titik. Tergantung pada pesanan, titik bisa mahal sehingga kompresi dapat digunakan. Algoritma yang disebut Clustered Principal Component Analysis (CPCA) secara efisien memadatkan data. Ini memungkinkan penggunaan perkiraan harmonik sferis dengan urutan yang lebih tinggi yang menghasilkan bayangan yang lebih tajam.

CPCA menyediakan persamaan berikut untuk memperkirakan vektor transfer.

equation of the approximated transfer vector

Dimana:

Parameter Deskripsi
Tp Vektor transfer untuk vertex p.
Markus Rata-rata untuk kluster k.
j Bilangan bulat yang menjumlahkan jumlah vektor PCA.
N Jumlah vektor PCA.
wpj Bobot PCA jth untuk titik p.
Bkj Vektor basis PCA jth untuk k kluster.

 

Kluster hanyalah beberapa simpul yang memiliki vektor rata-rata yang sama. Cara mendapatkan rata-rata kluster, bobot PCA, vektor dasar PCA, dan id kluster untuk simpul dibahas di bawah ini.

Mengganti kedua persamaan ini menghasilkan:

equation of the exit radiance after substituting the transfer vector

Kemudian mendistribusikan produk titik menghasilkan persamaan berikut.

equation of the exit radiance after distributing the dot product

Karena keduanya (Mk· L') dan (Bkj· L') konstan per puncak, sampel menghitung nilai-nilai ini dengan CPU dan meneruskannya sebagai konstanta ke dalam shader puncak; karena wpj berubah untuk setiap puncak, sampel menyimpan data per vertex ini di buffer vertex.

Transfer Radiasi yang Telah Dikomputasi