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.

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

/mergeUAVsGunakan 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

  1. 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
    
  2. 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 ShaderProfil
Shader Komputasi
cs_4_0
cs_4_1
cs_5_0
cs_5_1
Domain Shader
ds_5_0
ds_5_1
Shader Geometri
gs_4_0
gs_4_1
gs_5_0
gs_5_1
Penautan shader HLSL
lib_4_0
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
Untuk informasi selengkapnya tentang penautan shader, lihat ID3D11Linker dan ID3D11FunctionLinkingGraph.
Hull Shader
hs_5_0
hs_5_1
Piksel Bayangan
ps_2_0
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
rootsig_1_0
Shader Tekstur
tx_1_0
Vertex Shader
vs_1_1
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.