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.

persamaan radiasi keluar yang dihasilkan dari pencahayaan langsung pada objek difus dengan pencahayaan jauh arbitrer

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.

persamaan lingkungan pencahayaan

Dimana:

Parameter Deskripsi
L(s) Lingkungan pencahayaan (cahaya sumber).
i Bilangan bulat yang menjumlahkan jumlah fungsi dasar.
O Urutan harmonik betis.
li Koefisien.
Yi(s) 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.

persamaan radiance keluar setelah mengganti l dan mendistribusikan

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

persamaan radiasi keluar setelah mengganti koefisien transfer

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

persamaan radiasi keluar setelah berubah menjadi notasi vektor

di mana:

Parameter Deskripsi
Rp Cahaya keluar di vertex p.
pd Albedo permukaan.
L' Vektor dari 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.

persamaan perkiraan vektor transfer

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:

persamaan radiasi keluar setelah mengganti vektor transfer

Kemudian mendistribusikan produk titik menghasilkan persamaan berikut.

persamaan radiance keluar setelah mendistribusikan produk titik

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