Bagaimana Anda membuat shader logam yang bagus?
Untuk logam yang berbeda dan katakan kurang lebih tererosi / berkarat dan sebagainya.
Saya tahu bahwa satu perbedaan dari bahan biasa adalah bahwa logam harus 'mewarnai' cahaya specular tetapi ketika saya melakukannya dengan emas misalnya hanya terlihat "kuning", bukan logam sama sekali.
Bantuan apa pun dihargai!
graphics
shaders
graphic-effects
Valmond
sumber
sumber
Jawaban:
Saya baru-baru ini membuat shader untuk logam yang bersih dan disikat untuk permainan saya yang sedang berlangsung dan saya cukup senang dengan hasilnya.
Logam bersih: Fitur terpenting dalam percobaan saya adalah pantulan lingkungan dengan peta kubus. Saya menerapkannya dengan lingkungan render-to-tekstur realtime, tetapi juga gambar statis sering memberikan hasil yang baik dan lebih mudah untuk mengaburkannya. Fitur terpenting kedua adalah efek fresnel, yang membuat siluet objek lebih baik. Ini misalnya memberikan tampilan bola yang lebih bulat. Pencahayaan specular tidak selalu diperlukan, karena peta kubus dapat memberikan highlight secara langsung. Render HDR juga penting untuk membuat refleksi peta kubus terlihat bagus.
Logam yang disikat : Untuk logam yang disikat Anda mendapatkan hasil yang baik dengan cukup mudah dengan menggunakan tekstur sikat, sesuatu seperti ini, bersama dengan pencahayaan anisotropik. Untuk pencahayaan anisotropik Anda dapat menemukan tutorial dari web, tapi saya menerapkannya sendiri dengan menggunakan blinn-phong sebagai dasarnya, tetapi dari setengah vektor saya menghilangkan 80% dari arah singgung. Ini berarti bahwa Anda memerlukan garis singgung atau bitangen selain dari normals dalam model Anda. Refleksi lingkungan sulit untuk logam disikat. Anda dapat mengambil sampel dari berbagai arah dari peta kubus berdasarkan pada arah tangen / bitangent, tetapi Anda mungkin membutuhkan banyak sampel untuk hasil yang baik. Namun ini tidak perlu, karena tekstur dan pencahayaan anisotropik dengan beberapa sumber cahaya sudah terlihat cukup bagus. Hasil akhir dalam kasus saya terlihat seperti ini:
sumber
Seperti yang dikatakan Nicol dalam komentarnya, ada banyak hal yang masuk ke shader logam berkualitas tinggi. Untuk hasil terbaik, penyaji Anda harus benar-gamma dan menggunakan model arsir berbasis fisik (lihat khususnya dua makalah oleh Naty Hoffman di tautan itu).
Mengingat hal-hal itu, cara khas untuk membuat bahan logam adalah memiliki warna difus yang sangat rendah atau tidak ada dan reflektif spekuler tinggi, mulai dari 50% hingga 100% (dalam ruang warna linier). Seperti yang Anda perhatikan, untuk beberapa logam specular akan berwarna.
Karena penampilan logam sepenuhnya spekuler dengan sedikit atau tanpa difusi, refleksi akan sangat penting. Jika hanya memantulkan titik cahaya, Anda akan mendapatkan tampilan material hitam karena bagian lingkungan lainnya tidak ada (bahkan logam yang sangat kasar akan memantulkan gambar buram di sekitarnya). Cara khas untuk mendapatkan lebih banyak refleksi adalah dengan menggunakan cubemap. Refleksi realistis dalam grafik waktu nyata adalah topik yang sangat besar, dan ada banyak pendekatan berbeda di luar sana.
sumber