Bagikan melalui


Materi PBR

Bahan PBR adalah salah satu jenis bahan yang didukung di Azure Remote Rendering. Mereka digunakan untuk jala segitiga yang harus menerima pencahayaan realistis. Cloud titik di sisi lain tidak terpengaruh oleh pencahayaan dinamis.

PBR adalah singkatan dari Physically Based Rendering dan berarti bahwa bahan menggambarkan sifat visual permukaan dengan cara yang masuk akal secara fisik, sehingga hasil yang realistis dimungkinkan dalam semua kondisi pencahayaan. Sebagian besar mesin game modern dan alat pembuatan konten mendukung materi PBR karena dianggap sebagai perkiraan terbaik dari skenario dunia nyata untuk penyajian real time.

Model sampel helm glTF dirender oleh ARR

Ide inti dari penyajian berbasis fisik adalah menggunakan properti BaseColor, Metalness, dan Roughness untuk meniru berbagai bahan dunia nyata. Deskripsi terperinci tentang PBR berada di luar cakupan artikel ini. Untuk informasi selengkapnya tentang PBR, lihat sumber lain.

Namun, bahan PBR bukan solusi universal. Ada bahan yang memantulkan warna secara berbeda tergantung pada sudut pandang. Misalnya, beberapa kain atau cat mobil. Jenis bahan ini tidak ditangani oleh model PBR standar, dan saat ini tidak didukung oleh Azure Remote Rendering. Batasan ini mencakup ekstensi PBR, seperti Thin-Film (permukaan berlapis-lapis) dan Clear-Coat (untuk cat mobil).

Properti bahan PBR

