16bit yarım dalgalı doğrusal HDR görüntüler (yaygın / albedo) dokular olarak?


10

Bu yüzden bir süredir düşünüyorum ve bir cevap için google'ı denedim, ancak başarılı olamadım.

Tüm dokularınız JPEG gibi 8 bit LDR görüntülerse, bu, oluşturma sırasında pozlama kontrolü / ton eşlemesi ile çakışmaya neden olamaz. Bu, düşük dinamik aralık tarafından sıkıştırıldıklarından, gerçekte orada olmayan dokularda ayrıntı göstermesi gereken görüntünüzün oluşturma pozlamasını ayarlarsanız. Bu nedenle, iyi bir renk temsili elde etmek için 16 bit yarım şamandıra ile doğrusal renk uzayında .exr olarak kaydedilen HDR görüntüleri olarak dokulara sahip olmak da mantıklı olmaz mıydı (32bit "tam" şamandıra aşırı olabilir mi?). Daha ayrıntılı ve doğru renk değerlerine sahip olmak için, GI üzerinde bir etkisi olabilir ve renk kanaması nasıl hesaplanır?

Ya da istediğimiz renderin nihai sonucu, muhtemelen herhangi bir şekilde fotoğraflanırken dokunun pozlama seviyesine benzeyeceği için gerekli değil mi? Ve kamera çoğunlukla 12-14bit'te çekim yaptığından, dokuların birden fazla pozunu almanız ve hepsini bir HDRI ile birleştirmek için tüm bu ekstra işleri yapmanız gerekir.

Düzenleme: Açıklığa kavuşturmak için, çoğunlukla, tam ışık simülasyonları ve küresel aydınlatma ile ışın izleme oluşturucuları (zihinsel ışın, V-Ray, Arnold, vb.) İle bir foto gerçekçi oluşturma bakış açısıyla ilgileniyorum. gerçek zamanlı oyun motorları.

Yanıtlar:


8

Film yapımında, bantlama vb.Nedeniyle renk / albedo için neredeyse hiç 8 bit doku kullanmıyoruz. ) veya renkli / albedo dokular için 16 bit işaretsiz tam sayı değerleri.


1
Vay canına, teşekkürler @LarryGritz! Sony Pictures Imageworks için çalıştığınızı düşünürsek, sizi çok güvenilir bir kaynak olarak kabul edeceğim! :) Ama bu dokuları nasıl yakalarsınız? Çoğu kamera sadece 14 bit RAW dosyalarında çekim yapar, 16 bit doğrusal sensörlü özel kameralarınız var mı? Ya da tıpkı HDRI görüntülü tabanlı aydınlatmada olduğu gibi dokular için birden fazla poz mu alıyorsunuz? Yoksa 14 bit kamera RAW ile yakalayıp "16bit" olarak mı kaydediyorsunuz? Ow ve hangi dosya biçimini kullanıyorsunuz, .tiff (.tx, .tex) veya .exr? Girişiniz için tekrar teşekkürler !! :)
Kristoffer Helander

1
@KristofferHelander: 14 bit yakalamadan 0-1 aralığının 16 bitlik gösterime dönüştürülmesi, çarpma ile kolayca elde edilir. Ancak dokularımızın çoğu fotoğraflanmaz, boyanır - bazen doğrudan 16 bit formatında boyanır, bazen sRGB'de boyanır ve daha sonra doku olarak kullanılmak üzere "doğrusallaştırıldığında" 16 bit'e dönüştürülür. Albedo dokular için HDR'ye gerek yoktur.
Larry Gritz

1
@KristofferHelander: Albedo dokular için, 16 bit tamsayı verileriyle TIFF kullanma eğilimindeyiz (dediğimiz şey .tx sadece TIFF biçimidir, ancak döşenir ve TIFF dosyasında birden çok alt görüntü olarak depolanan MIP-harita çoklu çözümü ile). Ortam yakalamaları gibi gerçek HDR verileri için OpenEXR kullanıyoruz. İşleyici çıktısı da OpenEXR olma eğilimindedir.
Larry Gritz

8

Evet, bazı aşırı durumlarda HDR aydınlatma ve tonemapping için renk dokularındaki bantlama sorunlarını ortaya çıkarmak mümkündür. Bu durumlarda, dokular için daha yüksek bir bit derinliğine sahip olmak yararlı olabilir. Ancak, tecrübelerime göre, malzemelerin ve sıradan aydınlatma durumlarının çoğu bu sorunu göstermiyor ve tipik bir oyunda çoğu doku 8 bitlik (veya daha azı) iyi durumda - oyunlar genellikle BC1 sıkıştırmasını kullanıyor ve bu da onları 5-5 6-5 bit).

