D3DXSHADER 플래그
D3DXSHADER 플래그는 셰이더 구문 분석, 컴파일 또는 어셈블에 사용됩니다.
파서 플래그
구문 분석 시간 플래그는 효과 컴파일러를 만들 때 효과 시스템(효과 컴파일 전)에서만 사용됩니다. 예를 들어 D3DXSHADER_PACKMATRIX_COLUMNMAJOR 사용하여 컴파일러 개체를 만든 다음, 다른 컴파일러 플래그와 함께 해당 컴파일러 개체를 반복적으로 사용하여 특수 코드를 생성할 수 있습니다.
상수 | 설명 |
---|---|
|
명시적으로 지정하지 않는 한 행렬은 셰이더 간에 전달될 때 열 주 순서로 압축됩니다(각 벡터는 단일 열에 포함됨). 이는 일반적으로 일련의 점 제품을 사용하여 벡터 행렬 곱셈을 수행할 수 있기 때문에 더 효율적입니다. |
|
명시적으로 지정하지 않는 한 행렬은 셰이더에 전달되거나 셰이더에서 전달될 때 행 주 순서로 압축됩니다(각 벡터는 단일 행에 포함됨). |
컴파일러 플래그
DirectX 10 HLSL 컴파일러는 이제 기본 컴파일러입니다. 자세한 내용은 효과 컴파일러 도구를 참조하세요.
다음 표에서는 Direct3D 9 및 Direct3D 10에서 사용할 수 있는 플래그에 대해 자세히 설명합니다. 플래그의 값은 동등한 fxc 옵션입니다.
상수/값 | 설명 |
---|---|
|
이는 흐름 제어 지침을 사용하지 않도록 컴파일러에 대한 힌트입니다. Direct3D 9 - 예 Direct3D 10 - 예 |
|
셰이더 컴파일 중에 디버그 파일 이름, 줄 번호 및 형식 및 기호 정보를 삽입합니다. Direct3D 9 - 예 Direct3D 10 - 예 |
|
ps_1_x 셰이더를 ps_2_0 컴파일합니다. ps_1_x 대상을 지정하는 효과는 DirectX 10과 함께 제공되는 셰이더 컴파일러 버전에서 지원하는 최소 셰이더 버전이므로 ps_2_0 대상으로 컴파일됩니다. 이 플래그는 상위 수준 컴파일 대상과 함께 사용할 때 영향을 주지 않습니다. Direct3D 9 - 아니요 Direct3D 10 - 예 |
|
컴파일러가 픽셀 셰이더에 대해 사용 가능한 다음 소프트웨어 대상에 대해 컴파일하도록 합니다. 또한 이 플래그는 최적화를 끄고 디버깅을 켭니다. Direct3D 9 - 예 Direct3D 10 - 예 |
|
꼭짓점 셰이더에 사용 가능한 다음 소프트웨어 대상에 대해 컴파일러를 강제로 컴파일합니다. 또한 이 플래그는 최적화를 끄고 디버깅을 켭니다. Direct3D 9 - 예 Direct3D 10 - 예 |
|
컴파일된 셰이더 프로그램의 출력이 부동 소수점 수학의 작은 정밀도 오류로 인해 DirectX 9 셰이더 컴파일러로 컴파일된 프로그램의 출력과 다를 수 있는 최적화를 사용하지 않도록 설정합니다. Direct3D 9 - 아니요 Direct3D 10 - 예 |
|
사전 섀더를 사용하지 않도록 설정합니다. 컴파일러는 호스트 CPU에 대한 평가를 위해 정적 식을 끌어오지 않습니다. 또한 컴파일러는 독립 실행형 함수를 컴파일할 때 식을 로프트하지 않습니다. Direct3D 9 - 예 Direct3D 10 - 예 |
|
최하위 최적화 수준입니다. 더 느린 코드를 생성할 수 있지만 더 빠르게 생성됩니다. 이는 매우 반복적인 셰이더 개발 주기에서 유용할 수 있습니다. Direct3D 9 - 아니요 Direct3D 10 - 예 |
|
두 번째로 낮은 최적화 수준입니다. Direct3D 9 - 아니요 Direct3D 10 - 예 |
|
두 번째로 높은 최적화 수준입니다. Direct3D 9 - 아니요 Direct3D 10 - 예 |
|
가장 높은 최적화 수준입니다. 최상의 코드를 생성하지만 그렇게 하는 데 훨씬 더 오래 걸릴 수 있습니다. 성능이 가장 중요한 요소인 애플리케이션의 최종 빌드에 유용합니다. Direct3D 9 - 아니요 Direct3D 10 - 예 |
|
결과 셰이더의 모든 계산이 부분 정밀도로 수행되도록 합니다. 이로 인해 일부 하드웨어에서 셰이더를 더 빠르게 평가할 수 있습니다. Direct3D 9 - 예 Direct3D 10 - 예 |
|
이는 흐름 제어 지침을 사용하는 것을 선호하는 컴파일러에 대한 힌트입니다. Direct3D 9 - 예 Direct3D 10 - 예 |
|
코드를 생성하는 동안 최적화 단계를 건너뛰도록 컴파일러에 지시합니다. 코드에서 문제를 격리하려고 하고 컴파일러가 의심되는 경우가 아니면 이 옵션을 사용하지 않는 것이 좋습니다. Direct3D 9 - 예 Direct3D 10 - 예 |
|
생성된 코드의 유효성을 알려진 기능 및 제약 조건에 대해 유효성을 검사하지 마세요. 이 옵션은 작동하는 것으로 알려진 셰이더(즉, 이전에 이 옵션 없이 컴파일된 셰이더)를 컴파일할 때만 권장됩니다. 셰이더는 디바이스로 설정되기 전에 런타임에서 항상 유효성을 검사합니다. Direct3D 9 - 예 Direct3D 10 - 예 |
|
원래 Direct3D 9 HLSL 컴파일러를 사용하도록 설정합니다. OCT2006_d3dx9_31_x86.cab 또는 OCT2006_d3dx9_31_x64.cab 애플리케이션 재배포의 일부로 포함되어야 합니다. 이 플래그는 ps_2_0 승격 플래그를 사용하지 않고 ps_1_x 셰이더를 컴파일하는 데 필요합니다.
ID3DXEffectCompiler 인터페이스를 가져올 때 이 플래그를 지정하면 이 개체를 통해 CompileEffect 및 CompileShader에 대한 후속 호출이 레거시 컴파일러를 사용합니다. Direct3D 9 - 예 Direct3D 10 - 아니요 |
어셈블러 플래그
어셈블러 플래그는 효과 시스템에서 셰이더 및 효과 어셈블리 코드를 최적화하는 데 사용됩니다.
상수 | 설명 |
---|---|
|
셰이더 컴파일 중에 디버그 파일 이름, 줄 번호 및 형식 및 기호 정보를 삽입합니다. |
|
컴파일러가 픽셀 셰이더에 대해 사용 가능한 다음 소프트웨어 대상에 대해 컴파일하도록 합니다. 또한 이 플래그는 최적화를 해제하고 디버깅을 켭니다. |
|
꼭짓점 셰이더에 사용 가능한 다음 소프트웨어 대상에 대해 컴파일을 강제로 컴파일합니다. 또한 이 플래그는 최적화를 해제하고 디버깅을 켭니다. |
|
생성된 코드의 유효성을 알려진 기능 및 제약 조건에 대해 유효성을 검사하지 마세요. 이 옵션은 작동하는 것으로 알려진 셰이더(즉, 이전에 이 옵션 없이 컴파일된 셰이더)를 컴파일할 때만 권장됩니다. 셰이더는 디바이스로 설정되기 전에 런타임에서 항상 유효성을 검사합니다. |
설명
효과 시스템은 다음 함수에서 호출할 때 파서 플래그 를 사용합니다.
효과 시스템은 다음 함수에서 호출될 때 컴파일러 플래그 를 사용합니다.
- D3DXCompileShader (또는 D3DXCompileShaderFromFile 또는 D3DXCompileShaderFromResource)
- CompileEffect (또는 CompileShader)
또한 D3DXCreateEffect(또는 D3DXCreateEffectFromFile 또는 D3DXCreateEffectFromResource)를 호출하여 효과를 만들 때 컴파일러 플래그를 사용할 수 있습니다.
- 컴파일되지 않은 .fx 파일을 전달하는 경우 효과 시스템은 컴파일 중에 플래그 입력 매개 변수를 사용합니다.
- 컴파일된 효과를 전달하면 효과를 로드할 필요가 없으므로 효과 시스템에서 컴파일러 플래그를 무시합니다.
효과 시스템은 다음 함수에서 호출될 때 어셈블러 플래그 를 사용합니다.
잘못된 API에 컴파일러 플래그 또는 어셈블러 플래그 를 적용하면 셰이더 유효성 검사가 실패합니다. 이 오류를 추적하는 데 도움이 되도록 DirectX 오류 조회 도구(DXErr.exe)를 사용하여 함수의 Direct3D 오류 코드 반환 값을 확인합니다. DXErr.exe DirectX SDK에서 알아볼 수 있습니다. DirectX SDK에 대한 자세한 내용은 DirectX SDK는 어디에 있나요?를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|
추가 정보