Properti material berikut diekspos dalam API runtime, misalnya pada kelas C# PbrMaterial atau kelas C++ PbrMaterial.

  • PbrFlags: Bendera fitur misc dapat digabungkan dalam masker bit ini untuk mengaktifkan fitur berikut:

    • TransparentMaterial: Untuk bahan PBR, hanya ada satu pengaturan transparansi: diaktifkan atau tidak. Tingkat keburaman ditentukan oleh saluran alfa warna albedo. Saat diaktifkan, metode penyajian yang lebih kompleks dipanggil untuk menggambar permukaan semi transparan. Azure Remote Rendering menerapkan transparansi independen urutan (OIT) yang benar. Geometri transparan mahal untuk dirender. Jika Anda hanya perlu lubang di permukaan, misalnya untuk daun pohon, lebih baik menggunakan kliping alfa sebagai gantinya.

    Bola dirender dengan transparansi nol hingga penuh Perhatikan pada gambar di atas, bagaimana bola paling kanan sepenuhnya transparan, tetapi pantulannya masih terlihat.

    Penting

    Jika ada bahan yang seharusnya dialihkan dari buram ke transparan saat runtime bahasa umum, perender harus menggunakan mode penyajian TileBasedComposition. Batasan ini tidak berlaku untuk bahan yang awalnya diubah menjadi bahan transparan.

    • UseVertexColor: Jika jala berisi vertex warna dan opsi ini diaktifkan, warna jala vertex dikalikan menjadi AlbedoColor dan AlbedoMap. Secara default UseVertexColor dinonaktifkan.
    • DoubleSided: Jika dua sisi diatur ke true, segitiga dengan bahan ini dirender bahkan jika kamera melihat wajah belakang mereka. Untuk penerangan bahan PBR juga dihitung dengan baik untuk wajah belakang. Secara default, opsi ini dinonaktifkan. Lihat juga Single-sided rendering.
    • SpecularHighlights: Mengaktifkan sorotan spekular untuk materi ini. Secara default, SpecularHighlights bendera diaktifkan.
    • AlphaClipped: Mengaktifkan hard cut-out berdasarkan per piksel, berdasarkan nilai alfa berada di bawah nilai AlphaClipThreshold (lihat di bawah). Ini juga berfungsi untuk bahan buram.
    • FresnelEffect: Bendera bahan ini memungkinkan efek fresnel aditif pada bahan masing-masing. Tampilan efek diatur oleh parameter FresnelEffectColor fresnel lainnya dan FresnelEffectExponent dijelaskan di bawah ini.
    • TransparencyWritesDepth: Jika TransparencyWritesDepth bendera diatur pada bahan dan bahannya transparan, objek yang menggunakan bahan ini juga akan berkontribusi pada buffer kedalaman akhir. Lihat bendera bahan PBR transparan di bagian berikutnya. Mengaktifkan fitur ini disarankan jika kasus penggunaan Anda membutuhkan proyeksi ulang tahap akhir yang lebih masuk akal dari scene yang sepenuhnya transparan. Untuk scene campuran buram/transparan, pengaturan ini mungkin memperkenalkan perilaku proyeksi ulang yang tidak masuk akal atau artefak proyeksi ulang. Karena alasan ini, pengaturan default dan yang disarankan untuk kasus penggunaan umum adalah menonaktifkan bendera ini. Nilai kedalaman tertulis diambil dari lapisan kedalaman per piksel objek yang paling dekat dengan kamera.
  • AlbedoColor: Warna ini dikalikan dengan warna lain, seperti AlbedoMap warna atau vertex . Jika transparansi diaktifkan pada bahan, saluran alfa digunakan untuk menyesuaikan tingkat keburaman, dengan 1 berarti sepenuhnya buram dan 0 berarti sepenuhnya transparan. Warna albedo default adalah putih buram.

    Catatan

    Ketika bahan PBR sepenuhnya transparan, seperti permukaan kaca yang sangat bersih, itu masih mencerminkan lingkungan. Spot terang seperti matahari masih terlihat di pantulan. Ini berbeda untuk bahan warna.

  • AlbedoMap: Tekstur 2D untuk nilai albedo per piksel.

  • AlphaClipThreshold: Jika AlphaClipped bendera diatur pada PbrFlags properti, semua piksel di mana nilai alfa albedo lebih rendah dari AlphaClipThreshold yang tidak akan digambar. Kliping alfa dapat digunakan bahkan tanpa mengaktifkan transparansi dan jauh lebih cepat untuk dirender. Bahan yang diklip alfa masih lebih lambat untuk dirender daripada bahan yang sepenuhnya buram. Secara default, kliping alfa dinonaktifkan.

  • TexCoordScale dan TexCoordOffset: Skala dikalikan ke dalam koordinat tekstur UV, offset ditambahkan ke dalamnya. Dapat digunakan untuk merentangkan dan menggeser tekstur. Skala default adalah (1, 1) dan offset adalah (0, 0).

  • FresnelEffectColor: Warna fresnel yang digunakan untuk bahan ini. Hanya penting ketika bendera efek fresnel telah diatur pada materi ini (lihat di atas). Properti ini mengontrol warna dasar kilau fresnel (lihat efek fresnel untuk penjelasan lengkap). Saat ini hanya nilai saluran RGB yang penting dan nilai alfa akan diabaikan.

  • FresnelEffectExponent: Eksponen fresnel yang digunakan untuk bahan ini. Hanya penting ketika bendera efek fresnel telah diatur pada materi ini (lihat di atas). Properti ini mengontrol penyebaran kilau fresnel. Nilai minimum 0,01 menyebabkan penyebaran di seluruh objek. Nilai maksimum 10.0 membatasi kilau hanya ke tepi yang paling merumput yang terlihat.

  • PbrVertexAlphaMode: Menentukan bagaimana saluran alfa warna vertex digunakan. Mode berikut disediakan:

    • Occlusion: Nilai alfa mewakili nilai oklusi sekitar dan oleh karena itu hanya memengaruhi pencahayaan tidak langsung dari kotak langit.
    • LightMask: Nilai alfa berfungsi sebagai faktor skala untuk jumlah keseluruhan pencahayaan yang diterapkan, yang berarti alfa dapat digunakan untuk menggelapkan area. Ini mempengaruhi pencahayaan tidak langsung dan langsung.
    • Opacity: Alfa mewakili seberapa buram (1,0) atau transparan (0,0) bahan.
  • NormalMap: Untuk mensimulasikan detail mendetail, peta normal dapat disediakan.

  • NormalMapScale: Nilai skalar yang menskalakan kekuatan peta normal. Nilai 1,0 mengambil peta normal apa adanya, nilai 0 membuat permukaan tampak datar. Nilai yang lebih besar dari 1,0 membesar-besarkan perturbasi peta normal.

  • Roughness dan RoughnessMap: Kekasaran mendefinisikan seberapa kasar atau halus permukaannya. Permukaan kasar menyebarkan cahaya ke lebih banyak arah daripada permukaan halus, yang membuat pantulan buram dan bukan tajam. Rentang nilainya dari 0.0 ke 1.0. Saat Roughness sama dengan 0.0, pantulan akan tajam. Saat Roughness sama dengan 0.5, pantulan akan menjadi buram. Jika kedua nilai roughness dan roughness map diberikan, nilai akhir akan menjadi produk dari keduanya.

  • Metalness dan MetalnessMap: Dalam fisika, properti ini sesuai dengan apakah permukaan konduktif atau dielektrik. Bahan konduktif memiliki sifat reflektif yang berbeda, dan cenderung reflektif tanpa warna albedo. Dalam bahan PBR, properti ini memengaruhi seberapa banyak permukaan mencerminkan lingkungan sekitarnya. Rentang nilai dari 0.0 hingga 1.0. Ketika metalness adalah 0.0, warna albedo sepenuhnya terlihat, dan bahannya terlihat seperti plastik atau keramik. Saat metalness 0.5, itu terlihat seperti logam yang dicat. Ketika logam adalah 1.0, permukaan hampir sepenuhnya kehilangan warna albedonya, dan hanya mencerminkan lingkungan sekitarnya. Misalnya, jika metalness adalah 1.0 dan roughness adalah 0.0 kemudian permukaan terlihat seperti cermin dunia nyata. Jika kedua nilai metalness dan metalness map diberikan, nilai akhir akan menjadi produk dari keduanya.

    Bola dirender dengan nilai metalness dan roughness yang berbeda

    Pada gambar di atas, bola di sudut kanan bawah terlihat seperti bahan logam nyata, kiri bawah terlihat seperti keramik atau plastik. Warna albedo juga berubah sesuai dengan sifat fisiknya. Dengan meningkatnya roughness, bahan kehilangan ketajaman pantulan.

  • AOMap dan AOScale: Oklusi sekitar membuat objek dengan celah terlihat lebih realistis dengan menambahkan bayangan ke area terakludasi. Nilai oklusi berkisar dari 0.0 hingga 1.0, di mana 0.0 berarti kegelapan (oklusi) dan 1.0 berarti tidak ada oklusi. Jika tekstur 2D disediakan sebagai peta oklusi, efeknya diaktifkan dan AOScale bertindak sebagai pengali.

    Objek yang dirender dengan dan tanpa oklusi ambien

