Sintaks
Berikut adalah sintaks untuk memanggil FXC.exe, alat pengkompilasi efek. Misalnya, lihat Kompilasi Offline.
Penggunaan
Nama FilefxcSwitchOptions
Argumen
Pisahkan setiap opsi sakelar dengan spasi atau titik dua.
SwitchOptions
[in] Opsi kompilasi. Hanya ada satu opsi yang diperlukan, dan banyak lagi yang bersifat opsional. Pisahkan masing-masing dengan spasi atau titik dua.
Opsi yang diperlukan
Profil /T<>
Model shader (lihat Profil).
Opsi opsional
/?/Tolong
Cetak bantuan untuk FXC.exe
.
@<command.option.file>
File yang berisi opsi kompilasi tambahan. Opsi ini dapat dicampur dengan opsi kompilasi baris perintah lainnya. Command.option.file hanya boleh berisi satu opsi per baris. Command.option.file tidak boleh berisi baris kosong apa pun. Opsi yang ditentukan dalam file tidak boleh berisi spasi awal atau akhir.
/all_resources_bound
Aktifkan perangkaian agresif di SM5.1+. Baru untuk Direct3D 12.
/Cc
Rakitan berkode warna output.
/Kompres
Kompres bytecode shader DX10 dari file.
/D <id>=<text>
Tentukan makro.
/Dekompresi
Dekompresi bytecode shader DX10 dari file pertama. File output harus dicantumkan dalam urutan saat pemadatan.
/dumpbin
Memuat file biner daripada mengkompilasi shader.
Nama /E <>
Titik masuk shader. Jika tidak ada titik masuk yang diberikan, utama dianggap sebagai nama entri shader.
/enable_unbounded_descriptor_tables
Mengaktifkan tabel deskriptor yang tidak terikat. Baru untuk Direct3D 12.
File /extractrootsignature <>
Ekstrak tanda tangan akar dari bytecode shader. Baru untuk Direct3D 12.
File /Fc<>
File daftar kode rakitan output.
File /Fd<>
Ekstrak info database program shader (PDB) dan tulis ke file yang diberikan. Saat Anda mengkompilasi shader, gunakan /Fd untuk menghasilkan file PDB dengan info penelusuran kesalahan shader.
File /Fe<>
Peringatan output dan kesalahan ke file yang diberikan.
File /Fh<>
File header output yang berisi kode objek.
File /Fl<
Keluarkan pustaka. Memerlukan D3dcompiler_47.dll atau versi DLL yang lebih baru.
File /Fo<>
File objek output. Sering kali diberikan ekstensi ".fxc", meskipun ekstensi lain digunakan, seperti ".o", ".obj" atau ".dxbc".
File /Fx<>
Kode perakitan output dan file daftar hex.
/Gch
Kompilasi sebagai efek anak untuk profil fx_4_x.
Catatan
Dukungan untuk profil Efek warisan tidak digunakan lagi.
/Pdb
Nonaktifkan mode performa efek.
/Gec
Aktifkan mode kompatibilitas mundur.
/Ges
Aktifkan mode ketat.
File /getprivate <>
Simpan data privat dari blob shader (biner shader yang dikompilasi) ke file yang diberikan. Mengekstrak data privat, yang sebelumnya disematkan oleh /setprivate, dari blob shader.
Anda harus menentukan opsi /dumpbin dengan /getprivate. Contohnya:
fxc /getprivate ps01.private.data
/dumpbin ps01.with.private.obj
/Gfa
Hindari konstruksi kontrol alur.
/Gfp
Lebih suka konstruksi kontrol alur.
/Gis
Paksa ketegasan IEEE.
/Gpp
Paksa presisi parsial.
/Saya <menyertakan>
Jalur sertakan tambahan.
/Lx
Output literal heksadesimal. Memerlukan D3dcompiler_47.dll atau versi DLL yang lebih baru.
/matchUAVs
Cocokkan alokasi slot UAV shader templat di shader saat ini. Untuk informasi selengkapnya, lihat Keterangan.
/mergeUAVs
Gabungkan alokasi slot UAV dari shader templat dan shader saat ini. Untuk informasi selengkapnya, lihat Keterangan.
/Ni
Nomor instruksi output dalam daftar rakitan.
/Tidak
Offset byte instruksi output dalam daftar perakitan. Saat Anda menghasilkan assembly, gunakan /No untuk membuat anotasi dengan offset byte untuk setiap instruksi.
/nologo
Sembunyikan pesan hak cipta.
/Od
Nonaktifkan pengoptimalan. /Od menyiratkan /Gfp, meskipun output mungkin tidak identik dengan /Od /Gfp.
/Op
Nonaktifkan preshader (tidak digunakan lagi).
/O0 /O1, /O2, /O3
Tingkat pengoptimalan. O1 adalah pengaturan default.
- O0 - Menonaktifkan pengulangan instruksi. Ini membantu mengurangi beban register dan memungkinkan simulasi perulangan yang lebih cepat.
- O1 - Menonaktifkan urutan ulang instruksi untuk ps_3_0 dan yang lebih baru.
- O2 - Sama seperti O1. Disiapkan untuk penggunaan masa mendatang.
- O3 - Sama seperti O1. Disiapkan untuk penggunaan masa mendatang.
File /P<>
Pra-proses ke file (harus digunakan sendiri).
/Qstrip_debug
Hapus data debug dari bytecode shader untuk profil 4_0+.
/Qstrip_priv
Strip data privat dari 4_0+ shader bytecode. Menghapus data privat (urutan byte arbitrer) dari blob shader (biner shader terkompilasi) yang sebelumnya Anda sematkan dengan /setprivate <file>
opsi .
Anda harus menentukan opsi /dumpbin dengan /Qstrip_priv. Contohnya:
fxc /Qstrip_priv /dumpbin /Fo ps01.no.private.obj
ps01.with.private.obj
/Qstrip_reflect
Strip data refleksi dari shader bytecode untuk profil 4_0+.
/Qstrip_rootsignature
Strip tanda tangan akar dari bytecode shader. Baru untuk Direct3D 12.
/res_may_alias
Asumsikan bahwa UAV/SRV mungkin alias untuk cs_5_0+. Memerlukan D3dcompiler_47.dll atau versi DLL yang lebih baru.
File /setprivate <>
Tambahkan data privat dalam file yang diberikan ke blob shader yang dikompilasi. Menyematkan file yang diberikan, yang diperlakukan sebagai buffer mentah, ke blob shader. Gunakan /setprivate untuk menambahkan data privat saat Anda mengkompilasi shader. Atau, gunakan opsi /dumpbin dengan /setprivate untuk memuat objek shader yang ada, lalu setelah objek berada dalam memori, untuk menambahkan blob data privat. Misalnya, gunakan satu perintah dengan /setprivate untuk menambahkan data privat ke blob shader yang dikompilasi:
fxc /T ps_4_0 /Fo ps01.with.private.obj ps01.fx
/setprivate ps01.private.data
Atau, gunakan dua perintah di mana perintah kedua memuat objek shader lalu menambahkan data privat:
fxc /T ps_4_0 /Fo ps01.no.private.obj ps01.fx
fxc /dumpbin /Fo ps01.with.private.obj ps01.no.private.obj
/setprivate ps01.private.data
File /setrootsignature <>
Lampirkan tanda tangan akar ke bytecode efek gambar. Baru untuk Direct3D 12.
File /shtemplate <>
Gunakan file shader templat yang diberikan untuk menggabungkan sumber daya (/mergeUAVs) dan pencocokan (/matchUAVs). Untuk informasi selengkapnya, lihat Keterangan.
/Vd
Nonaktifkan validasi.
File /verifyrootsignature <>
Verifikasi bytecode shader terhadap tanda tangan akar. Baru untuk Direct3D 12.
/Vi
Tampilkan detail tentang proses sertakan.
Nama /Vn<>
Gunakan nama sebagai nama variabel dalam file header.
/WX
Perlakukan peringatan sebagai kesalahan.
/Zi
Aktifkan informasi penelusuran kesalahan.
/Zpc
Kemas matriks dalam urutan utama kolom.
/Zpr
Kemas matriks dalam urutan besar baris.
Nama File
[in] File yang berisi shader dan/atau efeknya.
Keterangan
/mergeUAVs
Gunakan opsi , /matchUAVs
, dan /shtemplate
untuk menyelaraskan slot pengikatan UAV untuk rantai shader.
Misalkan Anda memiliki shader A.fx, B.fx, dan C.fx. Untuk menyelaraskan slot pengikatan UAV untuk rantai shader ini, Anda memerlukan dua lulus kompilasi:
Untuk menyelaraskan slot pengikatan UAV untuk rantai shader
- Gunakan /mergeUAVs untuk mengkompilasi shader, dan tentukan blob shader yang dikompilasi sebelumnya dengan /shtemplate. Contohnya:
fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
- Gunakan /matchUAVs untuk mengkompilasi shader, dan tentukan blob shader terakhir dari pass pertama dengan /shtemplate. Anda dapat mengkompilasi dalam urutan apa pun. Contohnya:
fxc.exe /T cs_5_0 A.fx /Fo A.o /matchUAVs /shtemplate C.o
Anda tidak perlu mengkombinasikan ulang C.fx di pass kedua.
Setelah Anda melakukan dua lolos kompilasi sebelumnya, Anda dapat menggunakan A.o, B.o, dan C.o sebagai blob shader akhir dengan slot UAV yang selaras.
Profil
Setiap model shader diberi label dengan profil HLSL. Untuk mengkompilasi shader terhadap model shader tertentu, pilih profil shader yang sesuai dari tabel berikut.
Jenis Shader | Profil |
---|---|
Shader Komputasi |
cs_4_1 cs_5_0 cs_5_1 |
Domain Shader |
ds_5_1 |
Shader Geometri |
gs_4_1 gs_5_0 gs_5_1 |
Penautan shader HLSL |
lib_4_1 lib_4_0_level_9_1 lib_4_0_level_9_1_vs_only lib_4_0_level_9_1_ps_only lib_4_0_level_9_3 lib_4_0_level_9_3_vs_only lib_4_0_level_9_3_ps_only lib_5_0 |
Hull Shader |
hs_5_1 |
Piksel Bayangan |
ps_2_a ps_2_b ps_2_sw ps_3_0 ps_3_sw ps_4_0 ps_4_0_level_9_0 ps_4_0_level_9_1 ps_4_0_level_9_3 ps_4_1 ps_5_0 ps_5_1 |
Tanda Tangan Akar |
|
Shader Tekstur |
|
Vertex Shader |
vs_2_0 vs_2_a vs_2_sw vs_3_0 vs_3_sw vs_4_0 vs_4_0_level_9_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_4_1 vs_5_0 vs_5_1 |
Catatan versi
Untuk Direct3D 12, lihat Menentukan Tanda Tangan Akar di HLSL, Pengikatan Sumber Daya di HLSL dan Pengindeksan Dinamis menggunakan HLSL 5.1.
Di Direct3D 10 gunakan API untuk mendapatkan profil vertex, geometri, dan pixel-shader yang paling cocok untuk perangkat tertentu dengan memanggil fungsi-fungsi ini: D3D10GetVertexShaderProfile, D3D10GetPixelShaderProfile, dan D3D10GetGeometryShaderProfile.
Di Direct3D 9 gunakan metode GetDeviceCaps atau GetDeviceCaps untuk mengambil profil vertex dan pixel-shader yang didukung oleh perangkat. Struktur D3DCAPS9 yang dikembalikan oleh metode tersebut menunjukkan profil vertex dan pixel-shader yang didukung oleh perangkat di anggota VertexShaderVersion dan PixelShaderVersion .
Misalnya, lihat Mengkompilasi dengan Pengkompilasi Saat Ini.
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk