Tahap Input-Assembler
Direct3D 10 dan API yang lebih tinggi memisahkan area fungsi dari alur menjadi beberapa tahap; tahap pertama dalam alur adalah tahap input-assembler (IA).
Tujuan dari tahap perakit input adalah untuk membaca data primitif (titik, garis dan/atau segitiga) dari buffer yang diisi pengguna dan merakit data menjadi primitif yang akan digunakan oleh tahap alur lainnya. Tahap IA dapat merakit simpul menjadi beberapa jenis primitif yang berbeda (seperti daftar garis, strip segitiga, atau primitif dengan kedekatan). Jenis primitif baru (seperti daftar baris dengan kedekatan atau daftar segitiga dengan kedekatan) telah ditambahkan untuk mendukung shader geometri.
Informasi kedekatan terlihat oleh aplikasi hanya dalam shader geometri. Jika shader geometri dipanggil dengan segitiga termasuk kedekatan, misalnya, data input akan berisi 3 simpul untuk setiap segitiga dan 3 simpul untuk data yang berdekatan per segitiga.
Ketika tahap perakitan input diminta untuk menghasilkan data yang berdekatan, data input harus menyertakan data yang berdekatan. Ini mungkin memerlukan penyediaan puncak dummy (membentuk segitiga degenerasi), atau mungkin dengan menandai salah satu atribut vertex apakah vertex ada atau tidak. Ini juga perlu dideteksi dan ditangani oleh shader geometri, meskipun pemecahan geometri degenerasi akan terjadi pada tahap rasterizer.
Sementara merakit primitif, tujuan sekunder IA adalah untuk melampirkan nilai yang dihasilkan sistem untuk membantu membuat shader lebih efisien. Nilai yang dihasilkan sistem adalah string teks yang juga disebut semantik. Ketiga tahap shader dibangun dari inti shader umum, dan inti shader menggunakan nilai yang dihasilkan sistem (seperti id primitif, id instans, atau id vertex) sehingga tahap shader dapat mengurangi pemrosesan hanya untuk primitif, instans, atau simpul yang belum diproses.
Seperti yang ditunjukkan dalam diagram blok alur, setelah tahap IA membaca data dari memori (merakit data menjadi primitif dan melampirkan nilai yang dihasilkan sistem), data adalah output ke tahap shader vertex.
Di bagian ini
Topik | Deskripsi |
---|---|
Memulai Tahap Input-Assembler |
Ada beberapa langkah yang diperlukan untuk menginisialisasi tahap perakitan input (IA). Misalnya, Anda perlu membuat sumber daya buffer dengan data puncak yang dibutuhkan alur, memberi tahu tahap IA di mana buffer berada dan jenis data apa yang dikandungnya, dan menentukan jenis primitif yang akan dirakit dari data. |
Topologi Primitif |
Direct3D 10 dan yang lebih tinggi mendukung beberapa jenis primitif (atau topologi) yang diwakili oleh jenis enumerasi D3D_PRIMITIVE_TOPOLOGY . Jenis-jenis ini menentukan bagaimana simpul ditafsirkan dan dirender oleh alur. |
Menggunakan Tahap Input-Assembler tanpa Buffer |
Membuat dan mengikat buffer tidak diperlukan jika shader Anda tidak memerlukan buffer. Bagian ini berisi contoh vertex sederhana dan shader piksel yang menggambar satu segitiga. |
Menggunakan Nilai System-Generated |
Nilai yang dihasilkan sistem dihasilkan oleh tahap IA (berdasarkan semantik input yang disediakan pengguna) untuk memungkinkan efisiensi tertentu dalam operasi shader. |