Mengapa Grafik Vektor 2D Jauh Lebih Kompleks Daripada 3D

Baru-baru ini, banyak penelitian fantastis tentang rendering 2D telah muncul. Peter Kobalicek dan Fabian Aizerman sedang mengerjakan Blend2D : ini adalah salah satu rasterizer CPU tercepat dan paling akurat di pasaran, dengan teknologi JIT yang inovatif. Patz Walton dari Mozilla mempelajari bukan hanya satu, tetapi tiga pendekatan berbeda dalam Pathfinder , yang berpuncak pada Pathfinder v3. Raf Levien membangun pipa komputasi menggunakan teknologi yang dijelaskan dalam artikel ilmiah oleh Ghana dengan rekan-rekannya tentang tekstur vektor (2014) . Tampaknya beberapa pengembangan jarak ditandai oleh bidang jarak: Adam Simmons dan Sarah Frisken bekerja secara independen di sini.

Orang mungkin bertanya: mengapa ada begitu banyak noise di sekitar 2D? Tidak mungkin lebih sulit dari 3D, kan? 3D adalah dimensi yang sama sekali berbeda! Di sini kami memiliki penelusuran sinar waktu nyata pada hidung dengan pencahayaan yang akurat, dan Anda tidak dapat menguasai grafik 2D polos dengan warna solid?

Bagi mereka yang tidak terlalu berpengalaman dalam detail GPU modern, ini benar-benar sangat mengejutkan! Tetapi grafik 2D memiliki banyak batasan unik yang membuatnya sangat sulit. Selain itu, itu tidak cocok dengan paralelisasi. Mari kita berjalan di sepanjang jalan bersejarah yang membawa kita ke sini.

Lepas Landas PostScript


Awalnya ada plotter. Perangkat grafis pertama yang mampu berinteraksi dengan komputer disebut " plotter " (plotter): satu atau lebih pena yang dapat bergerak di sekitar kertas. Semuanya bekerja sesuai dengan perintah pen-down, maka kepala gambar bergerak dengan cara yang unik, mungkin sepanjang kurva, dan perintah pen-up diterima . HP, pembuat beberapa komplotan paling awal, menggunakan varian BASIC yang disebut AGL pada komputer host, yang kemudian mengirimkan perintah plotter dalam bahasa lain, seperti HP-GL . Pada 1970-an, terminal grafis menjadi lebih murah dan lebih populer, dimulai dengan Tektronix 4010 . Dia menunjukkan gambar menggunakan CRT, tapi jangan tertipu: ini bukan layar pixel. Tektronix berasal dari industri osiloskop analog, dan mesin-mesin ini bekerja dengan mengendalikan berkas elektron di sepanjang jalur tertentu . Dengan demikian, Tektronix 4010 tidak memiliki output piksel. Sebaliknya, Anda mengiriminya perintah dalam mode grafis sederhana , yang bisa menggambar garis, tetapi, sekali lagi, dalam mode "turun bulu", "naik bulu".

Seperti di banyak bidang lain, semuanya mengubah penemuan Xerox PARC. Para peneliti mulai mengembangkan jenis printer baru, lebih ekspresif secara komputasi daripada plotter. Printer baru ini bekerja dalam bahasa pemrograman Turing-complete stacked kecil yang mirip dengan Forth, dan itu disebut ... Interpress ! Jelas, Xerox tidak dapat menemukannya aplikasi yang layak, sehingga penemu meninggalkan kapal dan mendirikan startup kecil bernama Adobe. Mereka membawa Interpress bersama mereka, dan ketika mereka dikoreksi dan ditingkatkan, itu berubah tanpa bisa dikenali, jadi mereka memberinya nama lain: PostScript. Selain bahasa tumpukan manis, turing-lengkap, bab keempat dari Referensi Bahasa PostScript asli menggambarkan Model Pencitraan, yang hampir identik dengan antarmuka pemrograman modern. Contoh 4.1 dari manual berisi kode sampel yang dapat diterjemahkan hampir baris demi baris ke dalam HTML5 <canvas>.

