Subpixel Rendering untuk Pelacak Ray

16

Dalam rendering font, biasanya digunakan rendering subpixel . Ide dasar di sini adalah untuk memecah pixel menjadi komponen RGB dan kemudian menghitung nilai untuk masing-masing secara terpisah. Karena setiap komponen lebih kecil dari seluruh piksel, antialiasing kualitas yang lebih tinggi dimungkinkan.

Jelas ada cara analog untuk melakukan hal yang sama untuk pelacak sinar. Anda melakukan penyaringan rekonstruksi pada setiap sub-saluran secara terpisah.

Saya terkejut bahwa, bagaimanapun, saya benar-benar tidak dapat menemukan referensi pelacak sinar melakukan ini. Terutama jika Anda sudah melakukan rendering spektral, ini sepertinya hal yang jelas untuk dilakukan. Ada tulisan ini dari jurnal saya belum pernah mendengar tentang yang tampaknya terkait. Tapi secara keseluruhan, rendering subpixel sepertinya bukan hal yang umum dilakukan. Pertanyaan saya: mengapa tidak ?

Imallett
sumber
Apakah gambar yang dirender subpiksel Anda masih terlihat oke jika dilihat di layar dalam orientasi potret?
jamesdlin
sebagai seorang insinyur saya tidak akan pernah setuju untuk menerapkan ... ide yang rusak. KECUALI jika saya yakin tampilan sudah benar-benar diperbaiki. seperti appli untuk iPhone 5S. Menggunakan teknik ini menghasilkan gambar yang rusak dari layar menggunakan pola terbalik, atau pengaturan yang berbeda.
v.oddou

Jawaban:

14

Ini sangat mungkin

Meskipun perbedaannya mungkin tidak terlalu mencolok, saya berharap pengambilan sampel dengan mempertimbangkan geometri piksel yang tepat untuk memberikan gambar yang sedikit lebih akurat. Anda hanya perlu mengimbangi pusat piksel Anda per komponen warna sesuai dengan lokasi (rata-rata) dari subpixel warna itu. Perhatikan bahwa tidak semua tata letak piksel memiliki korespondensi satu ke satu antara piksel dan sub piksel.

Misalnya, penTile RGBG memiliki dua kali lebih banyak subpiksel hijau daripada merah dan biru, seperti yang ditunjukkan gambar ini dari Wikipedia:

Menutup gambar geometri piksel RGBG

Saya tidak mengetahui alasan teknis apa pun yang akan mencegah hal ini digunakan untuk menghasilkan gambar penuh warna sewenang-wenang. Bahkan sebuah adegan penuh warna akan memiliki artefak warna yang kurang terlihat daripada hitam pada teks putih, yang membuat perbedaan warna paling sulit untuk kamuflase.

Font diberikan sesuai permintaan

Perbedaan yang relevan antara rendering adegan raytraced dan rendering font adalah bahwa font cenderung dirender berdasarkan permintaan, dan dapat memperhitungkan layar yang digunakan. Berbeda dengan ini, pemandangan raytraced sering dipra-prerender dan kemudian ditampilkan pada berbagai jenis layar (dengan geometri piksel yang berbeda). Misalnya, menampilkan gambar raytraced Anda pada halaman web akan mencegah menyesuaikannya dengan jenis monitor tertentu.

Jika Anda merancang program raytracing waktu nyata dan Anda memiliki akses untuk memeriksa geometri piksel monitor, maka Anda dapat raytrace ke tata letak sub piksel tertentu. Namun, penelusuran sinar offline yang menghasilkan gambar diam hanya dapat disesuaikan dengan satu jenis geometri piksel, yang kemudian akan membuat gambar tampak lebih buruk pada geometri piksel lainnya. Anda dapat mengatasinya dengan merender satu set gambar berbeda dan memilih yang sesuai ketika nanti ditampilkan pada jenis monitor tertentu.

Tidak mungkin ada manfaat jangka panjang

Jadi tidak ada alasan Anda tidak bisa mengembangkan rendering sub pixel untuk raytracer, tetapi itu berarti memperhitungkan aspek monitor yang tidak selalu diketahui. Satu hal yang perlu diingat adalah bahwa Anda akan mengembangkan perangkat lunak ini untuk pasar yang menyusut. Rendering sub pixel berguna untuk layar yang memiliki resolusi relatif rendah. Karena semakin banyak layar (bahkan layar ponsel) mendekati resolusi tinggi sehingga mata manusia tidak dapat mendeteksi perbedaan yang dibuat oleh rendering sub pixel, pekerjaan Anda cenderung lebih menarik secara teoritis daripada penggunaan praktis.

