Efek pencahayaan spot-spekular
Gunakan efek pencahayaan spot-spekular untuk membuat gambar yang tampaknya merupakan permukaan reflektif di mana sumber cahaya terbatas pada kerucut cahaya yang diarahkan. Efek ini menggunakan saluran alfa sebagai peta tinggi dan menyalakan gambar dengan sumber cahaya titik.
Warna bitmap output adalah hasil dari warna terang, posisi cahaya, arah kerucut dan geometri permukaan sesuai dengan bagian spekular dari model pencahayaan Phong. 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_D2D1SpotSpecular.
Contoh gambar
Contoh di sini menunjukkan gambar input dan output dari efek pencahayaan spot-spekular.
Cahaya spekular mengacu pada cahaya yang tercermin dalam arah tertentu.
Efek menghitung nilai piksel output akhir dihitung menggunakan persamaan di sini:
Di mana
Sumber cahaya spot
Sumber cahaya spot memancarkan cahaya kerujut ke arah tertentu dan tidak memancarkan cahaya di luar kerujut.
Sumber cahaya spot menghitung Light Vector L dan Halfway Vector H dengan cara yang sama seperti efek spekular titik .
Efek menghitung warna terang, Lr, Lg, Lb, sebagai fungsi posisi sumber cahaya seperti yang ditunjukkan dengan persamaan di sini:
Simbol didefinisikan oleh persamaan ini:
Simbol didefinisikan oleh persamaan ini:
Properti efek
Nama tampilan dan enumerasi indeks | Deskripsi |
---|---|
LightPosition D2D1_SPOTSPECULAR_PROP_LIGHT_POSITION |
Posisi cahaya sumber cahaya titik. Properti adalah D2D1_VECTOR_3F yang didefinisikan sebagai (x, y, z). Unit berada dalam piksel independen perangkat (DIP) dan tidak terbatas. Jenisnya D2D1_VECTOR_3F. Nilai defaultnya adalah {0.0f, 0.0f, 0.0f}. |
PointsAt D2D1_SPOTSPECULAR_PROP_POINTS_AT |
Di mana lampu spot difokuskan. Properti diekspos sebagai D2D1_VECTOR_3F dengan (x, y, z). Unit berada di DIP dan nilainya tidak terbatas. Jenisnya D2D1_VECTOR_3F. Nilai defaultnya adalah {0.0f, 0.0f, 0.0f}. |
Fokus D2D1_SPOTSPECULAR_PROP_FOCUS |
Fokus lampu spot. Properti ini tidak bersatu dan didefinisikan antara 0 dan 200. Jenisnya adalah FLOAT. Nilai defaultnya adalah 1,0f. |
LimitingConeAngle D2D1_SPOT_SPECULAR_PROP_LIMITING_CONE_ANGLE |
Sudut kerujut yang membatasi wilayah tempat cahaya diproyeksikan. Tidak ada cahaya diproyeksikan di luar kerujut. Sudut kerujut yang membatasi adalah sudut antara sumbu lampu spot (sumbu antara properti LightPosition dan PointsAt ) dan kerujut cahaya spot. Properti ini didefinisikan dalam derajat dan harus antara 0 hingga 90 derajat. Jenisnya adalah FLOAT. Nilai defaultnya adalah 90,0f. |
SpecularExponent D2D1_SPOTSPECULAR_PROP_SPECULAR_EXPONENT |
Eksponen untuk istilah spekular dalam persamaan pencahayaan Phong. Nilai yang lebih besar sesuai dengan permukaan yang lebih reflektif. Nilai ini tidak bersatu dan harus antara 1,0 dan 128. Jenisnya adalah FLOAT. Nilai defaultnya adalah 1,0f. |
SpecularConstant D2D1_SPOTSPECULAR_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_SPOTSPECULAR_PROP_SURFACE_SCALE |
Faktor skala dalam arah Z untuk menghasilkan peta tinggi. Nilainya tidak bersatu dan harus antara 0 dan 10.000. Jenisnya adalah FLOAT. Nilai defaultnya adalah 1,0f. |
Warna D2D1_SPOTSPECULAR_PROP_COLOR |
Warna cahaya masuk. Properti ini diekspos sebagai Vektor 3 (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_SPOTSPECULAR_PROP_KERNEL_UNIT_LENGTH |
Ukuran elemen dalam kernel Sobel yang digunakan untuk menghasilkan permukaan normal ke arah X dan Y. Properti ini memetakan ke nilai dx dan dy dalam gradien Sobel. Properti ini adalah D2D1_VECTOR_2F (Panjang Unit Kernel X, Panjang Unit Kernel Y) dan didefinisikan dalam (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_SPOTSPECULAR_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. Lihat Mode skala untuk informasi selengkapnya. Jenisnya D2D1_SPOTSPECULAR_SCALE_MODE. Nilai defaultnya adalah D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR. |
Mode skala
Enumeration | Deskripsi |
---|---|
D2D1_SPOTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR | Sampel titik tunggal terdekat dan menggunakannya. Mode ini menggunakan lebih sedikit waktu pemrosesan, tetapi menghasilkan gambar berkualitas terendah. |
D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR | Menggunakan sampel empat titik dan interpolasi linier. Mode ini menghasilkan gambar berkualitas lebih tinggi daripada tetangga terdekat. |
D2D1_SPOTSPECULAR_SCALE_MODE_CUBIC | Menggunakan 16 sampel kernel kubik untuk interpolasi. Mode ini menggunakan waktu pemrosesan terbanyak, tetapi menghasilkan gambar berkualitas lebih tinggi. |
D2D1_SPOTSPECULAR_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_SPOTSPECULAR_SCALE_MODE_ANISOTROPIC | Menggunakan pemfilteran anisotropik untuk mengambil sampel pola sesuai dengan bentuk bitmap yang diubah. |
D2D1_SPOTSPECULAR_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_SPOTSPECULAR_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 |