/box { function box() { newpath ctx.beginPath(); 0 0 moveto ctx.moveTo(0, 0); 0 1 lineto ctx.lineTo(0, 1); 1 1 lineto ctx.lineTo(1, 1); 1 0 lineto ctx.lineTo(1, 0); closepath ctx.closePath(); } def } gsave ctx.save(); 72 72 scale ctx.scale(72, 72); box fill box(); ctx.fill(); 2 2 translate ctx.translate(2, 2); box fill box(); ctx.fill(); grestore ctx.restore(); 

Ini bukan kebetulan.

Steve Jobs dari Apple bertemu dengan insinyur Interpress selama kunjungannya ke PARC. Jobs mengira bisnis percetakan akan menguntungkan, dan mencoba membeli Adobe saat lahir. Tetapi Adobe mengajukan penawaran balasan dan akhirnya menjual Apple PostScript lisensi lima tahun. Pilar ketiga dalam rencana Jobs adalah untuk membiayai startup kecil, Aldus, yang membuat aplikasi WYSIWYG untuk membuat dokumen PostScript. Itu disebut PageMaker. Pada awal 1985, Apple memperkenalkan printer yang kompatibel dengan PostScript pertama, Apple LaserWriter. Kombinasi Macintosh, PageMaker dan LaserWriter langsung membalikkan industri percetakan, dan hit baru "desktop publishing" memperkuat PostScript karena tempatnya dalam sejarah. Pesaing utama Hewlett-Packard akhirnya juga membeli lisensi PostScript untuk seri printer LaserJet saingannya. Ini terjadi pada 1991 setelah mendapat tekanan dari konsumen.

PostScript perlahan-lahan dipindahkan dari bahasa kontrol printer ke format file. Pemrogram yang pintar mempelajari bagaimana perintah PostScript dikirim ke printer - dan mulai membuat dokumen PostScript secara manual dengan menambahkan grafik, grafik, dan gambar ke dokumen mereka, sementara PostScript digunakan untuk menampilkan grafik. Ada permintaan untuk gambar di luar printer! Adobe memperhatikan hal ini dan dengan cepat merilis format Encapsulated PostScript , yang tidak lebih dari beberapa komentar PostScript yang diformat khusus dengan metadata tentang ukuran gambar dan pembatasan penggunaan perintah printer, seperti "umpan halaman". Pada tahun 1985 yang sama, Adobe mulai mengembangkan Illustrator, sebuah aplikasi di mana seniman bekerja dalam format Encapsulated PostScript di UI yang nyaman. Kemudian file-file ini dapat ditransfer ke pengolah kata yang menciptakan ... dokumen PostScript untuk dikirim ke printer PostScript. Seluruh dunia telah beralih ke PostScript, dan Adobe tidak bisa lebih bahagia. Ketika Microsoft sedang mengerjakan Windows 1.0 dan ingin membuat API grafisnya sendiri untuk para pengembang, tujuan utamanya adalah membuatnya kompatibel dengan printer yang ada sehingga grafik yang dikirim ke printer semudah layar. API ini akhirnya dirilis sebagai GDI , komponen inti yang digunakan oleh setiap insinyur selama popularitas Windows yang berkembang pesat pada 1990-an. Generasi pemrogram Windows telah mulai tanpa sadar mengidentifikasi grafik vektor 2D dengan model gambar PostScript, mengamankannya dengan status de facto ini.

Satu-satunya masalah utama dengan PostScript adalah kelengkapannya: melihat halaman ke-86 dokumen berarti menjalankan skrip pertama untuk halaman 1-85. Dan itu bisa lambat. Adobe mengetahui tentang keluhan ini dari pengguna dan memutuskan untuk membuat format dokumen baru yang tidak memiliki batasan seperti itu, itu disebut "Portable Document Format" atau, singkatnya, "PDF". Bahasa pemrograman tidak digunakan, tetapi teknologi grafisnya tetap sama. Kutipan dari spesifikasi PDF, bab 2.1, "Model Gambar" :

PDF didasarkan pada kemampuannya untuk menggambarkan tampilan grafik dan tipografi yang kompleks. Fitur ini dicapai melalui penggunaan model gambar Adobe, presentasi tingkat tinggi yang independen terhadap perangkat yang digunakan dalam bahasa deskripsi halaman PostScript.

