Udostępnij za pośrednictwem


Składnia

Oto składnia wywoływania FXC.exe, narzędzie kompilatora efektów. Aby zapoznać się z przykładem, zobacz kompilowanie w trybie offline.

Zwyczaj

fxcSwitchOptionsNazwy plików

Argumenty

Oddziel każdą opcję przełącznika spacją lub dwukropkiem.

SwitchOptions

[in] Opcje kompilowania. Istnieje tylko jedna wymagana opcja i wiele innych, które są opcjonalne. Rozdziel każdy spacją lub dwukropkiem.

Wymagana opcja

/T <profil>

Model cieniowania (zobacz Profiles).

Opcje opcjonalne

/?/Pomoc

Drukuj pomoc dotyczącą FXC.exe.

@<command.option.file>

Plik zawierający dodatkowe opcje kompilacji. Ta opcja może być mieszana z innymi opcjami kompilowania wiersza polecenia. command.option.file musi zawierać tylko jedną opcję na wiersz. command.option.file nie może zawierać żadnych pustych wierszy. Opcje określone w pliku nie mogą zawierać żadnych spacji wiodących ani końcowych.

/all_resources_bound

Włącz agresywne spłaszczanie w wersji SM5.1+. Nowość dla direct3D 12.

/DW

Wyjściowy zestaw kodowany kolorami.

/kompresować

Kompresuj kod bajtowy modułu cieniowania DX10 z plików.

/D <id>=<tekst>

Zdefiniuj makro.

/Dekompresji

Dekompresuj kod bajtowy modułu cieniowania DX10 z pierwszego pliku. Pliki wyjściowe powinny być wymienione w kolejności, w której znajdowały się podczas kompresji.

/dumpbin

Ładuje plik binarny, a nie kompilowanie cieniowania.

/E <nazwa>

Punkt wejścia cieniowania. Jeśli nie podano żadnego punktu wejścia, głównym jest uważana za nazwę wpisu cieniującego.

/enable_unbounded_descriptor_tables

Włącza niezwiązane tabele deskryptorów. Nowość dla direct3D 12.

/extractrootsignature <pliku>

Wyodrębnij podpis główny z kodu bajtowego modułu cieniowania. Nowość dla direct3D 12.

/Fc <plik>

Wyjściowy kod zestawu zawierający listę plików.

/Fd <plik>

Wyodrębnij informacje o bazie danych programu cieniowania (PDB) i zapisz je w danym pliku. Podczas kompilowania cieniowania użyj /Fd, aby wygenerować plik PDB z informacjami debugowania modułu cieniowania.

> pliku /Fe <

Ostrzeżenia wyjściowe i błędy dla danego pliku.

/Fh <plik>

Plik nagłówka wyjściowego zawierający kod obiektu.

/Fl <plik

Wyprowadź bibliotekę. Wymaga D3dcompiler_47.dll lub nowszej wersji biblioteki DLL.

> pliku /Fo <

Wyjściowy plik obiektu. Często przy użyciu rozszerzenia ".fxc", choć są używane inne rozszerzenia, takie jak ".o", ".obj" lub ".dxbc".

/Fx <plik>

Wyjściowy kod zestawu i plik szesnastkowy.

/Gch

Kompiluj jako efekt podrzędny dla profilów fx_4_x.

Nuta

Obsługa starszych profilów efektów jest przestarzała.

/PKB

Wyłącz tryb wydajności efektu.

/Gec

Włącz tryb zgodności z poprzednimi wersjami.

/Ges

Włącz tryb ścisły.

/getprivate <plik>

Zapisz prywatne dane z obiektu blob cieniowania (skompilowanego pliku binarnego cieniowania) do danego pliku. Wyodrębnia dane prywatne, wcześniej osadzone przez /setprivate, z obiektu blob cieniowania.

Należy określić opcję /dumpbin z /getprivate. Na przykład:

fxc /getprivate ps01.private.data 
    /dumpbin ps01.with.private.obj
/Gfa

Unikaj konstrukcji sterowania przepływem.

/Gfp

Preferuj konstrukcje sterowania przepływem.

/Gis

