-
Rendering Teks Tanpa Tekstur
- Secara tradisional, untuk merender teks, semua glif dari font harus dirender ke atlas, kemudian di-bind sebagai tekstur, lalu segitiga digambar di layar untuk merender glif satu per satu.
- Memperkenalkan metode sederhana untuk menampilkan pesan debug dengan cepat.
- Menjelaskan teknik yang memungkinkan semua teks digambar dengan satu draw call.
-
Font: Piksel Tanpa Tekstur
- Untuk menghilangkan tekstur atlas font, sesuatu yang mirip atlas font harus disimpan di dalam fragment shader.
- Bitmap dapat disimpan menggunakan konstanta integer, dan melalui cara ini glif dapat dirender.
- Integer 8-bit dapat digunakan sebagai bitmap untuk digambar ke layar dalam GLSL fragment shader.
-
Satu Draw Call
- Instance draw call dapat digunakan untuk menghindari perintah draw yang berulang.
- Untuk setiap instance, digunakan data yang mencakup offset posisi dan teks yang akan ditampilkan.
- Pesan dibagi menjadi 4 karakter dan dikonversi menjadi
uint32_t, lalu disimpan dalam struktur word_data.
-
Vertex Shader
- Vertex shader menghasilkan tiga output.
gl_Position menempatkan verteks segitiga di layar.
- Kata yang akan ditampilkan diteruskan ke fragment shader.
- Koordinat tekstur dibuat untuk menghitung koordinat
uv.
-
Fragment Shader
- Fragment shader memerlukan tiga informasi untuk merender teks.
- Koordinat
uv dipetakan ke bit yang benar pada bitmap glif untuk merender glif.
- Jika bit di-set, dirender dengan warna depan; jika tidak di-set, dirender dengan warna latar.
-
Implementasi Lengkap dan Kode Sumber
- Implementasi teknik ini dapat ditemukan dalam kode sumber modul
le_print_debug_print_text.
- Modul ini memudahkan penampilan pesan debug di layar.
1 komentar
Komentar Hacker News
snprintfuntuk menulis langsung ke buffer GPU