Ketika konsorsium W3C mempertimbangkan pelamar untuk bahasa markup grafik 2D di Internet, Adobe membela PGML berbasis XML , yang didasarkan pada model grafis PostScript:

PGML harus menyertakan model gambar PDF / PostScript untuk memastikan grafik 2D scalable yang memenuhi kebutuhan pengguna umum dan profesional grafis.

Format VML yang bersaing dari Microsoft didasarkan pada GDI, yang kami tahu didasarkan pada PostScript. Dua proposal yang bersaing, yang pada dasarnya masih PostScript, digabung bersama sehingga W3C mengadopsi standar "scalable vector graphics" (SVG) yang kita kenal dan cintai hari ini.

Bahkan jika dia sudah tua, jangan berpura-pura bahwa inovasi PostScript yang dibawa ke dunia ini adalah sesuatu yang kurang dari keajaiban teknologi. Printer PostScript LaserWriter Apple dua kali lebih kuat dari Macintosh yang mengendalikannya, hanya untuk menafsirkan PostScript dan meraster jalur vektor ke titik di atas kertas. Ini mungkin terlihat berlebihan, tetapi jika Anda telah membeli printer modis dengan laser di dalamnya, maka Anda tidak perlu heran dengan prosesor yang mahal. Dalam inkarnasi pertamanya, PostScript menemukan model visualisasi yang agak canggih dengan semua fitur yang kami terima hari ini. Apa fitur yang paling kuat, hebat? Font Pada saat itu, font digambar dengan tangan dengan penggaris dan busur derajat dan dicetak pada film untuk pencetakan fotokimia . Pada tahun 1977, Donald Knut menunjukkan kepada dunia apa yang mampu dilakukan oleh sistem METAFONT- nya, yang ia perkenalkan dengan editor teks TeX, tetapi itu tidak berakar. Untuk itu diperlukan pengguna untuk memiliki deskripsi matematis dari font menggunakan kuas dan kurva. Sebagian besar pengembang font tidak ingin mempelajari ini. Dan tikungan aneh dengan ukuran kecil berubah menjadi berantakan: printer pada waktu itu tidak memiliki resolusi yang memadai, sehingga surat-surat kabur dan bergabung satu sama lain. PostScript telah mengusulkan solusi baru: algoritme untuk "menghubungkan" garis besar ke grid yang lebih kasar yang digunakan oleh printer. Ini dikenal sebagai grid-fitting. Untuk mencegah terlalu banyak distorsi pada geometri, mereka memungkinkan font untuk mengatur "petunjuk" tentang bagian mana dari geometri yang paling penting dan apa yang harus dipertahankan.

Model bisnis asli Adobe adalah menjual teknologi font ini kepada pengembang printer dan menjual penerbit font yang dibuat ulang khusus dengan petunjuk tambahan, sehingga Adobe masih menjual versi Times dan Futura . Omong-omong, ini dimungkinkan karena fonta, atau, yang lebih formal, "headset", adalah satu dari lima hal yang secara eksplisit dikecualikan dari undang-undang hak cipta AS , karena font tersebut pada awalnya ditetapkan sebagai "terlalu sederhana atau utilitarian untuk menjadi karya kreatif". Sebagai gantinya, program digital yang mereproduksi font di layar adalah hak cipta. Agar orang tidak dapat menyalin font Adobe dan menambahkan font mereka sendiri, format Font Type 1 pada awalnya dimiliki oleh Adobe dan berisi kode untuk "enkripsi font". Hanya Adobe's PostScript yang bisa menafsirkan font Tipe 1, dan hanya mereka yang menerapkan teknologi petunjuk kepemilikan yang memberikan kerenyahan dalam ukuran kecil.

