2012-06-25 19 views
7

glsl'yi kullanarak cel shader'ı başarıyla uygulayabildim. Ama benim sorunum her şeyi özetlemek ve internet üzerindeki her opengl örneği oldukça eski, şu anki teknolojiyle uyuşmuyor, bu yüzden yavaş teknikler vs ... Bu yüzden bunu glsl'de yapamadım. En az yoğun siyah alanları renklendirmek gibi bazı fikirler düşündüm ama gl_Vertex, gl_Position ve göz pozisyonları hakkında yeterli açıklama yok. Yani, her teknik çok eski olduğu için, sonunda bu anahat problemi hakkında birisine sormaya karar verdim.OpenGL GLSL Cel Gölgelendirme ve Anahat algoritması

cevap

9

Zbuffer'da bir çeşit kenar algılama filtresi kullanırdım (potansiyel olarak renk arabelleği üzerinde kenar algılama ile birleştirilebilir) ve daha sonra framebuffer'ı (ters çevrilmiş) sonuç ile modüle eder. En yaygın kenar saptama filtrelerin biri sobel operatörüdür:

http://en.wikipedia.org/wiki/Sobel_operator

DÜZENLEME: Bunu yapmanın bir başka ucuz bir yol sıradan örgü bakacak itlaf ile örgü siyah kopyasını çizmek hale önce etmektir ters çevrilmiş ve köşeler normalin yönünde hafifçe hareket etmiştir. Muhtemelen XIII'de yaptıkları budur, aynı zamanda Jet Set Radyosu'nda bu şekilde yapıldığından da eminim.

EDIT2: Anahat kalınlığının izleyiciye olan uzaklığından bağımsız olarak sabit olmasını istiyorsanız, bu mesafeyle köşeleri taşıdığınız miktarı ölçeklemelisiniz.

+1

i basit bir anahat için çok pahalı olduğunu düşünüyorum. – deniz

+0

Ne tür bir donanım hedefliyorsunuz? X1650pro equivelant gibi –

+0

. XIII oyunu bir şekilde gerçekten eski donanım gereksinimi ile yapar. – deniz