trichoplax
sumber
3
Bermain advokat iblis, jika mungkin untuk melakukan rendering subpiksel warna (saya skeptis!), Sepertinya itu bisa berguna dalam situasi VR, di mana mereka berjuang untuk memiliki resolusi yang cukup. Mungkin di ponsel (non retina?) Atau meja juga?
Alan Wolfe
1
@AlanWolfe ya tapi juga 3 kali lebih mahal untuk merender
joojaa
ya pasti, itu benar. Ada beberapa situasi di mana itu bukan masalah. Sebagai contoh, saya tahu beberapa algoritma di mana Anda tidak perlu menembakkan sinar untuk setiap piksel setiap frame. Sepertinya ini juga bisa bermain dalam grafis raster btw. Sekali lagi, saya tidak yakin rendering subpixel warna adalah hal yang nyata, tapi Anda tahu, JIKA! : P
Alan Wolfe
@AlanWolfe Saya tidak mengerti keraguan Anda. Semua gambar sudah dirender dengan sub piksel, tetapi warnanya tidak selaras dengan antara sepertiga hingga setengah piksel. Saya tidak bisa melihat bagaimana mengoreksi misalignment yang gagal menghasilkan gambar berkualitas lebih tinggi. Apakah Anda memiliki masalah khusus (yang mungkin membuat pertanyaan yang bagus ...)?
trichoplax
3
@ joojaa Tidak ada alasan untuk merender menjadi 3x lebih mahal. Anda tidak perlu memotret 3x jumlah sinar; Anda hanya akan menerapkan 3 bobot berbeda ketika mengumpulkan sinar ke dalam framebuffer. Secara efektif, Anda menggunakan kernel antialiasing yang berbeda untuk setiap saluran warna.
Nathan Reed
9

Tentu, Anda dapat menggunakan rendering subpiksel untuk gambar yang berubah-ubah. Namun, rendering subpiksel sebenarnya adalah teknik pemrosesan gambar 2D yang umum - tidak ada hubungannya dengan ray tracing secara khusus. Anda bisa menggunakannya dengan metode rendering 3D lainnya, atau bahkan dengan gambar 2D sederhana, foto atau bahkan video.

Jadi, saya akan mengatakan bahwa "rendering subpixel untuk penelusuran ray" benar-benar menggabungkan dua domain masalah berbeda yang sebaiknya ditangani secara terpisah. Tentang satu-satunya koneksi yang relevan adalah bahwa, jika Anda menelusuri adegan secara real time dan tahu bahwa gambar yang dihasilkan akan ditarik pada layar menggunakan rendering subpixel, Anda dapat menggunakan informasi ini untuk mengoptimalkan kerapatan piksel (dan aspek rasio) gambar antara (mis. menggunakan kerapatan piksel horizontal 3x untuk layar LCD RGB khas).


Sumber kebingungan yang potensial adalah bahwa, pada sistem komputer saat ini, rendering subpixel biasanya hanya digunakan untuk teks, dan biasanya diintegrasikan ke dalam kode rendering font. Alasan utama untuk ini bisa dibilang historis, tetapi juga di mana hadiah terbesar (dalam hal peningkatan visual dan keterbacaan) biasanya.

Selain itu, karena cara teks cenderung terdiri dari bentuk vektor yang sederhana dan berulang, mengintegrasikan rendering subpiksel ke dalam renderer font menawarkan beberapa peluang pengoptimalan lebih dari sekadar merender teks menjadi buffer resolusi tinggi dan kemudian memprosesnya.

Yang mengatakan, saya sepenuhnya berharap bahwa pada akhirnya, ketika teknologi matang, kita akan pindah ke sistem di mana rendering subpixel dilakukan secara transparan oleh GPU, atau mungkin oleh layar itu sendiri.

(Ini kemungkinan besar akan membutuhkan aplikasi yang ingin memanfaatkan sepenuhnya fitur ini untuk menangani piksel fisik yang lebih kecil, dan belum tentu bentuknya sama dengan, "piksel logis". Tetapi sekali lagi, kami sudah bergerak dalam hal itu arah dengan layar DPI tinggi.)

Ilmari Karonen
sumber
Tervetuloa! Ya poin Anda valid, id mengatakan bahwa sistem atau perangkat keras harus melakukan ini karena hanya sistem di masa depan yang realistis dapat menyadari orientasi layar dan pengaturan warna pada layar. Lebih disukai layar itu sendiri yang akan melakukan ini.
joojaa