Efek (Direct3D 9)
Efek Microsoft DirectX memungkinkan integrasi vertex dan shader piksel dengan status alur untuk merender objek. Efek adalah langkah logis berikutnya dalam menggabungkan shader untuk menghasilkan kondisi render yang unik.
Efek juga menyediakan cara mudah untuk menulis shader untuk versi perangkat keras yang berbeda. Karena kartu video yang berbeda mendukung fungsionalitas yang berbeda, aplikasi dapat menulis beberapa teknik yang akan berjalan pada berbagai perangkat. Dengan cara ini, jika aplikasi berjalan pada perangkat keras terbaru dan terbesar, aplikasi dapat menjalankan teknik efek yang paling canggih. Di sisi lain, teknik efek yang kurang canggih secara otomatis dapat dipilih untuk dijalankan pada perangkat keras yang lebih murah atau kurang mampu.
Efek dapat menggantikan pemrosesan puncak dan bagian dari pemrosesan piksel yang dilakukan oleh alur grafis. Contoh efek yang menggunakan shader vertex dan shader piksel ada di Sampel BasicHLSL. Anda bisa mendapatkan sampel ini dan mempelajarinya dari DirectX SDK. Untuk informasi tentang DirectX SDK, lihat Di mana DirectX SDK?.
Untuk informasi selengkapnya tentang efek, lihat topik-topik ini:
Diagram berikut menunjukkan alur.
Alur mengubah data input menjadi piksel output yang mengisi buffer bingkai. Data input berasal dari objek yang terdiri dari simpul di ruang objek, atau permukaan urutan yang lebih tinggi yang dibuat dari patch N, patch persegi panjang, dan patch segitiga. Setelah data input tessellated, alur melakukan pemrosesan vertex, pemrosesan primitif, dan pemrosesan piksel sebelum menghasilkan warna piksel akhir.
Pemrosesan puncak dan piksel dapat dilakukan oleh alur fungsi tetap, atau dapat diimplementasikan dengan shader yang dapat diprogram. Tesselasi data input, pemrosesan primitif, dan output data dikendalikan oleh status alur. Semua ini dapat diintegrasikan ke dalam efek. Efek mengatur status yang mengontrol cara alur berfungsi. Efek mengelola shader yang dapat diprogram serta status fungsi tetap.
Efek dapat menyimpan dan memulihkan status, meninggalkan perangkat dalam keadaan yang sama seperti sebelum efek dijalankan. Jenis status yang dapat dikelola efek meliputi:
- Keadaan shader. Ini termasuk membuat dan menghapus shader, mengatur konstanta shader, mengatur status shader, dan merender dengan shader.
- Status tekstur dan sampler. Ini termasuk menentukan file tekstur, menginisialisasi tahap tekstur, membuat objek sampler, dan mengatur status sampler.
- Status alur lainnya. Ini termasuk status untuk mengatur transformasi, pencahayaan, bahan, dan opsi penyajian. Ini bisa menjadi variabel global atau lokal. Variabel dapat diatur dengan efek itu sendiri atau oleh aplikasi.
Efek berisi beberapa opsi penyajian yang disebut teknik. Setiap teknik merangkum variabel global, status alur, status tekstur dan sampler, dan status shader. Satu gaya diimplementasikan dalam kode penyajian. Satu atau beberapa pass dapat dienkapulatasi dalam teknik. Semua pass dan teknik dapat divalidasi untuk melihat apakah kode efek akan berjalan pada perangkat keras.
Efek mengelola status. Status kata digunakan sangat luas di sini karena mencakup semua jenis informasi yang diperlukan alur untuk menentukan kondisi render. Ini termasuk hampir semua area fungsi dari alur.
Opsi rendering dikontrol oleh teknik dan pass. Aplikasi merender efek dengan mengatur satu teknik aktif, dan merender satu atau beberapa pass. Semua penyajian dalam efek dilakukan dalam sepasang panggilan Mulai dan Akhir yang cocok. Saat Mulai dipanggil, stateblock dibuat dan status perangkat disimpan (kecuali Anda menentukan sebaliknya). Setelah teknik merender pass yang ditentukan aplikasi untuk dirender, End dipanggil untuk mengakhiri teknik aktif. Sistem efek merespons dengan secara otomatis memulihkan status alur yang diambil di blok status (kecuali Anda memilih untuk menonaktifkan fungsionalitas penyimpanan dan pemulihan ini).
Saat memprogram urutan penyajian multiple-pass, yang masing-masing memerlukan penyiapan statusnya sendiri, efek dapat mengurangi housekeeping yang diperlukan untuk melacak perubahan status. Untuk melihat informasi selengkapnya tentang status yang dapat disimpan dan dipulihkan oleh efek, lihat Status Efek (Direct3D 9).
Parameter efek adalah semua variabel non-statis yang dideklarasikan dalam efek. Ini dapat mencakup variabel dan anotasi global. Parameter efek dapat dibagikan di antara efek yang berbeda dengan mendeklarasikan parameter dengan kata kunci bersama dan kemudian membuat efek dengan kumpulan efek.
Efek kloning menggunakan kumpulan efek yang sama dengan efek dari mana mereka dikloning. Mengkloning efek membuat salinan efek yang tepat, termasuk variabel global, teknik, pass, dan anotasi.