Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Properti jenis cahaya menentukan jenis sumber cahaya mana yang Anda gunakan. Jenis cahaya diatur dengan menggunakan nilai dari enumerasi C++ D3DLIGHTTYPE di anggota Jenis struktur D3DLIGHT9 cahaya. Ada tiga jenis lampu di Direct3D - lampu titik, lampu sorot, dan lampu arah. Setiap jenis menerangi objek dalam adegan secara berbeda, dengan berbagai tingkat overhead komputasi.
Cahaya Titik
Lampu titik memiliki warna dan posisi dalam adegan, tetapi tidak ada satu arah pun. Mereka memberikan cahaya yang sama di semua arah, seperti yang ditunjukkan dalam ilustrasi berikut.
cahaya titik
Bola lampu adalah contoh yang baik dari cahaya titik. Lampu titik dipengaruhi oleh redaman dan rentang, dan menerangi jala berdasarkan vertex-by-vertex. Selama pencahayaan, Direct3D menggunakan posisi lampu titik di ruang dunia dan koordinat verteks yang menyala untuk mendapatkan vektor untuk arah cahaya, dan jarak yang telah ditempuh cahaya. Keduanya digunakan, bersama dengan puncak normal, untuk menghitung kontribusi cahaya terhadap penerangan permukaan.
Cahaya Arah
Lampu arah hanya memiliki warna dan arah, bukan posisi. Mereka memancarkan cahaya paralel. Ini berarti bahwa semua cahaya yang dihasilkan oleh lampu arah melewati pemandangan ke arah yang sama. Bayangkan cahaya arah sebagai sumber cahaya pada jarak dekat tak terbatas, seperti matahari. Lampu arah tidak dipengaruhi oleh peredam atau rentang, sehingga arah dan warna yang Anda tentukan adalah satu-satunya faktor yang dipertimbangkan saat Direct3D menghitung warna vertex. Karena sejumlah kecil faktor iluminasi, ini adalah lampu intensif komputasi paling sedikit untuk digunakan.
Senter
Lampu sorot memiliki warna, posisi, dan arah di mana mereka memancarkan cahaya. Cahaya yang dipancarkan dari sorotan terdiri dari kerudung bagian dalam yang cerah dan kerudung luar yang lebih besar, dengan intensitas cahaya berkurang di antara keduanya, seperti yang ditunjukkan dalam ilustrasi berikut.
Sorotan dipengaruhi oleh falloff, peledakan, dan rentang. Faktor-faktor ini, serta jarak yang ditempuh cahaya ke setiap puncak, dicari ketika efek pencahayaan komputasi untuk objek dalam adegan. Menghitung efek ini untuk setiap puncak membuat sorotan yang paling memakan waktu komputasi dari semua lampu di Direct3D.
Struktur C++ D3DLIGHT9 berisi tiga anggota yang hanya digunakan oleh sorotan. Anggota ini - Falloff, Theta, dan Phi - mengontrol seberapa besar atau kecil kerucut bagian dalam dan luar objek sorotan, dan bagaimana cahaya berkurang di antara mereka.
Nilai Theta adalah sudut radian dari kerumuman dalam sorotan, dan nilai Phi adalah sudut untuk kerujut luar cahaya. Nilai Falloff mengontrol bagaimana intensitas cahaya menurun antara tepi luar kerucut dalam dan tepi dalam kerucut luar. Sebagian besar aplikasi mengatur Falloff ke 1.0 untuk membuat falloff yang terjadi secara merata di antara dua kerucut, tetapi Anda dapat mengatur nilai lain sesuai kebutuhan.
Ilustrasi berikut menunjukkan hubungan antara nilai untuk anggota ini dan bagaimana mereka dapat memengaruhi kerumuman dalam dan luar cahaya sorotan.
Lampu sorot memancarkan kerucut cahaya yang memiliki dua bagian: kerucut bagian dalam yang cerah dan kerucut luar. Cahaya paling terang di kerucut dalam dan tidak ada di luar kerucut luar, dengan intensitas cahaya mereda di antara dua area. Jenis pelambatan ini biasanya disebut sebagai falloff.
Jumlah cahaya yang diterima vertex didasarkan pada lokasi puncak di kerucut dalam atau luar. Direct3D menghitung produk titik dari vektor arah sorotan (L) dan vektor dari cahaya ke vertex (D). Nilai ini sama dengan kosinus sudut antara kedua vektor, dan berfungsi sebagai indikator posisi puncak yang dapat dibandingkan dengan sudut kerucut cahaya untuk menentukan di mana puncak mungkin terletak di kerucut dalam atau luar. Ilustrasi berikut memberikan representasi grafis dari hubungan antara kedua vektor ini.
Sistem membandingkan nilai ini dengan kosinus sudut kerumuman dalam dan luar sorotan. Dalam struktur D3DLIGHT9 cahaya, anggota Theta dan Phi mewakili total sudut kerudung untuk kerumuni dalam dan luar. Karena pelambatan terjadi saat puncak menjadi lebih jauh dari pusat penerangan (daripada di seluruh sudut kerucut total), runtime membagi sudut kerucut ini menjadi dua sebelum menghitung kosinus mereka.
Jika produk titik vektor L dan D kurang dari atau sama dengan kosinus sudut kerucut luar, verteks terletak di luar kerucut luar dan tidak menerima cahaya. Jika produk titik L dan D lebih besar dari kosinus sudut kerumuni bagian dalam, maka vertex berada dalam kerujut bagian dalam dan menerima jumlah cahaya maksimum, masih mempertimbangkan pelambatan dari jarak jauh. Jika vertex berada di suatu tempat di antara kedua wilayah, maka falloff dihitung dengan persamaan berikut.
rumus
Mana:
- Saya f intensitas ringan setelah falloff
- Alpha adalah sudut antara vektor L dan D
- Theta adalah sudut kerukuk dalam
- Phi adalah sudut kerudung luar
- p adalah falloff
Rumus ini menghasilkan nilai antara 0,0 dan 1,0 yang menskalakan intensitas cahaya di puncak untuk memperhitungkan falloff. Atenuasi sebagai faktor jarak puncak dari cahaya juga diterapkan. Grafik berikut menunjukkan bagaimana nilai falloff yang berbeda dapat memengaruhi kurva falloff.
cahaya
Efek dari berbagai nilai falloff pada pencahayaan aktual adalah halang, dan penalti performa kecil dikeluarkan dengan membentuk kurva falloff dengan nilai falloff selain 1,0. Untuk alasan ini, nilai ini biasanya diatur ke 1.0.
Topik terkait