Bagikan melalui


Pencahayaan Sekitar (Direct3D 9)

Pencahayaan sekitar menyediakan pencahayaan konstan untuk adegan. Ini menyalakan semua simpul objek yang sama karena tidak tergantung pada faktor pencahayaan lainnya seperti normal puncak, arah cahaya, posisi cahaya, rentang, atau redaman. Ini adalah jenis pencahayaan tercepat tetapi menghasilkan hasil yang paling tidak realistis. Direct3D berisi properti cahaya sekitar global tunggal yang dapat Anda gunakan tanpa membuat cahaya apa pun. Atau, Anda dapat mengatur objek cahaya apa pun untuk memberikan pencahayaan sekitar. Pencahayaan sekitar untuk adegan dijelaskan oleh persamaan berikut.

Pencahayaan Sekitar = Cₐ*[Gₐ + sum(Atteni*Spoti*Lai)]

Di mana:

Parameter Nilai default Jenis Deskripsi
Cₐ (0,0,0,0) D3DCOLORVALUE Warna sekitar material
Gₐ (0,0,0,0) D3DCOLORVALUE Warna sekitar global
Atteni (0,0,0,0) D3DCOLORVALUE Redaman cahaya cahaya ith. Lihat Faktor Redaman dan Sorotan (Direct3D 9).
Spoti (0,0,0,0) D3DVECTOR Faktor sorotan dari cahaya ith. Lihat Faktor Redaman dan Sorotan (Direct3D 9).
jumlah T/A T/A Jumlah cahaya sekitar
Lai (0,0,0,0) D3DVECTOR Warna sekitar terang dari cahaya ith

 

Nilai untuk Cₐ adalah:

  • vertex color1, jika AMBIENTMATERIALSOURCE = D3DMCS_COLOR1, dan warna puncak pertama disediakan dalam deklarasi puncak.
  • vertex color2, jika AMBIENTMATERIALSOURCE = D3DMCS_COLOR2, dan warna puncak kedua disediakan dalam deklarasi puncak.
  • warna sekitar material.

Catatan

Jika salah satu opsi AMBIENTMATERIALSOURCE digunakan, dan warna puncak tidak disediakan, maka warna sekitar material digunakan.

 

Untuk menggunakan warna sekitar material, gunakan SetMaterial seperti yang ditunjukkan pada kode contoh di bawah ini.

Gₐ adalah warna sekitar global. Ini diatur menggunakan SetRenderState(D3DRS_AMBIENT). Ada satu warna sekitar global dalam adegan Direct3D. Parameter ini tidak terkait dengan objek cahaya Direct3D.

Lai adalah warna sekitar dari cahaya ith di tempat kejadian. Setiap lampu Direct3D memiliki sekumpulan properti, salah satunya adalah warna sekitar. Istilah, sum(Lai) adalah jumlah dari semua warna sekitar dalam adegan.

Contoh

Dalam contoh ini, objek diwarnai menggunakan cahaya sekitar adegan dan warna sekitar material.

#define GRAY_COLOR  0x00bfbfbf

// create material
D3DMATERIAL9 mtrl;
ZeroMemory(&mtrl, sizeof(mtrl));
mtrl.Ambient.r = 0.75f;
mtrl.Ambient.g = 0.0f;
mtrl.Ambient.b = 0.0f;
mtrl.Ambient.a = 0.0f;
m_pd3dDevice->SetMaterial(&mtrl);
m_pd3dDevice->SetRenderState(D3DRS_AMBIENT, GRAY_COLOR);

Menurut persamaan, warna yang dihasilkan untuk simpul objek adalah kombinasi dari warna bahan dan warna terang.

Dua ilustrasi berikut menunjukkan warna material, yaitu abu-abu, dan warna terang, yang berwarna merah cerah.

ilustrasi ilustrasi bola abu-abu dari bola merah

Adegan yang dihasilkan ditampilkan dalam ilustrasi berikut. Satu-satunya objek dalam adegan adalah bola. Cahaya sekitar menyalakan semua simpul objek dengan warna yang sama. Hal ini tidak tergantung pada puncak normal atau arah cahaya. Akibatnya, bola terlihat seperti lingkaran 2D karena tidak ada perbedaan dalam bayangan di sekitar permukaan objek.

ilustrasi bola dengan pencahayaan sekitar

Untuk memberi objek tampilan yang lebih realistis, terapkan pencahayaan difus atau spekular selain pencahayaan sekitar.

Matematika Pencahayaan