Bagikan melalui


Gambaran umum pencahayaan

Saat Anda menggunakan pencahayaan Direct3D, Anda mengizinkan Direct3D untuk menangani detail iluminasi untuk Anda. Pengguna tingkat lanjut dapat melakukan pencahayaan sendiri, jika diinginkan.

Saat pencahayaan diaktifkan, Direct3D menghitung warna setiap verteks objek berdasarkan kombinasi berikut:

  • Texel dalam peta tekstur terkait.
  • Warna difus dan spekular di puncak, jika ditentukan.
  • Warna dan intensitas cahaya yang dihasilkan oleh sumber cahaya di tempat kejadian atau tingkat cahaya sekitar adegan.

Cara Anda bekerja dengan pencahayaan dan bahan membuat perbedaan besar dalam penampilan adegan yang dirender. Bahan mendefinisikan bagaimana cahaya memantulkan permukaan. Tingkat cahaya langsung dan cahaya sekitar menentukan cahaya yang dipantulkan. Anda harus menggunakan bahan untuk merender adegan jika pencahayaan diaktifkan.

Lampu tidak diperlukan untuk merender adegan, tetapi detail dalam adegan yang dirender tanpa cahaya tidak terlihat. Paling baik, merender adegan yang tidak menyala menghasilkan siluet objek di adegan. Ini tidak cukup detail untuk sebagian besar tujuan.

Cahaya langsung vs. cahaya sekitar

Meskipun objek cahaya langsung dan sekitar menerangi dalam adegan, mereka independen satu sama lain, mereka memiliki efek yang sangat berbeda, dan mereka mengharuskan Anda bekerja dengan mereka dengan cara yang sama sekali berbeda.

Cahaya langsung menyambungkan objek secara langsung. Cahaya langsung selalu memiliki arah dan warna, dan itu adalah faktor untuk algoritma bayangan, seperti bayangan Gouraud. Berbagai jenis lampu memancarkan cahaya langsung dengan cara yang berbeda, menciptakan efek pelambatan khusus.

Cahaya sekitar secara efektif di mana-mana dalam adegan. Cahaya sekitar adalah tingkat cahaya umum yang mengisi seluruh adegan, terlepas dari objek dan lokasinya di adegan itu. Cahaya sekitar tidak memiliki posisi atau arah, hanya warna dan intensitas. Setiap cahaya menambah cahaya sekitar secara keseluruhan dalam adegan.

Warna cahaya sekitar berbentuk nilai RGBA, di mana setiap komponen adalah nilai bilangan bulat dari 0 hingga 255. Ini tidak seperti sebagian besar nilai warna di Direct3D.

Komponen merah, hijau, dan biru digabungkan untuk membuat warna akhir cahaya sekitar. Komponen alfa mengontrol transparansi warna. Saat menggunakan akselerasi perangkat keras atau emulasi RGB, komponen alfa diabaikan.

Model cahaya Direct3D vs. alam

Di alam, ketika cahaya dipancarkan dari sumber, itu tercermin dari ratusan, jika bukan ribuan atau jutaan objek sebelum mencapai mata pengguna. Setiap kali tercermin, beberapa cahaya diserap oleh permukaan, beberapa tersebar ke arah acak, dan sisanya pergi ke permukaan lain atau ke mata pengguna. Proses ini berlanjut sampai cahaya dikurangi menjadi tidak ada atau pengguna menyadari cahaya.

Jelas, perhitungan yang diperlukan untuk mensimulasikan perilaku alami cahaya terlalu memakan waktu untuk digunakan untuk grafik Direct3D real time. Oleh karena itu, dengan mengingat kecepatan, model cahaya Direct3D memperkirakan cara kerja cahaya di dunia alami. Direct3D menjelaskan cahaya dalam hal komponen merah, hijau, dan biru yang digabungkan untuk membuat warna akhir.

Di Direct3D, ketika cahaya memantulkan permukaan, warna terang berinteraksi secara matematis dengan permukaan itu sendiri untuk membuat warna akhirnya ditampilkan di layar. Untuk informasi spesifik tentang algoritma yang digunakan Direct3D, lihat Matematika pencahayaan.

