Engine Grafis Vektor Berakselerasi GPU Memberikan Peningkatan Performa 60x Setelah Pengembangan 10 Tahun

Tim Komunitas BigGo
Engine Grafis Vektor Berakselerasi GPU Memberikan Peningkatan Performa 60x Setelah Pengembangan 10 Tahun

Setelah satu dekade pengembangan, engine grafis vektor 2D berakselerasi GPU baru bernama Rasterizer telah dirilis, menjanjikan performa hingga 60 kali lebih cepat dibandingkan rendering berbasis CPU. Proyek yang terinspirasi dari Adobe Flash ini menargetkan aplikasi yang membutuhkan antarmuka pengguna animasi vektor yang halus dan rendering grafis berkualitas tinggi.

Siklus pengembangan yang panjang ini mencerminkan kompleksitas tantangan inti dalam grafis vektor: mengonversi jalur vektor secara efisien menjadi piksel anti-aliased berkualitas tinggi. Masalah fundamental ini telah membuat para pengembang sibuk selama bertahun-tahun, karena memerlukan keseimbangan antara kecepatan, kualitas, dan kompatibilitas di berbagai platform perangkat keras.

Spesifikasi Performa

  • Hingga 60 kali lebih cepat dibandingkan rendering CPU
  • Mampu merender 50.000 glyph pada 60fps
  • Menggunakan pemrosesan grafis vektor 2D yang dipercepat GPU
  • Rendering dua tahap: float mask buffer → color buffer
Harimau yang garang melambangkan peningkatan performa yang kuat yang dijanjikan oleh Rasterizer , memamerkan teknologi mutakhir dalam rendering grafis vektor
Harimau yang garang melambangkan peningkatan performa yang kuat yang dijanjikan oleh Rasterizer , memamerkan teknologi mutakhir dalam rendering grafis vektor

Performa dan Pendekatan Teknis

Rasterizer menggunakan pendekatan pipeline GPU tradisional daripada menggunakan compute shader modern. Pilihan desain ini dibuat untuk memastikan kompatibilitas perangkat keras yang lebih luas, terutama ketika dukungan GPU compute belum universal. Engine ini dapat menangani skenario yang menuntut seperti merender 50.000 glyph pada 60 frame per detik, membuatnya cocok untuk aplikasi yang banyak menggunakan teks dan animasi vektor kompleks.

Proses rendering menggunakan pendekatan dua tahap untuk jalur yang diisi: pertama membuat buffer mask float, kemudian merender ke buffer warna. Untuk elemen layar yang lebih kecil seperti glyph teks, sistem dapat langsung menyalin geometri jalur mentah ke memori GPU untuk performa optimal. Pengisian yang lebih besar menggunakan algoritma fat scanlines khusus pada geometri device-space.

Algoritma Fat scanlines: Teknik rendering yang memproses strip horizontal piksel untuk mengisi bentuk vektor besar secara efisien

Persyaratan Teknis

  • Platform: macOS (port iOS direncanakan)
  • Bahasa: C++ 11
  • Graphics API: Metal
  • Persyaratan GPU: Dukungan instancing dan floating point render targets
  • Dependencies: XXHash, NanoSVG, STB Truetype, PDFium

Minat Komunitas dan Perbandingan

Peluncuran ini telah memicu diskusi tentang bagaimana Rasterizer dibandingkan dengan solusi rendering vektor lainnya. Anggota komunitas telah mencatat kesamaan dengan proyek seperti Vello, yang menggunakan GPU compute alih-alih pipeline tradisional, dan Slug, yang berfokus terutama pada rendering teks. Namun, pengembang Rasterizer mengklaim solusi mereka telah diuji secara ekstensif dengan scene besar pada berbagai tingkat zoom tanpa masalah GPU lockup yang dialami beberapa solusi pesaing.

Grafis komputer bukan bidang saya, jadi maafkan ketidaktahuan saya, tetapi bisakah Anda menjelaskan pro dan kontra dari pendekatan pipeline grafis tradisional Anda dan pendekatan yang lebih modern?

Komunitas teknis telah menunjukkan minat khusus pada pendekatan engine dalam menyelesaikan winding numbers - konsep matematis yang menentukan apakah suatu titik berada di dalam atau di luar bentuk kompleks. Masalah ini menjadi sangat menantang dengan jalur vektor besar yang tidak beraturan yang tidak mudah dipecah menjadi potongan kecil dan teratur yang paling efisien ditangani GPU.

Keterbatasan Saat Ini vs Fitur yang Direncanakan

Fitur Status Saat Ini Rencana Masa Depan
Rendering Path ✅ Dukungan penuh -
Teks dalam SVG ❌ Tidak didukung Sedang dipertimbangkan
Gradien ❌ Tidak didukung Direncanakan (kode tersedia)
Filter (blur, bayangan) ❌ Tidak didukung Dimungkinkan melalui ekstensi box blur
Dukungan Platform Hanya macOS Port iOS sedang dalam tahap pengembangan

Keterbatasan Saat Ini dan Rencana Masa Depan

Meskipun Rasterizer unggul dalam rendering jalur, saat ini memiliki dukungan terbatas untuk fitur SVG lanjutan. Engine ini belum mendukung rendering teks dalam file SVG, gradien, atau filter seperti blur dan drop shadow. Keterbatasan ini berasal dari penggunaan NanoSVG, library dasar sederhana yang memprioritaskan dukungan jalur dasar daripada cakupan spesifikasi SVG yang komprehensif.

Tim pengembang telah mengindikasikan bahwa gradien akan ditambahkan ketika waktu memungkinkan, mengambil dari kode yang dikembangkan untuk engine sebelumnya. Algoritma coverage berpotensi diperluas untuk mendukung box blur dasar untuk efek drop shadow, meskipun belum ada timeline spesifik yang diumumkan untuk fitur-fitur ini.

Engine ini saat ini menargetkan macOS menggunakan C++ 11 dan Metal, dengan port iOS direncanakan untuk masa depan. Meskipun awalnya dirancang untuk platform Apple, arsitektur ini seharusnya bekerja pada GPU apa pun yang mendukung instancing dan floating point render targets, berpotensi membuka pintu untuk dukungan platform yang lebih luas.

Referensi: Rasterizer