Wymuś ścisłość IEEE.

/Gpp

Wymuś częściową precyzję.

/I <include>

Dodatkowa ścieżka dołączania.

/Lx

Wyjściowe literały szesnastkowe. Wymaga D3dcompiler_47.dll lub nowszej wersji biblioteki DLL.

/matchUAVs

Dopasuj alokacje miejsc UAV cieniowania szablonów w bieżącym cieniatorze. Aby uzyskać więcej informacji, zobacz Uwagi.

/mergeUAVs

Scal alokacje miejsc UAV cieniowania szablonu i bieżącego cieniowania. Aby uzyskać więcej informacji, zobacz uwagi.

/Ni

Wyjściowe numery instrukcji w listach zestawów.

/Nie

Przesunięcie bajtów instrukcji wyjściowych na listach zestawów. Podczas tworzenia zestawu użyj /Nie, aby dodać do niego adnotację z przesunięciem bajtu dla każdej instrukcji.

Pomijanie wiadomości o prawach autorskich.

/Od

Wyłącz optymalizacje. /Od wskazuje /Gfp, choć dane wyjściowe mogą nie być identyczne z /Od /Gfp.

/Op

Wyłącz preshaders (przestarzałe).

/O0 /O1, /O2, /O3

Poziomy optymalizacji. O1 jest ustawieniem domyślnym.

  • O0 — wyłącza zmienianie kolejności instrukcji. Pomaga to zmniejszyć obciążenie rejestru i umożliwić szybszą symulację pętli.
  • O1 — wyłącza zmienianie kolejności instrukcji dla ps_3_0 i nowszych.
  • O2 — taki sam jak O1. Zarezerwowane do użytku w przyszłości.
  • O3 — taki sam jak O1. Zarezerwowane do użytku w przyszłości.
> pliku /P <

Wstępne przetwarzanie do pliku (musi być używane samodzielnie).

/Qstrip_debug

Usuwanie danych debugowania z kodu bajtów cieniowania dla profilów 4_0+.

/Qstrip_priv

Usuń dane prywatne z kodu bajtowego cieniowania 4_0+. Usuwa dane prywatne (dowolną sekwencję bajtów) z obiektu blob cieniowania (skompilowanego pliku binarnego cieniowania), które zostały wcześniej osadzone przy użyciu opcji /setprivate <file>.

Należy określić /dumpbin opcję z /Qstrip_priv. Na przykład:

fxc /Qstrip_priv /dumpbin /Fo ps01.no.private.obj 
    ps01.with.private.obj
/Qstrip_reflect

Usuwanie danych odbicia z kodu bajtowego cieniowania dla profilów 4_0+.

/Qstrip_rootsignature

Usuń podpis główny z kodu bajtowego cieniowania. Nowość dla direct3D 12.

/res_may_alias

Załóżmy, że widoki UAV/SRV mogą mieć alias dla cs_5_0+. Wymaga D3dcompiler_47.dll lub nowszej wersji biblioteki DLL.

/setprivate <plik>

Dodaj dane prywatne w danym pliku do skompilowanego obiektu blob cieniowania. Osadza dany plik, który jest traktowany jako nieprzetworzony bufor, do obiektu blob cieniowania. Użyj /setprivate, aby dodać dane prywatne podczas kompilowania cieniowania. Możesz też użyć opcji /dumpbin z /setprivate, aby załadować istniejący obiekt cieniowania, a następnie po obiekcie znajduje się w pamięci, aby dodać prywatny obiekt blob danych. Na przykład użyj jednego polecenia z /setprivate, aby dodać dane prywatne do skompilowanego obiektu blob cieniowania:

fxc /T ps_4_0 /Fo ps01.with.private.obj ps01.fx 
    /setprivate ps01.private.data

Możesz też użyć dwóch poleceń, w których drugie polecenie ładuje obiekt cieniowania, a następnie dodaje dane prywatne:

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
/setrootsignature <plik>

Dołącz podpis główny do kodu bajtowego cieniowania. Nowość dla direct3D 12.

/shtemplate <plik>