Model cahaya Direct3D menggeneralisasi cahaya menjadi dua jenis: cahaya sekitar dan cahaya langsung. Masing-masing memiliki atribut yang berbeda, dan masing-masing berinteraksi dengan bahan permukaan dengan cara yang berbeda. Cahaya sekitar adalah cahaya yang telah tersebar begitu banyak sehingga arah dan sumbernya tidak ditentukan: mempertahankan tingkat intensitas rendah di mana-mana. Pencahayaan tidak langsung yang digunakan oleh fotografer adalah contoh cahaya sekitar yang baik.

Cahaya sekitar di Direct3D, seperti di alam, tidak memiliki arah atau sumber nyata, hanya warna dan intensitas. Bahkan, tingkat cahaya sekitar benar-benar independen dari objek apa pun dalam adegan yang menghasilkan cahaya. Cahaya sekitar tidak berkontribusi pada pantulan spekular.

Cahaya langsung adalah cahaya yang dihasilkan oleh sumber dalam adegan; selalu memiliki warna dan intensitas, dan bergerak ke arah yang ditentukan. Cahaya langsung berinteraksi dengan bahan permukaan untuk menciptakan sorotan spekular, dan arahnya digunakan sebagai faktor dalam algoritma bayangan, termasuk bayangan Gouraud. Ketika cahaya langsung dipantulkan, itu tidak berkontribusi pada tingkat cahaya sekitar dalam adegan. Sumber dalam adegan yang menghasilkan cahaya langsung memiliki karakteristik berbeda yang memengaruhi bagaimana mereka menerangi adegan.

Selain itu, bahan poligon memiliki sifat yang memengaruhi bagaimana poligon itu mencerminkan cahaya yang diterimanya. Anda mengatur sifat pantulan tunggal yang menjelaskan bagaimana materi mencerminkan cahaya sekitar, dan Anda mengatur sifat individual untuk menentukan pantulan spekular dan difus bahan.

Nilai warna untuk lampu dan bahan

Direct3D menjelaskan warna dalam hal empat komponen (merah, hijau, biru, dan alfa), yang digabungkan untuk membuat warna akhir. Setiap komponen berkisar antara 0,0 hingga 1,0. Meskipun lampu dan bahan menggunakan struktur yang sama untuk menggambarkan warna, nilainya digunakan sedikit berbeda oleh lampu versus bahan.

Nilai warna untuk sumber cahaya mewakili jumlah komponen cahaya tertentu yang dipancarkannya. Karena lampu tidak menggunakan komponen alfa, hanya komponen merah, hijau, dan biru warna yang relevan. Anda dapat memvisualisasikan tiga komponen sebagai lensa merah, hijau, dan biru di televisi proyeksi. Setiap lensa mungkin mati (nilai 0,0 dalam anggota yang sesuai), mungkin secerah mungkin (nilai 1,0), atau mungkin beberapa tingkat di antaranya.

Warna yang datang melalui lensa digabungkan untuk membuat warna akhir cahaya. Kombinasi seperti R(1.0), G(1.0), B(1.0) membuat cahaya putih, di mana R(0.0), G(0.0), B(0.0) tidak memancarkan cahaya sama sekali. Anda dapat membuat cahaya yang hanya memancarkan satu komponen, menghasilkan cahaya merah, hijau, atau biru murni; atau, cahaya dapat menggunakan kombinasi untuk memancarkan warna seperti kuning atau ungu. Anda bahkan dapat mengatur nilai komponen warna negatif untuk membuat "cahaya gelap" yang benar-benar menghilangkan cahaya dari adegan. Atau, Anda dapat mengatur komponen ke beberapa nilai yang lebih besar dari 1,0 untuk membuat cahaya yang sangat terang.

Dengan bahan, di sisi lain, nilai warna mewakili berapa banyak komponen cahaya yang tercermin oleh permukaan yang dirender dengan bahan tersebut. Bahan yang komponen warnanya adalah R(1.0), G(1.0), B(1.0), A(1.0) mencerminkan semua cahaya yang datang ke arahnya. Demikian juga, bahan dengan R(0.0), G(1.0), B(0.0), A(1.0) mencerminkan semua lampu hijau yang diarahkan padanya. Bahan memiliki beberapa nilai refleksi untuk membuat berbagai jenis efek.

Lihat Jenis cahaya dan Properti cahaya.

Lampu dan bahan