Alat grafis shader standar — MRTK3
Sistem bayangan Graphics Tools Standard menggunakan shader fleksibel yang dapat mencapai visual yang mirip dengan shader Unity's Standard (atau Lit). Ini menerapkan prinsip Sistem Fluent Design dan tetap berkinerja pada perangkat realitas campuran.
Sampel
Lihat sampel Galeri Bahan untuk beberapa demonstrasi varian Alat Grafis/shader Standar. Untuk contoh Alat Grafis/Kanvas Standar, lihat sampel UnityUI
Arsitektur
Sistem bayangan Alat Grafis/Standar adalah "uber shader" yang menggunakan fitur varian program shader Unity untuk menghasilkan kode shader optimal secara otomatis berdasarkan properti material. Saat pengguna memilih properti material di pemeriksa materi, mereka hanya dikenakan biaya performa untuk fitur yang telah diaktifkan.
Untuk lebih mendukung alur kerja Unity tradisional dan alur kerja UnityUI (kanvas), sistem bayangan Alat Grafis/Standar memiliki dua titik masuk shader:
Konteks | Default | UnityUI |
---|---|---|
Nama | Alat Grafis/Standar | Alat Grafis/Kanvas Standar |
Shader | GraphicsToolsStandard | GraphicsToolsStandardCanvas |
Kedua shader sebagian besar identik karena mereka berbagi kode shader umum termasuk. Alat Grafis/Kanvas Standar berisi beberapa logika tambahan khusus untuk UnityUI.
Shader berikut mencakup daya Sistem bayangan Alat Grafis/Standar:
Sertakan | Tujuan |
---|---|
GraphicsToolsStandardProgram | Berisi metode titik entri shader vertex dan fragmen (implementasi inti). |
GraphicsToolsStandardMetaProgram | Berisi metode titik entri shader vertex dan fragmen yang digunakan oleh Unity untuk pencahayaan statis (tidak digunakan saat runtime). |
GraphicsToolsStandardInput | Definisi untuk atribut vertex, interpolator puncak, tekstur, sampel tekstur, buffer konstanta per bahan, properti global, dan konstanta. |
GraphicsToolsCommon | Metode dan definisi yang dapat digunakan kembali. |
Dukungan alur render
Unity memiliki beberapa alur render untuk dipilih pengembang. Sistem bayangan Graphics Tools Standard dirancang untuk bekerja secara otomatis dengan alur render bawaan Unity atau Universal Render Pipeline (URP). Tidak perlu beralih shader berdasarkan alur. Di bawah ini adalah matriks dukungan:
Alur | Didukung | Pengecualian |
---|---|---|
Alur Render Bawaan | ✅ | Akrilik "Mode Kabur" tidak didukung. |
Universal Render Pipeline (URP) | ✅ | |
Alur Render Definisi Tinggi (HDRP) | ❌ | |
Alur Render Kustom | ❔ | Dukungan tergantung pada bagaimana alur dibangun. |
Dukungan UnityUI
Sistem bayangan Standar Alat Grafis bekerja dengan sistem UI bawaan Unity yang disebut UnityUI. Graphics Tools/Standard Canvas
harus digunakan untuk semua bahan dalam kanvas UnityUI.
Canvas atau CanvasRenderer dalam Alat Grafis akan meminta penambahan ScaleMeshEffect.cs
saat diperlukan:
Pada komponen UnityUI, unity_ObjectToWorld
matriks (atau UNITY_MATRIX_M
dalam URP) bukan matriks transformasi transformasi lokal yang hidup komponen Grafis tetapi dari Kanvas induknya. Banyak Alat Grafis/efek shader Kanvas Standar memerlukan skala objek untuk diketahui. Untuk mengatasi masalah ini, ScaleMeshEffect.cs
akan menyimpan informasi penskalaan ke dalam atribut saluran UV selama konstruksi jala UI.
Tip
Saat menggunakan komponen Unity Image, disarankan untuk menentukan "None (Sprite)" untuk Gambar Sumber untuk mencegah Unity UI menghasilkan simpul ekstra.
Inspektur material
Pemeriksa bahan kustom ada untuk Alat Grafis/Alat Standar dan Grafis/shader Kanvas Standar yang disebut StandardShaderGUI.cs. Pemeriksa secara otomatis mengaktifkan/menonaktifkan fitur shader, berdasarkan pilihan pengguna dan ajudan dalam menyiapkan status render. Untuk informasi selengkapnya tentang setiap fitur arahkan mouse ke atas setiap properti di Editor Unity untuk tipsalat.
Catatan
UI inspektur bersifat dinamis. Bagian UI akan berubah saat fitur diaktifkan dan dinonaktifkan.
Inspektur dapat dipecah menjadi beberapa area fitur seperti yang dijelaskan di bawah ini.
Mode penyajian
Bagian pertama dari inspektur mengontrol status render bahan. Mode Penyajian menentukan kapan dan bagaimana materi akan dirender. Tujuan dari Graphics Tools/Standard
shader dan Graphics Tools/Standard Canvas
adalah untuk mencerminkan mode penyajian yang ditemukan di shader Unity/Standard. Alat Grafis/Alat Standar dan Grafis/shader Kanvas Standar juga menyertakan mode penyajian Aditif dan mode Penyajian kustom untuk kontrol pengguna yang lengkap.
Mode Penyajian | Deskripsi |
---|---|
Buram | (Default) Cocok untuk objek padat normal tanpa area transparan. |
Pemotongan | Memungkinkan pembuatan efek transparan yang memiliki tepi keras antara area buram dan transparan. Dalam mode ini, tidak ada area semi transparan, teksturnya buram 100%, atau tidak terlihat. Ini berguna saat menggunakan transparansi untuk membuat bentuk bahan, seperti vegetasi. |
Memudar | Memungkinkan nilai transparansi untuk sepenuhnya memudarkan objek, termasuk sorotan atau pantulan spekular yang mungkin dimilikinya. Mode ini berguna jika Anda ingin menganimasikan objek yang memudar masuk atau keluar. Ini tidak cocok untuk merender bahan transparan yang realistis seperti plastik bening atau kaca karena pantulan dan sorotan juga akan memudar. |
Transparan | Cocok untuk merender bahan transparan yang realistis seperti plastik bening atau kaca. Dalam mode ini, bahan itu sendiri akan mengambil nilai transparansi (berdasarkan saluran alfa tekstur dan alfa warna warna). Namun, pantulan dan sorotan pencahayaan akan tetap terlihat pada kejelasan penuh seperti halnya dengan bahan transparan nyata. |
Penambahan | Mengaktifkan mode campuran aditif, yang menjumlahkan warna piksel sebelumnya dengan warna piksel saat ini. Ini adalah mode transparansi yang disukai untuk menghindari masalah pengurutan transparansi. |
Kustom | Memungkinkan setiap aspek mode penyajian dikontrol secara manual. Hanya untuk penggunaan tingkat lanjut. |
Mode cull
Cull Mode | Deskripsi |
---|---|
Nonaktif | Menonaktifkan pemisahan wajah. Pemisahan hanya boleh diatur ke Nonaktif ketika jala dua sisi diperlukan. |
Front | Memungkinkan pemisahan wajah depan. |
Kembali | (Default) Mengaktifkan pemisahan wajah kembali. Pemisahan wajah belakang harus diaktifkan sesering mungkin untuk meningkatkan performa penyajian. |
Peta utama
Fungsi utama bagian ini adalah untuk mengontrol warna albedo bahan dan opsi penyajian berbasis fisik .
Untuk meningkatkan paritas dengan shader Unity Standard per nilai metalik, kehalusan, emisi, dan oklusi Unity Standard semuanya dapat dikontrol melalui pengemasan saluran.
Saat Anda menggunakan pengemasan saluran, Anda hanya perlu mengambil sampel dan memuat satu tekstur ke dalam memori, bukan empat tekstur terpisah. Saat Anda menulis peta tekstur Anda dalam program seperti Substance atau Photoshop, Anda dapat mengemasnya dengan tangan seperti berikut:
Saluran | Properti |
---|---|
Merah | Logam |
Hijau | Halangan |
Biru | Emisi (Skala Abu-abu) |
Alpha | Kelancaran |
Bagian peta utama juga memiliki opsi untuk pemetaan triplanar dan anti-aliasing sampel super.
Pemetaan Triplanar adalah teknik untuk secara terprogram tekstur jala. Ini sering digunakan dalam medan, jala tanpa UV, atau sulit untuk membongkar bentuk. Implementasi ini mendukung proyeksi ruang dunia atau lokal, spesifikasi blending smoothness, dan dukungan peta normal. Perhatikan, setiap tekstur yang digunakan memerlukan tiga sampel tekstur, jadi gunakan dengan hemat dalam situasi kritis performa.
Anti-alias sampel super harus digunakan pada bahan apa pun yang menampilkan ikon atau gambar di mana detail sangat penting dari jarak jauh.
Opsi penyajian
Opsi penyajian sebagian besar mengontrol pengaturan pencahayaan untuk bahan. Bagian bahan ini juga berisi beberapa fitur lain yang mengontrol warna, transparansi, atau posisi permukaan. Untuk detail selengkapnya tentang pencahayaan, lihat di bawah ini.
opsi Fluent
Fluent adalah kerangka kerja desain yang digunakan di seluruh komponen UI dalam produk Microsoft. Bagian ini berisi beberapa fitur yang membantu meniru prinsip sistem desain Fluent pada permukaan arbitrer. Jika Anda mencari shader Fluent yang di-bespoke, shader tersebut dapat ditemukan di namespace alat grafis/AlatGrafis/Alat Grafis/Non-Kanvas.
Opsi tingkat lanjut
Mirip dengan bagian tingkat lanjut di shader bawaan Unity. Bagian ini mengontrol urutan penyajian dan apakah varian instancing GPU harus dibangun. Selain itu, ada dukungan pengujian stensil yang dapat dikonfigurasi untuk mencapai berbagai efek. Seperti portal:
Pencahayaan
Alat Grafis/Alat Standar dan Grafis/Shader Kanvas Standar menggunakan perkiraan sederhana untuk pencahayaan. Karena shader tidak menghitung kebenaran fisik dan konservasi energi, mereka merender dengan cepat dan efisien. Blinn-Phong adalah teknik pencahayaan utama yang digunakan dan dipadukan dengan Fresnel dan pencahayaan berbasis gambar ke pencahayaan berbasis fisik. Shader mendukung teknik pencahayaan berikut:
Lampu arah
Shader akan menghormati arah, warna, dan intensitas Unity Directional Light pertama dalam adegan (jika diaktifkan).
Penting
Lampu titik dinamis, lampu sorot, atau lampu Unity lainnya tidak akan dipertimbangkan dalam pencahayaan real time. Masker ringan saat ini tidak didukung.
Harmonik bubu
Shader menggunakan pemeriksaan cahaya untuk perkiraan lampu di adegan menggunakan harmonik bulat, jika diaktifkan.
Penting
Perhitungan harmonik bulat dilakukan per vertex dan pemeriksaan cahaya tidak dipadukan untuk mengurangi biaya perhitungan.
Lightmapping
Untuk pencahayaan statis, shader akan menghormati lightmap yang dibangun oleh sistem lightmapping Unity. Tandai perender sebagai statis (atau lightmap statis) untuk menggunakan lightmap.
Performa
Salah satu keuntungan utama menggunakan sistem bayangan standar Alat Grafis melalui shader Standar Unity adalah performa. Alat Grafis/Alat Standar dan Grafis/shader Kanvas Standar dirancang untuk hanya menggunakan fitur yang diaktifkan. Namun, alat Grafis/Alat Standar dan Grafis/shader Kanvas Standar juga telah ditulis untuk memberikan hasil estetika yang sebanding sebagai shader Unity Standard, tetapi dengan biaya yang jauh lebih rendah. Salah satu cara sederhana untuk membandingkan performa shader adalah melalui jumlah operasi yang perlu dilakukan pada GPU. Besarnya perhitungan dapat berfluktuasi oleh fitur yang diaktifkan dan konfigurasi penyajian lainnya.
Tip
Sebagai aturan praktis, Anda harus menggunakan shader Graphics Tools Standard di atas shader bawaan pada perangkat realitas campuran seluler. Tetapi, selalu bijaksana untuk memprofilkan skenario Anda dengan alat seperti RenderDoc.