Jadi saya telah memikirkan hal ini untuk sementara waktu dan mencoba mencari jawaban di google tetapi tidak berhasil.
Jika semua tekstur Anda adalah gambar LDR 8bit, seperti JPEG, tidak dapat yang berpotensi menyebabkan konflik dengan kontrol eksposur / pemetaan nada saat rendering. Itu adalah jika Anda menyesuaikan eksposur rendering gambar Anda yang harus mengekspos detail dalam tekstur yang tidak benar-benar ada, karena mereka dijepit oleh rentang dinamis rendah. Jadi bukankah masuk akal untuk juga memiliki tekstur sebagai gambar HDR, disimpan sebagai .exr, dalam ruang warna linier dengan 16bit setengah float untuk mendapatkan representasi warna yang baik (float 32 bit "penuh" mungkin berlebihan?). Untuk memiliki nilai warna yang lebih rinci dan benar mungkin, saya pikir, memiliki efek pada GI dan bagaimana pendarahan warna dihitung?
Atau apakah itu tidak perlu karena hasil akhir dari rendering yang kita inginkan mungkin akan mirip dengan tingkat paparan tekstur ketika difoto dengan cara apa pun? Dan karena sebagian besar kamera memotret dalam 12-14bit Anda harus mengambil banyak eksposur tekstur dan melakukan semua pekerjaan ekstra untuk menyatukan semuanya menjadi satu HDRI.
Sunting: Untuk memperjelas, saya sebagian besar tertarik pada ini dari sudut pandang rendering foto yang realistis, dengan penyaji jejak sinar (seperti sinar mental, V-Ray, Arnold, dll.) Dengan simulasi cahaya penuh dan penerangan global, daripada untuk mesin game real-time.
sumber
Ya, dalam beberapa kasus ekstrem dimungkinkan untuk pencahayaan HDR dan tonemapping untuk mengekspos masalah pita pada tekstur warna. Dalam kasus tersebut, memiliki kedalaman bit yang lebih tinggi untuk tekstur dapat bermanfaat. Namun, dalam pengalaman saya, sebagian besar bahan dan situasi pencahayaan biasa tidak menunjukkan masalah ini, dan sebagian besar tekstur dalam gim biasa baik-baik saja dalam 8-bit (atau bahkan lebih sedikit — gim sering menggunakan kompresi BC1, yang menguranginya menjadi 5- 6-5-bit).
Orang-orang menggunakan target render HDR karena satu adegan dapat mengandung besaran kecerahan yang sangat berbeda, seperti ruangan gelap tempat Anda dapat melihat melalui jendela ke bagian luar yang diterangi matahari 10-100 kali lebih terang daripada ruangan. Namun, tekstur warna tidak memiliki rentang magnitudo yang begitu luas. Mereka mewakili pantulan, yang secara inheren dalam kisaran [0, 1], dan dalam praktik beberapa bahan sehari-hari lebih rendah dari sekitar 2-5% pantulan. Jadi gambar 8-bit (dengan encoding gamma) biasanya dapat mewakili warna difus dan specular dengan presisi yang cukup.
Memang benar bahwa kombinasi tekstur yang cukup gelap dengan pencahayaan yang sangat terang atau pengaturan kamera yang terlalu terang dapat menunjukkan garis melintang di bingkai akhir, tetapi itu akan menjadi kasus yang lebih tidak biasa.
Sebuah kasus di mana Anda mungkin akan ingin tekstur HDR adalah bahan memancarkan, terutama untuk lampu-lampu neon dan sumber cahaya yang sama. Tekstur akan muncul dengan nilainya diamputasi untuk muncul sebagai sumber cahaya terang dalam game, jadi dalam hal itu gambar 8-bit dapat dengan mudah menunjukkan garis banding.
Akhirnya, masih dapat berguna untuk bekerja pada presisi yang lebih tinggi (mis. Presisi 16-bit) jika memungkinkan saat mengambil dan membuat tekstur, hanya karena memberi Anda lebih banyak ruang kepala untuk memproses gambar tanpa menyebabkan masalah presisi. Misalnya, jika Anda perlu menyesuaikan level atau keseimbangan warna, Anda kehilangan sedikit presisi; yang dapat memperkenalkan banding (terutama jika Anda melakukannya beberapa kali) ketika mulai dari gambar sumber 8-bit. Sumber 16-bit akan lebih tahan terhadap masalah seperti itu. Namun, tekstur akhir yang digunakan dalam game mungkin masih akan dikompresi menjadi 8-bit.
sumber
combination of a quite dark texture with very bright lighting or an extremely overexposed camera setting can show banding in the final frame
wawasan yang sangat bagus. Tetapi kita dapat mencatat bahwa pengkodean gamma ada di sini tepatnya untuk mengurangi hal ini. Jika ia memiliki masalah mengapa tidak mencoba eksponen gamma yang unggul? yang akan menghambat penggunaan sampler perangkat keras sRGB sekalipun.Saya ingin mengundang pembaca untuk membaca artikel ini tentang teknologi rasterisasi mesin Quake 2 yang dijelaskan secara terperinci , jika mereka punya waktu.
Jika TLDR, harap perhatikan gambar ini:
Apa yang kami lihat adalah saluran Albedo , itu yang ingin Anda enkode dalam 16 bit jika saya memahami pertanyaan Anda dengan benar.
Saya tidak akan mengatakan " jika itu bisa dikodekan dalam 256 warna untuk permainan di masa lalu, mengapa kita membutuhkan 281474976710656 (itu 281 triliun) dalam permainan baru? " Bahkan jika saya ingin tetapi itu terdengar seperti orang pemarah pixar dari Naik. Lebih konstruktif, jika Anda perhatikan dalam gambar ini, semuanya berada pada level pencahayaan yang sama . Lebih khusus lagi, intensitas maksimum yang dimungkinkan menjaga saturasi yang diinginkan. (artinya dalam ruang HSV, V di maksimalkan)
Penekanannya adalah kuncinya, kita hampir tidak membutuhkan bit karena Albedo tidak memiliki kedalaman untuk menyandikan. Dinamis berasal dari naungan, masuk akal untuk bekerja di
f32
per komponen dalam shader, dan output untukf16
membuat target. Tapi menyimpan tekstur albedo dif16
itu tidak hanya berlebihan, itu babi kinerja yang tidak dapat dibenarkan untuk bandwidth berharga kita.sumber