Omong-omong, pemasangan mesh menjadi begitu populer sehingga ketika Microsoft dan Apple sudah bosan membayar biaya lisensi Adobe, mereka menemukan metode alternatif untuk format font TrueType alternatif mereka. Alih-alih menentukan "petunjuk" deklaratif, TrueType memberi penulis font bahasa stack turing-complete yang lengkap sehingga penulis dapat mengontrol semua aspek pemasangan kisi (menghindari paten Adobe untuk petunjuk deklaratif). Selama bertahun-tahun, perang telah berkecamuk antara Adobe Tipe 1 dan TrueType, dan pengembang font terjebak di tengah, memberikan pengguna kedua format. Pada akhirnya, industri ini telah mencapai kompromi: OpenType . Tetapi bukannya menentukan pemenang secara realistis, mereka hanya menjatuhkan kedua spesifikasi ke dalam satu format file. Adobe sekarang mendapatkan uang bukan dari menjual font Tipe 1, tetapi dari Photoshop dan Illustrator, sehingga menghapus bagian enkripsi, menyempurnakan format, dan memperkenalkan font CFF / Tipe 2, yang semuanya dimasukkan dalam OpenType sebagai tabel cff . TrueType, di sisi lain, dimasukkan sebagai ggl dan tabel lainnya. Meskipun agak jelek, OpenType tampaknya melakukan pekerjaan untuk para pengguna, sebagian besar membuat mereka kelaparan: hanya membutuhkan semua perangkat lunak untuk mendukung kedua jenis font, karena OpenType mengharuskan Anda untuk mendukung kedua jenis font.

Tentu saja, kita terpaksa bertanya: jika bukan PostScript, lalu apa yang ada di tempatnya? Opsi lain yang layak dipertimbangkan. METAFONT yang disebutkan sebelumnya tidak menggunakan jalur garis yang didefinisikan secara ketat (jalur yang diisi). Sebagai gantinya, Knut, dalam cara yang khas, dalam artikelnya “Tipografi Matematika” mengusulkan konsep matematika untuk tipografi, yang “paling menyenangkan”. Anda menentukan beberapa titik, dan beberapa algoritma menemukan melalui mereka kurva "paling menyenangkan" yang benar. Anda dapat menempatkan di luar garis besar ini di atas satu sama lain: mendefinisikan salah satu dari mereka sebagai "bulu", dan kemudian "seret bulu" melalui beberapa baris lainnya. Knut, pada dasarnya, seorang ilmuwan komputer, bahkan memperkenalkan rekursi. Muridnya, John Hobby, telah mengembangkan dan mengimplementasikan algoritma untuk menghitung “kurva yang paling menyenangkan” , melapisi jalur bersarang dan merasterisasi kurva tersebut . Untuk informasi tambahan tentang METAFONT, kurva dan sejarah tipografi secara umum, saya sangat merekomendasikan buku Fonts and Encodings , serta artikel oleh John Hobby .

Untungnya, minat baru dalam penelitian grafis 2D berarti bahwa Knut dan Hobby splines tidak sepenuhnya dilupakan. Meskipun mereka benar-benar musykil dan tidak konvensional, mereka baru-baru ini berjalan ke Apple iWork Suite , dan mereka adalah tipe spline default di sana.

Lepaskan segitiga


Tanpa melangkah terlalu jauh ke dalam hutan matematika, pada tingkat tinggi, kami menyebut pendekatan seperti kurva Bezier dan Hobby splines kurva implisit , karena mereka diindikasikan sebagai fungsi matematika yang menghasilkan kurva. Mereka terlihat bagus pada resolusi apa pun, yang sangat bagus untuk gambar 2D yang dirancang untuk penskalaan.

Grafik 2D mendukung momentum di sekitar kurva tersirat ini, yang hampir wajib saat memodelkan mesin terbang. Perangkat keras dan perangkat lunak untuk menghitung jalur ini secara real time mahal, tetapi dorongan besar datang dari industri percetakan untuk grafik vektor, dan sebagian besar peralatan industri yang ada sudah jauh lebih mahal daripada printer laser dengan prosesor mewah.

Namun, grafik 3D memiliki rute yang sangat berbeda. Sejak awal, pendekatan yang hampir universal adalah penggunaan poligon (poligon), yang sering diberi label secara manual dan secara manual dimasukkan ke dalam komputer . Namun, pendekatan ini tidak universal. Setara 3D dari kurva implisit adalah permukaan implisit yang terdiri dari primitif geometri dasar seperti bola, silinder, dan kubus. Bola ideal dengan resolusi tak terbatas dapat diwakili oleh persamaan sederhana, sehingga pada awal pengembangan 3D untuk geometri, itu jelas lebih disukai daripada poligon . Salah satu dari sedikit perusahaan yang mendesain grafik dengan permukaan implisit adalah MAGI . Dikombinasikan dengan penggunaan tekstur prosedural yang artistik, mereka memenangkan kontrak desain sepeda ringan Disney untuk film Tron 1982. Sayangnya, pendekatan ini dengan cepat sia-sia. Berkat akselerasi CPU dan studi masalah seperti "menghapus permukaan yang tersembunyi", jumlah segitiga yang dapat Anda tampilkan di layar tumbuh dengan cepat, dan untuk bentuk yang kompleks, jauh lebih mudah bagi seniman untuk berpikir tentang poligon dan simpul yang dapat diklik dan diseret, daripada gunakan kombinasi kubus dan silinder.

