Alat grafis shader standar — MRTK3
Sistem bayangan Standar Alat Grafis menggunakan shader fleksibel yang dapat mencapai visual yang mirip dengan shader Standar Unity (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 mendukung alur kerja Unity tradisional dan alur kerja UnityUI (kanvas) dengan lebih baik, 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 ini mencakup daya Sistem bayangan Alat Grafis/Standar:
Sertakan | Tujuan |
---|---|
GraphicsToolsStandardProgram | Berisi metode titik entri shader vertex dan fragmen (implementasi inti). |
GraphicsToolsStandardMetaProgram | Berisi metode titik masuk shader verteks dan fragmen yang digunakan oleh Unity untuk pencahayaan statis (tidak digunakan saat runtime). |
GraphicsToolsStandardInput | Definisi untuk atribut vertex, interpolator vertex, tekstur, sampler 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 Standar Alat Grafis 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.
Kanvas 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 dari 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.
Pemeriksa bahan
Pemeriksa bahan kustom ada untuk Alat Grafis/Alat Standar dan Grafis/shader Kanvas Standar yang disebut StandardShaderGUI.cs. Inspektur 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 dan shader adalah untuk mencerminkan mode penyajian yang ditemukan di shader Unity/Standard.Graphics Tools/Standard Canvas
Graphics Tools/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. |
Potongan | Memungkinkan pembuatan efek transparan yang memiliki tepi keras antara area buram dan transparan. Dalam mode ini, tidak ada area semi transparan, teksturnya 100% buram, 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 apa pun yang mungkin dimilikinya. Mode ini berguna jika Anda ingin menganimasikan objek yang memudar masuk atau keluar. 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 rona). Namun, pantulan dan sorotan pencahayaan akan tetap terlihat pada kejelasan penuh seperti halnya dengan bahan transparan nyata. |
Penambahan | Mengaktifkan mode penpaduan 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 penahan wajah belakang. Pemecahan 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 nilai unity Standard shader per pixel metallic, smoothness, emissive, dan oklusi semuanya dapat dikontrol melalui pengemasan saluran.
Saat Anda menggunakan pengemasan saluran, Anda hanya perlu mengambil sampel dan memuat satu tekstur ke dalam memori alih-alih empat tekstur terpisah. Ketika Anda menulis peta tekstur Anda dalam program seperti Substance atau Photoshop, Anda dapat mengemasnya seperti berikut:
Saluran | Properti |
---|---|
Merah | Logam |
Hijau | Halangan |
Biru | Emisi (Greyscale) |
Alpha | Kelancaran |
Bagian peta utama juga memiliki opsi untuk pemetaan triplanar dan anti-aliasing sampel super. Ini juga berisi opsi untuk menambahkan peta tekstur emisi berwarna setelah kotak centang Emisi dipilih.
Pemetaan Triplanar adalah teknik untuk secara terprogram tekstur jala. Ini sering digunakan di 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 kejauhan.
Opsi perenderan
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 fasih
Fasih adalah kerangka kerja desain yang digunakan di seluruh komponen UI dalam produk Microsoft. Bagian ini berisi beberapa fitur yang membantu meniru prinsip sistem desain Fasih pada permukaan arbitrer. Jika Anda mencari shader Fluent khusus, shader tersebut dapat ditemukan di namespace alat grafis/kanvas dan alat grafis/non-kanvas shader.
Opsi tingkat lanjut
Mirip dengan bagian tingkat lanjut di shader bawaan Unity. Bagian ini mengontrol urutan penyajian dan jika varian instancing GPU harus dibangun. Selain itu, ada dukungan tes 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 di 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 bola
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 di atas 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 Standar Unity, 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 Standar Alat Grafis di atas shader bawaan pada perangkat realitas campuran seluler. Tapi, selalu bijaksana untuk membuat profil skenario Anda dengan alat seperti RenderDoc.