Bagikan melalui


Efek pencahayaan spekular jauh

Gunakan efek pencahayaan spekular jauh untuk membuat gambar yang tampaknya merupakan permukaan reflektif di mana sumber cahaya tampaknya berasal dari jarak jauh (seperti matahari atau lampu overhead). Efek ini menggunakan saluran alfa sebagai peta tinggi dan menyalakan gambar dengan sumber cahaya jauh.

Warna bitmap output adalah hasil dari warna terang, posisi cahaya, dan geometri permukaan. Output saluran alfa untuk setiap piksel dengan pencahayaan spekular adalah maksimum output saluran merah, hijau, dan biru untuk piksel tersebut.

CLSID untuk efek ini CLSID_D2D1DistantSpecular.

Contoh gambar

Contoh di sini menunjukkan gambar input dan output dari efek pencahayaan spekular jauh.

contoh cuplikan layar efek yang menunjukkan gambar input dan output dari efek pencahayaan spekular yang jauh.

Bitmap output akhir dapat dihitung menggunakan persamaan berikut.

perhitungan bitmap output

Di mana

K? = konstanta pencahayaan spekular.
simbol normal permukaan. = vektor unit normal permukaan.
simbol vektor setengah jalan. = Vektor unit "halfway" antara vektor unit mata dan vektor unit cahaya.
Cr, Cg, Cb = warna terang dalam komponen RGB.

Sumber cahaya jauh

Gambar di sini menunjukkan contoh arah cahaya dari sumber cahaya yang jauh.

sumber cahaya jauh

Efek menggunakan parameter azimuth dan elevasi untuk menghitung vektor cahaya l vektor. menggunakan persamaan berikut:

perhitungan vektor cahaya

di mana Light?, Lighty, dan Lightz adalah nilai posisi cahaya input.

Properti efek

Nama tampilan dan enumerasi indeks Deskripsi
Azimut
D2D1_DISTANTSPECULAR_PROP_AZIMUTH
Sudut arah sumber cahaya di bidang XY relatif terhadap sumbu X ke arah jam penghitung. Unit dalam derajat dan harus antara 0 dan 360 derajat.
Jenisnya adalah FLOAT.
Nilai defaultnya adalah 0,0f.
Elevasi
D2D1_DISTANTSPECULAR_PROP_ELEVATION
Sudut arah sumber cahaya di bidang YZ relatif terhadap sumbu Y ke arah jam penghitung. Unit dalam derajat dan harus antara 0 dan 360 derajat.
Jenisnya adalah FLOAT.
Nilai defaultnya adalah 0,0f.
SpecularExponent
D2D1_DISTANTSPECULAR_PROP_SPECULAR_EXPONENT
Eksponen untuk istilah spekular dalam persamaan pencahayaan Phong. Nilai yang lebih besar sesuai dengan permukaan yang lebih reflektif. Nilainya tidak bersatu dan harus antara 1,0 dan 128. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 1,0f.
SpecularConstant
D2D1_DISTANTSPECULAR_PROP_SPECULAR_CONSTANT
Rasio pantulan spekular terhadap cahaya masuk. Nilainya tidak bersatu dan harus antara 0 dan 10.000. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 1,0f.
SurfaceScale
D2D1_DISTANTSPECULAR_PROP_SURFACE_SCALE
Faktor skala ke arah Z. Nilainya tidak bersatu dan harus antara 0 dan 10.000. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 1,0f.
Warna
D2D1_DISTANTSPECULAR_PROP_COLOR
Warna cahaya masuk. Properti ini diekspos sebagai D2D1_VECTOR_3F (R, G, B) dan digunakan untuk menghitung LR, LG, LB. Jenisnya D2D1_VECTOR_3F.
Nilai defaultnya adalah {1.0f, 1.0f, 1.0f}.
KernelUnitLength
D2D1_DISTANTSPECULAR_PROP_KERNEL_UNIT_LENGTH
Ukuran elemen dalam kernel Sobel yang digunakan untuk menghasilkan permukaan normal ke arah X dan Y. Properti ini adalah D2D1_VECTOR_2F (Panjang Unit Kernel X, Panjang Unit Kernel Y) dan didefinisikan dalam (piksel independen perangkat (DIP)/Unit Kernel). Efeknya menggunakan interpolasi bilinear untuk menskalakan bitmap agar sesuai dengan ukuran elemen kernel. Jenisnya D2D1_VECTOR_2F.
Nilai defaultnya adalah {1.0f, 1.0f}.
ScaleMode
D2D1_DISTANTSPECULAR_PROP_SCALE_MODE
Mode interpolasi yang digunakan efek untuk menskalakan gambar ke panjang unit kernel yang sesuai. Ada enam mode skala yang berkisar dalam kualitas dan kecepatan.
Jenisnya D2D1_DISTANTSPECULAR_SCALE_MODE.
Nilai defaultnya adalah D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR.

Mode skala

Enumeration Deskripsi
D2D1_DISTANTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR Sampel titik tunggal terdekat dan menggunakannya. Mode ini menggunakan lebih sedikit waktu pemrosesan, tetapi menghasilkan gambar berkualitas terendah.
D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR Menggunakan sampel empat titik dan interpolasi linier. Mode ini menghasilkan gambar berkualitas lebih tinggi daripada tetangga terdekat.
D2D1_DISTANTSPECULAR_SCALE_MODE_CUBIC Menggunakan 16 sampel kernel kubik untuk interpolasi. Mode ini menggunakan waktu pemrosesan terbanyak, tetapi menghasilkan gambar berkualitas lebih tinggi.
D2D1_DISTANTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR Menggunakan 4 sampel linier dalam satu piksel untuk anti-aliasing tepi yang baik. Mode ini baik untuk menurunkan skala dengan jumlah kecil pada gambar dengan beberapa piksel.
D2D1_DISTANTSPECULAR_SCALE_MODE_ANISOTROPIC Menggunakan pemfilteran anisotropik untuk mengambil sampel pola sesuai dengan bentuk bitmap yang diubah.
D2D1_DISTANTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC Menggunakan ukuran variabel kernel kubik berkualitas tinggi untuk melakukan pra-downscale gambar jika penurunan skala terlibat dalam matriks transformasi. Kemudian menggunakan mode interpolasi kubik untuk output akhir.

Catatan

Jika Anda tidak memilih mode, efek akan default ke D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8 dan Pembaruan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows]
Server minimum yang didukung Windows 8 dan Pembaruan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows]
Header d2d1effects.h
Pustaka d2d1.lib, dxguid.lib

ID2D1Effect