HLSL 함수는 다음 구문을 사용하여 선언됩니다.
[StorageClass] [clipplanes()] [precise] Return_Value Name ( [ArgumentList] ) [: 의미 체계] { [StatementBlock] };
매개 변수
-
StorageClass
-
함수 선언을 다시 정의하는 한정자입니다. 인라인 현재 유일한 한정자 값입니다. 한정자 값은 기본값이기도 하므로 인라인 합니다. 따라서 함수는 인라인지정하는지 여부에 관계없이 인라인이며 HLSL의 모든 함수는 인라인입니다. 인라인 함수는 각 함수 호출에 대한 함수 본문(컴파일 시)의 복사본을 생성합니다. 이 작업은 함수 호출의 오버헤드를 줄이기 위해 수행됩니다.
-
클립플레인
-
사용자가 지정한 클립 평면을 최대 6개까지 포함하는 선택적 클립 평면 목록입니다. 기능 수준 9_x 이상에서 작동하는 SV_ClipDistance 대한 대체 메커니즘입니다.
-
이름
-
셰이더 함수의 이름을 고유하게 식별하는 ASCII 문자열입니다.
-
ArgumentList
-
의미 체계
-
반환 데이터의 의도된 사용량을 식별하는 선택적 문자열입니다(의미 체계(DirectX HLSL)참조).
-
StatementBlock
-
함수 본문을 구성하는 선택적 문. 본문 없이 정의된 함수를 함수 프로토타입이라고 하며, 프로토타입 함수의 본문을 다른 곳에서 정의해야 함수를 호출할 수 있습니다.
반환 값
반환 형식은 이러한HLSL 형식 중 하나일 수 있습니다.
발언
이 페이지의 구문은 거의 모든 유형의 HLSL 함수를 설명합니다. 여기에는 꼭짓점 셰이더, 픽셀 셰이더 및 도우미 함수가 포함됩니다. 기하 도형 셰이더도 함수를 사용하여 구현되지만 해당 구문은 좀 더 복잡하므로 기하 도형 셰이더 함수 선언을 정의하는 별도의 페이지가 있습니다(Geometry-Shader 개체(DirectX HLSL)참조).
매개 변수 형식 및/또는 매개 변수 순서의 고유한 조합이 제공되면 함수를 오버로드할 수 있습니다. 또한 HLSL은여러 기본 제공 함수 또는내장 함수를 구현합니다.
클립플레인 특성을 사용하여 사용자별 클립 평면을 지정할 수 있습니다. Windows는 이러한 클립 평면을 그리는 모든 기본 형식에 적용합니다. 클립플레인 특성은 SV_ClipDistance 같이 작동하지만 모든 하드웨어 기능 수준 9_x 이상에서 작동합니다. 자세한 내용은 기능 수준 9 하드웨어 사용자 클립 평면을 참조하세요.
예제
이 예제는 BasicHLSL10 샘플BasicHLSL10.fx에서 가져옵니다.
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float4 Diffuse : COLOR0;
float2 TextureUV : TEXCOORD0;
};
VS_OUTPUT RenderSceneVS( float4 vPos : POSITION,
float3 vNormal : NORMAL,
float2 vTexCoord0 : TEXCOORD,
uniform int nNumLights,
uniform bool bTexture,
uniform bool bAnimate )
{
VS_OUTPUT Output;
...
return Output;
}
AdvancedParticles 샘플AdvancedParticles.fx의 이 예제는 반환 형식에 대한 의미 체계를 사용하는 방법을 보여 줍니다.
//
// PS for particles
//
float4 PSPointSprite(PSSceneIn input) : SV_Target
{
return g_txDiffuse.Sample( g_samLinear, input.tex ) * input.color;
}
관련 항목