Użyj podanego pliku cieniowania szablonu do scalania (/mergeUAVs) i pasujących zasobów (/matchUAVs). Aby uzyskać więcej informacji, zobacz Uwagi.

/Vd

Wyłącz walidację.

/verifyrootsignature <plik>

Zweryfikuj kod bajtów cieniowania względem podpisu głównego. Nowość dla direct3D 12.

/Vi

Wyświetl szczegółowe informacje o procesie dołączania.

/Vn <nazwa>

Użyj nazwy jako nazwy zmiennej w pliku nagłówka.

/WX

Traktuj ostrzeżenia jako błędy.

/Zi

Włącz informacje o debugowaniu.

/Zpc

Pakuj macierze w kolejności głównej kolumny.

/Zpr

Zawijaj macierze w kolejności głównej wierszy.

nazwy plików

[in] Pliki, które zawierają cieniowania i/lub efekty.

Uwagi

Użyj opcji /mergeUAVs, /matchUAVsi /shtemplate, aby wyrównać gniazda powiązań UAV dla łańcucha cieniowania.

Załóżmy, że masz cieniowania A.fx, B.fx i C.fx. Aby wyrównać gniazda powiązań UAV dla tego łańcucha cieniowania, potrzebne są dwa przebiegi kompilacji:

Aby wyrównać gniazda powiązań UAV dla łańcucha cieniowania

  1. Użyj /mergeUAVs do skompilowania cieniowania i określ wcześniej skompilowany obiekt blob cieniowania z /shtemplate. Na przykład:
    fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
    
  2. Użyj /matchUAVs do skompilowania cieniowania i określ ostatni obiekt blob cieniowania z pierwszego przebiegu z /shtemplate. Można skompilować w dowolnej kolejności. Na przykład:
    fxc.exe /T cs_5_0 A.fx /Fo A.o /matchUAVs /shtemplate C.o
    

Nie musisz ponownie kompilować C.fx w drugim przebiegu.

Po wykonaniu dwóch poprzednich przebiegów kompilacji można użyć A.o, B.o i C.o jako końcowych obiektów blob cieniowania z wyrównanymi gniazdami UAV.

Profile

Każdy model cieniowania jest oznaczony profilem HLSL. Aby skompilować cieniowanie względem określonego modelu cieniowania, wybierz odpowiedni profil cieniowania z poniższej tabeli.

Typ cieniowaniaProfile
Cieniowania zasobów obliczeniowych
cs_4_0
cs_4_1
cs_5_0
cs_5_1
Cieniowania domeny
ds_5_0
ds_5_1
Cieniowania geometrii
gs_4_0
gs_4_1
gs_5_0
gs_5_1
Łączenie cieniowania 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
Aby uzyskać więcej informacji na temat łączenia cieniowania, zobacz ID3D11Linker i ID3D11FunctionLinkingGraph.
Cieniowania kadłuba
hs_5_0
hs_5_1
Cieniowanie pikseli
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
Podpis główny
rootsig_1_0
Cieniowanie tekstury
tx_1_0
Cieniowania wierzchołków
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

Informacje o wersji

W przypadku wersji Direct3D 12 zobacz Określanie podpisów głównych wHLSL, powiązanie zasobów w HLSL i indeksowanie dynamiczne przy użyciuHLSL 5.1.

W wersji Direct3D 10 użyj interfejsu API, aby uzyskać profil wierzchołka, geometrii i cieniowania pikseli najlepiej nadaje się do danego urządzenia, wywołując następujące funkcje: D3D10GetVertexShaderProfile, D3D10GetPixelShaderProfilei D3D10GetGeometryShaderProfile.

W wersji Direct3D 9 użyj metod GetDeviceCaps lub GetDeviceCaps metod pobierania profilów wierzchołków i cieniowania pikseli obsługiwanych przez urządzenie. Struktura D3DCAPS9 zwrócona przez te metody wskazuje profile wierzchołków i cieniowania pikseli obsługiwane przez urządzenie w VertexShaderVersion i pixelShaderVersion elementów członkowskich.

Aby zapoznać się z przykładami, zobacz Kompilowanie przy użyciu bieżącego kompilatora.