The Scriptable Render PipelineRangkaian operasi yang mengambil isi dari Adegan, dan menampilkannya di layar. Unity memungkinkan Anda memilih dari pipa render yang dibangun sebelumnya, atau menulis sendiri. More info
Lihat di Glossary (SRP) Batcher adalah draw call optimization yang secara signifikan meningkatkan kinerja untuk aplikasi yang menggunakan SRP. The SRP Batcher mengurangi waktu CPU Unity perlu mempersiapkan dan mengirimkan panggilan untuk bahan yang menggunakan varian shaderProgram yang berjalan di GPU. More info
Lihat di Glossary yang sama.
Bagian ini mencakup informasi tentang kompatibilitas pipa render dari SRP Batcher.
Feature | Built-in Render Pipeline | Universal Render Pipeline (URP) | High Definition Render Pipeline (HDRP) | Custom Scriptable Render Pipeline (SRP) |
---|---|---|---|---|
SRP Batcher | No | Yes | Yes | Yes |
Dalam setiap sceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary tertentu, beberapa GameObjectsObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
Lihat di Glossary kompatibel dengan SRP Batcher, dan beberapa tidak. GameObjects Kompatibel menggunakan jalur kode SRP Batcher, dan GameObjects yang tidak kompatibel menggunakan jalur kode SRP standar. Untuk informasi lebih lanjut, lihat Bagaimana SRP Batcher bekerja.
GameObject harus memenuhi persyaratan berikut untuk kompatibel dengan jalur kode SRP Batcher:
Semua warna yang menyala dan tidak menyala dalam Pipa Render Definisi Tinggi (HDRP) dan Pipa Render Universal (URP) sesuai dengan persyaratan ini (kecuali untuk versi partikel dari naungan ini).
Untuk naungan kustom kompatibel dengan SRP Batcher harus memenuhi persyaratan berikut:
UnityPerDraw
. Sebagai contoh, unity_ObjectToWorld
, atau unity_SHAr
.UnityPerMaterial
.Anda dapat memeriksa status kompatibilitas naungan di panel InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
Lihat di Glossary.
Bagian ini berisi informasi tentang cara menggunakan SRP Batcher di Pipelines Render yang telah dibangun sebelumnya Unity.
Untuk mengaktifkan SRP Batcher di URP:
Assets
(Project tab) More infoKetika Anda menggunakan HDRP, Unity memungkinkan SRP Batcher secara default. Mengaktifkan SRP Batcher tidak dianjurkan. Namun, Anda dapat sementara menonaktifkan SRP Batcher untuk tujuan debugging.
Untuk mengaktifkan dan menonaktifkan SRP Batcher pada waktu build menggunakan Editor:
Untuk mengaktifkan atau menonaktifkan SRP Batcher pada runtime, toggle variabel global berikut dalam kode C # Anda:
GraphicsSettings.useScriptableRenderPipelineBatching = true;
Cara tradisional untuk mengoptimalkan panggilan menggambar adalah untuk mengurangi jumlah dari mereka. Sebagai gantinya, SRP Batcher mengurangi perubahan render-state antara panggilan menggambar. Untuk melakukan ini, SRP Batcher menggabungkan urutan perintah bind
dan draw
GPU. Setiap urutan perintah disebut batch SRP.
Untuk mencapai kinerja optimal untuk rendering Anda, setiap batch SRP harus mengandung banyak perintah bind
dan draw
mungkin. Untuk mencapai ini, gunakan beberapa varian warna mungkin. Anda masih dapat menggunakan berbagai bahan dengan warna yang sama seperti yang Anda inginkan.
Ketika Unity mendeteksi bahan baru selama render loop, CPU mengumpulkan semua properti dan mengikat mereka ke GPU dalam buffer konstan. Jumlah penyangga GPU tergantung pada bagaimana naungan menyatakan penyangga konstan.
Login Batcher adalah loop render tingkat rendah yang membuat data material tetap dalam memori GPU. Jika konten materi tidak berubah, Batcher SRP tidak membuat perubahan render-state. Sebagai gantinya, SRP Batcher menggunakan jalur kode khusus untuk memperbarui properti Unity Engine dalam buffer GPU besar, seperti ini:
Di sini, CPU hanya menangani sifat Mesin Unity, label Per Object large buffer di diagram di atas. Semua bahan memiliki penyangga terus-menerus yang terletak di memori GPU, yang siap digunakan. Ini mempercepat rendering karena:
Dalam beberapa kasus langka, Anda mungkin ingin secara sengaja membuat GameObjects tertentu tidak kompatibel dengan SRP Batcher. Misalnya, jika Anda ingin menggunakan GPU instancing, yang tidak kompatibel dengan SRP Batcher. Jika Anda ingin membuat banyak jaring identik dengan bahan yang sama persis, GPUjahcing dapat lebih efisien daripada SRP Batcher. Untuk menggunakan gangguan GPU, Anda harus:
Ada dua cara untuk menghapus kompatibilitas dengan SRP Batcher dari GameObject:
Tip: Jika Anda menggunakan GPU tenggelam bukan SRP Batcher, gunakan ProfilerJendela yang membantu Anda untuk mengoptimalkan permainan Anda. Ini menunjukkan berapa banyak waktu yang dihabiskan di berbagai bidang permainan Anda. Sebagai contoh, dapat melaporkan persentase waktu yang dihabiskan rendering, aimating, atau dalam logika permainan Anda. More info
Lihat di Glossary untuk memastikan bahwa GPUSicing lebih efisien untuk aplikasi Anda daripada SRP Batcher.
Anda dapat membuat teduh hand-written dan Shader Graph yang tidak kompatibel dengan SRP Batcher. Namun, untuk naungan Shader Graph, jika Anda mengubah dan mengulangi Shader Graph sering, lebih sederhana untuk membuat renderer incompatible bukan.
Untuk membuat kantung Unity tidak kompatibel dengan SRP Batcher, Anda perlu membuat perubahan pada file sumber naungan:
Properties
naungan. Jangan mendeklarasikan properti material baru dalam buffer konstan UnityPerMaterial
.Properti material tidak perlu melakukan apa pun; hanya memiliki properti material yang tidak ada dalam penyangga konstan UnityPerMaterial
membuat warna yang tidak kompatibel dengan SRP Batcher.
Warning: Jika Anda menggunakan Shader Graph, menyadari bahwa setiap kali Anda mengedit dan mengulangi Shader Graph, Anda harus mengulangi proses ini.
Anda dapat membuat renderer individu yang tidak kompatibel dengan SRP Batcher. Untuk melakukan ini, tambahkan MaterialPropertyBlock
ke renderer.
Anda dapat memeriksa status batch SRP di jendela Bingkai Debugger. SRP Batch menampilkan berapa banyak panggilan menarik Unity digunakan, yang kata kunci Unity melekat pada naungan, dan alasan mengapa Unity tidak batch yang menarik panggilan dengan yang sebelumnya.
Untuk memeriksa status batch SRP Batcher:
Dalam contoh di bawah ini, alasannya adalah: Nodes have different shaders. Ini berarti bahwa naungan untuk batch SRP berbeda dengan satu dalam batch SRP sebelumnya. Karena SRP Batcher menggunakan naungan yang berbeda, SRP Batcher menciptakan batch baru. Jika beberapa batch SRP memiliki jumlah panggilan menggambar rendah, sering berarti proyek menggunakan terlalu banyak varian warna.
Jika Anda menulis Render Pipeline Alkitab Anda sendiri, bukan menggunakan Render Pipeline Universal atau Pipa Render Definisi Tinggi, coba tulis naungan multi-tujuan generik dengan sejumlah kata kunci minimal. Ini optimal karena Anda dapat menggunakan banyak properti material yang Anda inginkan.