İnsanlar HDR görüntü oluşturma hedeflerini kullanır, çünkü tek bir sahne, pencereden odadan 10-100 kat daha parlak güneşli bir dış cepheye görebileceğiniz karanlık bir oda gibi çok farklı parlaklık büyüklükleri içerebilir. Bununla birlikte, renk dokuları çok çeşitli büyüklüklere sahip değildir. Doğal olarak [0, 1] aralığında olan yansımaları temsil ederler ve pratikte birkaç günlük materyal yaklaşık% 2-5 yansımadan daha düşüktür. Bu nedenle 8 bitlik bir görüntü (gama kodlamalı), genellikle dağınık ve aynasal renkleri yeterli hassasiyetle temsil edebilir.

Oldukça karanlık bir doku ile çok parlak ışıklandırmanın veya aşırı pozlanmış bir kamera ayarının kombinasyonunun son karede bantlama gösterebileceği doğrudur, ancak bu daha sıra dışı bir durum olacaktır.

Muhtemelen bir vaka olurdu HDR doku istiyorum özellikle ışıklı panolar ve benzeri ışık kaynakları için, yayıcı maddeler olduğunu. Doku, oyunda parlak bir ışık kaynağı olarak görünmek için değeri yükseltilmiş olarak görünecektir, bu durumda 8 bitlik bir görüntü kolayca şeritlenmeyi gösterebilir.

Son olarak, dokuları yakalarken ve oluştururken mümkünse daha yüksek hassasiyetle (örn. 16 bit hassasiyet) çalışmak yararlı olabilir, çünkü sadece hassas sorunlara neden olmadan görüntüyü işlemek için daha fazla alan sağlar. Örneğin, seviyeleri veya renk dengesini ayarlamanız gerekiyorsa, biraz hassasiyet kaybedersiniz; 8 bitlik kaynak görüntüden başlarken şeritlenme (özellikle birden çok kez yaparsanız) oluşturabilir. 16 bitlik bir kaynak bu tür sorunlara karşı daha dirençli olacaktır. Ancak, oyunda kullanılan son doku muhtemelen 8-bit'e kadar sıkıştırılmış olacaktır.


combination of a quite dark texture with very bright lighting or an extremely overexposed camera setting can show banding in the final frameçok iyi bir fikir. Ancak, gama kodlamanın tam olarak bu noktayı hafifletmek için olduğunu not edebiliriz. Eğer problemi varsa neden üstün bir gamma üssü denemiyorsunuz? donanım sRGB örnekleyicilerinin kullanımını engelleyecektir.
v.oddou

Girişiniz için teşekkürler. Ama açıklığa kavuşturmak gerekirse, bununla gerçekte değil, tam ışık simülasyonları ve küresel aydınlatma ile ışın izleme oluşturucuları (zihinsel ışın, V-Ray, Arnold, vb.) İle gerçekçi bir bakış açısıyla ilgileniyorum. zamanlı oyun motorları.
Kristoffer Helander

@KristofferHelander Bilmek güzel, ama bence yazdığım şey çevrimdışı render için de geçerli. Ama itiraf ediyorum o alanda çok fazla doğrudan deneyimim yok.
Nathan Reed

@NathanReed Evet, kesinlikle orada gerçekten iyi puanlar yaptınız :)
Kristoffer Helander

5

Okurları , eğer varsa, Quake 2 motor rasterleştirme teknolojisi hakkında ayrıntılı olarak açıklanan bu makaleyi okumaya davet etmek istiyorum .

TLDR ise, lütfen bu resme dikkat edin: resim açıklamasını buraya girin

Gördüğümüz şey Albedo kanalı, sorunuzu doğru anlarsam 16 bitte kodlamak istediğiniz şey budur.
" Geçmişte oyunlar için 256 renkle kodlanabilseydi, neden yeni oyunlarda 281474976710656'ya (281 trilyon) ihtiyacımız var? " yukarı. Daha yapıcı, bu görüntüde not ettiyseniz, her şey aynı aydınlatma seviyesindedir . Daha özel olarak, istenen doygunluğu koruyan mümkün olan maksimum yoğunluk. (HSV uzayında, V maks.)

Vurgu önemlidir, ancak herhangi bir bite ihtiyacımız yoktur çünkü albedo'nun kodlayacak derinliği yoktur. Dinamik gölgelendirmeden gelir, gölgelendiricilerdeki f32bileşenler başına çalışmak ve f16hedefleri oluşturmak için çıktı almak mantıklıdır . Ancak albedo dokularını saklamak f16sadece aşırı kilolu değil, aynı zamanda değerli bant genişliğimiz için haksız bir haksız performans domuzudur.


Girişiniz için teşekkürler. Ama açıklığa kavuşturmak gerekirse, bununla gerçekte değil, tam ışık simülasyonları ve küresel aydınlatma ile ışın izleme oluşturucuları (zihinsel ışın, V-Ray, Arnold, vb.) İle gerçekçi bir bakış açısıyla ilgileniyorum. zamanlı oyun motorları. Orijinal yazımı güncelledim.
Kristoffer Helander
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.