다음을 통해 공유


Syntax

다음은 효과 컴파일러 도구인 FXC.exe 호출하기 위한 구문입니다. 예제는 오프라인 컴파일을 참조하세요.

사용량

fxcSwitchOptions파일 이름

인수

각 스위치 옵션을 공백 또는 콜론으로 구분합니다.

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 <이름>

셰이더 진입점. 진입점이 지정되지 않은 경우 기본 셰이더 항목 이름으로 간주됩니다.

/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 프로필에 대한 자식 효과로 컴파일합니다.

참고

레거시 효과 프로필에 대한 지원은 더 이상 사용되지 않습니다.

/Gdp

효과 성능 모드를 사용하지 않도록 설정합니다.

/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를 사용하여 각 명령에 대한 바이트 오프셋으로 주석을 추가합니다.

저작권 메시지를 표시하지 않습니다.

/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 바인딩 슬롯을 정렬하려면

  1. /mergeUAV를 사용하여 셰이더를 컴파일하고 /shtemplate을 사용하여 이전에 컴파일된 셰이더 Blob을 지정합니다. 예:
    fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
    
  2. /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를 사용할 수 있습니다.

Profiles

각 셰이더 모델은 HLSL 프로필로 레이블이 지정됩니다. 특정 셰이더 모델에 대해 셰이더를 컴파일하려면 다음 표에서 적절한 셰이더 프로필을 선택합니다.

셰이더 형식Profiles
컴퓨팅 셰이더
cs_4_0
cs_4_1
cs_5_0
cs_5_1
도메인 셰이더
ds_5_0
ds_5_1
기하 도형 셰이더
gs_4_0
gs_4_1
gs_5_0
gs_5_1
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
셰이더 연결에 대한 자세한 내용은 ID3D11LinkerID3D11FunctionLinkingGraph를 참조하세요.
헐 셰이더
hs_5_0
hs_5_1
픽셀 셰이더
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
루트 서명
rootsig_1_0
텍스처 셰이더
tx_1_0
꼭짓점 셰이더
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

버전 참고 사항

Direct3D 12의 경우 HLSL에서 루트 서명 지정, HLSL의 리소스 바인딩 및 HLSL5.1을 사용한 동적 인덱싱을 참조하세요.

Direct3D 10에서는 API를 사용하여 D3D10GetVertexShaderProfile, D3D10GetPixelShaderProfile 및 D3D10GetGeometryShaderProfile 함수를 호출하여 지정된 디바이스에 가장 적합한 꼭짓점, 기하 도형 및 픽셀 셰이더 프로필을 가져옵니다.

Direct3D 9에서는 GetDeviceCaps 또는 GetDeviceCaps 메서드를 사용하여 디바이스에서 지원하는 꼭짓점 및 픽셀 셰이더 프로필을 검색합니다. 이러한 메서드에서 반환된 D3DCAPS9 구조는 VertexShaderVersionPixelShaderVersion 멤버의 디바이스에서 지원하는 꼭짓점 및 픽셀 셰이더 프로필을 나타냅니다.

예제는 현재 컴파일러를 사용하여 컴파일을 참조하세요.