Shaders
Shader adalah program yang ditetapkan pengguna dirancang untuk berjalan
pada beberapa tahap prosesor grafis. tujuannya adalah untuk menjalankan salah
satu tahap diprogram dari pipeline rendering.
PIPELINE GRAFIS
Pipeline adalah satu set dari elemen pemrosesan data dihubungkan secara seri, sehingga hasil
keluaran dari satu elemen adalah masukkan bagi elemen berikutnya.
Pipeline Grafis : prosedur yang digunakan untuk membuat 2D raster dari 3D scene /
merender citra 2D, obyek 3D, dll Primitif geometri ? Obyek ? Scene ? Rasterisasi ?
Rendering ?
a. PIPELINE GRAFIS
Aplikasi -> Geometri -> Rasteriser (CPU GPU)
Prosedur : • Misalnya ada titik-titik (vertices) segitiga • CPU mengirim titik-titik ke pemroses
titik (vertex processor) • Pemroses vertex akan mentransformasikan vertices menjadi
kumpulan primitif-primitif geometri • Primitif geometri dikirim ke rasteriser untuk
diinterpolasikan nilainilainya • Nilai terinterpolasi dikirim ke pemroses fragmen (fragment
processor) • Pemroses fragmen akan memproses nilai tersebut menjadi piksel untuk
ditampilkan dilayar
TAHAPAN APLIKASI
Tahapan aplikasi dijalankan di CPU CPU modern terdiri dari beberapa core CPU memproses
secara paralel disetiap core-nya menggunakan thread Tahapan aplikasi memproses semua
input keyboard, mouse, dll Hasil tahapan aplikasi : primitif geometri yang akan dirender
Contoh: Deteksi bentrokan/tabrakan oleh 2 obyek
TAHAPAN GEOMETRI
Tahapan geometri dilakukan di GPU Berisi operasi vertex atau polygon dan juga transformasi,
proyeksi, dll GPU mempunyai banyak sekali core Proses dilakukan secara paralel disetiap
core-nya Tahapan ini dibagi menjadi beberapa bagian: • Transformasi Model & Pandangan ->
transformasi koordinat model dan pandang • Vertex Shading -> pencahayaan dan shading •
Proyeksi -> orthografik dan perspektif • Clipping -> bagian yang akan digambar dilayar •
Pemetaan ke Layar -> tranformasi koordinat obyek ke layar
TAHAPAN RASTERISER
Tahapan Rasteriser dijalankan di GPU Bertujuan untuk menghitung dan menentukan piksel
Proses ini disebut juga rasterisasi Tahapan ini dibagi menjadi beberapa bagian: • Pengaturan
bentuk segitiga -> memproses permukaan segitia • Segitiga traversal -> memproses piksel
disetiap permukaan segitiga • Piksel shading -> melakukan shading disetiap piksel dan
menerapkan tekstur • Merging -> menggabungkan informasi warna pada buffer dengan warna
pada hasil piksel shading
SHADERS
Pemrosesan vertex mencakup operasi yang muncul pada setiap vertex seperti transformasi
dan pencahayaan Pemrosesan fragment mencakup struktur data piksel yang dibuat dari hasil
rasterisasi seperti menerapkan nilai tekstur pada setiap fragment. Fragment : informasi yang
diperlukan untuk membuat piksel Rendering diukur dengan frames per second (fps) FPS
mengukur banyaknya citra yang dirender per detik Shaders : kode yang ditulis pada shading
language Shading language : bahasa pemograman grafis
TIPE SHADERS
1. Vertex shader
2. Tesselation control shader
3. Tesselation evaluation shader
4. Geometry shader
5. Fragment shader
VERTEX SHADER
Mengambil informasi vertex dan lingkungan untuk digunakan pada komputasi vertex. Vertex
shader mengambil semua variabel atribut dan menggunakannya atau meng-copy nya ke
variabel keluaran untuk digunakan shaders yang lain. Keluaran penting dari vertex shader
yaitu :
• Hasil transformasi vertices
• Info warna pada setiap vertex Vertex shader ini menggantikan operasi pada fungsi tetap
sebelumnya yaitu:
• Transformasi vertex
• Transformasi normal
• Normalisasi normal (membuat unit vektor)
• Mengurusi pencahayaan pada vertex
• Mengurusi koordinat tekstur
TESSELATION SHADER
Tesselation shader menggunakan keluaran dari vertex shader. Mengambil vertex data dan
dapat menginterpolasi vertex asli untuk membuat tambahan vertex pada geometri. Fungsi : •
Meningkatkan kualitas gambar • Mengatur detail level dari gambar • Menerapkan
perpindahan lokasi tanpa mendefinisikan geometri lagi
TIPE TESSELATION SHADERS
Ada dua tesselation shader yaitu: • Tesselation control shader : set up parameter saat
melakukan interpolasi, banyaknya tesselation, dll • Tesselation evaluation shade :
menentukan komputasi yang digunakan saat menentukan keluaran geometri Ada dua konsep
dalam tesselation yaitu: • Patch atau geometri dasar • Tesselation level : jumlah sub divisi
dalam membagi patch
GEOMETRY SHADER
Mengubah atau menambahkan geometri asli dengan mengembangkan vertices baru dan grup
vertex baru. Misal setiap segitiga pada obyek dapat dikembangkan dengan sub divisi segitiga
FRAGMENT SHADER
Disebut juga pixel shader. Beroperasi pada fragment untuk menghasilkan warna pada
pikselnya dengan menggunakan informasi nilai interpolasi pada warna, kedalaman dan
tekstur. Fragment shader ini menggantikan operasi pada fungsi tetap sebelumnya yaitu: •
Komputasi warna • Penerapan tekstur • Pencahayaan tiap piksel • Kabut • Membuang piksel
pada fragment