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.
/nologo
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
, /matchUAVs
i /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
- 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
- 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 cieniowania | Profile |
---|---|
Cieniowania zasobów obliczeniowych |
cs_4_1 cs_5_0 cs_5_1 |
Cieniowania domeny |
ds_5_1 |
Cieniowania geometrii |
gs_4_1 gs_5_0 gs_5_1 |
Łączenie cieniowania 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 |
Cieniowania kadłuba |
hs_5_1 |
Cieniowanie pikseli |
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 |
|
Cieniowanie tekstury |
|
Cieniowania wierzchołków |
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.
Tematy pokrewne
- narzędziaEffect-Compiler