1 poin oleh GN⁺ 2024-11-21 | 1 komentar | Bagikan ke WhatsApp

Perjalanan hari ini: anti-aliasing

  • Anti-aliasing adalah sebuah bentuk seni yang telah berkembang melalui puluhan tahun matematika, teknik kreatif, dan inovasi tanpa henti.
  • Ada berbagai pendekatan seperti SSAA, SMAA, dan DLAA, yang masing-masing berusaha mencapai tujuan yang sama dengan cara yang berbeda.
  • Artikel ini membahas cara kerja metode-metode tersebut dan memperkenalkan cara baru untuk menyelesaikan masalah ini, yaitu anti-aliasing analitis.

Pengaturan

  • Untuk memahami algoritme anti-aliasing, implementasinya dibuat dengan menggambar lingkaran yang bergerak menggunakan kanvas WebGL.
  • Jika resolusinya terlalu tinggi sehingga aliasing tidak terlihat, Anda dapat menurunkan resolusinya untuk memeriksanya.

Analisis teknis

  • Memahami kode GPU tidak wajib, tetapi membantu untuk memahami bagian analitisnya.
  • Lingkaran tidak digambar secara geometris, melainkan digambar oleh shader.

SSAA

  • SSAA adalah singkatan dari super-sampling anti-aliasing, yaitu metode merender pada resolusi yang lebih besar lalu melakukan downsampling.
  • Implementasinya sederhana, tetapi membutuhkan memori dan komputasi yang besar.
  • Diperlukan penempatan sampel yang tepat serta integrasi yang mendalam dengan pipeline rendering.

MSAA

  • MSAA hanya melakukan super-sampling pada siluet model, geometri yang saling tumpang tindih, dan tepi tekstur.
  • Metode ini diimplementasikan oleh perangkat keras, dan dukungannya bergantung pada perangkat keras tersebut.
  • Dalam situasi tertentu, mungkin tidak ada biaya performa sama sekali.

Anti-aliasing post-process

  • MLAA lahir dari makalah Alexander Reshetov pada tahun 2009.
  • FXAA adalah algoritme yang dikembangkan dengan inspirasi dari MLAA, dengan biaya performa rendah dan implementasi yang mudah.
  • Metode ini lebih efektif pada adegan yang kompleks.

Anti-aliasing analitis

  • Anti-aliasing analitis mendekati masalah dari arah sebaliknya: karena bentuk yang dibutuhkan sudah diketahui, piksel yang sudah di-anti-alias langsung digambar ke layar.
  • Tidak memerlukan buffer tambahan atau kebutuhan perangkat keras khusus, dan dapat berjalan bahkan pada WebGL 1.0 dasar atau OpenGLES 2.0.
  • Ukuran piksel dihitung untuk memudarkan batas bentuk.

Implementasi

  • Dengan menggunakan signed distance field, kita dapat mengetahui jarak dari setiap titik sampling ke bentuk yang diinginkan.
  • Fungsi dFdx, dFdy, dan fwidth digunakan untuk menghitung ukuran piksel.
  • Blending dilakukan menggunakan alpha blending atau MSAA + Alpha to Coverage.
  • linearstep dapat digunakan sebagai pengganti smoothstep untuk mengoptimalkan performa.

Kesimpulan

  • Anti-aliasing analitis memberikan tepi yang halus dengan memudarkan batas bentuk secara akurat.
  • Ada berbagai cara implementasi, sehingga kita dapat memilih di antara performa dan akurasi.

1 komentar

 
GN⁺ 2024-11-21
Opini Hacker News
  • Analisis pemrograman grafis dilakukan melalui contoh WebGL, dan ini adalah artikel yang sangat mendalam
    • Selama ini menggunakan MSAAx4, tetapi sedang mempertimbangkan beralih ke FXAA/TAA, dan bisa mempelajari pendekatan analitis untuk elemen UI
    • Materi terkait pemrograman grafis memang langka, tetapi daftar analisis frame adalah sumber yang berguna
    • Banyak game tidak menjelaskan perbedaan singkatan pada pengaturan AA, sehingga kurang ramah pengguna
    • SDF (mSDF) sudah merupakan teknik klasik yang cukup bagus
    • Menyelesaikan segmen kurva Bézier per piksel di Slug dan DirectWrite adalah teknologi masa kini atau masa depan
    • Baru pertama kali mengetahui karya Captain Disillusion, dan merekomendasikannya kepada orang-orang yang tertarik pada efek video
    • Frame yang berisi lingkaran dan bagian yang diperbesar adalah cara yang sangat baik untuk menyampaikan pesan
    • Gradasi yang halus sangat memuaskan
    • Mesin rendering 2D dan 3D memiliki tujuan dan kasus penggunaan yang sepenuhnya berbeda
    • Dalam 3D hal ini tidak terlalu penting, tetapi dalam 2D ada standar teknik AA yang menekankan akurasi dan bias
    • Tangkapan layar NeoTokyo sangat mengesankan, dan pernah bersenang-senang saat menjalankan server mod tersebut
    • Salah membaca SSAA sebagai 'anti-aliasing ruang layar'