구문
다음은 효과 컴파일러 도구인 FXC.exe 호출하는 구문입니다. 예제는 오프라인 컴파일을 참조 하세요.
사용
fxc SwitchOptions 파일 이름
인수
각 스위치 옵션을 공백 또는 콜론으로 구분합니다.
SwitchOptions
[in] 컴파일 옵션입니다. 필요한 옵션은 하나뿐이며 선택 사항인 옵션이 더 많습니다. 각각을 공백 또는 콜론으로 구분합니다.
필수 옵션
/T <프로필>
셰이더 모델(프로필 참조).
선택적 옵션
/?, /help
에 대한 도움말을 인쇄합니다 FXC.exe
.
@<command.option.file>
추가 컴파일 옵션이 포함된 파일입니다. 이 옵션은 다른 명령줄 컴파일 옵션과 혼합할 수 있습니다. command.option.file은 줄당 하나의 옵션만 포함해야 합니다. command.option.file에는 빈 줄이 포함될 수 없습니다. 파일에 지정된 옵션에는 선행 또는 후행 공백이 없어야 합니다.
/all_resources_bound
SM5.1 이상에서 적극적인 평면화 사용 Direct3D 12의 새로운 기능입니다.
/Cc
색으로 구분된 어셈블리를 출력합니다.
/compress
파일에서 DX10 셰이더 바이트 코드를 압축합니다.
/D <id>=<text>
매크로를 정의합니다.
/압축
첫 번째 파일에서 DX10 셰이더 바이트 코드 압축을 풉니다. 출력 파일은 압축 중에 있던 순서대로 나열되어야 합니다.
/dumpbin
셰이더를 컴파일하는 대신 이진 파일을 로드합니다.
/E <이름>
셰이더 진입점입니다. 진입점이 지정 되지 않은 경우 main 은 셰이더 항목 이름으로 간주됩니다.
/enable_unbounded_descriptor_tables
바인딩되지 않은 설명자 테이블을 사용하도록 설정합니다. Direct3D 12의 새로운 기능입니다.
/extractrootsignature <파일>
셰이더 바이트 코드에서 루트 서명을 추출합니다. Direct3D 12의 새로운 기능입니다.
/Fc <파일>
출력 어셈블리 코드 목록 파일입니다.
/Fd <파일>
셰이더 프로그램 데이터베이스(PDB) 정보를 추출하고 지정된 파일에 씁니다. 셰이더를 컴파일할 때 /Fd를 사용하여 셰이더 디버깅 정보가 포함된 PDB 파일을 생성합니다.
/Fe <파일>
지정된 파일에 경고 및 오류를 출력합니다.
/Fh <파일>
개체 코드를 포함하는 출력 헤더 파일입니다.
/Fl <파일
라이브러리를 출력합니다. DLL의 D3dcompiler_47.dll 이상 버전이 필요합니다.
/Fo <파일>
출력 개체 파일입니다. ".o", ".obj" 또는 ".dxbc"와 같은 다른 확장이 사용되지만 확장 ".fxc"가 지정된 경우가 많습니다.
/Fx <파일>
출력 어셈블리 코드 및 16진수 목록 파일입니다.
/Gch
fx_4_x 프로필에 대한 자식 효과로 컴파일합니다.
참고 항목
레거시 효과 프로필에 대한 지원은 더 이상 사용되지 않습니다.
/국내 총생산
효과 성능 모드를 사용하지 않도록 설정합니다.
/Gec
이전 버전과의 호환 모드를 사용하도록 설정합니다.
/Ges
strict 모드를 사용하도록 설정합니다.
/getprivate <파일>
셰이더 Blob(컴파일된 셰이더 이진)의 프라이빗 데이터를 지정된 파일에 저장합니다. 셰이더 Blob에서 /setprivate에 의해 이전에 포함된 프라이빗 데이터를 추출합니다.
/getprivate를 사용하여 /dumpbin 옵션을 지정해야 합니다. 예시:
fxc /getprivate ps01.private.data
/dumpbin ps01.with.private.obj
/Gfa
흐름 제어 구문을 사용하지 않습니다.
/Gfp
흐름 제어 구문을 선호합니다.
/Gis
IEEE 엄격성을 강제 적용합니다.
/Gpp
부분 정밀도를 강제 적용합니다.
/I <include>
추가 포함 경로입니다.
/Lx
16진수 리터럴을 출력합니다. DLL의 D3dcompiler_47.dll 이상 버전이 필요합니다.
/matchUAV
현재 셰이더에서 템플릿 셰이더 UAV 슬롯 할당을 일치합니다. 자세한 내용은 비고를 참조 하세요.
/mergeUAV
템플릿 셰이더 및 현재 셰이더의 UAV 슬롯 할당을 병합합니다. 자세한 내용은 비고를 참조 하세요.
/Ni
어셈블리 목록의 출력 명령 번호입니다.
/아니요
어셈블리 목록의 출력 명령 바이트 오프셋입니다. 어셈블리를 생성할 때 /No를 사용하여 각 명령에 대한 바이트 오프셋으로 주석을 추가합니다.
/nologo
저작권 메시지를 표시하지 않습니다.
/Od
최적화를 사용하지 않도록 설정합니다. /Od는 /Gfp를 의미하지만 출력은 /Od /Gfp와 동일하지 않을 수 있습니다.
/Op
미리 섀더를 사용하지 않도록 설정합니다(사용되지 않음).
/O0 /O1, /O2, /O3
최적화 수준입니다. O1이 기본 설정입니다.
- O0 - 명령 다시 정렬을 사용하지 않도록 설정합니다. 이렇게 하면 레지스터 부하를 줄이고 루프 시뮬레이션을 더 빠르게 수행할 수 있습니다.
- O1 - ps_3_0 이상에 대한 명령 다시 정렬을 사용하지 않도록 설정합니다.
- O2 - O1과 동일합니다. 향후 사용을 위해 예약되어 있습니다.
- O3 - O1과 동일합니다. 향후 사용을 위해 예약되어 있습니다.
/P <파일>
파일에 전처리(단독으로 사용해야 합니다).
/Qstrip_debug
4_0+ 프로필에 대한 셰이더 바이트코드에서 디버그 데이터를 제거합니다.
/Qstrip_priv
4_0+ 셰이더 바이트 코드에서 개인 데이터를 제거합니다. 이전에 옵션과 함께 /setprivate <file>
포함했던 셰이더 Blob(컴파일된 셰이더 이진)에서 프라이빗 데이터(임의의 바이트 시퀀스)를 제거합니다.
/Qstrip_priv /dumpbin 옵션을 지정해야 합니다. 예시:
fxc /Qstrip_priv /dumpbin /Fo ps01.no.private.obj
ps01.with.private.obj
/Qstrip_reflect
4_0+ 프로필의 셰이더 바이트코드에서 리플렉션 데이터를 제거합니다.
/Qstrip_rootsignature
셰이더 바이트 코드에서 루트 서명을 제거합니다. Direct3D 12의 새로운 기능입니다.
/res_may_alias
UAV/SRV가 cs_5_0+에 대한 별칭일 수 있다고 가정합니다. DLL의 D3dcompiler_47.dll 이상 버전이 필요합니다.
/setprivate <파일>
지정된 파일의 프라이빗 데이터를 컴파일된 셰이더 Blob에 추가합니다. 원시 버퍼로 처리되는 지정된 파일을 셰이더 Blob에 포함합니다. 셰이더를 컴파일할 때 /setprivate를 사용하여 프라이빗 데이터를 추가합니다. 또는 /setprivate와 함께 /dumpbin 옵션을 사용하여 기존 셰이더 개체를 로드한 다음 개체가 메모리에 있으면 프라이빗 데이터 Blob을 추가합니다. 예를 들어 /setprivate와 함께 단일 명령을 사용하여 컴파일된 셰이더 Blob에 프라이빗 데이터를 추가합니다.
fxc /T ps_4_0 /Fo ps01.with.private.obj ps01.fx
/setprivate ps01.private.data
또는 두 번째 명령이 셰이더 개체를 로드한 다음 프라이빗 데이터를 추가하는 두 가지 명령을 사용합니다.
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 <파일>
셰이더 바이트코드에 루트 시그니처를 연결합니다. Direct3D 12의 새로운 기능입니다.
/shtemplate <파일>
지정된 템플릿 셰이더 파일을 사용하여 병합(/mergeUAV) 및 일치(/matchUAV) 리소스를 만듭니다. 자세한 내용은 비고를 참조 하세요.
/Vd
유효성 검사를 사용하지 않도록 설정합니다.
/verifyrootsignature <파일>
루트 서명에 대해 셰이더 바이트 코드를 확인합니다. Direct3D 12의 새로운 기능입니다.
/Vi
포함 프로세스에 대한 세부 정보를 표시합니다.
/Vn <이름>
헤더 파일에서 이름을 변수 이름으로 사용합니다.
/WX
경고를 오류로 처리합니다.
/ZI
디버깅 정보를 사용하도록 설정합니다.
/Zpc
행렬을 열 주 순서로 압축합니다.
/Zpr
행렬을 행 주 순서로 압축합니다.
파일 이름
[in] 셰이더 및/또는 효과를 포함하는 파일입니다.
설명
/mergeUAVs
및 /matchUAVs
/shtemplate
옵션을 사용하여 셰이더 체인에 대한 UAV 바인딩 슬롯을 정렬합니다.
셰이더 A.fx, B.fx 및 C.fx가 있다고 가정해 보겠습니다. 이 셰이더 체인에 대한 UAV 바인딩 슬롯을 정렬하려면 두 번의 컴파일 패스가 필요합니다.
셰이더 체인에 대한 UAV 바인딩 슬롯을 정렬하려면
- /mergeUAV를 사용하여 셰이더를 컴파일하고 /shtemplate을 사용하여 이전에 컴파일된 셰이더 Blob을 지정합니다. 예:
fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
- /matchUAV를 사용하여 셰이더를 컴파일하고 /shtemplate을 사용하여 첫 번째 패스에서 마지막 셰이더 Blob을 지정합니다. 어떤 순서로든 컴파일할 수 있습니다. 예:
fxc.exe /T cs_5_0 A.fx /Fo A.o /matchUAVs /shtemplate C.o
두 번째 패스에서 C.fx를 다시 컴파일할 필요가 없습니다.
위의 두 컴파일 패스를 수행한 후에는 정렬된 UAV 슬롯이 있는 최종 셰이더 Blob으로 A.o, B.o 및 C.o를 사용할 수 있습니다.
프로필
각 셰이더 모델은 HLSL 프로필로 레이블이 지정됩니다. 특정 셰이더 모델에 대해 셰이더를 컴파일하려면 다음 표에서 적절한 셰이더 프로필을 선택합니다.
셰이더 형식 | 프로필 |
---|---|
컴퓨팅 셰이더 |
cs_4_1 cs_5_0 cs_5_1 |
도메인 셰이더 |
ds_5_1 |
기하 도형 셰이더 |
gs_4_1 gs_5_0 gs_5_1 |
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 |
헐 셰이더 |
hs_5_1 |
픽셀 셰이더 |
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 |
루트 서명 |
|
텍스처 셰이더 |
|
꼭짓점 셰이더 |
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 |
버전 참고 사항
Direct3D 12의 경우 HLSL에서 루트 서명 지정, HLSL의 리소스 바인딩 및 HLSL 5.1을 사용한 동적 인덱싱을 참조하세요.
Direct3D 10에서는 API를 사용하여 D3D10GetVertexShaderProfile, D3D10GetPixelShaderProfile 및 D3D10GetGeometryShaderProfile 함수를 호출하여 지정된 디바이스에 가장 적합한 꼭짓점, 기하 도형 및 픽셀 셰이더 프로필을 가져옵니다.
Direct3D 9에서는 GetDeviceCaps 또는 GetDeviceCaps 메서드를 사용하여 디바이스에서 지원하는 꼭짓점 및 픽셀 셰이더 프로필을 검색합니다. 이러한 메서드에서 반환된 D3DCAPS9 구조체는 VertexShaderVersion 및 PixelShaderVersion 멤버의 디바이스에서 지원하는 꼭짓점 및 픽셀 셰이더 프로필을 나타냅니다.
예제는 현재 컴파일러를 사용한 컴파일을 참조 하세요.