Ini tidak berarti bahwa permukaan implisit tidak digunakan dalam proses pemodelan. Teknik-teknik seperti algoritma Catmell-Clark menjadi standar industri yang diterima secara umum pada awal tahun 80-an, yang memungkinkan seniman untuk membuat bentuk geometris sederhana organik yang halus dan organik. Meskipun sampai awal 2000-an, algoritma Catell-Clark bahkan tidak didefinisikan sebagai "permukaan implisit" yang dapat dihitung menggunakan persamaan. Kemudian itu dianggap sebagai algoritma berulang: cara untuk membagi poligon menjadi lebih banyak poligon.

Segitiga menyerang dunia, diikuti oleh alat untuk membuat konten 3D. Pengembang dan perancang baru permainan video dan efek khusus dalam film dilatih secara eksklusif pada program pemodelan dengan jerat poligon, seperti Maya, 3DS Max dan Softimage. Ketika "akselerator grafis 3D" (GPU) muncul di lokasi pada akhir tahun 80-an, mereka dikembangkan secara khusus untuk mempercepat konten yang ada: segitiga. Meskipun proyek GPU awal, seperti NVIDIA NV1 , memiliki dukungan perangkat keras yang terbatas untuk kurva, itu bermasalah dan dengan cepat dihapus dari lini produk.

Budaya ini terutama meluas ke apa yang kita lihat hari ini. Model gambar 2D PostScript dominan dimulai dengan produk yang dapat menampilkan kurva secara "waktu nyata". Pada saat yang sama, industri 3D mengabaikan kurva yang sulit untuk dikerjakan, dan sebaliknya mengandalkan solusi yang berdiri sendiri untuk pra-konversi kurva menjadi segitiga.

Permukaan implisit dikembalikan


Tapi mengapa kurva 2D implisit dapat dihitung secara real time pada printer di tahun 80-an, dan kurva 3D implisit yang sama masih sangat bermasalah pada awal 2000-an? Algoritme Catell-Clark jauh lebih rumit daripada kurva Bezier. Kurva Bezier dalam 3D dikenal sebagai B-splines, dan mereka dapat dihitung dengan baik, tetapi ada kelemahan bahwa mereka membatasi cara grid terhubung. Permukaan seperti Catmell-Clark dan NURBS memungkinkan kisi-kisi yang terhubung secara sewenang-wenang untuk memperluas kemampuan seniman, tetapi ini dapat menyebabkan polinomial lebih dari tingkat keempat, yang, pada umumnya, tidak memiliki solusi analitis . Sebagai gantinya, Anda mendapatkan perkiraan berdasarkan pemisahan poligon, seperti yang dilakukan di OpenSubdiv Pixar. Jika seseorang pernah menemukan solusi analitik untuk menemukan akar Catmell - Clark atau NURBS, Autodesk akan membayarnya banyak. Dibandingkan dengan mereka, segitiga tampak jauh lebih bagus: cukup hitung tiga persamaan linear pada sebuah pesawat , dan Anda memiliki jawaban yang mudah.

