Bagikan melalui


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 galeri bahan shader standar

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:

Peringatan pemeriksa efek jala skala

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.

Pemeriksa bahan untuk Alat Grafis/Standar

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 CanvasGraphics 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.

Contoh baris mode penyajian

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.

Perbandingan pencahayaan

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:

Contoh 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.

Lihat juga