termasuk dan termasuk_dengan_pragmas directives di HLSL
Menargetkan model naungan dan fitur GPU di HLSL

praktisi pragma di HLSL

Di HLSL, arahan #pragma adalah jenis preprocessor directive. Mereka menyediakan informasi tambahan untuk kompiler shaderProgram yang berjalan di GPU. More info
Lihat di Glossary
yang tidak dicakup oleh jenis-jenis lain dari preprocessor directive.

Menggunakan arahan pragma

Anda dapat menempatkan arahan #pragma di mana saja di kode HLSL Anda, tetapi merupakan konvensi umum untuk menempatkannya di awal, seperti ini:

#pragma target 3.0
#pragma exclude_renderers vulkan
#pragma vertex vert
#pragma fragment frag

// The rest of your HLSL code goes here

Limitations

Ada beberapa keterbatasan di sekitar penggunaan directives #pragma:

  • Anda dapat menggunakan arahan #pragma dalam kondisional (#if) jika ekspresi hanya tergantung pada:
    • Setiap arahan #define kustom dalam kode Anda sendiri
    • Kata kunci platform berikut: SHADER_API_MOBILE, SHADER_API_DESKTOP, UNITY_NO_RGBM, UNITY_USE_NATIVE_HDR, UNITY_FRAMEBUFFER_FETCH_AVAILABLE, UNITY_NO_CUBEMAP_ARRAY
    • makro UNITY_VERSION macro
    %
  • Anda hanya dapat menggunakan verifikasi #pragma khusus pada file .shader, dan dalam file yang Anda masukkan dengan arahan #include_with_pragmas. Unity tidak mendukung mereka dalam file yang Anda masukkan dengan arahan #include; compiler mengabaikan mereka.
  • Anda hanya dapat menggunakan arahan HLSL #pragma standar dalam file yang Anda masukkan dengan arahan #include. Unity tidak mendukung mereka dalam file .shader, atau dalam file yang Anda masukkan dengan arahan #include_with_pragmas; compiler mengabaikan mereka.

Daftar langsung pragma yang didukung

Unity mendukung semua arahan #pragma yang merupakan bagian dari HLSL standar, selama arahan ini secara teratur termasuk file. Untuk informasi lebih lanjut mengenai arahan ini, lihat dokumentasi HLSL: pragma Directive.

Selain itu, Unity mendukung directives Unity-specific:#pragma directives:

Permukaan Shader

Jika Anda menulis Permukaan ShaderCara merampingkan naungan menulis untuk Pipeline Render Built-in. More info
Lihat di Glossary
, gunakan petunjuk ini untuk memberitahu kompiler yang berfungsi untuk digunakan sebagai surface function, dan lulus data ke fungsi tersebut.

Statement Function
#pragma surface <surface function> <lighting model> <optional parameters> Memenuhi fungsi dengan nama yang diberikan sebagai naungan permukaan, sehingga bekerja dengan model pencahayaan yang diberikan. Untuk informasi lebih lanjut, lihat Permukaan Shader.

Tahap Shader

Jika Anda menulis naungan grafis biasa, gunakan petunjuk ini untuk memberitahu kompiler yang berfungsi untuk digunakan untuk tahap naungan yang berbeda. Directives #pragma vertex dan #pragma fragment diperlukan, tetapi tahap lain adalah opsional.

Statement Function
#pragma vertex <name> Memenuhi fungsi dengan nama yang diberikan sebagai naungan simpul. Ganti <nama> dengan nama fungsi. Kearah ini diperlukan dalam naungan grafis biasa.
#pragma fragment <name> Memenuhi fungsi dengan nama yang diberikan sebagai naungan fragmen. Ganti <nama> dengan nama fungsi. Kearah ini diperlukan dalam naungan grafis biasa.
#pragma geometry <name> Memenuhi fungsi dengan nama yang diberikan sebagai naungan geometri. Ganti <nama> dengan nama fungsi. Opsi ini secara otomatis berubah pada #pragma require geometry; untuk informasi lebih lanjut, lihat Menargetkan model naungan dan fitur GPU di HLSL.

Note: Logam tidak mendukung warna geometri.
#pragma hull <name> Memenuhi fungsi dengan nama yang diberikan sebagai naungan langsungX 11. Ganti <nama> dengan nama fungsi. Ini secara otomatis menambahkan #pragma require tessellation; untuk informasi lebih lanjut, lihat Menargetkan model naungan dan fitur GPU di HLSL.
#pragma domain <name> Memenuhi fungsi dengan nama yang diberikan sebagai naungan domain DirectX 11. Ganti <nama> dengan nama fungsi. Opsi ini secara otomatis berubah pada #pragma require tessellation; untuk informasi lebih lanjut, lihat Menargetkan model naungan dan fitur GPU di HLSL.

Varietas dan kata kunci

Gunakan petunjuk ini untuk memberitahu kompiler naungan bagaimana menangani varian warna dan kata kunci. Untuk informasi lebih lanjut, lihat Mengatur dan menggunakan kata kunci naungan di HLSL.

