Selepas sedekad pembangunan, enjin grafik vektor 2D berakselerasi GPU baharu yang dipanggil Rasterizer telah dikeluarkan, menjanjikan prestasi sehingga 60 kali lebih pantas berbanding pemaparan berasaskan CPU. Projek ini, yang diilhamkan oleh Adobe Flash , menyasarkan aplikasi yang memerlukan antara muka pengguna animasi vektor yang lancar dan pemaparan grafik berkualiti tinggi.
Kitaran pembangunan yang panjang mencerminkan kerumitan cabaran teras dalam grafik vektor: menukar laluan vektor kepada piksel anti-aliased berkualiti tinggi secara cekap. Masalah asas ini telah menyibukkan pembangun selama bertahun-tahun, kerana ia memerlukan keseimbangan antara kelajuan, kualiti, dan keserasian merentas platform perkakasan yang berbeza.
Spesifikasi Prestasi
- Sehingga 60 kali ganda lebih pantas berbanding pemaparan CPU
- Mampu memapar 50,000 glif pada 60fps
- Menggunakan pemprosesan grafik vektor 2D yang dipercepatkan GPU
- Pemaparan dua peringkat: penimbal topeng apung → penimbal warna
![]() |
---|
Harimau garang melambangkan peningkatan prestasi berkuasa yang dijanjikan oleh Rasterizer , mempamerkan teknologi canggih dalam pemaparan grafik vektor |
Prestasi dan Pendekatan Teknikal
Rasterizer menggunakan pendekatan saluran paip GPU tradisional dan bukannya menggunakan compute shader moden. Pilihan reka bentuk ini dibuat untuk memastikan keserasian perkakasan yang lebih luas, terutamanya ketika sokongan GPU compute kurang universal. Enjin ini boleh mengendalikan senario yang mencabar seperti mempaparkan 50,000 glif pada 60 bingkai sesaat, menjadikannya sesuai untuk aplikasi berintensif teks dan animasi vektor yang kompleks.
Proses pemaparan menggunakan pendekatan dua peringkat untuk laluan yang diisi: pertama mencipta penimbal topeng apung, kemudian mempaparkan ke penimbal warna. Untuk elemen skrin yang lebih kecil seperti glif teks, sistem boleh menyalin geometri laluan mentah terus ke dalam memori GPU untuk prestasi optimum. Pengisian yang lebih besar menggunakan algoritma fat scanlines khusus pada geometri ruang peranti.
Algoritma Fat scanlines: Teknik pemaparan yang memproses jalur mendatar piksel untuk mengisi bentuk vektor besar secara cekap
Keperluan Teknikal
- Platform: macOS (port iOS dirancang)
- Bahasa: C++ 11
- API Grafik: Metal
- Keperluan GPU: Sokongan instancing dan floating point render targets
- Dependencies: XXHash, NanoSVG, STB Truetype, PDFium
Minat Komuniti dan Perbandingan
Keluaran ini telah mencetuskan perbincangan tentang bagaimana Rasterizer dibandingkan dengan penyelesaian pemaparan vektor lain. Ahli komuniti telah mencatatkan persamaan dengan projek seperti Vello , yang menggunakan GPU compute dan bukannya saluran paip tradisional, dan Slug , yang memberi tumpuan terutamanya pada pemaparan teks. Walau bagaimanapun, pembangun Rasterizer mendakwa penyelesaian mereka telah diuji secara meluas dengan adegan besar pada pelbagai tahap zum tanpa masalah kunci GPU yang dialami oleh beberapa penyelesaian pesaing.
Grafik komputer bukanlah bidang saya, jadi maafkan kejahilan saya, tetapi bolehkah anda menerangkan kebaikan dan keburukan pendekatan saluran paip grafik tradisional anda dan pendekatan yang lebih moden?
Komuniti teknikal telah menunjukkan minat khusus dalam pendekatan enjin untuk menyelesaikan nombor belitan - konsep matematik yang menentukan sama ada titik terletak di dalam atau di luar bentuk yang kompleks. Masalah ini menjadi sangat mencabar dengan laluan vektor besar yang tidak teratur yang tidak mudah dipecahkan kepada bahagian kecil dan teratur yang paling cekap dikendalikan oleh GPU.
Batasan Semasa lwn Ciri-ciri Yang Dirancang
Ciri | Status Semasa | Rancangan Masa Depan |
---|---|---|
Pemaparan Laluan | ✅ Sokongan penuh | - |
Teks dalam SVG | ❌ Tidak disokong | Sedang dipertimbangkan |
Gradien | ❌ Tidak disokong | Dirancang (kod tersedia) |
Penapis (kabur, bayang) | ❌ Tidak disokong | Mungkin melalui sambungan kabur kotak |
Sokongan Platform | macOS sahaja | Port iOS dalam saluran paip |
Batasan Semasa dan Rancangan Masa Depan
Walaupun Rasterizer cemerlang dalam pemaparan laluan, ia kini mempunyai sokongan terhad untuk ciri SVG lanjutan. Enjin ini belum lagi menyokong pemaparan teks dalam fail SVG , kecerunan, atau penapis seperti kabur dan bayang jatuh. Batasan ini berpunca daripada penggunaan NanoSVG , perpustakaan asas yang ringkas yang mengutamakan sokongan laluan asas berbanding liputan spesifikasi SVG yang komprehensif.
Pasukan pembangunan telah menunjukkan bahawa kecerunan akan ditambah apabila masa membenarkan, mengambil daripada kod yang dibangunkan untuk enjin terdahulu. Algoritma liputan berpotensi boleh dilanjutkan untuk menyokong kabur kotak asas untuk kesan bayang jatuh, walaupun tiada garis masa khusus telah diumumkan untuk ciri-ciri ini.
Enjin ini kini menyasarkan macOS menggunakan C++ 11 dan Metal , dengan port iOS dirancang untuk masa depan. Walaupun direka bentuk untuk platform Apple pada mulanya, seni bina sepatutnya berfungsi pada mana-mana GPU yang menyokong instancing dan sasaran pemaparan titik terapung, berpotensi membuka pintu untuk sokongan platform yang lebih luas.
Rujukan: Rasterizer