Anda dapat menggunakan #pragma
directives untuk menunjukkan bahwa shaderProgram yang berjalan di GPU. More info
Lihat di Glossary membutuhkan fitur GPU tertentu. Pada runtime, Unity menggunakan informasi ini untuk menentukan apakah program naungan kompatibel dengan perangkat keras saat ini.
Anda dapat menentukan fitur GPU individu dengan arahan #pragma require
, atau menentukan shader model dengan arahan #pragma target
. Model naungan adalah tangan singkat untuk kelompok fitur GPU; internal, sama dengan arahan #pragma require
dengan daftar fitur yang sama.
Penting untuk benar menggambarkan fitur GPU yang dibutuhkan warna Anda. Jika naungan Anda menggunakan fitur yang tidak disertakan dalam daftar persyaratan, ini dapat mengakibatkan kesalahan waktu kompilasi, atau dalam perangkat gagal untuk mendukung naungan pada runtime.
Secara default, Unity mengkompilasi naungan dengan #pragma require derivatives
, yang sesuai dengan #pragma target 2.5
.
Jika naungan Anda mendefinisikan tahap naungan tertentu, Unity secara otomatis menambahkan item ke daftar persyaratan.
#pragma geometry
), Unity secara otomatis menambahkan geometry
ke daftar persyaratan.#pragma hull
atau #pragma domain
), Unity secara otomatis menambahkan tessellation
ke daftar persyaratan.Jika daftar persyaratan (atau nilai target yang setara) tidak termasuk nilai-nilai ini, Unity menampilkan pesan peringatan ketika mengkompilasi naungan, untuk menunjukkan bahwa ia telah menambahkan persyaratan ini. Untuk menghindari melihat pesan peringatan ini, secara eksplisit menambahkan persyaratan atau menggunakan nilai target yang tepat dalam kode Anda.
Untuk menentukan fitur yang diperlukan, gunakan arahan #pragma require
, diikuti dengan daftar nilai ruang-delimited. Contoh:
#pragma require integers mrt8
Anda juga dapat menggunakan arahan #pragma require
diikuti oleh usus besar dan daftar kata kunci warna ruang-delimited. Ini berarti bahwa persyaratan hanya berlaku untuk varian yang digunakan ketika salah satu kata kunci yang diberikan diaktifkan.
Contoh:
#pragma require integers mrt8 : EXAMPLE_KEYWORD OTHER_EXAMPLE_KEYWORD
Anda dapat menggunakan beberapa garis #pragma require
. Dalam contoh ini, naungan membutuhkan integers
dalam semua kasus, dan mrt8
jika EXAMPLE_KEYWORD diaktifkan.
#pragma require integers
#pragma require integers mrt8 : EXAMPLE_KEYWORD
Untuk menentukan model naungan, gunakan petunjuk #pragma target
. Contoh:
#pragma target 4.0
Anda juga dapat menggunakan arahan #pragma target
diikuti dengan daftar kata kunci warna yang didelimited. Ini berarti bahwa persyaratan hanya berlaku untuk varian yang digunakan ketika salah satu kata kunci yang diberikan diaktifkan.
Contoh:
#pragma target 4.0 EXAMPLE_KEYWORD OTHER_EXAMPLE_KEYWORD
Sitemap Sintaks untuk menentukan kata kunci untuk Note: dan #pragma require
sedikit berbeda. Ketika Anda menentukan kata kunci untuk #pragma target
, Anda menggunakan usus. Ketika Anda menentukan kata kunci untuk #pragma require
, Anda tidak menggunakan usus.#pragma target
, you do not use a colon.
Berikut adalah daftar model naungan yang digunakan Unity, dan kombinasi nilai #pragma require
yang masing-masing sesuai dengan.
Model naungan Unity Note: mirip dengan Direct Model warna X dan persyaratan versi OpenGL, tetapi mereka tidak sesuai persis. Baca deskripsi dengan cermat untuk memastikan bahwa Anda memahami perbedaan.
Value | Description | Support | Equivalent #pragma require values |
---|---|---|---|
2.0 |
Equivalent ke Sitemap X model naungan 2.0. Limited jumlah aritmatiketik dan instruksi tekstur; 8 interpolator; tidak ada sampling tekstur simpul; tidak ada turunan dalam naungan fragmen; tidak ada sampling tekstur LOD eksplisit. |
Bekerja pada semua platform yang didukung oleh Unity. | N/A |
2.5 |
Hampir sama dengan 3.0, tetapi hanya dengan 8 interpolator, dan tidak ada sampling tekstur LOD eksplisit. | Tingkat fitur DirectX 11 9 + OpenGL 3.2 + OpenGL Datasheet PDF Vulkan Metal |
derivatives |
3.0 |
Sitemap Model warna X 3.0. . |
Tingkat fitur DirectX 11 10 + OpenGL 3.2 + OpenGL ES 3.0+ Vulkan Metal Might bekerja pada beberapa perangkat OpenGL ES 2.0, tergantung pada ekstensi driver dan fitur. |
Semua dalam 2.5 , ditambah:interpolators10 samplelod fragcoord |
3.5 |
OpenGL ES 3.0. % |
Tingkat fitur DirectX 11 10+ OpenGL 3.2+ OpenGL Datasheet PDF Vulkan Metal |
Semua dalam 3.0 , ditambah:interpolators15 mrt4 integers 2darray instancing |
4.0 |
Ekuivalen untuk Sitemap Model warna X 4.0, tetapi tanpa persyaratan untuk mendukung 8 MRT. | Tingkat fitur DirectX 11 10+ OpenGL 3.2+ OpenGL ES 3.1+AEP Vulkan Metal (jika tidak ada tahap geometri didefinisikan) |
Semua dalam 3.5 , ditambah:geometry |
4.5 |
Equivalent to WinZip. | DirectX 11 level fitur 11+ OpenGL 4.3+ OpenGL ES 3.1 Vulkan Metal |
Semua dalam 3.5 , ditambah:compute randomwrite msaatex |
4.6 |
OpenOffice 4.1.5. Ini adalah tingkat OpenGL tertinggi yang didukung pada Mac. |
DirectX 11 level fitur 11+ OpenGL 4.1+ OpenGL Datasheet PDF (jika tidak ada tahap geometri didefinisikan, dan tidak ada hull atau tahap domain didefinisikan) Vulkan Metal (if no geometry stage is defined, and no hull or domain stage is defined) |
Semua dalam 4.0 , ditambah:cubearray tesshw tessellation msaatex |
5.0 |
Ekuivalen untuk Sitemap Model warna X 5.0, tetapi tanpa persyaratan untuk mendukung array interpolator 32 atau cubemap. | DirectX 11 level fitur 11+ OpenGL 4.3+ OpenGL Datasheet PDF (jika tidak ada tahap geometri didefinisikan, dan tidak ada hull atau tahap domain didefinisikan) Vulkan Metal (if no geometry stage is defined, and no hull or domain stage is defined) |
Semua dalam 4.0 , ditambah:compute randomwrite msaatex tesshw tessellation |
Untuk informasi tentang dukungan model naungan untuk platform konsol, lihat dokumentasi spesifik platform.
Notes:
mrt8
, dan model naungan 5.0 termasuk interpolators32
dan cubearray
. Unity tidak termasuk ini, untuk kompatibilitas yang lebih luas. Untuk memerlukan fitur-fitur ini, gunakan arahan #pragma require
eksplisit.geometry
tetapi naungan Anda tidak mendefinisikan tahap geometri, Unity menghapus geometry
dari daftar persyaratan pada waktu kompilasi.tessellation
tetapi naungan Anda tidak mendefinisikan tahap hull atau domain, Unity menghapus tessellation
dari daftar persyaratan pada waktu kompilasi.Berikut adalah semua nilai yang valid untuk arahan #pragma require
.
Value | Description |
---|---|
interpolators10 |
Setidaknya 10 interpolator vertex-to-fragment ("varyings") tersedia. |
interpolators15 |
Setidaknya 15 vertex-to-fragment interpolators ("varyings") tersedia. Note: integers ke daftar persyaratan. |
interpolators32 |
setidaknya 32 vertex-to-fragment interpolator (“varyings”) tersedia. |
integers |
Pengintegrasian adalah jenis data yang didukung, termasuk operasi bit/shift. Note: Secara internal, ini juga secara otomatis menambahkan interpolators15 ke daftar persyaratan. |
mrt4 |
setidaknya 4 target render didukung. |
mrt8 |
setidaknya 8 target render didukung. |
derivatives |
PixelUnit terkecil dalam gambar komputer. Ukuran piksel tergantung pada resolusi layar Anda. Pencahayaan pixel dihitung pada setiap piksel layar. More info Lihat di Glossary shader derivative instructions (ddx/ddy) are supported. |
samplelod |
Tekstur eksplisit LODTeknik Tingkat Detail (LOD) adalah optimasi yang mengurangi jumlah segitiga yang dimiliki Unity untuk membuat GameObject ketika jaraknya dari kamera meningkat. More info Lihat di Glossary sampling (tex2Dlod / SampleLevel) didukung. |
fragcoord |
Lokasi piksel (XY di layar, kedalaman ZW di ruang klip) masukan dalam naungan piksel didukung. |
2darray |
array tekstur 2D adalah jenis data yang didukung. |
cubearray |
CubemapKoleksi enam tekstur persegi yang dapat mewakili refleksi di lingkungan atau skybox yang digambar di balik geometri Anda. Enam kotak membentuk wajah kubus imajiner yang mengelilingi objek; setiap wajah mewakili pandangan di sepanjang arah sumbu dunia (hingga, kiri, kanan, ke depan dan belakang). More info Lihat di Glossary adalah jenis data yang didukung. |
instancing |
Login Nilai sistem input ID didukung. |
geometry |
Tahap naungan Geometry didukung. |
compute |
Membandingkan naungan, penyangga terstruktur, dan operasi atom didukung. |
randomwrite atau uav |
Tekstur “Random tulis” (UAV) didukung. |
tesshw |
Tesselasi perangkat keras didukung, tetapi tidak selalu menguji (hull/domain) tahap naungan. Misalnya, logam mendukung tesselasi, tetapi tidak hull atau tahap domain. |
tessellation |
Tessellation (hull/domain) tahap naungan didukung. |
msaatex |
Kemampuan untuk mengakses tekstur berukuran multi (Texture2DMS di HLSL) didukung. |
sparsetex |
Tekstur jarang dengan info residensi (“Tier2” dukungan dalam istilah DirectX; fungsi CheckAccessFullyMapped HLSL). |
framebufferfetch atau fbfetch |
Framebuffer fetch (kemampuan untuk membaca warna pixel input di naungan pixel) didukung. |
setrtarrayindexfromanyshader |
Menyiapkan indeks array target render dari tahap naungan (tidak hanya tahap naungan geometri) didukung. |