Faktor Redaman dan Sorotan (Direct3D 9)
Komponen pencahayaan difus dan spekular dari persamaan iluminasi global berisi istilah yang menggambarkan redaman cahaya dan kerucut sorotan. Istilah-istilah ini dijelaskan di bawah ini.
Redaman
Redaman cahaya tergantung pada jenis cahaya dan jarak antara cahaya dan posisi puncak. Untuk menghitung redaman, gunakan salah satu persamaan berikut.
Atten = 1/( att0i + att1i * d + att2i * d²)
Di mana:
Parameter | Nilai default | Jenis | Deskripsi | Rentang |
---|---|---|---|---|
att0i | 0.0 | FLOAT | Faktor redaman konstan | 0 hingga +tak terbatas |
att1i | 0.0 | FLOAT | Faktor redaman linier | 0 hingga +tak terbatas |
att2i | 0.0 | FLOAT | Faktor redaman kuadrat | 0 hingga +tak terbatas |
d | T/A | FLOAT | Jarak dari posisi puncak ke posisi cahaya | T/A |
- Atten = 1, jika lampu adalah cahaya arah.
- Atten = 0, jika jarak antara cahaya dan puncak melebihi rentang cahaya.
Nilai att0, att1, att2 ditentukan oleh anggota Attenuation0, Attenuation1, dan Attenuation2 D3DLIGHT9.
Jarak antara cahaya dan posisi puncak selalu positif.
d = | L dir |
Di mana:
Parameter | Nilai default | Jenis | Deskripsi |
---|---|---|---|
L dir | T/A | D3DVECTOR | Vektor arah dari posisi puncak ke posisi cahaya |
Jika d lebih besar dari rentang cahaya, yaitu, anggota Rentang struktur D3DLIGHT9 , Direct3D tidak membuat perhitungan redaman lebih lanjut dan tidak menerapkan efek dari cahaya ke puncak.
Konstanta redaman bertindak sebagai koefisien dalam rumus - Anda dapat menghasilkan berbagai kurva redaman dengan membuat penyesuaian sederhana pada mereka. Anda dapat mengatur Attenuation1 ke 1.0 untuk membuat cahaya yang tidak mereda tetapi masih dibatasi oleh rentang, atau Anda dapat bereksperimen dengan nilai yang berbeda untuk mencapai berbagai efek redaman.
Redaman pada rentang maksimum cahaya bukan 0,0. Untuk mencegah lampu tiba-tiba muncul ketika berada di rentang cahaya, aplikasi dapat meningkatkan rentang cahaya. Atau, aplikasi dapat mengatur konstanta redaman sehingga faktor redaman mendekati 0,0 pada rentang cahaya. Nilai redaman dikalikan dengan komponen merah, hijau, dan biru dari warna cahaya untuk menskalakan intensitas cahaya sebagai faktor jarak cahaya bergerak ke puncak.
Faktor Sorotan
Persamaan berikut menentukan faktor sorotan.
Parameter | Nilai default | Jenis | Deskripsi | Rentang |
---|---|---|---|---|
rhoi | T/A | FLOAT | cosine(angle) untuk sorotan i | T/A |
phii | 0.0 | FLOAT | Sudut sorotan Penumbra i dalam radian | [thetai, pi) |
thetai | 0.0 | FLOAT | Sudut umbra sorotan i dalam radian | [0, pi) |
falloff | 0.0 | FLOAT | Faktor falloff | (-tak terbatas, +tak terbatas) |
Di mana:
rho = norm(Ldcs). norma(L dir)
Dan:
Parameter | Nilai default | Jenis | Deskripsi |
---|---|---|---|
Ldcs | T/A | D3DVECTOR | Negatif dari arah cahaya di ruang kamera |
L dir | T/A | D3DVECTOR | Vektor arah dari posisi puncak ke posisi cahaya |
Setelah menghitung redaman cahaya, Direct3D juga mempertimbangkan efek sorotan jika berlaku, sudut yang dipantulkan cahaya dari permukaan, dan pantulan bahan saat ini untuk menghitung komponen difus dan spekular untuk vertex tersebut. Untuk informasi selengkapnya, lihat SpotLight.
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk