Ray Tracer için Alt Piksel Oluşturma


16

Yazı tipi oluşturma işleminde, alt piksel oluşturma kullanılır . Buradaki temel fikir, pikseli RGB bileşenlerine bölmek ve daha sonra her biri için ayrı bir değer hesaplamaktır. Her bileşen tüm pikselden daha küçük olduğundan, daha yüksek kalitede kenar yumuşatma mümkündür.

Bir ışın izleyici için aynısını yapmanın açıkça benzer bir yolu vardır. Her alt kanalda ayrı olarak yeniden yapılandırma filtrelemesi yaparsınız.

Bununla birlikte, bunu yapan ışın izleyicilerine gerçekten referans bulamadığım için şaşırdım. Özellikle zaten spektral render işlemi yapıyorsanız, bu açık bir şey gibi görünüyor. Daha önce hiç duymadığım bir dergiden ilgili gibi görünen bir makale var . Ancak genel olarak, alt piksel oluşturma, yapılacak ortak bir şey gibi görünmüyor. Sorum: neden olmasın ?


Alt piksel ile oluşturulmuş resimleriniz, dikey yönde ekranlarda görüntülendiğinde hala iyi görünecek mi?
jamesdlin

bir mühendis olarak asla böyle ... kırık bir fikir uygulamayı kabul etmem. Ekran tamamen sabit olduğundan emin OLMADAN. iPhone 5S için bir uygulama gibi. Bu tekniği kullanmak, ters desenler veya farklı düzenlemeler kullanarak ekranlardan kırık görüntüler oluşturur.
v.oddou

Yanıtlar:


14

Bu kesinlikle mümkün

Fark özellikle fark edilmese de, tam piksel geometrisini dikkate alarak örneklemenin biraz daha doğru bir görüntü vermesini beklerim. Piksel merkezlerinizi, o rengin alt piksellerinin (ortalama) konumuna göre renk bileşeni başına dengelemeniz yeterlidir. Tüm piksel düzenlerinin pikseller ve alt pikseller arasında bire bir yazışma olmadığını unutmayın.

Örneğin, penTile RGBG , Wikipedia'daki bu görüntünün gösterdiği gibi kırmızı ve mavi renkten iki kat daha fazla yeşil alt piksele sahiptir:

RGBG piksel geometrisinin görüntüsünü kapat

Bunun keyfi tam renkli görüntüler üretmek için kullanılmasını engelleyecek herhangi bir teknik nedenin farkında değilim. Aslında renkli bir sahnenin beyaz metin üzerinde siyahtan daha az fark edilir renk artefaktları olacaktır, bu da renk farklılıklarını kamufle etmeyi en zor hale getirir.

Yazı tipleri istek üzerine oluşturulur

Işınlanmış bir sahne oluşturma ve yazı tipleri oluşturma arasındaki ilgili fark, yazı tiplerinin isteğe bağlı olarak oluşturulma eğiliminde olması ve kullanılan ekranı dikkate almasıdır. Bunun aksine, ışınlanmış bir sahne genellikle önceden hazırlanır ve daha sonra birçok farklı türde ekranda (farklı piksel geometrisiyle) görüntülenir. Örneğin, yayılan görüntünüzün bir web sayfasında görüntülenmesi, görüntünün belirli bir monitör türüne göre uyarlanmasını önleyecektir.

Gerçek zamanlı bir ışın izleme programı tasarlıyorsanız ve monitörün piksel geometrisini kontrol etme erişiminiz varsa, o zaman belirli alt piksel düzenine ışın izleme yapabilirsiniz. Ancak, hareketsiz görüntü üreten çevrimdışı ışın izlemesi yalnızca tek bir piksel geometrisine uyarlanabilir ve bu da görüntüyü diğer piksel geometrilerinde daha kötü gösterir. Bir dizi farklı görüntü oluşturarak ve daha sonra belirli bir monitör türünde görüntülendiğinde uygun olanı seçerek bu sorunu çözebilirsiniz.

Uzun vadeli bir fayda olması olası değildir

Bu nedenle, bir ışın izleyici için alt piksel oluşturma geliştirememeniz için hiçbir neden yoktur, ancak monitörün her zaman bilinmeyen bir yönünü hesaba katmak anlamına gelir. Akılda tutulması gereken bir başka şey de, küçülen bir pazar için bu yazılımı geliştireceğinizdir. Alt piksel oluşturma, nispeten düşük çözünürlüğe sahip ekranlar için kullanışlıdır. Giderek daha fazla ekran (mobil ekranlar bile), insan gözünün alt piksel oluşturmanın yarattığı farkı algılayamayacağı kadar yüksek çözünürlüğe yaklaştığından, çalışmanızın pratik kullanımdan daha fazla teorik ilgi göstermesi muhtemeldir.