... Tetapi bagaimana jika kita tidak membutuhkan solusi yang tepat? Ini adalah pertanyaan yang diajukan oleh desainer grafis Iñigo Quilles ketika dia melakukan penelitian pada permukaan yang tersirat. Solusi? Bidang jarak yang ditandatangani (SDF) Alih-alih memberikan titik persimpangan dengan permukaan, mereka mengatakan seberapa jauh Anda dari itu. Mirip dengan perbedaan antara integral yang dihitung secara analitik dan integral Euler, jika Anda memiliki jarak ke objek terdekat, Anda dapat "berbaris" di sekitar tempat kejadian, menanyakan pada titik tertentu seberapa jauh Anda, dan melewati jarak ini. Permukaan seperti itu telah menghembuskan kehidupan baru ke dalam industri melalui demoscene dan komunitas seperti Shadertoy. Retasan teknik pemodelan lama MAGI memberi kita penemuan luar biasa, seperti Killes ' Surfer Boy , yang dihitung dengan ketepatan tak terbatas sebagai permukaan yang tersirat. Anda tidak perlu mencari akar aljabar Surfer Boy, Anda cukup merasakan bagaimana adegannya.

Tentu saja, masalahnya adalah bahwa hanya seorang jenius seperti Killes yang dapat membuat Surfer Boy. Tidak ada alat untuk geometri SDF, semua kode ditulis secara manual. Namun, mengingat kebangkitan menarik dari permukaan implisit dan bentuk alami dari kurva, sekarang ada banyak minat dalam teknik ini. MediaMolecule Dreams di PS4 adalah kit pembuatan konten berdasarkan kombinasi permukaan implisit. Dalam prosesnya, sebagian besar grafik tradisional dihancurkan dan diciptakan kembali . Ini adalah pendekatan yang menjanjikan, dan alat-alatnya intuitif dan menarik. Oculus Medium dan unbound.io juga telah melakukan penelitian yang baik tentang masalah ini. Ini jelas merupakan tampilan yang menjanjikan seperti apa masa depan grafik 3D dan alat generasi mendatang.

Tetapi beberapa pendekatan ini kurang cocok untuk 2D daripada yang Anda kira. Dalam adegan permainan 3D umum, sebagai aturan, bahan dan tekstur canggih, tetapi sedikit perhitungan geometri, sebagaimana banyak kritik dan penjual produk yang dipertanyakan segera tunjukkan. Ini berarti bahwa kita membutuhkan lebih sedikit penghalusan, karena siluet tidak begitu penting. Pendekatan seperti 4x MSAA mungkin cocok untuk banyak game, tetapi untuk font kecil dengan warna solid, alih-alih 16 lokasi sampel tetap, alih-alih hitung area yang tepat di bawah kurva untuk setiap piksel, yang akan memberi Anda resolusi sebanyak yang Anda inginkan.

Memutar layar dalam game 3D menghasilkan efek yang mirip dengan penindasan saccadic , ketika otak melakukan konfigurasi ulang ke tampilan baru. Dalam banyak gim, ini membantu menyembunyikan artefak dalam efek pasca pemrosesan, seperti penghalusan sementara , yang diimpikan oleh Dreams dan unbound.io untuk mendapatkan kinerja adegan yang bagus. Sebaliknya, dalam adegan 2D yang khas, kami tidak memiliki perspektif mewah ini, jadi mencoba menggunakannya akan membuat mesin terbang dan bentuk mendidih dan bergetar dengan artefak ini secara penuh. 2D terlihat berbeda dan harapan lebih tinggi. Saat memperbesar, menggeser, dan menggulir, stabilitas sangat penting.

Tak satu pun dari efek ini dapat diterapkan pada GPU, tetapi mereka menunjukkan keberangkatan radikal dari konten "3D", dengan prioritas yang berbeda. Pada akhirnya, rendering grafik 2D rumit karena menyangkut bentuk - huruf dan simbol yang tepat, daripada material dan pencahayaan, yang sebagian besar padat. Sebagai hasil dari evolusi, akselerator grafis memutuskan untuk tidak menghitung geometri real-time implisit, seperti kurva, tetapi berfokus pada semua yang terjadi di dalam kurva ini. Mungkin jika PostScript belum menang, kita akan memiliki model gambar 2D tanpa kurva Bezier sebagai persyaratan utama untuk waktu-nyata.Mungkin di dunia seperti itu, alih-alih segitiga, representasi geometrik terbaik akan digunakan, alat pembuatan konten berfokus pada splines 3D, dan GPU mendukung kurva waktu-nyata pada tingkat perangkat keras. Pada akhirnya, selalu menyenangkan untuk bermimpi.

Source: https://habr.com/ru/post/id451394/


All Articles