Platform yang berbeda memiliki kemampuan kinerja yang sangat berbeda; PC GPU high-end dapat menangani lebih banyak dalam hal grafis dan shadersProgram yang berjalan di GPU. More info
Lihat di Glossary dari GPU seluler low-end. Hal yang sama berlaku bahkan pada satu platform; GPU cepat lusinan kali lebih cepat dari GPU terintegrasi lambat.
Kinerja GPU pada platform seluler dan PC low-end cenderung jauh lebih rendah daripada pada mesin pengembangan Anda. Disarankan bahwa Anda secara manual mengoptimalkan naungan Anda untuk mengurangi perhitungan dan tekstur membaca, untuk mendapatkan kinerja yang baik di seluruh mesin GPU low-end. Sebagai contoh, beberapa built-in Shader objectsContoh kelas Shader, objek Shader adalah wadah untuk program naungan dan instruksi GPU, dan informasi yang memberi tahu Unity bagaimana menggunakannya. Gunakan mereka dengan bahan untuk menentukan penampilan adegan Anda. More info
Lihat di Glossary memiliki ekuivalen "mobile" yang jauh lebih cepat, tetapi memiliki beberapa keterbatasan atau perkiraan.
Halaman ini berisi informasi tentang mengoptimalkan naungan Anda untuk kinerja runtime.
Semakin banyak perhitungan dan memproses kode naungan Anda harus dilakukan, semakin banyak itu akan mempengaruhi kinerja permainan Anda. Misalnya, warna pendukung per bahan bagus untuk membuat warna lebih fleksibel, tetapi jika Anda selalu meninggalkan set warna itu putih maka komputasi tidak berguna dilakukan untuk setiap simpul atau pixelUnit terkecil dalam gambar komputer. Ukuran piksel tergantung pada resolusi layar Anda. Pencahayaan pixel dihitung pada setiap piksel layar. More info
Lihat di Glossary yang diberikan di layar.
Frekuensi perhitungan juga akan mempengaruhi kinerja permainan Anda. Biasanya ada banyak lebih banyak piksel yang dirender (dan selanjutnya lebih banyak eksekusi naungan pixel) daripada ada vertices (eksekusi naungan vertex), dan lebih simpul daripada objek yang diberikan. Bila memungkinkan, memindahkan komputasi dari kode naungan pixel ke dalam kode vertex shaderProgram yang berjalan pada setiap simpul model 3D ketika model sedang diberikan. More info
Lihat di Glossary, atau memindahkannya dari naungan sepenuhnya dan menetapkan nilai dalam skrip.
Ketika menulis naungan di Cg / HLSL, ada tiga jenis nomor dasar: float
, half
dan fixed
(lihat Jenis Data dan Presisi).
Untuk kinerja yang baik, selalu menggunakan presisi terendah yang mungkin. Ini sangat penting pada perangkat keras kelas bawah. Aturan yang baik dari thumb adalah:
float
.half
. Meningkatkan hanya jika diperlukan.fixed
.Dalam prakteknya, persis jenis nomor mana yang harus Anda gunakan untuk tergantung pada platform dan GPU. Secara umum:
float
penuh, sehingga float/half/fixed
berakhir tepatnya bawahan yang sama. Hal ini dapat membuat pengujian sulit, karena lebih sulit untuk melihat apakah presisi setengah / diperbaiki benar-benar cukup, jadi selalu menguji naungan Anda pada perangkat target untuk hasil yang akurat.half
yang sebenarnya. Ini biasanya lebih cepat, dan menggunakan daya kurang untuk melakukan perhitungan.Fixed
fixed
umumnya hanya berguna untuk GPU seluler yang lebih tua. Kebanyakan GPU modern (yang dapat menjalankan OpenGL ES 3 atau Metal) secara internal memperlakukan half
dan presisi persis sama.Lihat Jenis Data dan Presisi untuk rincian lebih lanjut.
Fungsi matematika transkendental (seperti pow
, exp
, log
, cos
, sin
, tan
) cukup intensif sumber daya, sehingga menghindari menggunakannya di mana mungkin pada perangkat keras low-end. Pertimbangkan menggunakan tekstur lookup sebagai alternatif perhitungan matematika yang kompleks jika berlaku.
Hindari menulis operasi Anda sendiri (seperti normalize
, dot
, inversesqrt
). Opsi bawaan unity memastikan bahwa pengemudi dapat menghasilkan kode yang jauh lebih baik. Ingat bahwa operasi Alpha Test (discard
) sering membuat kerusakan Anda lebih lambat.
Permukaan ShaderCara merampingkan naungan menulis untuk Pipeline Render Built-in. More info
Lihat di Glossary bagus untuk menulis naungan yang berinteraksi dengan pencahayaan. Namun, opsi default mereka tuned untuk menutupi sejumlah besar kasus umum. Tweak ini untuk situasi tertentu untuk membuat naungan berjalan lebih cepat atau setidaknya lebih kecil:
approxview
untuk naungan yang menggunakan arah pandangan (misal) membuat arah pandangan normal per simpul bukan per pixel. Ini adalah perkiraan, tetapi sering cukup baik.halfasview
untuk jenis naungan spular bahkan lebih cepat. Half-vector (halfway antara arah pencahayaan dan melihat vektor) dihitung dan dinormalisasi per simpul, dan fungsi pencahayaan menerima semi-vector sebagai parameter daripada tampilan vektor.noforwardadd
membuat lampu satu arah teduh di Forward renderingSebuah jalur rendering yang membuat setiap objek dalam satu atau lebih melewati, tergantung pada lampu yang mempengaruhi objek. Lampu sendiri juga diperlakukan berbeda dengan Rendering Maju, tergantung pada pengaturan dan intensitas mereka. More infonoambient
menonaktifkan pencahayaan ambient dan lampu harmonik bulat pada naungan. Ini dapat membuat kinerja sedikit lebih cepat.Fungsi tetap AlphaTest - atau setara programmable, clip()
- memiliki karakteristik kinerja yang berbeda pada platform yang berbeda:
Pada beberapa platform (paling GPU seluler yang ditemukan di perangkat iOS dan Android), menggunakan ColorMask untuk meninggalkan beberapa saluran (misalnya ColorMask RGB
) dapat menjadi intensif sumber daya, jadi hanya menggunakannya jika benar-benar diperlukan.