3
Şeytanın avukatı oynamak, mümkünse renkli alt piksel oluşturma (ben bir şüpheciyim!) Yapmak, yeterli çözünürlük elde etmek için mücadele ettikleri VR durumlarında yararlı olabilir gibi görünüyor. Belki de retina olmayan telefonlarda veya masalarda?
Alan Wolfe

1
@AlanWolfe evet ama aynı zamanda render etmek için 3 kat pahalı
joojaa

evet elbette, bu doğru. Bunun bir sorun olmadığı bazı durumlar var. Örneğin, her karede her piksel için ışın çekmenize gerek olmayan birkaç algoritma biliyorum. Bu rasterleştirilmiş grafik btw de oynayabilir gibi görünüyor. Yine, ben renk subpixel render gerçek bir şey olduğuna ikna değilim, ama biliyorsun, IF! : P
Alan Wolfe

@AlanWolfe Şüphelerinizi anlamıyorum. Tüm görüntüler zaten alt piksellerle oluşturulur, ancak renkler bir pikselin üçte biri ile yarısı arasında yanlış hizalanmıştır. Yanlış hizalamanın düzeltilmesinin nasıl daha kaliteli bir görüntü elde edemediğini göremiyorum. Herhangi bir endişeniz var mı (bu iyi bir soru olabilir ...)?
trichoplax

3
@joojaa Oluşturmanın 3 katı kadar pahalı olmasının bir nedeni yok. Işın sayısının 3 katı çekim yapmanız gerekmez; ışınları çerçeveye yerleştirirken sadece 3 farklı ağırlık uygularsınız. Etkili bir şekilde, her renk kanalı için farklı bir kenar yumuşatma çekirdeği kullanıyorsunuz.
Nathan Reed

9

Elbette, rasgele görüntüler için alt piksel oluşturmayı kullanabilirsiniz. Bununla birlikte, alt piksel oluşturma gerçekten genel bir 2D görüntü işleme tekniğidir - özellikle ışın izleme ile ilgisi yoktur. Başka bir 3D oluşturma yöntemiyle veya hatta basit bir 2D çizim, fotoğraf veya hatta video ile de kullanabilirsiniz.

Bu nedenle, "ışın izleme için alt piksel oluşturma" nın, en iyi şekilde ayrı ayrı ele alınan iki farklı sorun alanını karıştırdığını söyleyebilirim. İlgili tek bağlantı, sahneyi gerçek zamanlı olarak izliyorsanız ve sonuçta ortaya çıkan görüntünün alt piksel oluşturma kullanılarak ekranda çizileceğini biliyorsanız, piksel yoğunluğunu (ve en boy oranını optimize etmek için bu bilgileri kullanabilirsiniz) (örneğin tipik bir RGB LCD ekran için 3x yatay piksel yoğunluğu kullanılarak).


Olası bir karışıklık kaynağı, mevcut bilgisayar sisteminde, alt piksel oluşturmanın genellikle yalnızca metin için kullanılması ve genellikle yazı tipi oluşturma koduna entegre edilmesidir. Bunun ana nedenleri tartışmalı bir şekilde tarihseldir, ancak aynı zamanda en büyük getirilerin (görsel iyileştirme ve okunabilirlik açısından) tipik olarak olduğu yerdir.

Ayrıca, metnin basit ve tekrarlayan vektör şekillerinden oluşma eğilimi nedeniyle, alt piksel oluşturmayı yazı tipi oluşturucuya entegre etmek, metni yüksek çözünürlüklü bir arabellek haline getirmeye ve sonra yeniden işlemeye kıyasla bazı ekstra optimizasyon fırsatları sunar.

Bununla birlikte, sonunda, teknoloji olgunlaştıkça, alt piksel oluşturmanın GPU veya muhtemelen ekranın kendisi tarafından şeffaf bir şekilde yapıldığı bir sisteme geçeceğimizi tamamen bekliyorum.

(Bu, büyük olasılıkla, daha küçük olan ve "mantıksal pikseller" ile aynı şekilde olması gerekmeyen fiziksel piksellerle başa çıkmak için bu özelliği tam olarak kullanmak isteyen uygulamaların kullanılmasını gerektirecektir. Ancak, yine de, yüksek DPI ekranlarla yönlendirin.)


Tervetuloa! Evet, geçerli olan nokta, sistem ya da donanımın bunu yapmak zorunda olduğunu söyleyebiliriz, çünkü sadece sistem gerçekçi bir şekilde ekranın yönünün ve ekrandaki renklerin düzenlenmesinin farkında olabilir. Tercihen ekranın kendisi bunu yapardı.
joojaa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.