Alan Hızlı ve Basit 2-Geçiş Derinlik

Gnome Depth-Of-Field Alan derinliği diyafram ve odak uzaklığı neden olduğu bir fotoğraf etkisidir. Bu konu hakkında bir çok ilginç bir yazı yayımlandı istockphoto.com . İki boyutlu, öngörülen malzeme derinliği işaret güvenilir bir sağlar. Başka bir deyişle: Onlar hala 2D projeksiyonları yaparken resim 3D görünmesini sağlar.

Grafik donanım şimdiki nesil, bu fantezi post-processing efektleri bir çok işlemek için mümkün - bir yanında yumuşak gölgeler ve hareket bulanıklığı, alan derinliği (DOF) görsel kalitesini artırmak için en sık kullanılan etkisi üzerinde olabilir. Hoş DOF efektler yaratmak farklı teknikleri hakkında geniş bir kapsama alanı var - "alan shader derinliği" için basit bir google 74.000 hit bana bir verdi. Ben yazmak istedim bir demo için, ben hızlı, basit ve güzel görünüyor, çünkü basit, alfa-kanal-temelli bir yaklaşım kullanmaya karar verdi.

Fikir kolaydır: Zaten piksel başına aydınlatma gibi şeyler yapan bir shader varsa, sadece ortaya çıkan renk alfa kanalı içine derinlemesine bilgi koymak. Ikinci geçişte yapılması gereken tek şey: görüntüyü yeniden işlemek ve uygun bir çekirdek ile görüntü bulanık. Çekirdek olarak, CPU-precomputed verilerle bir Poisson-Disk-Filtre seçti - Bu az örnekleri daha iyi görsel kalite veren, basit bir kuadratik çekirdek kullanarak daha az "çentikli" dir. Yüksek derinlik farklılıklar var alanların kenarlarında kötü haleler önlemek için, sonuç sadece bulanık bir görüntü değil, odak-uzunluğu da bulanık görüntü verileri nihai sonucu almak ne kadar kontrol eder.

  vec4 vColor = Texture2D (sceneMap, gl_TexCoord [0] xy.);
 yüzer fBlurAmount = abs (vColor.a * 2,0-1,0);
 fTexel = 16.0/mapSize yüzer;
 vec4 vResult;
 {(+ + i,, i <16 int i = 0) için
     vResult + = Texture2D (blurMap, gl_TexCoord [0] xy + fBlurAmount * fTexel * poisson [i] xy * poisson [i] z...);
 }
 vResult / = 16.0;
 gl_FragColor = karışımı (vColor, vResult, fBlurAmount); 

Bu yaklaşım oldukça sınırlıdır olduğunun farkındayım - en kısa sürede alfa kanalı diğer etkileri (bir parlayan geçiş veya hız gibi) gerekli olduğu gibi, bu gibi kullanılamaz. Ama yine de, ben sonuçları ile mutluyum. ;)

Bu yazı gönderilmiş Bilgisayar Bilimi ve etiketli , , , . Bookmark permalink .

Yorumlar kapalı.