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.

Standard shader material gallery sample

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:

Scale mesh effect inspector warning

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.

Material inspector for Graphics Tools/Standard

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.

Rendering modes example lineup

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.

Lighting comparisons

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:

Portal example

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.

Lihat juga