Penggantian material warna selama konversi

Subset properti bahan warna dapat ditimpa selama konversi model melalui file penimpaan materi. Tabel berikut ini memperlihatkan pemetaan antara properti runtime yang didokumenkan di atas dan nama properti terkait dalam file penimpaan:

Nama properti material Nama properti dalam file penggantian
PbrFlags.TransparentMaterial transparent
PbrFlags.AlphaClipped alphaClipEnabled
PbrFlags.UseVertexColor useVertexColor
PbrFlags.DoubleSided isDoubleSided
PbrFlags.TransparencyWritesDepth transparencyWritesDepth
AlbedoColor albedoColor
TexCoordScale textureCoordinateScale
TexCoordOffset textureCoordinateOffset
NormalmapScale normalMapScale
Metalness metalness
Roughness roughness
AlphaClipThreshold alphaClipThreshold

Detail teknis

Azure Remote Rendering menggunakan BRDF aspek mikro Cook-Torrance dengan GGX NDF, Schlick Fresnel, dan istilah visibilitas berkorelasi GGX Smith dengan istilah difus Lambert. Model ini adalah standar industri de facto saat ini. Untuk detail lebih mendalam, lihat artikel ini: Penyajian berbasis fisik - Cook Torrance

Alternatif untuk model PBR Metalness-Roughness yang digunakan di Azure Remote Rendering adalah model PBR Spekular-Glossiness. Model ini dapat mewakili berbagai bahan yang lebih luas. Namun, harganya lebih mahal, dan biasanya tidak berfungsi dengan baik untuk kasus real time. Tidak selalu mungkin untuk mengonversi dari Specular-Glossiness ke Metalness-Roughness karena ada pasangan nilai (Diffuse, Specular) yang tidak dapat dikonversi ke (BaseColor, Metalness). Konversi ke arah lain lebih sederhana dan lebih tepat, karena semua pasangan (BaseColor, Metalness) sesuai dengan pasangan yang ditentukan dengan baik (Diffuse, Specular).

Dokumentasi API

Langkah berikutnya