Directive Description
#pragma multi_compile <keywords> Tentukan koleksi kata kunci. compiler mencakup semua kata kunci dalam build.

Anda dapat menggunakan suffixes seperti _local untuk mengatur opsi tambahan.

Untuk informasi lebih lanjut dan daftar suffix yang didukung, lihat Mengatur dan menggunakan kata kunci naungan di HLSL.
#pragma shader_feature <keywords> Tentukan koleksi kata kunci. compiler tidak termasuk kata kunci yang tidak digunakan dari build.

Anda dapat menggunakan suffixes seperti _local untuk mengatur opsi tambahan.

Untuk informasi lebih lanjut dan daftar suffix yang didukung, lihat Mengatur dan menggunakan kata kunci naungan di HLSL.
#pragma hardware_tier_variants <values> Render Pipa hanya: Tambahkan kata kunci untuk graphics tiers ketika mematuhi API grafis tertentu. Untuk informasi lebih lanjut, lihat Grafik.
#pragma skip_variants <list of keywords> Strip kata kunci yang ditentukan.

Persyaratan GPU dan dukungan model naungan

Gunakan petunjuk ini untuk memberitahu kompiler bahwa naungan Anda memerlukan fitur GPU tertentu.

Statement Function
#pragma target <value> Model naungan minimum yang program naungan ini kompatibel dengan. Ganti <value> dengan nilai yang valid. Untuk daftar nilai yang valid, lihat Shader kompilasi: Menargetkan model naungan dan fitur GPU di HLSL.
#pragma require <value> GPU minimum fitur bahwa naungan ini kompatibel dengan. Ganti <value> dengan nilai yang valid, atau beberapa nilai yang valid dipisahkan oleh ruang. Untuk daftar nilai yang valid, lihat Shader kompilasi: Menargetkan model naungan dan fitur GPU di HLSL.

Grafik API

Gunakan petunjuk ini untuk memberitahu Unity untuk menyertakan atau mengecualikan kode untuk API grafis tertentu.

Statement Function
#pragma only_renderers <value> Memenuhi program naungan ini hanya untuk API grafis tertentu. Ganti <values> dengan daftar nilai-nilai valid ruang. Untuk informasi lebih lanjut dan daftar nilai yang valid, lihat Menargetkan API grafis dan platform di HLSL.
#pragma exclude_renderers <value> Jangan mengkompilasi program naungan ini untuk mengingat API grafis. Ganti <value> dengan daftar nilai-nilai valid ruang. Untuk informasi lebih lanjut dan daftar nilai yang valid, lihat Menargetkan API grafis dan platform di HLSL.

Other pragma directives

Statement Function
#pragma instancing_options <options> Gangguan GPU yang dapat diaktifkan dalam naungan ini, dengan opsi yang diberikan. Untuk informasi lebih lanjut, lihat GPU instancing
#pragma once Masukkan arahan ini dalam file untuk memastikan bahwa kompiler mencakup file hanya sekali dalam program naungan.

Note:Home > Sitemap diaktifkan.
#pragma enable_d3d11_debug_symbols Hasilkan simbol debug naungan untuk API grafis yang didukung, dan optimasi menonaktifkan untuk semua API grafis. Gunakan ini untuk debugging kode naungan di alat eksternal.

Unity menghasilkan simbol debug untuk Vulkan, DirectX 11 dan 12, dan platform konsol yang didukung.

Warning: Menggunakan hasil ini dalam peningkatan ukuran file dan mengurangi kinerja naungan. Ketika Anda telah selesai debugging naungan Anda dan Anda siap untuk membuat build akhir dari aplikasi Anda, hapus garis ini dari kode sumber naungan Anda dan recompile naungan.
#pragma skip_optimizations <value> Pengoptimalan kekuatan untuk diberikan API grafis. Mengganti <values> dengan daftar nilai-nilai valid ruang-delimited. Untuk daftar nilai yang valid, lihat Menargetkan API grafis dan platform di HLSL
#pragma hlslcc_bytecode_disassembly Embed disassembled HLSLcc bytecode ke naungan diterjemahkan.
#pragma disable_fastmath Aktifkan aturan IEEE 754 yang melibatkan penanganan NaN. Ini saat ini hanya mempengaruhi platform logam.
#pragma editor_sync_compilation Kompilasi sinkron kekuatan. Ini mempengaruhi Editor Unity hanya. Untuk informasi lebih lanjut, lihat Login Shader kompilasi.
#pragma enable_cbuffer Emit cbuffer(name) ketika menggunakan makro CBUFFER_START(name) dari HLSLSupport bahkan jika platform saat ini tidak mendukung penyangga konstan.CBUFFER_END macros from HLSLSupport even if the current platform does not support constant buffers.
termasuk dan termasuk_dengan_pragmas directives di HLSL
Menargetkan model naungan dan fitur GPU di HLSL